Eventmodelers build kit for Cratis — turns Eventmodelers board slices into Cratis (Arc + Chronicle) vertical slices in a Java project. Connect your board to an autonomous coding agent that picks up slice status changes, implements the slice the Cratis way (Cratis Chronicle), runs ./gradlew build / ./gradlew test, and marks the work done — all without manual intervention.
Built on cratis.io. The kit is open-source (MIT) and is part of the Cratis ecosystem. The build-kit concept and realtime agent loop originate from Nebulit-GmbH/Eventmodelers-Build-Kits.
Note: The Java kit currently uses the cratis/chronicle/client-java profile from the Cratis AI corpus. Additional profiles for Java (e.g., cratis/application/java, cratis/arc/java) are planned for future releases.
- Install the kit — get the Cratis starter app and agent loop
- What the kit owns — capabilities and boundaries
- Usage — how to run the agent loop
- Cratis AI corpus — generated conventions and skills
- Documentation — full walkthroughs: install, run your first slice, connect a board, the loop, CLI reference
- License — MIT
- Sibling kits — C# and Kotlin variants
Run the installer in your project directory:
npx github:Cratis/Eventmodelers-Build-Kit-Java installIt will:
- Copy the Cratis starter app into your project root (Java backend with Arc + Chronicle, example slice, shared React frontend,
CLAUDE.md). - Install the loop machinery and skills into
.build-kit/(gitignored automatically). - Prompt for board credentials (org ID, board ID, token) →
.build-kit/.eventmodelers/config.json. - Configure the Eventmodelers MCP server in
.build-kit/.claude/settings.json.
| Path | Purpose |
|---|---|
.build-kit/.claude/skills/build-state-change |
Write-slice skill (Cratis commands/events) |
.build-kit/.claude/skills/build-state-view |
Read-slice skill (read models/projections) |
.build-kit/.claude/skills/build-automation |
Automation/translation skill (reactors) |
.build-kit/.claude/skills/_shared/cratis-conventions.md |
The distilled Cratis conventions |
.build-kit/.claude/skills/{connect,load-slice,update-slice-status,learn-eventmodelers-api} |
Platform skills |
.build-kit/ralph-claude.js / ralph.sh |
The agent loop |
.build-kit/lib/prompt.md / backend-prompt.md |
Agent instructions |
.build-kit/lib/AGENT.md |
Accumulated learnings across iterations |
./gradlew build # backend + Java proxy generation
./gradlew test # run testsStart the agent loop:
# Claude (default)
node .build-kit/ralph-claude.js
# Local Ollama model (run `ollama serve` first)
OLLAMA_MODEL=qwen3:8b node .build-kit/ralph-ollama.js
# Target a custom project directory
node .build-kit/ralph-claude.js /path/to/project| Boundary | Kit provides |
|---|---|
| Installation | Cratis starter app with Chronicle, Java backend, and example slice |
| Agent loop | ralph — autonomous Claude agent that reacts to slice:changed events |
| Build skills | /build-state-change, /build-state-view, /build-automation for implementing slices |
| Platform skills | /connect, /load-slice, /update-slice-status, /learn-eventmodelers-api for board integration |
| Generated conventions | cratis-conventions.md derived from the Cratis AI corpus |
| MCP server | Eventmodelers platform integration configured in .claude/settings.json |
The .cratis/ai/ directory and templates/.claude/skills/_shared/ are generated by cratis ai update
and scripts/sync-corpus-to-templates.mjs. They are refreshed on every release and must not be
hand-edited. The generated cratis-conventions.md is derived from the Cratis AI corpus selected by
the profiles in .cratis/ai.json.
MIT
- Eventmodelers Build Kit — C# — C# variant
- Eventmodelers Build Kit — Kotlin — Kotlin variant