The ElastiCORE agent kit
github.com/xsko/elasticore-agent-kit (Apache 2.0) - a Claude Code plugin for projects built with ElastiCORE. The same skill is packaged for opencode and works in Codex CLI.
Left to itself, an agent edits the generated Java. The next build overwrites the edit, or the file silently stops following the YAML, and nobody notices. With the kit the agent changes the YAML, regenerates, compiles, and tells you what changed for the business.
What the agent writes instead of Java
The model behind a posts-and-comments API, as the kit's board recipe writes it (one of its two entities):
entity:
Post:
meta: entity @root @editable @expose(20) @sort(postId-) -- post
fields:
postId: long @id @sequence
title: string(100)! @notblank @search(like) -- title
body: text! @notblank -- body
author: string(30)! @notblank -- author name
createdAt: datetime @updatable(false) @jpa:org.springframework.data.annotation.CreatedDate -- written at
One build turns that into the JPA entity, the request and response DTOs with their validation, the repository, the service, the REST controller - create, read, update, delete, a paged list newest first, a search by part of the title - and the error handler that answers 400 and 404. The agent writes Java only for what the model cannot say - a rule that reads other rows, an operation the CRUD does not have - and only in the files the generator hands over.
What you get
| Part | What it does |
|---|---|
Skill elasticore | Loads when Claude works in an ElastiCORE project or starts one. Knows which files the generator owns, holds a one-page DSL reference, three recipes and a run-and-check page, and says where a change belongs, what to ask you first and how to report. For anything else it sends Claude to the guides ElastiCORE copies into the project. |
| Hooks | Stop edits to generated files and -Pforce runs, say what to run after a DSL change, pass on the generator's warnings, and keep Claude from finishing with a DSL change that no successful build has generated and compiled. |
Agent elasticore:modeler | Turns a requirement into a DSL change that generates and compiles, and reports it in business terms. |
Agent elasticore:reviewer | Reviews a change: hand edits to generated files, DSL the guides or the generator do not know, generated code out of step with the DSL, and which roles gain or lose access. |
/elasticore:generate [task] | Regenerates and compiles, then explains every warning, skipped file and error, with the DSL fix. |
/elasticore:change-report [range] | Writes what a DSL change means for the business and what needs a decision. |
/elasticore:review [range] [full] | Runs the reviewer on uncommitted changes or a range. It only reads, unless you add full - then it also builds, which regenerates files. |
Requirements
- Claude Code - or opencode or Codex CLI.
- JDK 17 or later. For a new project, Gradle 8.14 or later on the PATH: the template creates the Gradle wrapper with it.
- On Windows, Git for Windows: the hooks run in bash, and Claude Code runs them with Git Bash. Without it Claude Code reports a hook error on every edit and command.
- ElastiCORE 3.0 from Maven Central - a new project gets the newest 3.x release there. In a 2.x project the hooks work; the reference and the recipes are written for 3.0.
In this section
- Installation - Claude Code, opencode, Codex CLI, updating.
- The skill and its recipes - the fast path, the board, library and shop recipes, the quick reference, the agents and commands.
- Hooks - what each one checks.
- A worked session - ask, DSL, build, run, call.
- Change requests - working on an existing project.
- Contract test and benchmarks - how the kit stays in step with ElastiCORE, and what it measured.
The current version of the plugin is 0.4.0.