@eventmodelers/cli 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -9
- package/cli.js +633 -175
- package/package.json +1 -1
- package/{stacks/node/templates → shared}/build-kit/README.md +3 -3
- package/{stacks/axon/templates → shared}/build-kit/lib/ralph.js +10 -3
- package/shared/build-kit/ralph-ollama.js +2 -2
- package/{stacks/node/templates → shared}/build-kit/ralph.sh +1 -1
- package/shared/build-kit/realtime-agent.js +1 -1
- package/{stacks/supabase/templates/.claude → shared}/skills/connect/SKILL.md +10 -5
- package/stacks/cratis-csharp/templates/build-kit/lib/AGENT.md +1 -0
- package/stacks/modeling-kit/templates/kit/README.md +79 -0
- package/stacks/modeling-kit/templates/kit/lib/ralph.js +9 -2
- package/stacks/modeling-kit/templates/kit/ralph.sh +1 -1
- package/stacks/node/templates/build-kit/lib/backend-prompt.md +1 -1
- package/stacks/supabase/templates/build-kit/lib/backend-prompt.md +1 -1
- package/stacks/axon/templates/.claude/skills/connect/SKILL.md +0 -178
- package/stacks/axon/templates/.claude/skills/learn-eventmodelers-api/SKILL.md +0 -611
- package/stacks/axon/templates/.claude/skills/update-slice-status/SKILL.md +0 -105
- package/stacks/axon/templates/build-kit/ralph.sh +0 -98
- package/stacks/cratis-csharp/templates/.claude/skills/connect/SKILL.md +0 -178
- package/stacks/cratis-csharp/templates/.claude/skills/learn-eventmodelers-api/SKILL.md +0 -609
- package/stacks/cratis-csharp/templates/.claude/skills/update-slice-status/SKILL.md +0 -105
- package/stacks/cratis-csharp/templates/build-kit/lib/agent.sh +0 -20
- package/stacks/cratis-csharp/templates/build-kit/lib/ralph.js +0 -302
- package/stacks/cratis-csharp/templates/build-kit/ralph-claude.js +0 -37
- package/stacks/cratis-csharp/templates/build-kit/ralph.sh +0 -98
- package/stacks/modeling-kit/templates/.claude/skills/connect/SKILL.md +0 -178
- package/stacks/modeling-kit/templates/.claude/skills/learn-eventmodelers-api/SKILL.md +0 -441
- package/stacks/modeling-kit/templates/.claude/skills/update-slice-status/SKILL.md +0 -110
- package/stacks/modeling-kit/templates/kit/lib/agent.sh +0 -20
- package/stacks/modeling-kit/templates/kit/lib/ollama-agent.js +0 -147
- package/stacks/modeling-kit/templates/kit/ralph-ollama.js +0 -38
- package/stacks/modeling-kit/templates/kit/realtime-agent.js +0 -18
- package/stacks/node/templates/.claude/skills/connect/SKILL.md +0 -178
- package/stacks/node/templates/build-kit/lib/agent.sh +0 -20
- package/stacks/node/templates/build-kit/lib/ralph.js +0 -369
- package/stacks/node/templates/build-kit/ralph-claude.js +0 -44
- package/stacks/supabase/templates/.claude/skills/learn-eventmodelers-api/SKILL.md +0 -628
- package/stacks/supabase/templates/.claude/skills/update-slice-status/SKILL.md +0 -110
- package/stacks/supabase/templates/build-kit/README.md +0 -86
- package/stacks/supabase/templates/build-kit/lib/agent.sh +0 -20
- package/stacks/supabase/templates/build-kit/lib/ralph.js +0 -369
- package/stacks/supabase/templates/build-kit/ralph-claude.js +0 -44
- package/stacks/supabase/templates/build-kit/ralph.sh +0 -98
- /package/{stacks/axon/templates → shared}/build-kit/lib/agent.sh +0 -0
- /package/{stacks/axon/templates → shared}/build-kit/ralph-claude.js +0 -0
- /package/{stacks/node/templates/.claude → shared}/skills/learn-eventmodelers-api/SKILL.md +0 -0
- /package/{stacks/node/templates/.claude → shared}/skills/update-slice-status/SKILL.md +0 -0
package/README.md
CHANGED
|
@@ -22,6 +22,12 @@ npx @eventmodelers/cli init-modeling # skills + agent loop only,
|
|
|
22
22
|
|
|
23
23
|
The installer prompts for your API token, Organization ID (and Board ID, for the four backend stacks) from [app.eventmodelers.ai/account](https://app.eventmodelers.ai/account).
|
|
24
24
|
|
|
25
|
+
`init`/`init-modeling` scaffold and configure credentials, but don't register the MCP server — run that as a separate step once you're ready to connect a harness:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx @eventmodelers/cli init-mcp
|
|
29
|
+
```
|
|
30
|
+
|
|
25
31
|
## What gets installed
|
|
26
32
|
|
|
27
33
|
```
|
|
@@ -83,17 +89,28 @@ Beyond the one-time install bootstrap, each stack's own `ralph.js`/`ralph-claude
|
|
|
83
89
|
|
|
84
90
|
`init`/`init-modeling` write credentials to the project root's `.eventmodelers/config.json` by default — that's why a build stack and `init-modeling` in the same project automatically share one file instead of each holding their own copy.
|
|
85
91
|
|
|
86
|
-
`init`, `status`, and `config` all resolve config the same way: they walk up from the current directory looking for a `.eventmodelers/config.json` in an ancestor directory (shared defaults), then layer the installed kit dir's own `<kit-dir>/.eventmodelers/config.json` on top, if one exists there (a per-kit override) — any field that file also sets wins.
|
|
92
|
+
`init`, `status`, and `config` all resolve config the same way: they walk up from the current directory looking for a `.eventmodelers/config.json` in an ancestor directory (shared defaults), then layer the installed kit dir's own `<kit-dir>/.eventmodelers/config.json` on top, if one exists there (a per-kit override) — any field that file also sets wins. If that walk reaches the filesystem root without finding anything, `~/.eventmodelers/config.json` is checked once more as a last resort — this matters for projects that don't live under `$HOME` at all (e.g. `/tmp/foo`), which the walk-up would otherwise never reach.
|
|
93
|
+
|
|
94
|
+
That walk-up (plus the home-dir fallback) means you can keep one shared config above all your checkouts and only override what's actually per-project — typically just `boardId`. The easiest way to set that shared file up is:
|
|
87
95
|
|
|
88
|
-
|
|
96
|
+
```bash
|
|
97
|
+
npx @eventmodelers/cli init-config --global # writes organizationId + token to ~/.eventmodelers/config.json
|
|
98
|
+
```
|
|
89
99
|
|
|
90
100
|
```
|
|
91
|
-
~/.eventmodelers/config.json ← shared: organizationId, token
|
|
101
|
+
~/.eventmodelers/config.json ← shared: organizationId, token
|
|
92
102
|
~/projects/checkout-app/.eventmodelers/config.json ← { "boardId": "<checkout-app-board>" }
|
|
93
103
|
~/projects/billing-app/.eventmodelers/config.json ← { "boardId": "<billing-app-board>" }
|
|
94
104
|
```
|
|
95
105
|
|
|
96
|
-
Running any command from inside `~/projects/checkout-app` resolves `organizationId`/`token
|
|
106
|
+
Running any command from inside `~/projects/checkout-app` resolves `organizationId`/`token` from `~/.eventmodelers/config.json` (`baseUrl` defaults to `https://api.eventmodelers.ai` if nobody sets it) and `boardId` from the project's own file — switch to `~/projects/billing-app` and only the board changes. `npx @eventmodelers/cli status` and `npx @eventmodelers/cli config` both list every file that contributed, in override order, so you can see exactly where each value came from.
|
|
107
|
+
|
|
108
|
+
`init-config` (without `--global`) is the same credential-only flow targeted at the current directory — useful when you want to (re)configure credentials without re-running a full `init`/`init-modeling` install:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npx @eventmodelers/cli init-config # interactive, writes to ./.eventmodelers/config.json
|
|
112
|
+
npx @eventmodelers/cli init-config --board-id <uuid> # non-interactive, just overrides one field
|
|
113
|
+
```
|
|
97
114
|
|
|
98
115
|
### Env vars and `--config` (scripted/CI installs)
|
|
99
116
|
|
|
@@ -113,6 +130,13 @@ EVENTMODELERS_ORGANIZATION_ID=... EVENTMODELERS_BOARD_ID=... EVENTMODELERS_TOKEN
|
|
|
113
130
|
npx @eventmodelers/cli init --stack node
|
|
114
131
|
```
|
|
115
132
|
|
|
133
|
+
`init`, `init-modeling`, and `init-config` also accept the same four fields as direct flags — handy for a one-off override without exporting env vars, and they win over both the config file and env vars:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
npx @eventmodelers/cli init --stack node \
|
|
137
|
+
--organization-id ... --board-id ... --token ... --base-url https://api.eventmodelers.ai
|
|
138
|
+
```
|
|
139
|
+
|
|
116
140
|
`--config <path>` points every command at an explicit `config.json`, bypassing the kit-dir/parent-directory resolution entirely:
|
|
117
141
|
|
|
118
142
|
```bash
|
|
@@ -123,7 +147,13 @@ Run `npx @eventmodelers/cli config` at any time to see the fully resolved config
|
|
|
123
147
|
|
|
124
148
|
### MCP for other harnesses
|
|
125
149
|
|
|
126
|
-
|
|
150
|
+
MCP registration is a separate step from `init`/`init-modeling` — run `init-mcp` whenever you're ready to connect a harness:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npx @eventmodelers/cli init-mcp
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
It writes the MCP server into `.claude/settings.json` for Claude Code. For other coding agents it follows the same principle [Playwright MCP](https://playwright.dev/mcp/installation) uses per client — one shared server, but a different registration mechanism per harness: a real CLI install command where one exists, and printed manual steps where it doesn't (no risky guessing at unverified config-file formats):
|
|
127
157
|
|
|
128
158
|
```
|
|
129
159
|
? Connect the MCP globally to another harness?
|
|
@@ -154,7 +184,7 @@ Use skills in Claude Code with `/skill-name`:
|
|
|
154
184
|
| `/load-slice` | Persist board slices to disk (backend stacks) |
|
|
155
185
|
| `/build-state-change`, `/build-state-view`, `/build-automation`, `/build-webhook` | Implement a slice's command/view/automation/webhook (backend stacks) |
|
|
156
186
|
|
|
157
|
-
Which skills install depends on the chosen stack — see `stacks/<name>/templates/.claude/skills/`.
|
|
187
|
+
Which skills install depends on the chosen stack — see `stacks/<name>/templates/.claude/skills/`. `/connect`, `/learn-eventmodelers-api`, and `/update-slice-status` have no stack-specific content and install into every stack from `shared/skills/` instead.
|
|
158
188
|
|
|
159
189
|
## Commands
|
|
160
190
|
|
|
@@ -163,6 +193,9 @@ npx @eventmodelers/cli init --stack <name> # scaffold a stack + install
|
|
|
163
193
|
npx @eventmodelers/cli init --stack <name> --global # same, but skills go to ~/.claude/skills/ (every project)
|
|
164
194
|
npx @eventmodelers/cli init-modeling # skills + agent loop only, no backend scaffold (alias: modeling)
|
|
165
195
|
npx @eventmodelers/cli init-modeling --global # same, but skills go to ~/.claude/skills/ (every project)
|
|
196
|
+
npx @eventmodelers/cli init-mcp # register the MCP server in .claude/settings.json (+ optionally another harness)
|
|
197
|
+
npx @eventmodelers/cli init-config # credentials only, no scaffold — writes ./.eventmodelers/config.json
|
|
198
|
+
npx @eventmodelers/cli init-config --global # same, but writes organizationId + token to ~/.eventmodelers/config.json
|
|
166
199
|
npx @eventmodelers/cli run # start the agent loop (ralph-claude.js) from the installed kit dir
|
|
167
200
|
npx @eventmodelers/cli run --ollama # same, via local Ollama (ralph-ollama.js)
|
|
168
201
|
npx @eventmodelers/cli run --bash # bash-only loop, no realtime (ralph.sh)
|
|
@@ -180,7 +213,7 @@ Every `init`/`init-modeling` run writes an install manifest into `<kit-dir>/.eve
|
|
|
180
213
|
|
|
181
214
|
- the kit dir (`.build-kit/` or `.agent-modeling-kit/`)
|
|
182
215
|
- the skills it copied — from `.claude/skills/` normally, or `~/.claude/skills/` if it was installed with `--global`
|
|
183
|
-
- the `eventmodelers` entry it added to `.claude/settings.json`'s `mcpServers` (the rest of that file, and the file itself, is left in place)
|
|
216
|
+
- the `eventmodelers` entry it added to `.claude/settings.json`'s `mcpServers`, if `init-mcp` was ever run for this project (the rest of that file, and the file itself, is left in place)
|
|
184
217
|
|
|
185
218
|
It deliberately **never** touches the root project scaffold (`package.json`, `src/`, `server.ts`, migrations, `docker-compose.yml`, etc.) — that's your actual application code, not tooling, so `uninstall` won't delete it even though `init` wrote it.
|
|
186
219
|
|
|
@@ -194,7 +227,7 @@ npx @eventmodelers/cli uninstall --build-kit # remove .build-kit/ specif
|
|
|
194
227
|
npx @eventmodelers/cli uninstall --modeling-kit # remove .agent-modeling-kit/ specifically
|
|
195
228
|
```
|
|
196
229
|
|
|
197
|
-
`--config <path>` and `--print` are global flags accepted by every command. `--print` skips the "connect MCP globally?" prompt during
|
|
230
|
+
`--config <path>` and `--print` are global flags accepted by every command. `--print` skips the "connect MCP globally?" prompt during `init-mcp` and just prints the `claude mcp add` command instead of running it — combined with the env vars or direct flags above, `--print` makes both `init` and `init-mcp` fully non-interactive:
|
|
198
231
|
|
|
199
232
|
```bash
|
|
200
233
|
EVENTMODELERS_ORGANIZATION_ID=... EVENTMODELERS_BOARD_ID=... EVENTMODELERS_TOKEN=... \
|
|
@@ -203,7 +236,7 @@ EVENTMODELERS_ORGANIZATION_ID=... EVENTMODELERS_BOARD_ID=... EVENTMODELERS_TOKEN
|
|
|
203
236
|
|
|
204
237
|
## Adding a stack
|
|
205
238
|
|
|
206
|
-
Each stack lives under `stacks/<name>/templates/` with `.claude/` (skills), `root/` (spread into the project root), and either `build-kit/` (backend stacks) or `kit/` (modeling-only) for the agent runner. Files identical across all backend stacks live once in `shared/build-kit/` and get layered in automatically — only put stack-specific overrides under `stacks/<name>/templates/build-kit/`.
|
|
239
|
+
Each stack lives under `stacks/<name>/templates/` with `.claude/` (skills), `root/` (spread into the project root), and either `build-kit/` (backend stacks) or `kit/` (modeling-only) for the agent runner. Files identical across all backend stacks live once in `shared/build-kit/` and get layered in automatically — only put stack-specific overrides under `stacks/<name>/templates/build-kit/`. Skills with no stack-specific content (`connect`, `learn-eventmodelers-api`, `update-slice-status`) work the same way via `shared/skills/` — a new stack gets them for free without copying anything; add a skill there only once it needs a stack-specific fork.
|
|
207
240
|
|
|
208
241
|
## Contributors
|
|
209
242
|
|