@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.
Files changed (48) hide show
  1. package/README.md +42 -9
  2. package/cli.js +633 -175
  3. package/package.json +1 -1
  4. package/{stacks/node/templates → shared}/build-kit/README.md +3 -3
  5. package/{stacks/axon/templates → shared}/build-kit/lib/ralph.js +10 -3
  6. package/shared/build-kit/ralph-ollama.js +2 -2
  7. package/{stacks/node/templates → shared}/build-kit/ralph.sh +1 -1
  8. package/shared/build-kit/realtime-agent.js +1 -1
  9. package/{stacks/supabase/templates/.claude → shared}/skills/connect/SKILL.md +10 -5
  10. package/stacks/cratis-csharp/templates/build-kit/lib/AGENT.md +1 -0
  11. package/stacks/modeling-kit/templates/kit/README.md +79 -0
  12. package/stacks/modeling-kit/templates/kit/lib/ralph.js +9 -2
  13. package/stacks/modeling-kit/templates/kit/ralph.sh +1 -1
  14. package/stacks/node/templates/build-kit/lib/backend-prompt.md +1 -1
  15. package/stacks/supabase/templates/build-kit/lib/backend-prompt.md +1 -1
  16. package/stacks/axon/templates/.claude/skills/connect/SKILL.md +0 -178
  17. package/stacks/axon/templates/.claude/skills/learn-eventmodelers-api/SKILL.md +0 -611
  18. package/stacks/axon/templates/.claude/skills/update-slice-status/SKILL.md +0 -105
  19. package/stacks/axon/templates/build-kit/ralph.sh +0 -98
  20. package/stacks/cratis-csharp/templates/.claude/skills/connect/SKILL.md +0 -178
  21. package/stacks/cratis-csharp/templates/.claude/skills/learn-eventmodelers-api/SKILL.md +0 -609
  22. package/stacks/cratis-csharp/templates/.claude/skills/update-slice-status/SKILL.md +0 -105
  23. package/stacks/cratis-csharp/templates/build-kit/lib/agent.sh +0 -20
  24. package/stacks/cratis-csharp/templates/build-kit/lib/ralph.js +0 -302
  25. package/stacks/cratis-csharp/templates/build-kit/ralph-claude.js +0 -37
  26. package/stacks/cratis-csharp/templates/build-kit/ralph.sh +0 -98
  27. package/stacks/modeling-kit/templates/.claude/skills/connect/SKILL.md +0 -178
  28. package/stacks/modeling-kit/templates/.claude/skills/learn-eventmodelers-api/SKILL.md +0 -441
  29. package/stacks/modeling-kit/templates/.claude/skills/update-slice-status/SKILL.md +0 -110
  30. package/stacks/modeling-kit/templates/kit/lib/agent.sh +0 -20
  31. package/stacks/modeling-kit/templates/kit/lib/ollama-agent.js +0 -147
  32. package/stacks/modeling-kit/templates/kit/ralph-ollama.js +0 -38
  33. package/stacks/modeling-kit/templates/kit/realtime-agent.js +0 -18
  34. package/stacks/node/templates/.claude/skills/connect/SKILL.md +0 -178
  35. package/stacks/node/templates/build-kit/lib/agent.sh +0 -20
  36. package/stacks/node/templates/build-kit/lib/ralph.js +0 -369
  37. package/stacks/node/templates/build-kit/ralph-claude.js +0 -44
  38. package/stacks/supabase/templates/.claude/skills/learn-eventmodelers-api/SKILL.md +0 -628
  39. package/stacks/supabase/templates/.claude/skills/update-slice-status/SKILL.md +0 -110
  40. package/stacks/supabase/templates/build-kit/README.md +0 -86
  41. package/stacks/supabase/templates/build-kit/lib/agent.sh +0 -20
  42. package/stacks/supabase/templates/build-kit/lib/ralph.js +0 -369
  43. package/stacks/supabase/templates/build-kit/ralph-claude.js +0 -44
  44. package/stacks/supabase/templates/build-kit/ralph.sh +0 -98
  45. /package/{stacks/axon/templates → shared}/build-kit/lib/agent.sh +0 -0
  46. /package/{stacks/axon/templates → shared}/build-kit/ralph-claude.js +0 -0
  47. /package/{stacks/node/templates/.claude → shared}/skills/learn-eventmodelers-api/SKILL.md +0 -0
  48. /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
- That walk-up means you can keep one shared config above all your checkouts and only override what's actually per-project — typically just `boardId`:
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, baseUrl
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`/`baseUrl` from `~/.eventmodelers/config.json` 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.
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
- The installer always 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):
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 install and just prints the `claude mcp add` command instead of running it — combined with the env vars above, `--print` makes `init` fully non-interactive:
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