agileflow 2.42.0 → 2.43.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 (66) hide show
  1. package/package.json +1 -1
  2. package/src/core/agents/accessibility.md +8 -0
  3. package/src/core/agents/adr-writer.md +8 -0
  4. package/src/core/agents/analytics.md +8 -0
  5. package/src/core/agents/api.md +8 -2
  6. package/src/core/agents/ci.md +8 -0
  7. package/src/core/agents/compliance.md +8 -0
  8. package/src/core/agents/configuration/archival.md +23 -1
  9. package/src/core/agents/configuration/attribution.md +22 -1
  10. package/src/core/agents/configuration/ci.md +23 -1
  11. package/src/core/agents/configuration/git-config.md +23 -1
  12. package/src/core/agents/configuration/hooks.md +22 -1
  13. package/src/core/agents/configuration/precompact.md +8 -0
  14. package/src/core/agents/configuration/status-line.md +93 -13
  15. package/src/core/agents/configuration/verify.md +23 -1
  16. package/src/core/agents/database.md +8 -2
  17. package/src/core/agents/datamigration.md +8 -0
  18. package/src/core/agents/design.md +8 -0
  19. package/src/core/agents/devops.md +8 -2
  20. package/src/core/agents/documentation.md +8 -0
  21. package/src/core/agents/epic-planner.md +8 -0
  22. package/src/core/agents/integrations.md +8 -0
  23. package/src/core/agents/mentor.md +8 -3
  24. package/src/core/agents/mobile.md +8 -0
  25. package/src/core/agents/monitoring.md +8 -0
  26. package/src/core/agents/multi-expert.md +8 -0
  27. package/src/core/agents/performance.md +8 -2
  28. package/src/core/agents/product.md +8 -0
  29. package/src/core/agents/qa.md +8 -0
  30. package/src/core/agents/readme-updater.md +8 -0
  31. package/src/core/agents/refactor.md +8 -2
  32. package/src/core/agents/research.md +8 -0
  33. package/src/core/agents/security.md +8 -2
  34. package/src/core/agents/testing.md +8 -0
  35. package/src/core/agents/ui.md +8 -2
  36. package/src/core/commands/adr.md +2 -13
  37. package/src/core/commands/agent.md +2 -13
  38. package/src/core/commands/assign.md +2 -13
  39. package/src/core/commands/auto.md +2 -13
  40. package/src/core/commands/babysit.md +94 -88
  41. package/src/core/commands/baseline.md +2 -13
  42. package/src/core/commands/blockers.md +4 -13
  43. package/src/core/commands/board.md +4 -13
  44. package/src/core/commands/deps.md +4 -15
  45. package/src/core/commands/docs.md +2 -15
  46. package/src/core/commands/epic.md +4 -15
  47. package/src/core/commands/help.md +3 -14
  48. package/src/core/commands/metrics.md +4 -15
  49. package/src/core/commands/packages.md +3 -14
  50. package/src/core/commands/pr.md +4 -13
  51. package/src/core/commands/readme-sync.md +7 -24
  52. package/src/core/commands/research.md +3 -14
  53. package/src/core/commands/retro.md +4 -15
  54. package/src/core/commands/sprint.md +8 -0
  55. package/src/core/commands/status.md +5 -14
  56. package/src/core/commands/story-validate.md +3 -14
  57. package/src/core/commands/story.md +17 -17
  58. package/src/core/commands/template.md +2 -15
  59. package/src/core/commands/tests.md +2 -15
  60. package/src/core/commands/update.md +2 -15
  61. package/src/core/commands/validate-expertise.md +2 -15
  62. package/src/core/commands/velocity.md +4 -15
  63. package/src/core/commands/verify.md +4 -15
  64. package/src/core/templates/agileflow-configure.js +123 -2
  65. package/src/core/templates/agileflow-metadata.json +12 -0
  66. package/src/core/templates/agileflow-statusline.sh +238 -44
@@ -10,25 +10,14 @@ Visualize and analyze story/epic dependency graphs with critical path analysis a
10
10
 
11
11
  ---
12
12
 
13
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
14
-
15
- **Before doing ANYTHING else, run this to register the command for context preservation:**
13
+ ## STEP 0: Gather Context
16
14
 
17
15
  ```bash
18
- node -e "
19
- const fs = require('fs');
20
- const path = 'docs/09-agents/session-state.json';
21
- if (fs.existsSync(path)) {
22
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
23
- const cmd = { name: 'deps', activated_at: new Date().toISOString(), state: {} };
24
- state.active_commands = state.active_commands || [];
25
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
26
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
27
- console.log('✅ Deps command activated');
28
- }
29
- "
16
+ node scripts/obtain-context.js deps
30
17
  ```
31
18
 
19
+ This gathers git status, stories/epics, session state, and registers for PreCompact.
20
+
32
21
  ---
33
22
 
34
23
  <!-- COMPACT_SUMMARY_START -->
@@ -9,23 +9,10 @@ Synchronize documentation with codebase changes.
9
9
 
10
10
  ---
11
11
 
12
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
13
-
14
- **Before doing ANYTHING else, run this to register the command for context preservation:**
12
+ ## STEP 0: Gather Context
15
13
 
16
14
  ```bash
17
- node -e "
18
- const fs = require('fs');
19
- const path = 'docs/09-agents/session-state.json';
20
- if (fs.existsSync(path)) {
21
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
22
- const cmd = { name: 'docs', activated_at: new Date().toISOString(), state: {} };
23
- state.active_commands = state.active_commands || [];
24
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
25
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
26
- console.log('✅ Docs command activated');
27
- }
28
- "
15
+ node scripts/obtain-context.js docs
29
16
  ```
30
17
 
31
18
  ---
@@ -7,25 +7,14 @@ argument-hint: EPIC=<EP-ID> TITLE=<text> OWNER=<id> GOAL=<text> [STORIES=<list>]
7
7
 
8
8
  ---
9
9
 
10
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
11
-
12
- **Before doing ANYTHING else, run this to register the command for context preservation:**
10
+ ## STEP 0: Gather Context
13
11
 
14
12
  ```bash
15
- node -e "
16
- const fs = require('fs');
17
- const path = 'docs/09-agents/session-state.json';
18
- if (fs.existsSync(path)) {
19
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
20
- const cmd = { name: 'epic', activated_at: new Date().toISOString(), state: {} };
21
- state.active_commands = state.active_commands || [];
22
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
23
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
24
- console.log('✅ Epic command activated');
25
- }
26
- "
13
+ node scripts/obtain-context.js epic
27
14
  ```
28
15
 
16
+ This gathers git status, stories/epics, session state, and registers for PreCompact.
17
+
29
18
  ---
30
19
 
31
20
  Create a new epic with optional child stories.
@@ -8,26 +8,15 @@ Display a concise overview of the AgileFlow system.
8
8
 
9
9
  ---
10
10
 
11
- ## STEP 0: Activation
11
+ ## STEP 0: Gather Context
12
12
 
13
13
  ```bash
14
- node -e "
15
- const fs = require('fs');
16
- const path = 'docs/09-agents/session-state.json';
17
- if (fs.existsSync(path)) {
18
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
19
- const cmd = { name: 'help', activated_at: new Date().toISOString(), state: {} };
20
- state.active_commands = state.active_commands || [];
21
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
22
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
23
- console.log('✅ help command activated');
24
- }
25
- "
14
+ node scripts/obtain-context.js help
26
15
  ```
27
16
 
28
17
  ---
29
18
 
30
- ## STEP 0: Activation (Documentation)
19
+ ## Context Loading (Documentation)
31
20
 
32
21
  **PURPOSE**: Immediately load full context before executing any logic.
33
22
 
@@ -8,25 +8,14 @@ model: haiku
8
8
 
9
9
  ---
10
10
 
11
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
12
-
13
- **Before doing ANYTHING else, run this to register the command for context preservation:**
11
+ ## STEP 0: Gather Context
14
12
 
15
13
  ```bash
16
- node -e "
17
- const fs = require('fs');
18
- const path = 'docs/09-agents/session-state.json';
19
- if (fs.existsSync(path)) {
20
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
21
- const cmd = { name: 'metrics', activated_at: new Date().toISOString(), state: {} };
22
- state.active_commands = state.active_commands || [];
23
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
24
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
25
- console.log('✅ Metrics command activated');
26
- }
27
- "
14
+ node scripts/obtain-context.js metrics
28
15
  ```
29
16
 
17
+ This gathers git status, stories/epics, session state, and registers for PreCompact.
18
+
30
19
  ---
31
20
 
32
21
  Comprehensive project analytics dashboard with cycle time, lead time, throughput, and trend analysis.
@@ -8,26 +8,15 @@ Manage project package dependencies (npm, pip, cargo, etc.) with dashboard, upda
8
8
 
9
9
  ---
10
10
 
11
- ## STEP 0: Activation
11
+ ## STEP 0: Gather Context
12
12
 
13
13
  ```bash
14
- node -e "
15
- const fs = require('fs');
16
- const path = 'docs/09-agents/session-state.json';
17
- if (fs.existsSync(path)) {
18
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
19
- const cmd = { name: 'packages', activated_at: new Date().toISOString(), state: {} };
20
- state.active_commands = state.active_commands || [];
21
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
22
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
23
- console.log('✅ packages command activated');
24
- }
25
- "
14
+ node scripts/obtain-context.js packages
26
15
  ```
27
16
 
28
17
  ---
29
18
 
30
- ## STEP 0: Activation (Documentation)
19
+ ## Context Loading (Documentation)
31
20
 
32
21
  **PURPOSE**: Immediately load full context before executing any logic.
33
22
 
@@ -5,23 +5,14 @@ argument-hint: STORY=<US-ID> [TITLE=<text>] [TEST_EVIDENCE=<text>]
5
5
 
6
6
  # pr-template
7
7
 
8
- ## STEP 0: Activation
8
+ ## STEP 0: Gather Context
9
9
 
10
10
  ```bash
11
- node -e "
12
- const fs = require('fs');
13
- const path = 'docs/09-agents/session-state.json';
14
- if (fs.existsSync(path)) {
15
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
16
- const cmd = { name: 'pr-template', activated_at: new Date().toISOString(), state: {} };
17
- state.active_commands = state.active_commands || [];
18
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
19
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
20
- console.log('✅ pr-template command activated');
21
- }
22
- "
11
+ node scripts/obtain-context.js pr
23
12
  ```
24
13
 
14
+ This gathers git status, stories/epics, session state, and registers for PreCompact.
15
+
25
16
  ---
26
17
 
27
18
  <!-- COMPACT_SUMMARY_START -->
@@ -9,26 +9,15 @@ Synchronize a folder's README.md with its current contents.
9
9
 
10
10
  ---
11
11
 
12
- ## STEP 0: Activation
12
+ ## STEP 0: Gather Context
13
13
 
14
14
  ```bash
15
- node -e "
16
- const fs = require('fs');
17
- const path = 'docs/09-agents/session-state.json';
18
- if (fs.existsSync(path)) {
19
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
20
- const cmd = { name: 'readme-sync', activated_at: new Date().toISOString(), state: {} };
21
- state.active_commands = state.active_commands || [];
22
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
23
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
24
- console.log('✅ readme-sync command activated');
25
- }
26
- "
15
+ node scripts/obtain-context.js readme-sync
27
16
  ```
28
17
 
29
18
  ---
30
19
 
31
- ## STEP 0: Activation (Documentation)
20
+ ## Context Loading (Documentation)
32
21
 
33
22
  **PURPOSE**: Immediately load full context before executing any logic.
34
23
 
@@ -58,7 +47,7 @@ if (fs.existsSync(path)) {
58
47
  - **AskUserQuestion**: Use XML format with multiSelect for decisions
59
48
  - **Output**: Updates only "## Contents" section, preserves all other sections
60
49
  - **Use Cases**: After adding files, before releases, documentation cleanup, reorganizing folders
61
- - **Related**: docs/02-practices/async-agent-spawning.md, ask-user-question.md
50
+ - **Related**: Async agent spawning patterns, AskUserQuestion format
62
51
  <!-- COMPACT_SUMMARY_END -->
63
52
 
64
53
  ---
@@ -70,7 +59,7 @@ ROLE: README Sync Orchestrator
70
59
  🔴 **AskUserQuestion Format** (when asking decisions):
71
60
  - NEVER ask users to "type" anything - use proper options
72
61
  - Use XML invoke format with multiSelect for multiple choices
73
- - See `docs/02-practices/ask-user-question.md` for examples
62
+ - See AskUserQuestion format examples in any configuration agent
74
63
 
75
64
  INPUTS
76
65
  FOLDER=<path> Path to folder (e.g., docs/02-practices)
@@ -178,9 +167,6 @@ Found 8 files:
178
167
  • ci.md – CI/CD pipeline configuration, testing gates
179
168
  • security.md – Security practices, input validation, authentication
180
169
  • releasing.md – Release procedures, versioning, changelog
181
- • diagrams.md – Mermaid diagram generation with light/dark themes
182
- • async-agent-spawning.md – Launch, monitor, and retrieve background agents
183
- • ask-user-question.md – Using the AskUserQuestion tool effectively
184
170
 
185
171
  Proposed Changes to ## Contents Section:
186
172
  ─────────────────────────────────────────
@@ -189,9 +175,6 @@ Proposed Changes to ## Contents Section:
189
175
  - **ci.md** – CI/CD pipeline configuration, testing gates
190
176
  - **security.md** – Security practices, input validation, authentication
191
177
  - **releasing.md** – Release procedures, versioning, changelog
192
- - **diagrams.md** – Mermaid diagram generation with light/dark themes
193
- - **async-agent-spawning.md** – Launch, monitor, and retrieve background agents
194
- - **ask-user-question.md** – Using the AskUserQuestion tool effectively
195
178
 
196
179
  Update README.md with these changes? (YES/NO)
197
180
  ```
@@ -224,5 +207,5 @@ Only the `## Contents` section of README.md:
224
207
  - Preserves custom notes and links
225
208
 
226
209
  RELATED
227
- - [Diagram Practice](docs/02-practices/diagrams.md) - How to create diagrams
228
- - [Async Agent Spawning](docs/02-practices/async-agent-spawning.md) - Background agent patterns
210
+ - CLAUDE.md - Project conventions and practices
211
+ - Mermaid diagram syntax - For flowcharts and sequence diagrams
@@ -8,26 +8,15 @@ Initialize or save research notes to the research folder.
8
8
 
9
9
  ---
10
10
 
11
- ## STEP 0: Activation
11
+ ## STEP 0: Gather Context
12
12
 
13
13
  ```bash
14
- node -e "
15
- const fs = require('fs');
16
- const path = 'docs/09-agents/session-state.json';
17
- if (fs.existsSync(path)) {
18
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
19
- const cmd = { name: 'research-init', activated_at: new Date().toISOString(), state: {} };
20
- state.active_commands = state.active_commands || [];
21
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
22
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
23
- console.log('✅ research-init command activated');
24
- }
25
- "
14
+ node scripts/obtain-context.js research
26
15
  ```
27
16
 
28
17
  ---
29
18
 
30
- ## STEP 0: Activation (Documentation)
19
+ ## Context Loading (Documentation)
31
20
 
32
21
  **PURPOSE**: Immediately load full context before executing any logic.
33
22
 
@@ -8,25 +8,14 @@ model: haiku
8
8
 
9
9
  ---
10
10
 
11
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
12
-
13
- **Before doing ANYTHING else, run this to register the command for context preservation:**
11
+ ## STEP 0: Gather Context
14
12
 
15
13
  ```bash
16
- node -e "
17
- const fs = require('fs');
18
- const path = 'docs/09-agents/session-state.json';
19
- if (fs.existsSync(path)) {
20
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
21
- const cmd = { name: 'retro', activated_at: new Date().toISOString(), state: {} };
22
- state.active_commands = state.active_commands || [];
23
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
24
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
25
- console.log('✅ Retro command activated');
26
- }
27
- "
14
+ node scripts/obtain-context.js retro
28
15
  ```
29
16
 
17
+ This gathers git status, stories/epics, session state, and registers for PreCompact.
18
+
30
19
  ---
31
20
 
32
21
  Automated retrospective generator that analyzes patterns and surfaces insights from AgileFlow data.
@@ -68,6 +68,14 @@ Sprint Planner that creates data-driven sprint commitments based on historical v
68
68
 
69
69
  Intelligent sprint planning with capacity-based story selection, dependency validation, and velocity forecasting.
70
70
 
71
+ ## STEP 0: Gather Context
72
+
73
+ ```bash
74
+ node scripts/obtain-context.js sprint
75
+ ```
76
+
77
+ This gathers git status, stories/epics, session state, and registers for PreCompact.
78
+
71
79
  ## Prompt
72
80
 
73
81
  ROLE: Sprint Planner
@@ -9,26 +9,17 @@ Update story status and broadcast to agents via message bus.
9
9
 
10
10
  ---
11
11
 
12
- ## STEP 0: Activation
12
+ ## STEP 0: Gather Context
13
13
 
14
14
  ```bash
15
- node -e "
16
- const fs = require('fs');
17
- const path = 'docs/09-agents/session-state.json';
18
- if (fs.existsSync(path)) {
19
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
20
- const cmd = { name: 'status', activated_at: new Date().toISOString(), state: {} };
21
- state.active_commands = state.active_commands || [];
22
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
23
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
24
- console.log('✅ status command activated');
25
- }
26
- "
15
+ node scripts/obtain-context.js status
27
16
  ```
28
17
 
18
+ This gathers git status, stories/epics, session state, and registers for PreCompact.
19
+
29
20
  ---
30
21
 
31
- ## STEP 0: Activation (Documentation)
22
+ ## Context Loading (Documentation)
32
23
 
33
24
  **PURPOSE**: Immediately load full context before executing any logic.
34
25
 
@@ -9,26 +9,15 @@ Validate a specific story for completeness, architecture context, and readiness
9
9
 
10
10
  ---
11
11
 
12
- ## STEP 0: Activation
12
+ ## STEP 0: Gather Context
13
13
 
14
14
  ```bash
15
- node -e "
16
- const fs = require('fs');
17
- const path = 'docs/09-agents/session-state.json';
18
- if (fs.existsSync(path)) {
19
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
20
- const cmd = { name: 'story-validate', activated_at: new Date().toISOString(), state: {} };
21
- state.active_commands = state.active_commands || [];
22
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
23
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
24
- console.log('✅ story-validate command activated');
25
- }
26
- "
15
+ node scripts/obtain-context.js story-validate
27
16
  ```
28
17
 
29
18
  ---
30
19
 
31
- ## STEP 0: Activation (Documentation)
20
+ ## Context Loading (Documentation)
32
21
 
33
22
  **PURPOSE**: Immediately load full context before executing any logic.
34
23
 
@@ -9,23 +9,10 @@ Create a new user story with acceptance criteria and test stubs.
9
9
 
10
10
  ---
11
11
 
12
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
13
-
14
- **Before doing ANYTHING else, run this to register the command for context preservation:**
12
+ ## STEP 0: Gather Context
15
13
 
16
14
  ```bash
17
- node -e "
18
- const fs = require('fs');
19
- const path = 'docs/09-agents/session-state.json';
20
- if (fs.existsSync(path)) {
21
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
22
- const cmd = { name: 'story', activated_at: new Date().toISOString(), state: {} };
23
- state.active_commands = state.active_commands || [];
24
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
25
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
26
- console.log('✅ Story command activated');
27
- }
28
- "
15
+ node scripts/obtain-context.js story
29
16
  ```
30
17
 
31
18
  ---
@@ -40,7 +27,7 @@ if (fs.existsSync(path)) {
40
27
  **Critical Rules**:
41
28
  - MUST use TodoWrite to track all 6 steps (parse, create story, create test stub, update status.json, append to bus/log.jsonl, confirm)
42
29
  - MUST show preview before creating files (use AskUserQuestion with proper XML invoke format)
43
- - NEVER ask users to "type" - always use proper options format (see docs/02-practices/ask-user-question.md)
30
+ - NEVER ask users to "type" - always use proper options format
44
31
  - MUST use story-template.md as the base structure
45
32
  - MUST create test stub referencing acceptance criteria
46
33
  - MUST update both status.json and bus/log.jsonl
@@ -102,7 +89,20 @@ if (fs.existsSync(path)) {
102
89
 
103
90
  ROLE: Story Creator
104
91
 
105
- 🔴 **AskUserQuestion Format**: NEVER ask users to "type" anything. Use proper options with XML invoke format. See `docs/02-practices/ask-user-question.md`.
92
+ 🔴 **AskUserQuestion Format**: NEVER ask users to "type" anything. Use proper options:
93
+ ```xml
94
+ <invoke name="AskUserQuestion">
95
+ <parameter name="questions">[{
96
+ "question": "Create this story?",
97
+ "header": "Confirm",
98
+ "multiSelect": false,
99
+ "options": [
100
+ {"label": "Yes, create it", "description": "Create story file and test stub"},
101
+ {"label": "Edit first", "description": "Modify details before creating"}
102
+ ]
103
+ }]</parameter>
104
+ </invoke>
105
+ ```
106
106
 
107
107
  TODO LIST TRACKING
108
108
  **CRITICAL**: Immediately create a todo list using TodoWrite tool to track story creation:
@@ -8,23 +8,10 @@ Create and manage custom templates for stories, epics, ADRs, and other documents
8
8
 
9
9
  ---
10
10
 
11
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
12
-
13
- **Before doing ANYTHING else, run this to register the command for context preservation:**
11
+ ## STEP 0: Gather Context
14
12
 
15
13
  ```bash
16
- node -e "
17
- const fs = require('fs');
18
- const path = 'docs/09-agents/session-state.json';
19
- if (fs.existsSync(path)) {
20
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
21
- const cmd = { name: 'custom-template', activated_at: new Date().toISOString(), state: {} };
22
- state.active_commands = state.active_commands || [];
23
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
24
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
25
- console.log('✅ Custom-template command activated');
26
- }
27
- "
14
+ node scripts/obtain-context.js template
28
15
  ```
29
16
 
30
17
  ---
@@ -8,23 +8,10 @@ Automatically set up testing infrastructure for projects without existing tests.
8
8
 
9
9
  ---
10
10
 
11
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
12
-
13
- **Before doing ANYTHING else, run this to register the command for context preservation:**
11
+ ## STEP 0: Gather Context
14
12
 
15
13
  ```bash
16
- node -e "
17
- const fs = require('fs');
18
- const path = 'docs/09-agents/session-state.json';
19
- if (fs.existsSync(path)) {
20
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
21
- const cmd = { name: 'setup-tests', activated_at: new Date().toISOString(), state: {} };
22
- state.active_commands = state.active_commands || [];
23
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
24
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
25
- console.log('✅ Setup-tests command activated');
26
- }
27
- "
14
+ node scripts/obtain-context.js tests
28
15
  ```
29
16
 
30
17
  ---
@@ -8,23 +8,10 @@ Generate stakeholder communication updates from project status.
8
8
 
9
9
  ---
10
10
 
11
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
12
-
13
- **Before doing ANYTHING else, run this to register the command for context preservation:**
11
+ ## STEP 0: Gather Context
14
12
 
15
13
  ```bash
16
- node -e "
17
- const fs = require('fs');
18
- const path = 'docs/09-agents/session-state.json';
19
- if (fs.existsSync(path)) {
20
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
21
- const cmd = { name: 'stakeholder-update', activated_at: new Date().toISOString(), state: {} };
22
- state.active_commands = state.active_commands || [];
23
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
24
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
25
- console.log('✅ Stakeholder-update command activated');
26
- }
27
- "
14
+ node scripts/obtain-context.js update
28
15
  ```
29
16
 
30
17
  ---
@@ -10,23 +10,10 @@ Validate agent expertise files to ensure they haven't drifted from the codebase.
10
10
 
11
11
  ---
12
12
 
13
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
14
-
15
- **Before doing ANYTHING else, run this to register the command for context preservation:**
13
+ ## STEP 0: Gather Context
16
14
 
17
15
  ```bash
18
- node -e "
19
- const fs = require('fs');
20
- const path = 'docs/09-agents/session-state.json';
21
- if (fs.existsSync(path)) {
22
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
23
- const cmd = { name: 'validate-expertise', activated_at: new Date().toISOString(), state: {} };
24
- state.active_commands = state.active_commands || [];
25
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
26
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
27
- console.log('✅ Validate-expertise command activated');
28
- }
29
- "
16
+ node scripts/obtain-context.js validate-expertise
30
17
  ```
31
18
 
32
19
  ---
@@ -9,25 +9,14 @@ Track team velocity, calculate trends, and forecast completion dates.
9
9
 
10
10
  ---
11
11
 
12
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
13
-
14
- **Before doing ANYTHING else, run this to register the command for context preservation:**
12
+ ## STEP 0: Gather Context
15
13
 
16
14
  ```bash
17
- node -e "
18
- const fs = require('fs');
19
- const path = 'docs/09-agents/session-state.json';
20
- if (fs.existsSync(path)) {
21
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
22
- const cmd = { name: 'velocity', activated_at: new Date().toISOString(), state: {} };
23
- state.active_commands = state.active_commands || [];
24
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
25
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
26
- console.log('✅ Velocity command activated');
27
- }
28
- "
15
+ node scripts/obtain-context.js velocity
29
16
  ```
30
17
 
18
+ This gathers git status, stories/epics, session state, and registers for PreCompact.
19
+
31
20
  ---
32
21
 
33
22
  <!-- COMPACT_SUMMARY_START -->
@@ -9,25 +9,14 @@ Execute project tests and update test status for stories.
9
9
 
10
10
  ---
11
11
 
12
- ## 🚨 STEP 0: ACTIVATE COMMAND (REQUIRED FIRST)
13
-
14
- **Before doing ANYTHING else, run this to register the command for context preservation:**
12
+ ## STEP 0: Gather Context
15
13
 
16
14
  ```bash
17
- node -e "
18
- const fs = require('fs');
19
- const path = 'docs/09-agents/session-state.json';
20
- if (fs.existsSync(path)) {
21
- const state = JSON.parse(fs.readFileSync(path, 'utf8'));
22
- const cmd = { name: 'verify', activated_at: new Date().toISOString(), state: {} };
23
- state.active_commands = state.active_commands || [];
24
- if (!state.active_commands.some(c => c.name === cmd.name)) state.active_commands.push(cmd);
25
- fs.writeFileSync(path, JSON.stringify(state, null, 2) + '\n');
26
- console.log('✅ Verify command activated');
27
- }
28
- "
15
+ node scripts/obtain-context.js verify
29
16
  ```
30
17
 
18
+ This gathers git status, stories/epics, session state, and registers for PreCompact.
19
+
31
20
  ---
32
21
 
33
22
  <!-- COMPACT_SUMMARY_START -->