@jenga-ai/agent 2.0.0 → 3.0.0

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 (165) hide show
  1. package/README.md +75 -243
  2. package/agents/developer.md +5 -5
  3. package/agents/scrum-master.md +23 -23
  4. package/agents/tester.md +5 -5
  5. package/lib/generate-skill-allow-list.js +9 -3
  6. package/lib/skill-allow-list.json +2 -3
  7. package/package.json +15 -25
  8. package/scripts/apply-j-prefix.sh +25 -12
  9. package/scripts/generate-j-alias.sh +333 -0
  10. package/skills/{brainstorm → j-brainstorm}/SKILL.md +9 -2
  11. package/skills/{btw → j-btw}/SKILL.md +9 -2
  12. package/skills/{clearify → j-clearify}/SKILL.md +9 -2
  13. package/skills/{close-story → j-close-story}/SKILL.md +17 -10
  14. package/skills/{close-story → j-close-story}/scripts/check-privatized.sh +2 -2
  15. package/skills/{close-story → j-close-story}/scripts/check-story-closeable.sh +1 -1
  16. package/skills/{close-story → j-close-story}/scripts/extract-task-diff-stats.sh +1 -1
  17. package/skills/{commit → j-commit}/SKILL.md +9 -2
  18. package/skills/j-continue/SKILL.md +36 -0
  19. package/skills/{deep-dive → j-deep-dive}/SKILL.md +9 -8
  20. package/skills/{dev-done → j-dev-done}/SKILL.md +11 -4
  21. package/skills/{dev-done → j-dev-done}/scripts/classify-commit-outcome.sh +4 -4
  22. package/skills/{distribute → j-distribute}/SKILL.md +17 -10
  23. package/skills/{distribute → j-distribute}/scripts/distribute-changes.sh +1 -1
  24. package/skills/{do → j-do}/SKILL.md +12 -5
  25. package/skills/{doc → j-doc}/README.md +5 -5
  26. package/skills/{doc → j-doc}/SKILL.md +15 -8
  27. package/skills/{doc → j-doc}/authoring-notes.md +1 -1
  28. package/skills/{doc-sync → j-doc-sync}/SKILL.md +9 -2
  29. package/skills/{dooo → j-dooo}/SKILL.md +9 -2
  30. package/skills/j-error/SKILL.md +36 -0
  31. package/skills/{evaluate → j-evaluate}/SKILL.md +9 -2
  32. package/skills/j-examplify/SKILL.md +49 -0
  33. package/skills/{help → j-help}/SKILL.md +9 -2
  34. package/skills/{idea → j-idea}/SKILL.md +10 -3
  35. package/skills/{idea → j-idea}/assets/idea_handoff_template.md +1 -1
  36. package/skills/{improve → j-improve}/SKILL.md +9 -2
  37. package/skills/j-init/SKILL.md +2 -2
  38. package/skills/j-jbp/SKILL.md +32 -0
  39. package/skills/j-lgtm/SKILL.md +28 -0
  40. package/skills/{pi-plan → j-pi-plan}/SKILL.md +10 -3
  41. package/skills/{proceed → j-proceed}/SKILL.md +9 -2
  42. package/skills/{publish → j-publish}/SKILL.md +47 -40
  43. package/skills/{publish → j-publish}/adapters/droplet.md +1 -1
  44. package/skills/{publish → j-publish}/adapters/mobile-ios.md +3 -3
  45. package/skills/{publish → j-publish}/adapters/npm-ci.md +3 -3
  46. package/skills/{publish → j-publish}/adapters/npm.md +8 -8
  47. package/skills/{publish → j-publish}/assets/ci-contract.md +2 -2
  48. package/skills/{publish → j-publish}/schemas/publish.schema.json +1 -1
  49. package/skills/{publish → j-publish}/scripts/npm_stage_inspect.sh +34 -1
  50. package/skills/{publish → j-publish}/scripts/npm_stage_pipeline.sh +9 -4
  51. package/skills/{publish → j-publish}/scripts/publish_deploy.sh +4 -4
  52. package/skills/{publish → j-publish}/scripts/validate_npm_stage_env.sh +1 -1
  53. package/skills/{publish → j-publish}/wizards/droplet.md +1 -1
  54. package/skills/{publish → j-publish}/wizards/mobile-ios.md +1 -1
  55. package/skills/{publish → j-publish}/wizards/npm-ci.md +1 -1
  56. package/skills/{publish → j-publish}/wizards/npm.md +1 -1
  57. package/skills/{reconcile → j-reconcile}/SKILL.md +12 -5
  58. package/skills/{reconcile → j-reconcile}/scripts/detect-unlinked-code.sh +2 -2
  59. package/skills/{reconcile → j-reconcile}/scripts/resolve-reconcile-scope.sh +3 -3
  60. package/skills/{reconcile-origin → j-reconcile-origin}/SKILL.md +13 -6
  61. package/skills/{redo → j-redo}/SKILL.md +9 -2
  62. package/skills/{skillify → j-skillify}/SKILL.md +10 -3
  63. package/skills/{spinoff → j-spinoff}/SKILL.md +9 -2
  64. package/skills/{status → j-status}/SKILL.md +9 -2
  65. package/skills/{todo → j-todo}/SKILL.md +10 -3
  66. package/skills/{todo → j-todo}/assets/todo_handoff_template.md +1 -1
  67. package/skills/{todo → j-todo}/scripts/add_trivial_task.sh +3 -3
  68. package/skills/{todo → j-todo}/scripts/update_story_tasks.py +2 -2
  69. package/skills/{uncharted → j-uncharted}/SKILL.md +35 -28
  70. package/skills/{uncharted → j-uncharted}/assets/UNDERSTANDING_DOC_TEMPLATE.md +2 -2
  71. package/skills/{uncharted → j-uncharted}/scripts/detect-dependencies.sh +1 -1
  72. package/skills/{uncharted → j-uncharted}/scripts/detect-tests.sh +1 -1
  73. package/skills/{uncharted → j-uncharted}/scripts/directory-triage.sh +3 -3
  74. package/skills/{uncharted → j-uncharted}/scripts/elicitation-state.sh +3 -3
  75. package/skills/{uncharted → j-uncharted}/scripts/enumerate-target.sh +1 -1
  76. package/skills/{uncharted → j-uncharted}/scripts/import-source.sh +1 -1
  77. package/skills/{uncharted → j-uncharted}/scripts/inspect-provenance.sh +1 -1
  78. package/skills/{uncharted → j-uncharted}/scripts/resolve-segment-target.sh +5 -5
  79. package/skills/{uncharted → j-uncharted}/scripts/run-engine.sh +1 -1
  80. package/skills/{uncharted → j-uncharted}/scripts/validate-proposed-items.sh +2 -2
  81. package/skills/{uncharted → j-uncharted}/scripts/write-backfilled-epics.sh +1 -1
  82. package/skills/j-wtf/SKILL.md +27 -0
  83. package/skills/jenga/SKILL.md +1 -1
  84. package/skills/jenga-permission-level/SKILL.md +1 -1
  85. package/templates/SCRUM_BOARD_SCHEMA.md +1 -1
  86. package/templates/agent-context.md.tpl +10 -10
  87. package/templates/copilot-instructions.md.tpl +57 -19
  88. package/skills/continue/SKILL.md +0 -29
  89. package/skills/error/SKILL.md +0 -29
  90. package/skills/examplify/SKILL.md +0 -42
  91. package/skills/init/SKILL.md +0 -155
  92. package/skills/init/assets/scope-thresholds_template.json +0 -7
  93. package/skills/init/assets/strategy_stub_template.md +0 -38
  94. package/skills/init/assets/workflow_template.json +0 -30
  95. package/skills/init/scripts/apply-project-visibility.sh +0 -176
  96. package/skills/init/scripts/detect-existing-codebase.sh +0 -166
  97. package/skills/init/scripts/init.sh +0 -116
  98. package/skills/jbp/SKILL.md +0 -25
  99. package/skills/lgtm/SKILL.md +0 -21
  100. package/skills/skillify/assets/init-new/assets/.gitignore_template +0 -15
  101. package/skills/skillify/assets/init-new/assets/PROJECT_SUMMARY_template.md +0 -13
  102. package/skills/skillify/assets/init-new/assets/directory_structure.txt +0 -14
  103. package/skills/skillify/assets/init-new/assets/test-config_template.json +0 -4
  104. package/skills/wtf/SKILL.md +0 -20
  105. /package/skills/{close-story → j-close-story}/scripts/compute-scope-divergence.sh +0 -0
  106. /package/skills/{close-story → j-close-story}/scripts/extract-diff-stats.sh +0 -0
  107. /package/skills/{close-story → j-close-story}/scripts/update-task-frontmatter.sh +0 -0
  108. /package/skills/{commit → j-commit}/assets/user_instructions_template.md +0 -0
  109. /package/skills/{distribute → j-distribute}/CONFIG_SCHEMA.md +0 -0
  110. /package/skills/{distribute → j-distribute}/scripts/check-version.sh +0 -0
  111. /package/skills/{distribute → j-distribute}/scripts/commit-version-bump.sh +0 -0
  112. /package/skills/{do → j-do}/assets/intent-vs-diff-prompt.md +0 -0
  113. /package/skills/{do → j-do}/assets/sender_template.json +0 -0
  114. /package/skills/{doc → j-doc}/assets/path-objectives.yaml +0 -0
  115. /package/skills/{doc → j-doc}/scripts/resolve_last_update.py +0 -0
  116. /package/skills/{doc-sync → j-doc-sync}/assets/default_excludes.txt +0 -0
  117. /package/skills/{doc-sync → j-doc-sync}/assets/doc_targets.md +0 -0
  118. /package/skills/{evaluate → j-evaluate}/assets/evaluation_invokation_template.yml +0 -0
  119. /package/skills/{evaluate → j-evaluate}/assets/evaluation_rapport_template.md +0 -0
  120. /package/skills/{idea → j-idea}/assets/idea_template.md +0 -0
  121. /package/skills/{pi-plan → j-pi-plan}/assets/epic.json +0 -0
  122. /package/skills/{pi-plan → j-pi-plan}/assets/story_template.md +0 -0
  123. /package/skills/{publish → j-publish}/assets/ExportOptions.plist.template +0 -0
  124. /package/skills/{publish → j-publish}/assets/ownership-matrix.md +0 -0
  125. /package/skills/{publish → j-publish}/assets/publish.example.json +0 -0
  126. /package/skills/{publish → j-publish}/assets/publish.example.npm-ci.json +0 -0
  127. /package/skills/{publish → j-publish}/assets/publish.example.npm.json +0 -0
  128. /package/skills/{publish → j-publish}/assets/secrets-guide.md +0 -0
  129. /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-minimal.json +0 -0
  130. /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-with-empty-secrets.json +0 -0
  131. /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-with-workflow-path.json +0 -0
  132. /package/skills/{publish → j-publish}/scripts/check_target_config.sh +0 -0
  133. /package/skills/{publish → j-publish}/scripts/droplet_pipeline.sh +0 -0
  134. /package/skills/{publish → j-publish}/scripts/finalize_changelog.sh +0 -0
  135. /package/skills/{publish → j-publish}/scripts/generate_release_notes.sh +0 -0
  136. /package/skills/{publish → j-publish}/scripts/ios_pipeline.sh +0 -0
  137. /package/skills/{publish → j-publish}/scripts/npm_ci_pipeline.sh +0 -0
  138. /package/skills/{publish → j-publish}/scripts/npm_pipeline.sh +0 -0
  139. /package/skills/{publish → j-publish}/scripts/publish_common.sh +0 -0
  140. /package/skills/{publish → j-publish}/scripts/reconcile_tags.sh +0 -0
  141. /package/skills/{publish → j-publish}/scripts/run_gates.sh +0 -0
  142. /package/skills/{publish → j-publish}/scripts/setup_wizard.sh +0 -0
  143. /package/skills/{publish → j-publish}/scripts/show_history.sh +0 -0
  144. /package/skills/{publish → j-publish}/scripts/suggest_semver_bump.sh +0 -0
  145. /package/skills/{publish → j-publish}/scripts/validate_config.sh +0 -0
  146. /package/skills/{publish → j-publish}/scripts/validate_droplet_env.sh +0 -0
  147. /package/skills/{publish → j-publish}/scripts/validate_ios_env.sh +0 -0
  148. /package/skills/{publish → j-publish}/scripts/validate_npm_ci_env.sh +0 -0
  149. /package/skills/{publish → j-publish}/scripts/validate_npm_env.sh +0 -0
  150. /package/skills/{publish → j-publish}/scripts/write_ledger_entry.sh +0 -0
  151. /package/skills/{reconcile → j-reconcile}/assets/report_format.md +0 -0
  152. /package/skills/{reconcile-origin → j-reconcile-origin}/scripts/reconcile-origin.sh +0 -0
  153. /package/skills/{skillify → j-skillify}/assets/init-new/SKILL.md +0 -0
  154. /package/skills/{init → j-skillify/assets/init-new}/assets/.gitignore_template +0 -0
  155. /package/skills/{init → j-skillify/assets/init-new}/assets/PROJECT_SUMMARY_template.md +0 -0
  156. /package/skills/{init → j-skillify/assets/init-new}/assets/directory_structure.txt +0 -0
  157. /package/skills/{init → j-skillify/assets/init-new}/assets/test-config_template.json +0 -0
  158. /package/skills/{skillify → j-skillify}/assets/init-new/assets/workflow_template.json +0 -0
  159. /package/skills/{skillify → j-skillify}/assets/init-new/scripts/init.sh +0 -0
  160. /package/skills/{skillify → j-skillify}/assets/init-old/SKILL.md +0 -0
  161. /package/skills/{status → j-status}/assets/output_format.md +0 -0
  162. /package/skills/{todo → j-todo}/assets/todo_template.md +0 -0
  163. /package/skills/{uncharted → j-uncharted}/assets/SEGMENT_PROPOSAL_TEMPLATE.md +0 -0
  164. /package/skills/{uncharted → j-uncharted}/scripts/apply-subsystem-cap.sh +0 -0
  165. /package/skills/{uncharted → j-uncharted}/scripts/discover-subsystems.sh +0 -0
package/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  # Jenga AI
2
+ ### No agent merges its own code.
2
3
 
3
- > ⚠️ **Upgrading from a prior version?** Earlier releases could hit a command-collision bug: some host tools (e.g. GitHub Copilot) ship their own built-in `/init` command, which could silently shadow Jenga's own `/init` skill. This release adds **`/j-init`** — an identical, collision-safe copy of `/init` — so you always have a guaranteed-unshadowed way to scaffold a project. If `/init` isn't behaving as documented, run `/j-init` instead.
4
-
5
- **A structured multi-agent development workflow that works with any AI agent or AI-native IDE.** Three specialised AI agents — Scrum Master, Developer, and Tester — collaborate through a shared scrum board, an event-driven trigger queue, and a coordinated pipeline of `j:`-prefixed skills that hand work between them — to take a project from idea to verified, committed code — across as many sessions as it takes.
4
+ Jenga AI is an agentic software engineering framework for AI-assisted development: it splits work across three role-bounded agents — a Scrum Master that plans, a Developer that implements in an isolated git worktree, and a Tester that runs your test suite and owns the board status. Work survives session boundaries as Epics, Stories, and Tasks on a Markdown board your agent reads at the start of every session.
6
5
 
7
6
  [![npm version](https://img.shields.io/npm/v/@jenga-ai/agent.svg)](https://www.npmjs.com/package/@jenga-ai/agent)
8
7
  [![license](https://img.shields.io/npm/l/@jenga-ai/agent.svg)](LICENSE)
@@ -13,125 +12,107 @@ npm install @jenga-ai/agent
13
12
 
14
13
  ## The Problem It Solves
15
14
 
16
- Without a framework like Jenga AI, AI-assisted development has serious structural weaknesses:
15
+ You've had this happen: Claude wrote the feature, said it worked, and the session ended. Next session it had no idea any of it existed. Without a framework like Jenga AI, AI-assisted development has serious structural weaknesses:
17
16
 
18
17
  [![How AI Coding Agents Understand Your Codebase & Developer Tools](https://img.youtube.com/vi/zAe-sau06io/maxresdefault.jpg)](https://www.youtube.com/watch?v=zAe-sau06io)
19
18
 
20
- *"How AI Coding Agents Understand Your Codebase & Developer Tools" — IBM Technology on the same gap in session memory and tooling context that Jenga AI's board and agent contracts are built to close.*
19
+ *"How AI Coding Agents Understand Your Codebase & Developer Tools" — IBM Technology on the same gap in persistent development context and tooling context that Jenga AI's board and agent contracts are built to close.*
21
20
 
22
21
  | Problem | Reality |
23
22
  |---|---|
24
- | **AI has no session memory** | Every AI agent session starts from scratch — no awareness of open tasks, past decisions, or what was already tested |
23
+ | **No persistent engineering context** | Every AI agent session starts from scratch — no awareness of open tasks, past decisions, or what was already tested |
25
24
  | **No role separation** | The AI writes *and* "tests" code in the same context, leading to hallucinated test results and self-affirming bugs |
26
25
  | **No structured planning** | Work happens ad-hoc — no Epic → Story → Task hierarchy to organise or track progress |
27
26
  | **No handoff protocol** | Switching from implementing to testing means manually re-explaining context every time |
28
27
  | **No audit trail** | You can't replay *why* something was built, by which agent, based on which task |
29
28
  | **Sessions just end** | Work-in-progress, unresolved problems, and incomplete stories silently vanish |
30
29
 
31
- Jenga AI solves each of these with structure: persistent board state, strict agent roles, typed inter-agent contracts, and session-end hooks that preserve context between sessions.
30
+ Jenga AI solves each of these with structure: persistent engineering context maintained via board state, strict agent roles, typed inter-agent contracts, and session-end hooks that carry that context between sessions.
32
31
 
33
32
  ---
34
33
 
35
34
  ## What You Get
36
35
 
37
36
  - **Three specialised agents** — Scrum Master, Developer, Tester — each with a distinct role and no self-graded work
38
- - **A persistent scrum board** — Epics, Stories, and Tasks tracked as Markdown files with structured frontmatter, surviving every session boundary
39
- - **A coordinated skill pipeline, not a command list** — planning skills (`j:pi-plan`, `j:todo`) hand off to execution skills (`j:do`, `j:dooo`), which hand off to review skills (`j:status`, `j:reconcile`), each stage reading and writing the same board state — the old bare `/<name>` form still works everywhere as a permanent alias
37
+ - **A persistent, Kanban-style scrum board** — Epics, Stories, and Tasks tracked as Markdown files with structured frontmatter, surviving every session boundary
38
+ - **A coordinated skill pipeline — one agentic workflow, not a command list** — planning skills (`j.pi-plan`, `j.todo`) hand off to execution skills (`j.do`, `j.dooo`), which hand off to review skills (`j.status`, `j.reconcile`), each stage reading and writing the same board state — the old bare `/<name>` form still works everywhere as a permanent alias
40
39
  - **An event-driven trigger queue** — async handoffs between agents with a full audit trail in `project/logs/events.json`
41
40
  - **Isolated git worktrees per task** — the Developer never works directly on your main branch
42
- - **Works with any AI agent or IDE** — Claude Code, GitHub Copilot, and Codex CLI are all supported today
41
+ - **Works with any AI coding agent or AI-native IDE** — Claude Code, GitHub Copilot, and Codex CLI are all supported today
43
42
 
44
43
  > 📖 **Full reference:** [project/.wiki/documentation.md](project/.wiki/documentation.md) | [Intro Guide](project/.wiki/intro-guide.md)
45
44
 
45
+ ### "Isn't this just an LLM grading another LLM?"
46
+
47
+ The Tester doesn't read your code and form an opinion about it. It executes the test suite you configure in `project/configs/test-config.json` and reports pass or fail — in this repo, `bats` for unit and integration, `shellcheck` for SAST. What Jenga guarantees structurally is that the agent that wrote the code is not the agent that decides it's done, and doesn't get to write its own status onto the board. What comes out of that gate depends on what you wire into it — the same as any CI pipeline.
48
+
46
49
  ## Platform Support
47
50
 
48
51
  | Agent | Skills & Agents | Root Context File |
49
52
  |---|---|---|
50
- | **Claude Code** | `.claude/` — mirrored automatically on install | `CLAUDE.md` — generated by `j:init` today |
53
+ | **Claude Code** | `.claude/` — mirrored automatically on install | `CLAUDE.md` — generated by `j.init` today |
51
54
  | **GitHub Copilot** | `.agents/` — mirrored automatically on install | `.github/copilot-instructions.md` — bootstrapped at `npm install` time, refined by `jenga init` |
52
- | **Codex** | `.agents/` — mirrored automatically on install | `AGENTS.md` — generated by `j:init` today |
55
+ | **Codex** | `.agents/` — mirrored automatically on install | `AGENTS.md` — generated by `j.init` today |
53
56
 
54
- `CLAUDE.md` and `AGENTS.md` are generated unconditionally by `j:init` — every agent gets a real, populated root-level context file out of the box, not just a pointer. If either file already exists as a genuine pre-existing user file, Jenga writes its own copy as `J-CLAUDE.md` / `J-AGENTS.md` instead and inserts a short reference into the existing file, leaving it otherwise untouched.
57
+ `CLAUDE.md` and `AGENTS.md` are generated unconditionally by `j.init` — every agent gets a real, populated root-level context file, not just a pointer. If either file already exists as a genuine pre-existing user file, Jenga leaves it untouched, writes its own copy as `J-CLAUDE.md` / `J-AGENTS.md`, and inserts a short reference line into the original.
55
58
 
56
- `.github/copilot-instructions.md` follows a different path: `scripts/postinstall.js` writes it unconditionally and non-interactively the moment `npm install` finishes, so Copilot has working `j:<name>` routing instructions (the bare `/<name>` form also still resolves, as a permanent alias) even if a consumer's very first action is a Copilot slash command, before the separate `jenga init` CLI wizard has ever run. Running `jenga init` afterward refines the same file using the user's actual chosen skills path — it is never generated by the `j:init` skill itself.
59
+ `.github/copilot-instructions.md` follows a different path, because Copilot needs it before `j.init` may ever run: `npm install` triggers `scripts/postinstall.js`, which writes it unconditionally and non-interactively, so `j.<name>` routing (the bare `/<name>` form still resolves too, as a permanent alias) works from a consumer's very first Copilot command. A later `jenga init` run refines that same file using the project's actual chosen skills path.
57
60
 
58
61
  ---
59
62
 
60
63
  ## Examples
61
64
 
62
- ### Before / After
65
+ ### A Real Session, On This Repo
63
66
 
64
- **Without Jenga AI:**
65
- ```
66
- You: "Add user authentication"
67
- AI agent: [writes auth code, declares it works, session ends]
67
+ Not a demo — this is what actually produced the section you're reading.
68
68
 
69
- Next session:
70
- You: "What's the status of auth?"
71
- AI agent: "I don't have context from the previous session."
72
- ```
69
+ The conversation starts with a request to align this README's language and content with a positioning plan drafted for this epic (E41):
73
70
 
74
- **With Jenga AI:**
75
71
  ```
76
- j:todo → "Add user authentication" → linked to E01_S02
77
- j:do → Developer creates worktree E01_S02_T01-auth
78
- → implements, commits at milestones
79
- → hands off to Tester with sender object
72
+ j.improve E41: I want to make some adjustments to the README in both
73
+ language as well as content to better match [the E41 positioning plan]
74
+ [...]
75
+ ```
80
76
 
81
- Tester → runs tests, updates board status to ✅ Passed
82
- SessionEnd → writes status_review trigger to queue
77
+ That plan already existed, so the copy gets edited directly — no need to re-run a fresh analysis pass just to re-derive it. A few edits later, ten more issues surface, one with an `j.brainstorm` request attached:
83
78
 
84
- Next session:
85
- j:status → "E01_S02 ✅ complete — E01_S03 pending"
79
+ ```
80
+ Then do a j.todo on this, as there are more places that should be
81
+ edited based on that scrutiny rapport:
82
+ * Remove warning banner about Copilot conflict
83
+ [...]
84
+ * Fewer, better and more relatable examples, we should
85
+ j.brainstorm this so I can send examples from real world usecases
86
+ [...]
87
+ * Should we really display the entire Skill list here?
88
+ [...]
86
89
  ```
87
90
 
88
- ---
89
-
90
- ### Real-World Scenario: Building a Feature Across Sessions
91
+ `j.todo` classifies the ten items into two stories: nine mechanical README fixes (`E41_S10`), and the Examples section you're reading right now (`E41_S11`) — carved out and held back specifically because of that `j.brainstorm` request, since a real example had to come from the user, not be invented.
91
92
 
92
- Imagine you're building a REST API with auth, rate limiting, and an admin dashboard. Each is a separate Epic. Here's how Jenga AI handles that across multiple days:
93
+ Once `E41_S10` is on the board, it's picked to run first. The Scrum Master reads the story and decomposes it into seven tasks, executed through `j.do`. Five are small, single-file text fixes deemed `--trivial` — they run inline, smoke-tested and committed directly, no worktree needed. Two need an editorial call — one of them being which skills are "foundational" enough to stay inline — those escalate to a real git worktree with a Developer and a Tester. The Tester independently re-verifies the diff, catches one file the Developer missed, fixes it, and queues the story for rollup. The Scrum Master processes that queue next: `E41_S10` → `Passed`. Epic `E41` stays `In Progress` — three other stories are still open.
93
94
 
94
- **Planning**
95
- ```
96
- j:init → scaffolds project/, board/, workflow.json
97
- j:pi-plan → Scrum Master helps shape the auth epic into stories
98
- j:todo → "Add JWT auth" → E01_S01, "Add refresh tokens" → E01_S02
99
- ```
95
+ Then, circling back to the deferred request:
100
96
 
101
- **Implementation**
102
- ```
103
- j:do → Developer picks up E01_S01_T01-jwt-middleware
104
- → creates isolated worktree, implements, commits
105
- → Tester validates, marks Passed, triggers rollup
106
- j:status → E01_S01 ✅, E01_S02 Pending
107
- j:continue → picks up E01_S02 automatically
108
- j:proceed → resumes project plan from current board state
109
97
  ```
98
+ Jenga AI: [...] Remaining open thread from this session: E41_S11
99
+ (Examples rework) is on the board but not started — it's gated on
100
+ a j.brainstorm session where you supply real-world use cases. Want
101
+ to do that now, or leave it queued?
110
102
 
111
- **New idea mid-session**
112
- ```
113
- You: "Actually, let's also add API rate limiting while we're at it"
114
- j:btw → captures "rate limiting" as E02 without losing E01 context
115
- → returns focus to E01_S02
116
- j:spinoff → captures a diverging topic mid-conversation, saves as j:todo
117
- → returns focus to primary thread
103
+ You: do it now
118
104
  ```
119
105
 
120
- **Parallel work**
121
- ```
122
- j:jenga → interactive board orchestrator: pick or scope, confirm, then execute (`j:jenga *` for the original fully automated, no-prompts run)
123
- j:dooo → orchestrates E01_S02 and E02_S01 in parallel sub-agents
124
- j:reconcile → syncs board with actual git history after parallel merges
125
- ```
106
+ `j.brainstorm` opens for the gated story — the session you're reading right now, working out what this example should even say.
126
107
 
127
- The board, the audit log, and `PROJECT_SUMMARY.md` survive every session boundary. You never re-explain context.
108
+ Nobody hand-wrote this task breakdown. The board did it, the routing rules decided what needed a real worktree versus what could run inline, and the Tester — not the agent that made the edits — decided when each piece was actually done. The board entries are real: `E41_S10` and `E41_S11`.
128
109
 
129
110
  ---
130
111
 
131
- ## How It Works
112
+ ## How Jenga AI's Agentic Workflow Works
132
113
 
133
114
  ```
134
- j:init → j:pi-plan → j:todo → j:do
115
+ j.init → j.pi-plan → j.todo → j.do
135
116
  │
136
117
  Developer agent
137
118
  (isolated worktree, commits)
@@ -172,7 +153,7 @@ Each agent is defined in `.agents/agents/`. They communicate exclusively through
172
153
 
173
154
  **Prerequisites:** An AI agent or AI-native IDE. Supported platforms include:
174
155
  - [Claude Code](https://docs.anthropic.com/en/docs/claude-code)
175
- - GitHub Copilot (VS Code extension or CLI)
156
+ - [GitHub Copilot](https://github.com/features/copilot) (VS Code extension or CLI)
176
157
  - Codex CLI
177
158
 
178
159
  **Install from npm:**
@@ -182,13 +163,13 @@ npm install -g @jenga-ai/agent
182
163
 
183
164
  Or clone directly:
184
165
 
185
- 1. **Clone or copy this repo** into your project's `.agents/` directory (or wherever you keep project tooling).
186
- 2. **Run `j:init`** — scaffolds `project/`, creates `workflow.json`, `PROJECT_SUMMARY.md`, and makes an initial commit.
187
- 3. **Run `j:pi-plan`** — define your project goals and initial epics.
188
- 4. **Run `j:todo`** — describe features to implement; they're linked to the board automatically.
189
- 5. **Run `j:do`** — picks the first task and drives the full implement → test → commit loop.
166
+ 1. **Clone or copy this repo** into your project's root.
167
+ 2. **Run `j.init`** — scaffolds `project/`, creates `workflow.json`, `PROJECT_SUMMARY.md`, and makes an initial commit.
168
+ 3. **Run `j.pi-plan`** — define your project goals and initial epics.
169
+ 4. **Run `j.todo`** — describe features to implement; they're linked to the board automatically.
170
+ 5. **Run `j.do`** — picks the first task and drives the full implement → test → commit loop.
190
171
 
191
- Run `j:status` at any time to see where the project stands.
172
+ Run `j.status` at any time to see where the project stands.
192
173
 
193
174
  ---
194
175
 
@@ -208,189 +189,40 @@ The framework is platform-agnostic by design — any AI agent that can read Mark
208
189
 
209
190
  ## Skills (Slash Commands)
210
191
 
211
- Skills live in `.agents/skills/<name>/SKILL.md`. Invoke with `j:<name>` in your AI agent or IDE's command interface — the old bare `/<name>` form also keeps working permanently as an alias.
212
-
213
- ### Setup & Planning
214
-
215
- | Command | Description |
216
- |---|---|
217
- | `j:init` | Scaffold project directories, `workflow.json`, `PROJECT_SUMMARY.md`, initial git commit |
218
- | `j:jbp` | Scaffold using the [JengaBasePlate](https://github.com/samwelmunga/JengaBasePlate.git) boilerplate |
219
- | `j:jenga` | Interactive-by-default board orchestrator — bare shows a picker + confirmation tree, `<ids>` scopes and confirms, `*` runs fully automated with no prompts |
220
- | `j:pi-plan` | Define or expand Epics in `PROJECT_SUMMARY.md` — use at start or when adding major new work |
221
- | `j:brainstorm` | Focused planning session with the Scrum Master before committing anything to the board |
222
- | `j:deep-dive` | Multi-phase investigation — gathers info, brainstorms, scrutinises, and produces a refined output |
223
- | `j:uncharted` | Entry point for code with no board provenance — `segment` (a file or directory), `import` (an external source), `onboard` (a whole pre-existing codebase) |
224
- | `j:todo` | Add missions to `project/todo.md` linked to epics and stories |
225
- | `j:btw` | Capture a mid-flow idea, classify it into epic/story structure, implement now or defer |
226
- | `j:spinoff` | Capture a diverging topic without losing your current thread |
227
-
228
- ### Execution
229
-
230
- | Command | Description |
231
- |---|---|
232
- | `j:do` | Execute tasks from the scrum board, drives the Developer agent through the full loop |
233
- | `j:dooo` | Parallel execution orchestrator — runs multiple tasks simultaneously via sub-agents |
234
- | `j:redo` | Rework a previous implementation by commit SHA or Epic/Story number |
235
- | `j:publish` | Configure, validate, and orchestrate scaffolded release workflows — `setup`, `deploy`, `stage` (npm/npm-ci pre-approval staged publishing), `history`, `release-notes` |
236
- | `j:error` | Guided troubleshooting — gathers context, investigates, and drives a fix |
237
- | `j:train` | Scaffold and run ML training jobs (new job from template or run existing) |
192
+ Skills live in `.agents/skills/<name>/SKILL.md`. Invoke with `j.<name>` in your AI agent or IDE's command interface — the old bare `/<name>` form also keeps working permanently as an alias. A handful of the most foundational commands:
238
193
 
239
- ### Status & Review
194
+ > ⚠️ **Command collision with a host tool?** Some host tools ship their own built-in command that can
195
+ > shadow one of Jenga's — e.g. GitHub Copilot's own built-in `/init`, which could silently shadow
196
+ > Jenga's `/init` skill. Every skill (except `init`, already handled) has a collision-safe `/j-<name>`
197
+ > directory-twin form — e.g. `/j-init` — that always resolves to the genuine Jenga skill regardless of
198
+ > what else is installed. This is separate from the `j.<name>` prefix form above: it's a real duplicate
199
+ > directory under a distinct name, not a routing alias, generated and kept in sync via
200
+ > `scripts/generate-j-alias.sh`. If a `j.<name>` or bare `/<name>` command isn't behaving as
201
+ > documented, try its `/j-<name>` form instead.
240
202
 
241
203
  | Command | Description |
242
204
  |---|---|
243
- | `j:status` | Print a full scrum board overview — epics, stories, tasks, rapports, queue depth |
244
- | `j:jenga-permission-level` | Report or switch the current session's 5-tier permission level (Locked/Guarded/Standard/Elevated/Unrestricted) without hand-editing settings.json |
245
- | `j:continue` | Check project status and pick up the next incomplete item |
246
- | `j:proceed` | Review progress and resume executing the project plan |
247
- | `j:reconcile` | Sync the board with actual git history — fixes drift, merges orphaned worktrees |
248
- | `j:reconcile-origin` | Sync the current or specified branch with origin via rebase. Presents conflict reports with resolution options. |
205
+ | `j.init` | Scaffold project directories, `workflow.json`, `PROJECT_SUMMARY.md`, initial git commit |
206
+ | `j.jenga` | Interactive-by-default board orchestrator — bare shows a picker + confirmation tree, `<ids>` scopes and confirms, `*` runs fully automated with no prompts |
207
+ | `j.todo` | Add missions to `project/todo.md` linked to epics and stories |
208
+ | `j.do` | Execute tasks from the scrum board, drives the Developer agent through the full loop |
209
+ | `j.status` | Print a full scrum board overview — epics, stories, tasks, rapports, queue depth |
249
210
 
250
- ### Committing & Maintenance
251
-
252
- | Command | Description |
253
- |---|---|
254
- | `j:commit` | Commit completed work using the EST naming convention |
255
- | `j:lgtm` | Approve current work, commit, and continue — chains `j:commit` + `j:continue` |
256
- | `j:distribute` | Propagate workflow changes to all registered consumer projects |
257
- | `j:doc` | Generate or update a documentation file from codebase evidence |
258
- | `j:doc-sync` | Compare project state with documentation and update stale docs |
259
- | `j:skillify` | Refactor a skill — extract assets, offload scripts, clean up the body |
260
- | `j:route` | Intelligently route a prompt to the best-matching skill |
261
- | `j:improve` | Analyse a codebase and produce a structured improvement plan |
262
- | `j:evaluate` | Analyse example files against a target goal and produce an evaluation rapport |
263
- | `j:examplify` | Explain a concept, feature, or pattern with grounded examples |
264
- | `j:help` | List all available skills with descriptions |
265
- | `j:customize-cloud-agent` | Configure the Copilot cloud agent environment (`copilot-setup-steps.yml`, preinstalls, runners) |
266
-
267
- ---
268
-
269
- ## Distributing the Workflow
270
-
271
- Jenga AI can propagate its workflow files to other projects on your machine via `j:distribute`.
272
-
273
- 1. **Register consumer projects** — add each consuming project to `distribute.config.json` at the repo root (or pass a path directly: `j:distribute /path/to/project`).
274
- 2. **Run `j:distribute`** — choose `major`, `minor`, `patch`, or `amend` release type; the skill handles versioning, dry-run preview, file copy, and a version bump commit.
275
-
276
- Each consuming project holds a `jenga.config.json` tracking the distributed version, last distribution date, and source. To exclude specific files per consumer project, add a `.jenga_ignore` at the consumer root (never overwritten by distribute).
277
-
278
- ---
279
-
280
- ## Directory Structure
281
-
282
- ```
283
- .agents/ ← Workflow root (place this in your project)
284
- ├── agents/
285
- │ ├── scrum-master.md
286
- │ ├── developer.md
287
- │ └── tester.md
288
- ├── hooks/
289
- │ └── on_session_end.sh
290
- ├── mcp/
291
- │ ├── help/
292
- │ └── execute-ticket/
293
- ├── skills/
294
- │ ├── brainstorm/
295
- │ ├── btw/
296
- │ ├── commit/
297
- │ ├── continue/
298
- │ ├── deep-dive/
299
- │ ├── distribute/
300
- │ ├── do/
301
- │ ├── doc/
302
- │ ├── doc-sync/
303
- │ ├── dooo/
304
- │ ├── error/
305
- │ ├── evaluate/
306
- │ ├── examplify/
307
- │ ├── help/
308
- │ ├── improve/
309
- │ ├── init/
310
- │ ├── pi-plan/
311
- │ ├── jbp/
312
- │ ├── jenga/
313
- │ ├── lgtm/
314
- │ ├── proceed/
315
- │ ├── reconcile/
316
- │ ├── redo/
317
- │ ├── route/
318
- │ ├── skillify/
319
- │ ├── spinoff/
320
- │ ├── status/
321
- │ ├── todo/
322
- │ └── train/
323
- ├── templates/
324
- │ ├── SCRUM_BOARD_SCHEMA.md
325
- │ ├── PROBLEM_RAPPORT_TEMPLATE.md
326
- │ └── JENGA_CONFIG_TEMPLATE.json
327
- ├── settings.json
328
- ├── jenga.config.json ← Workflow version source
329
- ├── .jenga_paths ← Machine-local consumer paths (git-ignored)
330
- └── RELEASE_NOTE.md
331
-
332
- project/ ← Created by j:init inside your software project
333
- ├── board/
334
- │ ├── epics/ ← E##_<slug>.md
335
- │ ├── stories/ ← E##_S##_<slug>.md
336
- │ └── tasks/ ← E##_S##_T##_<slug>.md
337
- ├── configs/
338
- │ ├── workflow.json ← Shared constants (statuses, paths, agents)
339
- │ └── test-config.json ← Test tool stack (owned by Tester, user-approved)
340
- ├── data/
341
- │ └── baselines.json ← Analytics baselines (owned by Tester)
342
- ├── documentation/
343
- │ ├── plans/ ← Pre-execution plans by Developer
344
- │ └── summaries/ ← Post-execution summaries by Developer
345
- ├── queue/
346
- │ ├── scrum_triggers.jsonl
347
- │ ├── developer_triggers.jsonl
348
- │ ├── tester_triggers.jsonl
349
- │ └── project_summary_updates.jsonl
350
- ├── rapports/
351
- │ ├── problems/ ← Problem rapports (Developer + Tester)
352
- │ └── analysis/ ← Analysis rapports (Tester)
353
- ├── logs/
354
- │ └── events.json ← Append-only inter-agent event log
355
- └── PROJECT_SUMMARY.md ← Project source of truth (owned by Scrum Master)
356
-
357
- CHANGELOG.md ← Created by j:init at the project's repo root; maintained by j:publish
358
- ```
359
-
360
- ---
361
-
362
- ## Agent Communication Contract
363
-
364
- Every inter-agent call passes a typed **sender object**:
365
-
366
- ```json
367
- {
368
- "sender": {
369
- "agent": "<scrum-master | developer | tester | orchestrator>",
370
- "session_id": "<session id>",
371
- "task_id": "<E##_S##_T##>",
372
- "story_id": "<E##_S##>",
373
- "epic_id": "<E##>",
374
- "date": "<ISO 8601 UTC>",
375
- "paths": ["<commit SHA>", "..."],
376
- "worktree": "<absolute path to worktree>",
377
- "resolved_context": "<optional: path to a digest file under project/queue/context/>"
378
- }
379
- }
380
- ```
381
-
382
- All agents log every incoming sender object to `project/logs/events.json` as their **first action** on every invocation. `resolved_context` is optional — a size-capped digest of what the sending agent already resolved (relevant schema fields, skill precedent, prior decisions), written via `scripts/write-context-digest.sh` so the receiving agent doesn't have to cold-re-read source docs its parent already navigated. It's a starting point, never a restriction — the receiver can still read full source files.
211
+ > 📖 **Full skill list** (planning, review, committing & maintenance commands): [project/.wiki/documentation.md](project/.wiki/documentation.md#skills)
383
212
 
384
213
  ---
385
214
 
386
215
  ## When to Use Jenga AI
387
216
 
388
217
  **Use it when:**
389
- - You're building a non-trivial project across multiple sessions
390
- - You want reliable test separation — the Tester never trusts the Developer's self-assessment
218
+ - You're building a non-trivial project across multiple sessions and need persistent engineering context instead of re-explaining it every time
219
+ - You want an agentic development workflow with separate planning, coding, testing, and review agents — not one model self-grading its own work
391
220
  - You need traceability — who did what, when, on which task
392
- - You want to reuse and propagate your AI workflow across multiple projects
221
+ - You're working across more than one AI coding agent or AI-native IDE and want one workflow, not a separate setup per tool
222
+ - You want to reuse and propagate the same agentic workflow across multiple projects (`j.distribute`)
393
223
 
394
224
  **You might not need it when:**
395
225
  - You're doing a quick one-off script or single-session experiment
396
226
  - Your project has no meaningful test surface
227
+
228
+ 📖 **Full reference:** [project/.wiki/documentation.md](project/.wiki/documentation.md)
@@ -160,7 +160,7 @@ Commit at defined milestones within a task — not after every line, and not onl
160
160
 
161
161
  Write clear, descriptive commit messages. Your commit messages serve as a guide for the tester — they should communicate what changed and why, not just what files were touched.
162
162
 
163
- Use the `j:commit` skill to commit.
163
+ Use the `j.commit` skill to commit.
164
164
 
165
165
  ### Crucial Tier: `advisory`
166
166
 
@@ -213,11 +213,11 @@ This list is fixed and verbatim across both this file and `agents/tester.md` —
213
213
 
214
214
  **Trigger.** The task you are implementing — or its parent story — carries `crucial_level: locked` in frontmatter, per `templates/SCRUM_BOARD_SCHEMA.md`'s "Crucial Flag Fields (Story, Task)" section.
215
215
 
216
- **Effect — forced inline scope.** `execution_scope` is force-set to `inline` for any `locked` task, overriding whatever scope `j:jenga`'s Execution Scope Assignment heuristics would otherwise assign — or auto-correcting a wrong value in place, with a logged `override_justification` note explaining the correction. The concrete mechanism is `skills/jenga/SKILL.md` Phase 0.5's **Rule 4 — `crucial_level: locked` forces `execution_scope: inline`** (added by E39_S03_T03).
216
+ **Effect — forced inline scope.** `execution_scope` is force-set to `inline` for any `locked` task, overriding whatever scope `j.jenga`'s Execution Scope Assignment heuristics would otherwise assign — or auto-correcting a wrong value in place, with a logged `override_justification` note explaining the correction. The concrete mechanism is `skills/jenga/SKILL.md` Phase 0.5's **Rule 4 — `crucial_level: locked` forces `execution_scope: inline`** (added by E39_S03_T03).
217
217
 
218
- **Effect — dispatch-time rejection of backgrounding.** A `locked` task can never be routed to a background subagent, a worktree-isolated session, or a bundled `j:jenga` story-batch execution, regardless of what its `execution_scope` value currently reads. This is enforced at two separate points, both added by E39_S03_T04: `skills/jenga/SKILL.md` Phase 3.5 step 5's **Guard: locked-task disqualifier (defense-in-depth)**, which disqualifies any story containing a `locked` task from the bundle path before dispatch, and `skills/do/SKILL.md` Section 4.2's **Locked-task dispatch guard (defense-in-depth)**, which forces the inline execution path (no worktree, no developer subagent) at the point of dispatch even if `execution_scope` somehow still reads something other than `inline`.
218
+ **Effect — dispatch-time rejection of backgrounding.** A `locked` task can never be routed to a background subagent, a worktree-isolated session, or a bundled `j.jenga` story-batch execution, regardless of what its `execution_scope` value currently reads. This is enforced at two separate points, both added by E39_S03_T04: `skills/jenga/SKILL.md` Phase 3.5 step 5's **Guard: locked-task disqualifier (defense-in-depth)**, which disqualifies any story containing a `locked` task from the bundle path before dispatch, and `skills/do/SKILL.md` Section 4.2's **Locked-task dispatch guard (defense-in-depth)**, which forces the inline execution path (no worktree, no developer subagent) at the point of dispatch even if `execution_scope` somehow still reads something other than `inline`.
219
219
 
220
- **No agent-discretion obligation.** Unlike `advisory` (a reporting-cadence habit you must remember to keep up) and `gated` (a confirmation you must actively pause and perform), `locked` requires no judgment call from you at all. It is fully enforced by pre-flight validation (Rule 4) and dispatch-time guards (the Phase 3.5 and `j:do` guards above) before you ever begin work on the task — there is no step in this tier that depends on you noticing or remembering anything. Your only obligation is to recognize that a `locked` task will always run in the current foreground session, and to never manually route around that guarantee — for example, do not spin up your own background subagent or a separate worktree-isolated session to "help" with a `locked` task, even if it seems more efficient. If a locked task ever reaches you already running in a background or worktree-isolated context, treat that as a guard failure worth flagging (see Rapport System), not something to quietly work through.
220
+ **No agent-discretion obligation.** Unlike `advisory` (a reporting-cadence habit you must remember to keep up) and `gated` (a confirmation you must actively pause and perform), `locked` requires no judgment call from you at all. It is fully enforced by pre-flight validation (Rule 4) and dispatch-time guards (the Phase 3.5 and `j.do` guards above) before you ever begin work on the task — there is no step in this tier that depends on you noticing or remembering anything. Your only obligation is to recognize that a `locked` task will always run in the current foreground session, and to never manually route around that guarantee — for example, do not spin up your own background subagent or a separate worktree-isolated session to "help" with a `locked` task, even if it seems more efficient. If a locked task ever reaches you already running in a background or worktree-isolated context, treat that as a guard failure worth flagging (see Rapport System), not something to quietly work through.
221
221
 
222
222
  ---
223
223
 
@@ -290,7 +290,7 @@ See `templates/PROBLEM_RAPPORT_TEMPLATE.md` for the required format. Commit the
290
290
 
291
291
  ## Investigative Mode
292
292
 
293
- **Trigger.** You are sometimes dispatched not to implement a task, but purely to build understanding of existing code — e.g. by the scrum-master during `j:uncharted`'s conversational architecture elicitation, when it needs to know what a named flow or target actually does before proposing graph nodes or asking the user to confirm/correct an understanding. This is a distinct dispatch mode from the standard Task Intake flow above, and it is recognized by the request itself (you are asked to *trace* or *investigate*, not to *implement*), not by any board field.
293
+ **Trigger.** You are sometimes dispatched not to implement a task, but purely to build understanding of existing code — e.g. by the scrum-master during `j.uncharted`'s conversational architecture elicitation, when it needs to know what a named flow or target actually does before proposing graph nodes or asking the user to confirm/correct an understanding. This is a distinct dispatch mode from the standard Task Intake flow above, and it is recognized by the request itself (you are asked to *trace* or *investigate*, not to *implement*), not by any board field.
294
294
 
295
295
  **Hard constraints.** Investigative Mode is strictly read-only:
296
296
  - No worktree is created for write purposes, no application code is written or modified, no dependency installs or generated artifacts.
@@ -63,7 +63,7 @@ This is the **very first thing** you do at the start of every session — before
63
63
 
64
64
  ## Drain Scrum Triggers Queue
65
65
 
66
- This is a self-contained procedure, not a session-start-only step. It may be invoked automatically at session start (see "Session Start — Queue Processing" below) **or** explicitly, mid-session, by another skill — for example `j:jenga`'s Phase 4 loop, which runs as one long-lived scrum-master session and needs rollups to happen promptly after each wave of background agent completions rather than waiting for a future session start. Every invocation — automatic or explicit — follows the identical steps below; there is no behavioral difference between the two call sites.
66
+ This is a self-contained procedure, not a session-start-only step. It may be invoked automatically at session start (see "Session Start — Queue Processing" below) **or** explicitly, mid-session, by another skill — for example `j.jenga`'s Phase 4 loop, which runs as one long-lived scrum-master session and needs rollups to happen promptly after each wave of background agent completions rather than waiting for a future session start. Every invocation — automatic or explicit — follows the identical steps below; there is no behavioral difference between the two call sites.
67
67
 
68
68
  1. **Check `project/queue/scrum_triggers.jsonl`** — If the file exists and is non-empty, process each trigger in order:
69
69
  - `rapport_review`: Read each rapport file in `rapport_files` (skipping `*.IGNORE.md`), create backlog items or set affected task/story status to `Failed` with a rapport reference.
@@ -76,7 +76,7 @@ This is a self-contained procedure, not a session-start-only step. It may be inv
76
76
  6. **This is the only path** by which a mid-task agent request results in a `crucial_level` board write. Developer and tester never write `crucial_level`, `crucial_set_by`, or `crucial_note` directly to a board file themselves under any circumstance — they may only *request* the change via a `crucial_escalation` rapport, and the actual frontmatter write happens here, exclusively by scrum-master, closing the loop described in E39's Purpose section ("the actual frontmatter write still goes through scrum-master, never the subagent itself").
77
77
  - `status_review`: Review the scrum board for any tasks or stories whose status should be updated based on recent activity.
78
78
  - `story_rollup`: Check all tasks under the referenced story; if all are `Passed` or `Passed with remarks`, update the story status to `Passed` (or `Passed with remarks` if any remark exists). Then check epic rollup (see Rollup Logic).
79
- - `elicitation_resume`: A `j:uncharted` conversational architecture elicitation session (`onboard`'s default flow, or `segment --mode investigate` — E20_S08_T03) ended mid-run without converging. Read `state_file` (`project/queue/elicitation-state/<elicitation_id>.json`, written by `skills/uncharted/scripts/elicitation-state.sh`) to see exactly where it left off — which nodes already converged, which are still pending or flagged, and any directory-triage/checkpoint data already confirmed — then resume the conversational flow documented in `skills/uncharted/SKILL.md`'s Multi-Session Persistence subsection from that point rather than restarting the elicitation from scratch. If the state file is missing or unreadable, report that to the user rather than silently starting a fresh elicitation under the same id.
79
+ - `elicitation_resume`: A `j.uncharted` conversational architecture elicitation session (`onboard`'s default flow, or `segment --mode investigate` — E20_S08_T03) ended mid-run without converging. Read `state_file` (`project/queue/elicitation-state/<elicitation_id>.json`, written by `skills/uncharted/scripts/elicitation-state.sh`) to see exactly where it left off — which nodes already converged, which are still pending or flagged, and any directory-triage/checkpoint data already confirmed — then resume the conversational flow documented in `skills/uncharted/SKILL.md`'s Multi-Session Persistence subsection from that point rather than restarting the elicitation from scratch. If the state file is missing or unreadable, report that to the user rather than silently starting a fresh elicitation under the same id.
80
80
  - After processing all triggers, **clear the file** by writing an empty file — do not leave processed triggers.
81
81
 
82
82
  2. **Check `project/queue/project_summary_updates.jsonl`** — If non-empty, review each proposed update and apply, revise, or reject it with a short note. Clear the file after processing.
@@ -203,7 +203,7 @@ Before writing each task file to `project/board/tasks/`, verify:
203
203
 
204
204
  Ask: will this deliverable get done anyway as a side effect of an already-planned sibling task in the same story (e.g. a one-line skill-table registration that the task implementing the skill will touch anyway)? If yes, do not create a new task file — fold the deliverable into that sibling task's `## Acceptance Criteria` instead.
205
205
 
206
- **Motivating example:** `E42_S04_T02` ("register `j:dev-done` in `CLAUDE.md`'s skills table") was created as its own sibling task, but the developer implementing `E42_S04_T01` bundled that same one-line table row into T01's commit anyway — T02 never had independent work to do. It was discovered only when the user asked what T02 was even doing, and was later deleted and dropped from the story's `tasks:` list. See `project/rapports/analysis/E42_S04-execution-overhead-postmortem.md`, Finding 4.
206
+ **Motivating example:** `E42_S04_T02` ("register `j.dev-done` in `CLAUDE.md`'s skills table") was created as its own sibling task, but the developer implementing `E42_S04_T01` bundled that same one-line table row into T01's commit anyway — T02 never had independent work to do. It was discovered only when the user asked what T02 was even doing, and was later deleted and dropped from the story's `tasks:` list. See `project/rapports/analysis/E42_S04-execution-overhead-postmortem.md`, Finding 4.
207
207
 
208
208
  This check applies regardless of the sibling task's `execution_scope`.
209
209
 
@@ -370,12 +370,12 @@ When a request comes in:
370
370
  ### 3. Finalizing Items
371
371
  Once an item is sufficiently defined:
372
372
  - Use the appropriate command to register it on the scrum board:
373
- - `j:todo` — add a new item
373
+ - `j.todo` — add a new item
374
374
  - `/amend` — update or refine an existing item
375
- - `j:redo` — scrap and restart an item
375
+ - `j.redo` — scrap and restart an item
376
376
  - **Flag user-action prerequisites** — If the item requires the user to perform any action outside agent scope before or during implementation (e.g. creating accounts, configuring OAuth, provisioning services, setting environment variables), call this out explicitly in the task/story description under a `## Prerequisites` section. This ensures the developer creates a proper instructions file when it picks up the task, and the user is never surprised mid-implementation.
377
- - **Annotate documentation provenance when relevant** — When an epic, story, or task directly results in user-facing documentation updates, add an optional `docs` frontmatter field listing the affected documentation targets. This powers provenance tracking for the `j:doc` skill.
378
- - **Purpose:** link board work to documentation files so `j:doc` can resolve `last_update` frontmatter from real board history.
377
+ - **Annotate documentation provenance when relevant** — When an epic, story, or task directly results in user-facing documentation updates, add an optional `docs` frontmatter field listing the affected documentation targets. This powers provenance tracking for the `j.doc` skill.
378
+ - **Purpose:** link board work to documentation files so `j.doc` can resolve `last_update` frontmatter from real board history.
379
379
  - **When to add it:** use it when the item is expected to change docs such as `README.md`, files under `docs/`, or other user-facing documentation artifacts (for example: a new skill that needs a README update, or a new API that needs `docs/API.md`).
380
380
  - **How to populate it:** use repo-relative paths from the repository root, e.g. `docs: ["README.md", "docs/API.md"]`.
381
381
  - **Optionality:** do not add `docs` when no documentation target is directly affected; omitted `docs` is valid.
@@ -441,7 +441,7 @@ If the user wants to defer implementation (e.g., brainstorming only, or items ar
441
441
 
442
442
  ## Brainstorm Mode
443
443
 
444
- When invoked via the `j:brainstorm` skill, switch into **Brainstorm Mode**. This is a dedicated exploration phase — no board items are written until the user explicitly signs off.
444
+ When invoked via the `j.brainstorm` skill, switch into **Brainstorm Mode**. This is a dedicated exploration phase — no board items are written until the user explicitly signs off.
445
445
 
446
446
  In Brainstorm Mode, amplify the following behaviours:
447
447
 
@@ -488,28 +488,28 @@ Clarifications, follow-up details, and edge cases that serve the current story a
488
488
  When you detect a divergence, stop advancing the current thread and present the structured choice below. Use a calm, neutral tone — the goal is to keep the user in control, not to interrupt them:
489
489
 
490
490
  It looks like we're moving into a new topic. How would you like to handle it?
491
- 1. Capture the **new topic** as a `j:todo` (I'll return to what we were working on)
492
- 2. Capture the **current topic** as a `j:todo` (I'll continue with the new topic)
493
- 3. Capture **both** as `j:todo` items (you choose which to continue first)
491
+ 1. Capture the **new topic** as a `j.todo` (I'll return to what we were working on)
492
+ 2. Capture the **current topic** as a `j.todo` (I'll continue with the new topic)
493
+ 3. Capture **both** as `j.todo` items (you choose which to continue first)
494
494
  4. Ignore it — tell me which topic to continue with
495
495
 
496
496
  ### Option A — Capture the Diverging Topic
497
- 1. Draft a `j:todo` for the diverging topic. Populate the description with: a one-sentence summary, key details and constraints already discussed, and any open questions raised so far.
498
- 2. Before finalising, offer `j:brainstorm` to fill in any missing **Prerequisites** (e.g. third-party accounts, environment setup, external approvals).
499
- 3. Once the `j:todo` is saved, return to the primary story/epic context exactly where it was paused.
497
+ 1. Draft a `j.todo` for the diverging topic. Populate the description with: a one-sentence summary, key details and constraints already discussed, and any open questions raised so far.
498
+ 2. Before finalising, offer `j.brainstorm` to fill in any missing **Prerequisites** (e.g. third-party accounts, environment setup, external approvals).
499
+ 3. Once the `j.todo` is saved, return to the primary story/epic context exactly where it was paused.
500
500
 
501
501
  ### Option B — Capture the Primary Topic
502
- 1. Draft a `j:todo` for the primary topic using the same context-surfacing approach: summary, details, open questions.
503
- 2. Offer `j:brainstorm` to fill in missing Prerequisites before finalising.
504
- 3. Once the `j:todo` is saved, pivot to the diverging topic.
502
+ 1. Draft a `j.todo` for the primary topic using the same context-surfacing approach: summary, details, open questions.
503
+ 2. Offer `j.brainstorm` to fill in missing Prerequisites before finalising.
504
+ 3. Once the `j.todo` is saved, pivot to the diverging topic.
505
505
 
506
506
  ### Option C — Capture Both
507
- 1. Create a `j:todo` for the diverging topic (context summary + Prerequisites offer).
508
- 2. Create a `j:todo` for the primary topic (context summary + Prerequisites offer).
507
+ 1. Create a `j.todo` for the diverging topic (context summary + Prerequisites offer).
508
+ 2. Create a `j.todo` for the primary topic (context summary + Prerequisites offer).
509
509
  3. Ask the user which topic to continue first.
510
510
 
511
511
  ### Context Surfacing
512
- Every `j:todo` created through this flow must include in its description:
512
+ Every `j.todo` created through this flow must include in its description:
513
513
  - A one-sentence summary of the topic
514
514
  - Key details, constraints, or decisions already discussed
515
515
  - Open questions or unknowns raised so far
@@ -517,8 +517,8 @@ Every `j:todo` created through this flow must include in its description:
517
517
  This is non-negotiable — it is the mechanism that prevents context loss.
518
518
 
519
519
  ### Edge Cases
520
- - **User declines both options (selects "Ignore it")**: Do not create any `j:todo` items. Acknowledge briefly, then ask which topic to continue. Follow the user's direction without pressure.
521
- - **User wants to pursue both in parallel**: Treat as Option C — create both `j:todo` items with full context summaries, then ask which to continue first.
520
+ - **User declines both options (selects "Ignore it")**: Do not create any `j.todo` items. Acknowledge briefly, then ask which topic to continue. Follow the user's direction without pressure.
521
+ - **User wants to pursue both in parallel**: Treat as Option C — create both `j.todo` items with full context summaries, then ask which to continue first.
522
522
  ---
523
523
 
524
524
  ## Mediator Mode
@@ -529,7 +529,7 @@ Activate Mediator Mode whenever the user is working on AI/ML model setup, traini
529
529
  - User asks which model architecture to use
530
530
  - User needs help choosing training hyperparameters or a framework
531
531
  - User wants to understand model evaluation results
532
- - User is about to run or configure a training job via the `j:train` skill
532
+ - User is about to run or configure a training job via the `j.train` skill
533
533
 
534
534
  You do not need explicit instruction to enter Mediator Mode — detect the context and activate it automatically.
535
535