@eventmodelers/cli 1.0.26 → 1.0.27
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/package.json
CHANGED
|
@@ -172,9 +172,7 @@ Update this file as each step completes.
|
|
|
172
172
|
|
|
173
173
|
## Phase Transition Protocol (Mandatory After Every Step)
|
|
174
174
|
|
|
175
|
-
After each step completes, before invoking the next skill
|
|
176
|
-
|
|
177
|
-
### 1. Write a phase summary to memory
|
|
175
|
+
After each step completes, before invoking the next skill, write a phase summary to memory.
|
|
178
176
|
|
|
179
177
|
Append a summary block to `.trogonai/interviews/[project-name]/EVENTMODELING.md`:
|
|
180
178
|
|
|
@@ -187,12 +185,6 @@ Append a summary block to `.trogonai/interviews/[project-name]/EVENTMODELING.md`
|
|
|
187
185
|
|
|
188
186
|
Also update the Interview Trail table row for this step (Status → Done, Key Output → one-line summary).
|
|
189
187
|
|
|
190
|
-
### 2. Compact the context
|
|
191
|
-
|
|
192
|
-
After writing the summary, run `/compact` to clear the accumulated context before loading the next skill. The summary written above is the handoff — the next skill reads it from the file, not from the conversation history.
|
|
193
|
-
|
|
194
|
-
This keeps each step's context lean and prevents token bloat from accumulating across all 11 steps.
|
|
195
|
-
|
|
196
188
|
---
|
|
197
189
|
|
|
198
190
|
## Mid-Workflow Entry
|
|
@@ -480,4 +472,4 @@ specific needs:
|
|
|
480
472
|
- [ ] Completeness check shows no unresolved field traceability gaps
|
|
481
473
|
- [ ] Validation returns PASS or PASS WITH WARNINGS with all critical issues resolved
|
|
482
474
|
- [ ] Interview trail in `.trogonai/` updated with status of each completed step
|
|
483
|
-
- [ ] Phase summary written to memory
|
|
475
|
+
- [ ] Phase summary written to memory after every completed step before loading the next skill
|
package/stacks/modeling-kit/templates/.claude/skills/eventmodeling-storyboarding-events/SKILL.md
CHANGED
|
@@ -215,7 +215,7 @@ Order Entry UI
|
|
|
215
215
|
|
|
216
216
|
### 5. Organize Screens by Swimlane (Actor/System)
|
|
217
217
|
|
|
218
|
-
**MANDATORY**: Use the **Role Catalog** from Step 1 (eventmodeling-brainstorming-events) as the source of swimlanes. Every human role in the catalog MUST have its own swimlane. Every system actor that has a UI or todo-list view gets a swimlane too.
|
|
218
|
+
**MANDATORY**: Use the **Role Catalog** from Step 1 (eventmodeling-brainstorming-events) as the source of swimlanes. Every human role in the catalog MUST have its own swimlane. Every system actor that has a UI or todo-list view gets a swimlane too — but this swimlane is narrative-only (see "Board Integration" below): system actors never get a physical actor lane of their own on the board, only human roles do.
|
|
219
219
|
|
|
220
220
|
Group screens by who interacts with them:
|
|
221
221
|
|
|
@@ -254,7 +254,7 @@ Swimlane: Fulfillment System (System Actor)
|
|
|
254
254
|
|
|
255
255
|
This shows which actors interact with which screens and helps visualize system boundaries.
|
|
256
256
|
|
|
257
|
-
**This grouping is not just narrative** — "Board Integration" below turns each swimlane in this catalog into its own physical actor lane on the board, so a screen's role determines which lane it is actually placed in, not just how it is described in the report.
|
|
257
|
+
**This grouping is not just narrative for human roles** — "Board Integration" below turns each *human role's* swimlane in this catalog into its own physical actor lane on the board, so a screen's role determines which lane it is actually placed in, not just how it is described in the report. System actor swimlanes stay narrative-only: their automations are placed in the chapter's shared default actor lane, never a lane fabricated to mimic a human role's lane (see "Placing Automations" below).
|
|
258
258
|
|
|
259
259
|
### 6. Show Processor "Todo List" Pattern
|
|
260
260
|
For automated processors, show the todo list metaphor:
|
|
@@ -321,9 +321,9 @@ curl -s -H "x-token: $TOKEN" -H "x-board-id: $BOARD_ID" \
|
|
|
321
321
|
|
|
322
322
|
After completing the screen analysis, use the `handle-comment` skill to post a QUESTION comment on any screen node where data fields are unclear or missing sources are identified.
|
|
323
323
|
|
|
324
|
-
## Resolve One Actor Lane Per Role (do this once, before placing any screens)
|
|
324
|
+
## Resolve One Actor Lane Per Human Role (do this once, before placing any screens)
|
|
325
325
|
|
|
326
|
-
**Each role
|
|
326
|
+
**Each human role gets its own physical lane — never place two different human roles' screens in the same actor row.** **System actors and processors are not part of this map** — they are never given a labeled lane of their own; every automation renders in the chapter's shared default actor lane instead (see "Placing Automations" below). A chapter is created with exactly one default `actor` lane, but a chapter can hold several actor-type lanes at once (`learn-eventmodelers-api` §2, `POST .../lanes`). Build a role→lane map covering human roles only, once per chapter, before the screen-placement loop, instead of resolving it screen-by-screen:
|
|
327
327
|
|
|
328
328
|
1. Fetch the chapter and collect every row where `type === "actor"`, keyed by its `label`:
|
|
329
329
|
|
|
@@ -339,7 +339,7 @@ After completing the screen analysis, use the `handle-comment` skill to post a Q
|
|
|
339
339
|
"$BASE_URL/api/org/$ORG_ID/boards/$BOARD_ID/nodes/$CHAPTER_ID"
|
|
340
340
|
```
|
|
341
341
|
|
|
342
|
-
2. For every human role
|
|
342
|
+
2. For every **human role only** in the Role Catalog (Step 1's swimlane list above), check the map for a `label` that matches the role name (case-insensitive). If found, reuse that `rowId`. **Skip system actors/processors entirely** — do not create or look up a lane for them here; they never get an entry in this map.
|
|
343
343
|
|
|
344
344
|
3. **If no matching lane exists, create one** — labeled with the role name, so the lane is visibly identifiable on the board:
|
|
345
345
|
|
|
@@ -360,7 +360,7 @@ After completing the screen analysis, use the `handle-comment` skill to post a Q
|
|
|
360
360
|
|
|
361
361
|
4. **Leave the chapter's original default actor lane alone** — there is no rename endpoint for an existing lane, so don't try to relabel it or force the first role into it. It is fine for it to stay unused; every role, including the first one, gets a freshly labeled lane from Step 3.
|
|
362
362
|
|
|
363
|
-
The result is a `{ roleName: actorRowId }` map used by every
|
|
363
|
+
The result is a `{ roleName: actorRowId }` map, covering human roles only, used by every SCREEN placed in this chapter (Step A below) — resolve it once, not per screen, and re-fetch/extend it only if a new human role appears mid-session that wasn't in the original catalog. **AUTOMATION nodes never consult this map** — they always target the chapter's default actor lane (see "Placing Automations" below).
|
|
364
364
|
|
|
365
365
|
## Mandatory Field Definitions on Screen Nodes
|
|
366
366
|
|
|
@@ -443,7 +443,7 @@ A screen that only has a title and no fields is an empty placeholder — place t
|
|
|
443
443
|
|
|
444
444
|
Every screen node requires rendered content. **HTML_SCREEN (via the `html-screen` rendering path below) is the default for every screen** — render a real HTML/CSS mockup, not a wireframe sketch. Only use the sketch path (plain SCREEN node, grid elements) when the user's request explicitly asked for a "sketch", "wireframe", or "low-fidelity mockup". The correct order for every screen is:
|
|
445
445
|
|
|
446
|
-
**Step A — Compute the cell ID.** Screens go in **that screen's own role's actor lane** in their target column — look up `actorRowId` from the role→lane map built above, keyed by the screen's role (e.g. "Admin", "User"). Never fall back to "the" actor lane as if there were only one.
|
|
446
|
+
**Step A — Compute the cell ID.** This applies to SCREEN nodes (human roles only) — AUTOMATION nodes follow "Placing Automations" below instead. Screens go in **that screen's own role's actor lane** in their target column — look up `actorRowId` from the role→lane map built above, keyed by the screen's role (e.g. "Admin", "User"). Never fall back to "the" actor lane as if there were only one.
|
|
447
447
|
|
|
448
448
|
1. Determine the target column (same column as the event/command, OR one column to the right of the read model).
|
|
449
449
|
2. `actorRowId = roleLaneMap[<this screen's role>]` — the map was already resolved once for the whole chapter; do not re-fetch the chapter per screen. If this screen's role is genuinely new (wasn't in the original Role Catalog), resolve/create its lane now the same way (see above) and add it to the map before continuing.
|
|
@@ -597,7 +597,9 @@ Storyboarding renders **one plain screen per screen state** — do not pre-split
|
|
|
597
597
|
|
|
598
598
|
### Placing Automations
|
|
599
599
|
|
|
600
|
-
When a processor or system actor reacts to events automatically (no human interaction), place an **AUTOMATION** node in
|
|
600
|
+
When a processor or system actor reacts to events automatically (no human interaction), place an **AUTOMATION** node in the chapter's **default actor lane** instead of a SCREEN — never create, reuse, or look up a per-system-actor lane for it, and never resolve it through the human role→lane map above. Automations go in the same column as the COMMAND they trigger and the READMODEL that feeds them.
|
|
601
|
+
|
|
602
|
+
**Do not design automation actor lanes to mimic human ones.** A "Payment Processor" or "Inventory System" swimlane in the narrative report (Step 5 above) is a documentation grouping only — it must never be materialized as its own labeled `actor`-type lane on the board. Only human roles get a physical lane; every automation, regardless of which system actor it narratively belongs to, renders in the same shared default actor lane.
|
|
601
603
|
|
|
602
604
|
A column is an automation column (not a screen column) when:
|
|
603
605
|
- The action is triggered by the system, not a user gesture
|
|
@@ -609,7 +611,7 @@ Examples:
|
|
|
609
611
|
- Inventory check fires after payment authorized → AUTOMATION "Reserve Inventory"
|
|
610
612
|
- Notification service sends an email → AUTOMATION "Send Confirmation Email"
|
|
611
613
|
|
|
612
|
-
Human roles get SCREEN nodes. System actors and processors get AUTOMATION nodes. Place both types during storyboarding — do not defer automations to a later step.
|
|
614
|
+
Human roles get SCREEN nodes placed in their own labeled actor lane. System actors and processors get AUTOMATION nodes placed in the shared default actor lane. Place both types during storyboarding — do not defer automations to a later step.
|
|
613
615
|
|
|
614
616
|
### One Screen Per Column (Hard Rule)
|
|
615
617
|
|
|
@@ -644,6 +646,8 @@ Present as:
|
|
|
644
646
|
|
|
645
647
|
### System Actor Swimlanes
|
|
646
648
|
|
|
649
|
+
_(Narrative grouping only — these are not physical board lanes. Every automation below renders in the chapter's shared default actor lane; see "Placing Automations".)_
|
|
650
|
+
|
|
647
651
|
#### Payment Processor Swimlane
|
|
648
652
|
- Screen 1: Payment Verification (automated)
|
|
649
653
|
- [Shows what UI/views the processor interacts with]
|
|
@@ -728,9 +732,10 @@ Failure produces: [Event]
|
|
|
728
732
|
- [ ] Alternative states are shown
|
|
729
733
|
- [ ] Error states are shown
|
|
730
734
|
- [ ] **Every human role from the Role Catalog has at least one swimlane**
|
|
731
|
-
- [ ] **Every swimlane is labeled with the role
|
|
732
|
-
- [ ] **Swimlanes organized by actor/system**
|
|
733
|
-
- [ ] **Every role's swimlane is a real, distinct `actor`-type lane on the board (`meta.timelineData.rows`), not just a grouping in the markdown report** — no two different roles share the same `actorRowId`
|
|
735
|
+
- [ ] **Every human-role swimlane is labeled with the role name from the catalog**
|
|
736
|
+
- [ ] **Swimlanes organized by actor/system in the narrative report**
|
|
737
|
+
- [ ] **Every human role's swimlane is a real, distinct `actor`-type lane on the board (`meta.timelineData.rows`), not just a grouping in the markdown report** — no two different human roles share the same `actorRowId`
|
|
738
|
+
- [ ] **No system actor / processor has been given its own labeled actor lane** — every AUTOMATION node sits in the chapter's default actor lane, never a lane fabricated to mimic a human role's
|
|
734
739
|
- [ ] **Human role screens clearly separated from processor screens**
|
|
735
740
|
- [ ] **Processor todo list pattern shown for automated systems**
|
|
736
741
|
- [ ] **System boundaries visible through swimlane organization**
|