@jenga-ai/agent 1.3.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.
- package/README.md +93 -256
- package/agents/developer.md +9 -8
- package/agents/scrum-master.md +57 -23
- package/agents/tester.md +51 -5
- package/hooks/on_session_end.sh +13 -1
- package/lib/generate-agent-context.js +18 -1
- package/lib/generate-copilot-instructions.js +18 -1
- package/lib/generate-skill-allow-list.js +197 -0
- package/lib/skill-allow-list.json +42 -0
- package/package.json +17 -13
- package/scripts/apply-j-prefix.sh +243 -0
- package/scripts/consume-context-digest.sh +103 -0
- package/scripts/generate-j-alias.sh +333 -0
- package/scripts/postinstall.js +25 -0
- package/scripts/sweep-stale-context-digests.sh +132 -0
- package/scripts/validate-board.sh +5 -0
- package/scripts/write-context-digest.sh +230 -0
- package/skills/{brainstorm → j-brainstorm}/SKILL.md +9 -2
- package/skills/{btw → j-btw}/SKILL.md +9 -2
- package/skills/{clearify → j-clearify}/SKILL.md +9 -2
- package/skills/{close-story → j-close-story}/SKILL.md +92 -13
- package/skills/j-close-story/scripts/check-privatized.sh +345 -0
- package/skills/{close-story → j-close-story}/scripts/check-story-closeable.sh +1 -1
- package/skills/{close-story → j-close-story}/scripts/extract-task-diff-stats.sh +1 -1
- package/skills/{commit → j-commit}/SKILL.md +9 -2
- package/skills/j-continue/SKILL.md +36 -0
- package/skills/{deep-dive → j-deep-dive}/SKILL.md +9 -8
- package/skills/{dev-done → j-dev-done}/SKILL.md +11 -4
- package/skills/{dev-done → j-dev-done}/scripts/classify-commit-outcome.sh +4 -4
- package/skills/{distribute → j-distribute}/SKILL.md +17 -10
- package/skills/{distribute → j-distribute}/scripts/distribute-changes.sh +1 -1
- package/skills/{do → j-do}/SKILL.md +111 -14
- package/skills/j-doc/README.md +155 -0
- package/skills/{doc → j-doc}/SKILL.md +55 -18
- package/skills/j-doc/authoring-notes.md +72 -0
- package/skills/j-doc/scripts/resolve_last_update.py +149 -0
- package/skills/{doc-sync → j-doc-sync}/SKILL.md +9 -2
- package/skills/{dooo → j-dooo}/SKILL.md +9 -2
- package/skills/j-error/SKILL.md +36 -0
- package/skills/{evaluate → j-evaluate}/SKILL.md +9 -2
- package/skills/j-examplify/SKILL.md +49 -0
- package/skills/{help → j-help}/SKILL.md +9 -2
- package/skills/{idea → j-idea}/SKILL.md +10 -3
- package/skills/{idea → j-idea}/assets/idea_handoff_template.md +1 -1
- package/skills/{improve → j-improve}/SKILL.md +9 -2
- package/skills/{init → j-init}/SKILL.md +21 -8
- package/skills/j-init/assets/scope-thresholds_template.json +7 -0
- package/skills/j-jbp/SKILL.md +32 -0
- package/skills/j-lgtm/SKILL.md +28 -0
- package/skills/{pi-plan → j-pi-plan}/SKILL.md +10 -3
- package/skills/{proceed → j-proceed}/SKILL.md +9 -2
- package/skills/{publish → j-publish}/SKILL.md +47 -40
- package/skills/{publish → j-publish}/adapters/droplet.md +1 -1
- package/skills/{publish → j-publish}/adapters/mobile-ios.md +3 -3
- package/skills/{publish → j-publish}/adapters/npm-ci.md +29 -7
- package/skills/{publish → j-publish}/adapters/npm.md +8 -8
- package/skills/{publish → j-publish}/assets/ci-contract.md +2 -2
- package/skills/{publish → j-publish}/schemas/publish.schema.json +1 -1
- package/skills/{publish → j-publish}/scripts/npm_ci_pipeline.sh +21 -1
- package/skills/{publish → j-publish}/scripts/npm_stage_inspect.sh +34 -1
- package/skills/{publish → j-publish}/scripts/npm_stage_pipeline.sh +9 -4
- package/skills/{publish → j-publish}/scripts/publish_deploy.sh +4 -4
- package/skills/{publish → j-publish}/scripts/validate_npm_stage_env.sh +1 -1
- package/skills/{publish → j-publish}/wizards/droplet.md +1 -1
- package/skills/{publish → j-publish}/wizards/mobile-ios.md +1 -1
- package/skills/{publish → j-publish}/wizards/npm-ci.md +1 -1
- package/skills/{publish → j-publish}/wizards/npm.md +1 -1
- package/skills/{reconcile → j-reconcile}/SKILL.md +12 -5
- package/skills/{reconcile → j-reconcile}/scripts/detect-unlinked-code.sh +2 -2
- package/skills/{reconcile → j-reconcile}/scripts/resolve-reconcile-scope.sh +3 -3
- package/skills/{reconcile-origin → j-reconcile-origin}/SKILL.md +13 -6
- package/skills/{redo → j-redo}/SKILL.md +9 -2
- package/skills/{skillify → j-skillify}/SKILL.md +10 -3
- package/skills/{spinoff → j-spinoff}/SKILL.md +9 -2
- package/skills/{status → j-status}/SKILL.md +9 -2
- package/skills/j-todo/SKILL.md +92 -0
- package/skills/{todo → j-todo}/assets/todo_handoff_template.md +1 -1
- package/skills/j-todo/scripts/add_trivial_task.sh +216 -0
- package/skills/j-todo/scripts/update_story_tasks.py +87 -0
- package/skills/{uncharted → j-uncharted}/SKILL.md +35 -28
- package/skills/{uncharted → j-uncharted}/assets/UNDERSTANDING_DOC_TEMPLATE.md +2 -2
- package/skills/{uncharted → j-uncharted}/scripts/detect-dependencies.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/detect-tests.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/directory-triage.sh +3 -3
- package/skills/{uncharted → j-uncharted}/scripts/elicitation-state.sh +3 -3
- package/skills/{uncharted → j-uncharted}/scripts/enumerate-target.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/import-source.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/inspect-provenance.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/resolve-segment-target.sh +5 -5
- package/skills/{uncharted → j-uncharted}/scripts/run-engine.sh +1 -1
- package/skills/{uncharted → j-uncharted}/scripts/validate-proposed-items.sh +2 -2
- package/skills/{uncharted → j-uncharted}/scripts/write-backfilled-epics.sh +1 -1
- package/skills/j-wtf/SKILL.md +27 -0
- package/skills/jenga/SKILL.md +1 -1
- package/skills/jenga/scripts/render-confirmation.sh +55 -18
- package/skills/jenga-permission-level/SKILL.md +1 -1
- package/templates/SCRUM_BOARD_SCHEMA.md +33 -2
- package/templates/agent-context.md.tpl +32 -9
- package/templates/copilot-instructions.md.tpl +66 -11
- package/skills/continue/SKILL.md +0 -29
- package/skills/error/SKILL.md +0 -29
- package/skills/examplify/SKILL.md +0 -42
- package/skills/init/assets/scope-thresholds_template.json +0 -7
- package/skills/jbp/SKILL.md +0 -25
- package/skills/lgtm/SKILL.md +0 -21
- package/skills/todo/SKILL.md +0 -48
- package/skills/wtf/SKILL.md +0 -20
- /package/skills/{close-story → j-close-story}/scripts/compute-scope-divergence.sh +0 -0
- /package/skills/{close-story → j-close-story}/scripts/extract-diff-stats.sh +0 -0
- /package/skills/{close-story → j-close-story}/scripts/update-task-frontmatter.sh +0 -0
- /package/skills/{commit → j-commit}/assets/user_instructions_template.md +0 -0
- /package/skills/{distribute → j-distribute}/CONFIG_SCHEMA.md +0 -0
- /package/skills/{distribute → j-distribute}/scripts/check-version.sh +0 -0
- /package/skills/{distribute → j-distribute}/scripts/commit-version-bump.sh +0 -0
- /package/skills/{do → j-do}/assets/intent-vs-diff-prompt.md +0 -0
- /package/skills/{do → j-do}/assets/sender_template.json +0 -0
- /package/skills/{doc → j-doc}/assets/path-objectives.yaml +0 -0
- /package/skills/{doc-sync → j-doc-sync}/assets/default_excludes.txt +0 -0
- /package/skills/{doc-sync → j-doc-sync}/assets/doc_targets.md +0 -0
- /package/skills/{evaluate → j-evaluate}/assets/evaluation_invokation_template.yml +0 -0
- /package/skills/{evaluate → j-evaluate}/assets/evaluation_rapport_template.md +0 -0
- /package/skills/{idea → j-idea}/assets/idea_template.md +0 -0
- /package/skills/{init → j-init}/assets/.gitignore_template +0 -0
- /package/skills/{init → j-init}/assets/PROJECT_SUMMARY_template.md +0 -0
- /package/skills/{init → j-init}/assets/directory_structure.txt +0 -0
- /package/skills/{init → j-init}/assets/strategy_stub_template.md +0 -0
- /package/skills/{init → j-init}/assets/test-config_template.json +0 -0
- /package/skills/{init → j-init}/assets/workflow_template.json +0 -0
- /package/skills/{init → j-init}/scripts/apply-project-visibility.sh +0 -0
- /package/skills/{init → j-init}/scripts/detect-existing-codebase.sh +0 -0
- /package/skills/{init → j-init}/scripts/init.sh +0 -0
- /package/skills/{pi-plan → j-pi-plan}/assets/epic.json +0 -0
- /package/skills/{pi-plan → j-pi-plan}/assets/story_template.md +0 -0
- /package/skills/{publish → j-publish}/assets/ExportOptions.plist.template +0 -0
- /package/skills/{publish → j-publish}/assets/ownership-matrix.md +0 -0
- /package/skills/{publish → j-publish}/assets/publish.example.json +0 -0
- /package/skills/{publish → j-publish}/assets/publish.example.npm-ci.json +0 -0
- /package/skills/{publish → j-publish}/assets/publish.example.npm.json +0 -0
- /package/skills/{publish → j-publish}/assets/secrets-guide.md +0 -0
- /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-minimal.json +0 -0
- /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-with-empty-secrets.json +0 -0
- /package/skills/{publish → j-publish}/schemas/fixtures/npm-ci-with-workflow-path.json +0 -0
- /package/skills/{publish → j-publish}/scripts/check_target_config.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/droplet_pipeline.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/finalize_changelog.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/generate_release_notes.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/ios_pipeline.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/npm_pipeline.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/publish_common.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/reconcile_tags.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/run_gates.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/setup_wizard.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/show_history.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/suggest_semver_bump.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/validate_config.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/validate_droplet_env.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/validate_ios_env.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/validate_npm_ci_env.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/validate_npm_env.sh +0 -0
- /package/skills/{publish → j-publish}/scripts/write_ledger_entry.sh +0 -0
- /package/skills/{reconcile → j-reconcile}/assets/report_format.md +0 -0
- /package/skills/{reconcile-origin → j-reconcile-origin}/scripts/reconcile-origin.sh +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/SKILL.md +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/assets/.gitignore_template +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/assets/PROJECT_SUMMARY_template.md +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/assets/directory_structure.txt +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/assets/test-config_template.json +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/assets/workflow_template.json +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-new/scripts/init.sh +0 -0
- /package/skills/{skillify → j-skillify}/assets/init-old/SKILL.md +0 -0
- /package/skills/{status → j-status}/assets/output_format.md +0 -0
- /package/skills/{todo → j-todo}/assets/todo_template.md +0 -0
- /package/skills/{uncharted → j-uncharted}/assets/SEGMENT_PROPOSAL_TEMPLATE.md +0 -0
- /package/skills/{uncharted → j-uncharted}/scripts/apply-subsystem-cap.sh +0 -0
- /package/skills/{uncharted → j-uncharted}/scripts/discover-subsystems.sh +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Jenga AI
|
|
2
|
+
### No agent merges its own code.
|
|
2
3
|
|
|
3
|
-
|
|
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.
|
|
4
5
|
|
|
5
6
|
[](https://www.npmjs.com/package/@jenga-ai/agent)
|
|
6
7
|
[](LICENSE)
|
|
@@ -9,124 +10,110 @@
|
|
|
9
10
|
npm install @jenga-ai/agent
|
|
10
11
|
```
|
|
11
12
|
|
|
12
|
-
##
|
|
13
|
-
|
|
14
|
-
- **Three specialised agents** — Scrum Master, Developer, Tester — each with a distinct role and no self-graded work
|
|
15
|
-
- **A persistent scrum board** — Epics, Stories, and Tasks tracked as Markdown files with structured frontmatter, surviving every session boundary
|
|
16
|
-
- **28 slash-command skills** — from planning (`/pi-plan`, `/todo`) to execution (`/do`, `/dooo`) to review (`/status`, `/reconcile`)
|
|
17
|
-
- **An event-driven trigger queue** — async handoffs between agents with a full audit trail in `project/logs/events.json`
|
|
18
|
-
- **Isolated git worktrees per task** — the Developer never works directly on your main branch
|
|
19
|
-
- **Works with any AI agent or IDE** — Claude Code, GitHub Copilot, Warp, and Codex CLI are all supported today
|
|
20
|
-
|
|
21
|
-
> 📖 **Full reference:** [project/.wiki/documentation.md](project/.wiki/documentation.md) | [Intro Guide](project/.wiki/intro-guide.md)
|
|
22
|
-
|
|
23
|
-
## Platform Support
|
|
24
|
-
|
|
25
|
-
| Agent | Skills & Agents | Root Context File |
|
|
26
|
-
|---|---|---|
|
|
27
|
-
| **Claude Code** | `.claude/` — mirrored automatically on install | `CLAUDE.md` — generated by `/init` today |
|
|
28
|
-
| **GitHub Copilot** | `.agents/` — mirrored automatically on install | `.github/copilot-instructions.md` — bootstrapped at `npm install` time, refined by `jenga init` |
|
|
29
|
-
| **Codex** | `.agents/` — mirrored automatically on install | `AGENTS.md` — generated by `/init` today |
|
|
30
|
-
|
|
31
|
-
`CLAUDE.md` and `AGENTS.md` are generated unconditionally by `/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.
|
|
32
|
-
|
|
33
|
-
`.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 `/skill-name` routing instructions 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 `/init` skill itself.
|
|
13
|
+
## The Problem It Solves
|
|
34
14
|
|
|
35
|
-
|
|
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:
|
|
36
16
|
|
|
37
|
-
|
|
17
|
+
[](https://www.youtube.com/watch?v=zAe-sau06io)
|
|
38
18
|
|
|
39
|
-
|
|
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.*
|
|
40
20
|
|
|
41
21
|
| Problem | Reality |
|
|
42
22
|
|---|---|
|
|
43
|
-
| **
|
|
23
|
+
| **No persistent engineering context** | Every AI agent session starts from scratch — no awareness of open tasks, past decisions, or what was already tested |
|
|
44
24
|
| **No role separation** | The AI writes *and* "tests" code in the same context, leading to hallucinated test results and self-affirming bugs |
|
|
45
25
|
| **No structured planning** | Work happens ad-hoc — no Epic → Story → Task hierarchy to organise or track progress |
|
|
46
26
|
| **No handoff protocol** | Switching from implementing to testing means manually re-explaining context every time |
|
|
47
27
|
| **No audit trail** | You can't replay *why* something was built, by which agent, based on which task |
|
|
48
28
|
| **Sessions just end** | Work-in-progress, unresolved problems, and incomplete stories silently vanish |
|
|
49
29
|
|
|
50
|
-
Jenga AI solves each of these with structure: persistent board state, strict agent roles, typed inter-agent contracts, and session-end hooks that
|
|
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.
|
|
51
31
|
|
|
52
32
|
---
|
|
53
33
|
|
|
54
|
-
##
|
|
34
|
+
## What You Get
|
|
55
35
|
|
|
56
|
-
|
|
36
|
+
- **Three specialised agents** — Scrum Master, Developer, Tester — each with a distinct role and no self-graded work
|
|
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
|
|
39
|
+
- **An event-driven trigger queue** — async handoffs between agents with a full audit trail in `project/logs/events.json`
|
|
40
|
+
- **Isolated git worktrees per task** — the Developer never works directly on your main branch
|
|
41
|
+
- **Works with any AI coding agent or AI-native IDE** — Claude Code, GitHub Copilot, and Codex CLI are all supported today
|
|
57
42
|
|
|
58
|
-
**
|
|
59
|
-
```
|
|
60
|
-
You: "Add user authentication"
|
|
61
|
-
AI agent: [writes auth code, declares it works, session ends]
|
|
43
|
+
> 📖 **Full reference:** [project/.wiki/documentation.md](project/.wiki/documentation.md) | [Intro Guide](project/.wiki/intro-guide.md)
|
|
62
44
|
|
|
63
|
-
|
|
64
|
-
You: "What's the status of auth?"
|
|
65
|
-
AI agent: "I don't have context from the previous session."
|
|
66
|
-
```
|
|
45
|
+
### "Isn't this just an LLM grading another LLM?"
|
|
67
46
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
/do → Developer creates worktree E01_S02_T01-auth
|
|
72
|
-
→ implements, commits at milestones
|
|
73
|
-
→ hands off to Tester with sender object
|
|
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
|
+
|
|
49
|
+
## Platform Support
|
|
74
50
|
|
|
75
|
-
|
|
76
|
-
|
|
51
|
+
| Agent | Skills & Agents | Root Context File |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| **Claude Code** | `.claude/` — mirrored automatically on install | `CLAUDE.md` — generated by `j.init` today |
|
|
54
|
+
| **GitHub Copilot** | `.agents/` — mirrored automatically on install | `.github/copilot-instructions.md` — bootstrapped at `npm install` time, refined by `jenga init` |
|
|
55
|
+
| **Codex** | `.agents/` — mirrored automatically on install | `AGENTS.md` — generated by `j.init` today |
|
|
77
56
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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.
|
|
58
|
+
|
|
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.
|
|
81
60
|
|
|
82
61
|
---
|
|
83
62
|
|
|
84
|
-
|
|
63
|
+
## Examples
|
|
85
64
|
|
|
86
|
-
|
|
65
|
+
### A Real Session, On This Repo
|
|
87
66
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
/pi-plan → Scrum Master helps shape the auth epic into stories
|
|
92
|
-
/todo → "Add JWT auth" → E01_S01, "Add refresh tokens" → E01_S02
|
|
93
|
-
```
|
|
67
|
+
Not a demo — this is what actually produced the section you're reading.
|
|
68
|
+
|
|
69
|
+
The conversation starts with a request to align this README's language and content with a positioning plan drafted for this epic (E41):
|
|
94
70
|
|
|
95
|
-
**Implementation**
|
|
96
71
|
```
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
/status → E01_S01 ✅, E01_S02 Pending
|
|
101
|
-
/continue → picks up E01_S02 automatically
|
|
102
|
-
/proceed → resumes project plan from current board state
|
|
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
|
+
[...]
|
|
103
75
|
```
|
|
104
76
|
|
|
105
|
-
|
|
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:
|
|
78
|
+
|
|
106
79
|
```
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
+
[...]
|
|
112
89
|
```
|
|
113
90
|
|
|
114
|
-
|
|
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.
|
|
92
|
+
|
|
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.
|
|
94
|
+
|
|
95
|
+
Then, circling back to the deferred request:
|
|
96
|
+
|
|
115
97
|
```
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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?
|
|
102
|
+
|
|
103
|
+
You: do it now
|
|
119
104
|
```
|
|
120
105
|
|
|
121
|
-
|
|
106
|
+
`j.brainstorm` opens for the gated story — the session you're reading right now, working out what this example should even say.
|
|
107
|
+
|
|
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`.
|
|
122
109
|
|
|
123
110
|
---
|
|
124
111
|
|
|
125
|
-
## How
|
|
112
|
+
## How Jenga AI's Agentic Workflow Works
|
|
126
113
|
|
|
127
114
|
```
|
|
128
|
-
|
|
129
|
-
|
|
115
|
+
j.init → j.pi-plan → j.todo → j.do
|
|
116
|
+
│
|
|
130
117
|
Developer agent
|
|
131
118
|
(isolated worktree, commits)
|
|
132
119
|
│
|
|
@@ -166,8 +153,7 @@ Each agent is defined in `.agents/agents/`. They communicate exclusively through
|
|
|
166
153
|
|
|
167
154
|
**Prerequisites:** An AI agent or AI-native IDE. Supported platforms include:
|
|
168
155
|
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code)
|
|
169
|
-
- GitHub Copilot (VS Code extension or CLI)
|
|
170
|
-
- [Warp](https://www.warp.dev/)
|
|
156
|
+
- [GitHub Copilot](https://github.com/features/copilot) (VS Code extension or CLI)
|
|
171
157
|
- Codex CLI
|
|
172
158
|
|
|
173
159
|
**Install from npm:**
|
|
@@ -177,13 +163,13 @@ npm install -g @jenga-ai/agent
|
|
|
177
163
|
|
|
178
164
|
Or clone directly:
|
|
179
165
|
|
|
180
|
-
1. **Clone or copy this repo** into your project's
|
|
181
|
-
2. **Run
|
|
182
|
-
3. **Run
|
|
183
|
-
4. **Run
|
|
184
|
-
5. **Run
|
|
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.
|
|
185
171
|
|
|
186
|
-
Run
|
|
172
|
+
Run `j.status` at any time to see where the project stands.
|
|
187
173
|
|
|
188
174
|
---
|
|
189
175
|
|
|
@@ -195,7 +181,6 @@ Jenga AI has been tested with:
|
|
|
195
181
|
|---|---|
|
|
196
182
|
| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | AI coding agent |
|
|
197
183
|
| [GitHub Copilot](https://github.com/features/copilot) | AI coding assistant |
|
|
198
|
-
| [Warp](https://www.warp.dev/) | AI-native terminal |
|
|
199
184
|
| Codex CLI | AI coding agent |
|
|
200
185
|
|
|
201
186
|
The framework is platform-agnostic by design — any AI agent that can read Markdown files and execute slash commands can use it.
|
|
@@ -204,188 +189,40 @@ The framework is platform-agnostic by design — any AI agent that can read Mark
|
|
|
204
189
|
|
|
205
190
|
## Skills (Slash Commands)
|
|
206
191
|
|
|
207
|
-
Skills live in `.agents/skills/<name>/SKILL.md`. Invoke with
|
|
208
|
-
|
|
209
|
-
### Setup & Planning
|
|
210
|
-
|
|
211
|
-
| Command | Description |
|
|
212
|
-
|---|---|
|
|
213
|
-
| `/init` | Scaffold project directories, `workflow.json`, `PROJECT_SUMMARY.md`, initial git commit |
|
|
214
|
-
| `/jbp` | Scaffold using the [JengaBasePlate](https://github.com/samwelmunga/JengaBasePlate.git) boilerplate |
|
|
215
|
-
| `/jenga` | Interactive-by-default board orchestrator — bare shows a picker + confirmation tree, `<ids>` scopes and confirms, `*` runs fully automated with no prompts |
|
|
216
|
-
| `/pi-plan` | Define or expand Epics in `PROJECT_SUMMARY.md` — use at start or when adding major new work |
|
|
217
|
-
| `/brainstorm` | Focused planning session with the Scrum Master before committing anything to the board |
|
|
218
|
-
| `/deep-dive` | Multi-phase investigation — gathers info, brainstorms, scrutinises, and produces a refined output |
|
|
219
|
-
| `/uncharted` | Entry point for code with no board provenance — `segment` (a file or directory), `import` (an external source), `onboard` (a whole pre-existing codebase) |
|
|
220
|
-
| `/todo` | Add missions to `project/todo.md` linked to epics and stories |
|
|
221
|
-
| `/btw` | Capture a mid-flow idea, classify it into epic/story structure, implement now or defer |
|
|
222
|
-
| `/spinoff` | Capture a diverging topic without losing your current thread |
|
|
223
|
-
|
|
224
|
-
### Execution
|
|
225
|
-
|
|
226
|
-
| Command | Description |
|
|
227
|
-
|---|---|
|
|
228
|
-
| `/do` | Execute tasks from the scrum board, drives the Developer agent through the full loop |
|
|
229
|
-
| `/dooo` | Parallel execution orchestrator — runs multiple tasks simultaneously via sub-agents |
|
|
230
|
-
| `/redo` | Rework a previous implementation by commit SHA or Epic/Story number |
|
|
231
|
-
| `/publish` | Configure, validate, and orchestrate scaffolded release workflows — `setup`, `deploy`, `stage` (npm/npm-ci pre-approval staged publishing), `history`, `release-notes` |
|
|
232
|
-
| `/error` | Guided troubleshooting — gathers context, investigates, and drives a fix |
|
|
233
|
-
| `/train` | Scaffold and run ML training jobs (new job from template or run existing) |
|
|
234
|
-
|
|
235
|
-
### Status & Review
|
|
236
|
-
|
|
237
|
-
| Command | Description |
|
|
238
|
-
|---|---|
|
|
239
|
-
| `/status` | Print a full scrum board overview — epics, stories, tasks, rapports, queue depth |
|
|
240
|
-
| `/jenga-permission-level` | Report or switch the current session's 5-tier permission level (Locked/Guarded/Standard/Elevated/Unrestricted) without hand-editing settings.json |
|
|
241
|
-
| `/continue` | Check project status and pick up the next incomplete item |
|
|
242
|
-
| `/proceed` | Review progress and resume executing the project plan |
|
|
243
|
-
| `/reconcile` | Sync the board with actual git history — fixes drift, merges orphaned worktrees |
|
|
244
|
-
| `/reconcile-origin` | Sync the current or specified branch with origin via rebase. Presents conflict reports with resolution options. |
|
|
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:
|
|
245
193
|
|
|
246
|
-
|
|
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.
|
|
247
202
|
|
|
248
203
|
| Command | Description |
|
|
249
204
|
|---|---|
|
|
250
|
-
|
|
|
251
|
-
|
|
|
252
|
-
|
|
|
253
|
-
|
|
|
254
|
-
|
|
|
255
|
-
| `/skillify` | Refactor a skill — extract assets, offload scripts, clean up the body |
|
|
256
|
-
| `/route` | Intelligently route a prompt to the best-matching skill |
|
|
257
|
-
| `/improve` | Analyse a codebase and produce a structured improvement plan |
|
|
258
|
-
| `/evaluate` | Analyse example files against a target goal and produce an evaluation rapport |
|
|
259
|
-
| `/examplify` | Explain a concept, feature, or pattern with grounded examples |
|
|
260
|
-
| `/help` | List all available skills with descriptions |
|
|
261
|
-
| `/customize-cloud-agent` | Configure the Copilot cloud agent environment (`copilot-setup-steps.yml`, preinstalls, runners) |
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
## Distributing the Workflow
|
|
266
|
-
|
|
267
|
-
Jenga AI can propagate its workflow files to other projects on your machine via `/distribute`.
|
|
268
|
-
|
|
269
|
-
1. **Register consumer projects** — add each consuming project to `distribute.config.json` at the repo root (or pass a path directly: `/distribute /path/to/project`).
|
|
270
|
-
2. **Run `/distribute`** — choose `major`, `minor`, `patch`, or `amend` release type; the skill handles versioning, dry-run preview, file copy, and a version bump commit.
|
|
271
|
-
|
|
272
|
-
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).
|
|
273
|
-
|
|
274
|
-
---
|
|
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 |
|
|
275
210
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
```
|
|
279
|
-
.agents/ ← Workflow root (place this in your project)
|
|
280
|
-
├── agents/
|
|
281
|
-
│ ├── scrum-master.md
|
|
282
|
-
│ ├── developer.md
|
|
283
|
-
│ └── tester.md
|
|
284
|
-
├── hooks/
|
|
285
|
-
│ └── on_session_end.sh
|
|
286
|
-
├── mcp/
|
|
287
|
-
│ ├── help/
|
|
288
|
-
│ └── execute-ticket/
|
|
289
|
-
├── skills/
|
|
290
|
-
│ ├── brainstorm/
|
|
291
|
-
│ ├── btw/
|
|
292
|
-
│ ├── commit/
|
|
293
|
-
│ ├── continue/
|
|
294
|
-
│ ├── deep-dive/
|
|
295
|
-
│ ├── distribute/
|
|
296
|
-
│ ├── do/
|
|
297
|
-
│ ├── doc/
|
|
298
|
-
│ ├── doc-sync/
|
|
299
|
-
│ ├── dooo/
|
|
300
|
-
│ ├── error/
|
|
301
|
-
│ ├── evaluate/
|
|
302
|
-
│ ├── examplify/
|
|
303
|
-
│ ├── help/
|
|
304
|
-
│ ├── improve/
|
|
305
|
-
│ ├── init/
|
|
306
|
-
│ ├── pi-plan/
|
|
307
|
-
│ ├── jbp/
|
|
308
|
-
│ ├── jenga/
|
|
309
|
-
│ ├── lgtm/
|
|
310
|
-
│ ├── proceed/
|
|
311
|
-
│ ├── reconcile/
|
|
312
|
-
│ ├── redo/
|
|
313
|
-
│ ├── route/
|
|
314
|
-
│ ├── skillify/
|
|
315
|
-
│ ├── spinoff/
|
|
316
|
-
│ ├── status/
|
|
317
|
-
│ ├── todo/
|
|
318
|
-
│ └── train/
|
|
319
|
-
├── templates/
|
|
320
|
-
│ ├── SCRUM_BOARD_SCHEMA.md
|
|
321
|
-
│ ├── PROBLEM_RAPPORT_TEMPLATE.md
|
|
322
|
-
│ └── JENGA_CONFIG_TEMPLATE.json
|
|
323
|
-
├── settings.json
|
|
324
|
-
├── jenga.config.json ← Workflow version source
|
|
325
|
-
├── .jenga_paths ← Machine-local consumer paths (git-ignored)
|
|
326
|
-
└── RELEASE_NOTE.md
|
|
327
|
-
|
|
328
|
-
project/ ← Created by /init inside your software project
|
|
329
|
-
├── board/
|
|
330
|
-
│ ├── epics/ ← E##_<slug>.md
|
|
331
|
-
│ ├── stories/ ← E##_S##_<slug>.md
|
|
332
|
-
│ └── tasks/ ← E##_S##_T##_<slug>.md
|
|
333
|
-
├── configs/
|
|
334
|
-
│ ├── workflow.json ← Shared constants (statuses, paths, agents)
|
|
335
|
-
│ └── test-config.json ← Test tool stack (owned by Tester, user-approved)
|
|
336
|
-
├── data/
|
|
337
|
-
│ └── baselines.json ← Analytics baselines (owned by Tester)
|
|
338
|
-
├── documentation/
|
|
339
|
-
│ ├── plans/ ← Pre-execution plans by Developer
|
|
340
|
-
│ └── summaries/ ← Post-execution summaries by Developer
|
|
341
|
-
├── queue/
|
|
342
|
-
│ ├── scrum_triggers.jsonl
|
|
343
|
-
│ ├── developer_triggers.jsonl
|
|
344
|
-
│ ├── tester_triggers.jsonl
|
|
345
|
-
│ └── project_summary_updates.jsonl
|
|
346
|
-
├── rapports/
|
|
347
|
-
│ ├── problems/ ← Problem rapports (Developer + Tester)
|
|
348
|
-
│ └── analysis/ ← Analysis rapports (Tester)
|
|
349
|
-
├── logs/
|
|
350
|
-
│ └── events.json ← Append-only inter-agent event log
|
|
351
|
-
└── PROJECT_SUMMARY.md ← Project source of truth (owned by Scrum Master)
|
|
352
|
-
|
|
353
|
-
CHANGELOG.md ← Created by /init at the project's repo root; maintained by /publish
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
---
|
|
357
|
-
|
|
358
|
-
## Agent Communication Contract
|
|
359
|
-
|
|
360
|
-
Every inter-agent call passes a typed **sender object**:
|
|
361
|
-
|
|
362
|
-
```json
|
|
363
|
-
{
|
|
364
|
-
"sender": {
|
|
365
|
-
"agent": "<scrum-master | developer | tester | orchestrator>",
|
|
366
|
-
"session_id": "<session id>",
|
|
367
|
-
"task_id": "<E##_S##_T##>",
|
|
368
|
-
"story_id": "<E##_S##>",
|
|
369
|
-
"epic_id": "<E##>",
|
|
370
|
-
"date": "<ISO 8601 UTC>",
|
|
371
|
-
"paths": ["<commit SHA>", "..."],
|
|
372
|
-
"worktree": "<absolute path to worktree>"
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
All agents log every incoming sender object to `project/logs/events.json` as their **first action** on every invocation.
|
|
211
|
+
> 📖 **Full skill list** (planning, review, committing & maintenance commands): [project/.wiki/documentation.md](project/.wiki/documentation.md#skills)
|
|
378
212
|
|
|
379
213
|
---
|
|
380
214
|
|
|
381
215
|
## When to Use Jenga AI
|
|
382
216
|
|
|
383
217
|
**Use it when:**
|
|
384
|
-
- You're building a non-trivial project across multiple sessions
|
|
385
|
-
- You want
|
|
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
|
|
386
220
|
- You need traceability — who did what, when, on which task
|
|
387
|
-
- You
|
|
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`)
|
|
388
223
|
|
|
389
224
|
**You might not need it when:**
|
|
390
225
|
- You're doing a quick one-off script or single-session experiment
|
|
391
226
|
- Your project has no meaningful test surface
|
|
227
|
+
|
|
228
|
+
📖 **Full reference:** [project/.wiki/documentation.md](project/.wiki/documentation.md)
|
package/agents/developer.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
|
@@ -225,7 +225,7 @@ This list is fixed and verbatim across both this file and `agents/tester.md` —
|
|
|
225
225
|
|
|
226
226
|
You do not run tests. Before calling the tester agent, **write an execution summary** to `project/documentation/summaries/<E##_S##_T##>-summary.md` using `templates/EXECUTION_SUMMARY_TEMPLATE.md`. Fill in all sections — what was implemented, files changed, commit SHAs, acceptance criteria coverage, and any concerns for the tester. This step is mandatory before every tester invocation.
|
|
227
227
|
|
|
228
|
-
When you reach a meaningful milestone within a task where verification is appropriate — or when the task is complete — call the tester agent. Always pass the following sender object when invoking the tester:
|
|
228
|
+
When you reach a meaningful milestone within a task where verification is appropriate — or when the task is complete — call the tester agent. Before invoking the tester, compose a short `resolved_context` digest of what you already resolved during implementation — which files you touched and why, which acceptance criteria map to which changes, any conventions or precedent you followed — and persist it by calling `scripts/write-context-digest.sh --agent developer --session-id <session_id> --task-id <task_id>` with that content (stays under the ~100-line/few-hundred-token cap defined in `templates/SCRUM_BOARD_SCHEMA.md`'s `resolved_context` subsection; the script rejects oversized input rather than truncating it). Place the script's returned path in the sender object's `resolved_context` field. Always pass the following sender object when invoking the tester:
|
|
229
229
|
|
|
230
230
|
```json
|
|
231
231
|
{
|
|
@@ -237,12 +237,13 @@ When you reach a meaningful milestone within a task where verification is approp
|
|
|
237
237
|
"epic_id": "<E##>",
|
|
238
238
|
"date": "<ISO 8601 UTC timestamp>",
|
|
239
239
|
"paths": ["<list of commit SHAs for this work>"],
|
|
240
|
-
"worktree": "<absolute path to the worktree>"
|
|
240
|
+
"worktree": "<absolute path to the worktree>",
|
|
241
|
+
"resolved_context": "<path returned by scripts/write-context-digest.sh, or omit if no digest was written>"
|
|
241
242
|
}
|
|
242
243
|
}
|
|
243
244
|
```
|
|
244
245
|
|
|
245
|
-
All fields must be present. In addition to the sender object, include a short plain-text implementation summary: what was implemented, which files changed, and any known edge cases or concerns. Reference the execution summary at `project/documentation/summaries/<E##_S##_T##>-summary.md` for full detail.
|
|
246
|
+
All fields must be present except `resolved_context`, which is optional. This digest is a starting point only, never a restriction: the tester may and should still read the full execution summary, the diff itself, or any other source file when the digest doesn't cover what it needs. In addition to the sender object, include a short plain-text implementation summary: what was implemented, which files changed, and any known edge cases or concerns. Reference the execution summary at `project/documentation/summaries/<E##_S##_T##>-summary.md` for full detail.
|
|
246
247
|
|
|
247
248
|
Wait for the tester's response before continuing. If the tester returns `"failed"` or `"error"`, address the findings before proceeding.
|
|
248
249
|
|
|
@@ -289,7 +290,7 @@ See `templates/PROBLEM_RAPPORT_TEMPLATE.md` for the required format. Commit the
|
|
|
289
290
|
|
|
290
291
|
## Investigative Mode
|
|
291
292
|
|
|
292
|
-
**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
|
|
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
294
|
|
|
294
295
|
**Hard constraints.** Investigative Mode is strictly read-only:
|
|
295
296
|
- No worktree is created for write purposes, no application code is written or modified, no dependency installs or generated artifacts.
|