@hanzlaa/rcode 4.1.0 → 4.1.2
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/AGENTS.md +1 -1
- package/CONTRIBUTING.md +3 -0
- package/README.md +3 -0
- package/cli/agent.js +3 -1
- package/cli/index.js +45 -0
- package/cli/install.js +59 -3
- package/cli/workflow.js +99 -0
- package/dist/rcode.js +215 -187
- package/package.json +1 -1
- package/rcode/bin/lib/config.cjs +3 -2
- package/rcode/bin/rcode-tools.cjs +23 -9
- package/rcode/commands/scaffold-project.md +2 -2
- package/rcode/skills/actions/2-plan/rcode-create-epics-and-stories/steps/step-04-final-validation.md +1 -1
- package/rcode/skills/actions/2-plan/rcode-create-milestone/steps/README.md +2 -2
- package/rcode/skills/actions/2-plan/rcode-create-milestone/steps/step-09-state-sync.md +1 -1
- package/rcode/skills/actions/3-solutioning/rcode-create-architecture/steps/step-01-init.md +1 -1
- package/rcode/skills/actions/3-solutioning/rcode-create-architecture/workflow.md +13 -1
- package/rcode/skills/actions/4-implementation/rcode-code-review/steps/step-02-review.md +1 -1
- package/rcode/skills/actions/4-implementation/rcode-git-flow/SKILL.md +1 -1
- package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/SKILL.md +5 -1
- package/rcode/skills/actions/4-implementation/rcode-retrospective/workflow.md +61 -246
- package/rcode/skills/actions/4-implementation/rcode-scaffold-project/SKILL.md +39 -12
- package/rcode/skills/actions/4-implementation/rcode-scaffold-project/steps/step-01-target.md +18 -3
- package/rcode/skills/actions/4-implementation/rcode-scaffold-project/steps/step-02-safety.md +27 -3
- package/rcode/skills/actions/4-implementation/rcode-scaffold-project/steps/step-03-brownfield.md +57 -0
- package/rcode/skills/actions/4-implementation/rcode-scaffold-project/steps/step-03-clone.md +4 -1
- package/rcode/skills/actions/4-implementation/rcode-scaffold-project/steps/step-04-post-setup.md +15 -1
- package/rcode/skills/actions/4-implementation/rcode-trim/SKILL.md +1 -1
- package/rcode/workflows/audit-milestone.md +1 -1
- package/rcode/workflows/audit.md +3 -0
- package/rcode/workflows/brainstorm.md +1 -1
- package/rcode/workflows/council.md +8 -1
- package/rcode/workflows/create-architecture.md +5 -1
- package/rcode/workflows/create-prd.md +5 -1
- package/rcode/workflows/dashboard.md +5 -2
- package/rcode/workflows/discuss-phase.md +4 -16
- package/rcode/workflows/execute-milestone.md +1 -1
- package/rcode/workflows/execute-regression-gates.md +3 -0
- package/rcode/workflows/execute-sprint.md +30 -2
- package/rcode/workflows/execute-waves.md +6 -0
- package/rcode/workflows/execute.md +13 -3
- package/rcode/workflows/new-milestone.md +2 -2
- package/rcode/workflows/new-project.md +4 -0
- package/rcode/workflows/plan-research-validation.md +1 -1
- package/rcode/workflows/plan-spawn-planner.md +2 -2
- package/rcode/workflows/plan.md +34 -15
- package/rcode/workflows/retrospective.md +5 -1
- package/rcode/workflows/review.md +2 -0
- package/rcode/workflows/scaffold-project.md +5 -1
- package/rcode/workflows/session-report.md +1 -1
- package/rcode/workflows/ship.md +39 -0
- package/rcode/workflows/sprint-planning.md +36 -5
- package/rcode/workflows/status.md +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanzlaa/rcode",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.2",
|
|
4
4
|
"description": "rcode — the AI team that never forgets. Persistent memory, specialist agents, and slash commands for AI IDEs. Works in Claude Code, Cursor, Gemini, VS Code, and Antigravity.",
|
|
5
5
|
"main": "cli/index.js",
|
|
6
6
|
"bin": {
|
package/rcode/bin/lib/config.cjs
CHANGED
|
@@ -142,12 +142,13 @@ function cmdSet(projectRoot, dottedKey, value) {
|
|
|
142
142
|
fs.mkdirSync(path.dirname(cp), { recursive: true });
|
|
143
143
|
const existing = fs.existsSync(cp) ? fs.readFileSync(cp, 'utf8') : '';
|
|
144
144
|
const config = parseNestedYaml(existing);
|
|
145
|
-
|
|
145
|
+
const normalizedValue = stripQuotes(String(value).trim());
|
|
146
|
+
setAt(config, dottedKey, normalizedValue);
|
|
146
147
|
const out = serialise(config);
|
|
147
148
|
const tmp = cp + '.tmp';
|
|
148
149
|
fs.writeFileSync(tmp, out, 'utf8');
|
|
149
150
|
fs.renameSync(tmp, cp);
|
|
150
|
-
return { ok: true, key: dottedKey, value, path: cp };
|
|
151
|
+
return { ok: true, key: dottedKey, value: normalizedValue, path: cp };
|
|
151
152
|
}
|
|
152
153
|
|
|
153
154
|
module.exports = {
|
|
@@ -447,12 +447,19 @@ function cmdInit(workflowName, rawArgs) {
|
|
|
447
447
|
} catch { /* parser failure shouldn't break init */ }
|
|
448
448
|
}
|
|
449
449
|
|
|
450
|
-
// Find phase directory on disk (matches
|
|
450
|
+
// Find phase directory on disk (matches '1-name', '01-name', and '001-name' prefixes).
|
|
451
451
|
let phaseDirEntry = null;
|
|
452
452
|
if (fs.existsSync(phasesDir)) {
|
|
453
|
-
const
|
|
453
|
+
const n = String(phaseNum);
|
|
454
|
+
const pad2 = n.padStart(2, '0');
|
|
455
|
+
const pad3 = n.padStart(3, '0');
|
|
454
456
|
for (const entry of fs.readdirSync(phasesDir)) {
|
|
455
|
-
if (
|
|
457
|
+
if (
|
|
458
|
+
entry === n ||
|
|
459
|
+
entry.startsWith(`${n}-`) ||
|
|
460
|
+
entry.startsWith(`${pad2}-`) ||
|
|
461
|
+
entry.startsWith(`${pad3}-`)
|
|
462
|
+
) {
|
|
456
463
|
phaseDirEntry = entry;
|
|
457
464
|
break;
|
|
458
465
|
}
|
|
@@ -463,10 +470,12 @@ function cmdInit(workflowName, rawArgs) {
|
|
|
463
470
|
out.phase_number = String(phaseNum);
|
|
464
471
|
// Issue #652 — no leading zeros in planning artifacts. The field name
|
|
465
472
|
// 'padded_phase' is kept for workflow backward compat but the value is
|
|
466
|
-
// now the canonical (unpadded) phase number.
|
|
467
|
-
//
|
|
473
|
+
// now the canonical (unpadded) phase number (e.g. "6", not "06").
|
|
474
|
+
// Workflows MUST NOT rely on this being zero-padded; use phase_number instead.
|
|
475
|
+
// The resolver above still accepts legacy '06-name' / '006-name' dirs for older projects.
|
|
468
476
|
out.padded_phase = String(phaseNum);
|
|
469
477
|
out.phase_name = roadmapPhase ? roadmapPhase.name : null;
|
|
478
|
+
// Strip all leading-zero prefix digits so '001-name', '01-name', '1-name' → 'name'.
|
|
470
479
|
out.phase_slug = phaseDirEntry ? phaseDirEntry.replace(/^\d+-/, '') : null;
|
|
471
480
|
out.phase_dir = phaseDirEntry ? path.join(PLANNING_DIR, 'phases', phaseDirEntry) : null;
|
|
472
481
|
|
|
@@ -1367,7 +1376,7 @@ function cmdState(subArgs) {
|
|
|
1367
1376
|
String(p.id) === String(flags.phase) ||
|
|
1368
1377
|
p.name === flags.phase
|
|
1369
1378
|
);
|
|
1370
|
-
if (phaseIdx === -1) throw new Error(`Phase "${flags.phase}" not found in state
|
|
1379
|
+
if (phaseIdx === -1) throw new Error(`Phase "${flags.phase}" not found in state. If the phase exists in ROADMAP.md, run "rcode state sync" or "/rcode-update" to synchronize state first.`);
|
|
1371
1380
|
const phase = state.phases[phaseIdx];
|
|
1372
1381
|
|
|
1373
1382
|
// Derive phase number: prefer explicit .number, fallback to array position
|
|
@@ -3170,7 +3179,9 @@ function cmdState(subArgs) {
|
|
|
3170
3179
|
}
|
|
3171
3180
|
}
|
|
3172
3181
|
|
|
3173
|
-
// Walk
|
|
3182
|
+
// Walk phase sprint artifacts into state.sprints[] (issue #135).
|
|
3183
|
+
// Support both legacy `sprint-1.md` and workflow-generated
|
|
3184
|
+
// `01-01-SPRINT.md` / `1-1-SPRINT.md` names.
|
|
3174
3185
|
const phasesDir = path.join(PLANNING_DIR, 'phases');
|
|
3175
3186
|
const rcodePhasesDir = path.join(RCODE_DIR, 'phases');
|
|
3176
3187
|
const sprintRoot = fs.existsSync(phasesDir) ? phasesDir : (fs.existsSync(rcodePhasesDir) ? rcodePhasesDir : null);
|
|
@@ -3182,9 +3193,11 @@ function cmdState(subArgs) {
|
|
|
3182
3193
|
const phaseNumMatch = phaseEntry.match(/^(\d+(?:\.\d+)?)/);
|
|
3183
3194
|
const phaseNum = phaseNumMatch ? phaseNumMatch[1] : phaseEntry;
|
|
3184
3195
|
for (const file of fs.readdirSync(phaseDir)) {
|
|
3185
|
-
const sprintMatch =
|
|
3196
|
+
const sprintMatch =
|
|
3197
|
+
file.match(/^sprint-(\d+)\.md$/i) ||
|
|
3198
|
+
file.match(/^(?:\d+(?:\.\d+)?[-_.])?(\d+)[-_.].*SPRINT\.md$/i);
|
|
3186
3199
|
if (!sprintMatch) continue;
|
|
3187
|
-
const sprintNum = sprintMatch[1];
|
|
3200
|
+
const sprintNum = String(parseInt(sprintMatch[1], 10));
|
|
3188
3201
|
const sprintKey = `${phaseNum}/${sprintNum}`;
|
|
3189
3202
|
parsed.sprints_found += 1;
|
|
3190
3203
|
const sprintPath = path.join(phaseDir, file);
|
|
@@ -6795,6 +6808,7 @@ function cmdGitignore(args) {
|
|
|
6795
6808
|
'.rcode/brain/best-practices/',
|
|
6796
6809
|
'',
|
|
6797
6810
|
'# Runtime noise',
|
|
6811
|
+
'node_modules/',
|
|
6798
6812
|
'.rcode/state.json.lock',
|
|
6799
6813
|
'.planning/debug/',
|
|
6800
6814
|
'.planning/_backup/',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rcode-scaffold-project
|
|
3
|
-
description: "Scaffold a new project from the official rcode template repo."
|
|
4
|
-
argument-hint: "[project-name]"
|
|
3
|
+
description: "Scaffold a new project from the official rcode template repo, or add rcode to an existing project with --here."
|
|
4
|
+
argument-hint: "[project-name | --here]"
|
|
5
5
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
6
6
|
---
|
|
7
7
|
|
package/rcode/skills/actions/2-plan/rcode-create-epics-and-stories/steps/step-04-final-validation.md
CHANGED
|
@@ -119,7 +119,7 @@ If all validations pass:
|
|
|
119
119
|
- Ensure proper formatting
|
|
120
120
|
- Save the final epics.md
|
|
121
121
|
|
|
122
|
-
### 7. State Sync (MANDATORY
|
|
122
|
+
### 7. State Sync (MANDATORY)
|
|
123
123
|
|
|
124
124
|
After saving `.planning/epics.md`, you MUST sync state so `.rcode/state.json` reflects the new epics. Without this, downstream workflows (`/rcode-status`, `/rcode-progress`, `/rcode-execute`) see a divergent picture.
|
|
125
125
|
|
|
@@ -4,8 +4,8 @@ This skill uses the same step-file architecture as `rcode-create-prd` and `rcode
|
|
|
4
4
|
|
|
5
5
|
## Status
|
|
6
6
|
|
|
7
|
-
- All 10 step files are **implemented and production-ready
|
|
8
|
-
- Scaffolded
|
|
7
|
+
- All 10 step files are **implemented and production-ready**.
|
|
8
|
+
- Scaffolded, completed, and compliance-verified across multiple releases.
|
|
9
9
|
- If a step is missing from this directory at runtime, re-install the package — do not fall back to inline generation.
|
|
10
10
|
|
|
11
11
|
## Expected Step Files (per workflow.md)
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## STEP GOAL
|
|
6
6
|
|
|
7
|
-
Call the state-sync CLI so `.rcode/state.json` reflects every milestone and phase we just wrote to `ROADMAP.md`. This closes the drift loophole
|
|
7
|
+
Call the state-sync CLI so `.rcode/state.json` reflects every milestone and phase we just wrote to `ROADMAP.md`. This closes the state-drift loophole enforced by `_shared/state-sync-rule.md`.
|
|
8
8
|
|
|
9
9
|
## MANDATORY RULES
|
|
10
10
|
|
|
@@ -70,7 +70,7 @@ Try to discover the following:
|
|
|
70
70
|
- Project Documentation (generally multiple documents might be found for this in the `{project_knowledge}` or `{project-root}/docs` folder.)
|
|
71
71
|
- Project Context (`**/project-context.md`)
|
|
72
72
|
|
|
73
|
-
<critical>
|
|
73
|
+
<critical>If auto mode is active (--auto flag or config.mode == "yolo"): skip user confirmation — log "Auto mode: proceeding with discovered documents: [list]" and continue directly to Loading Rules. Otherwise: confirm what you have found with the user, ask if they want to provide anything else, and only proceed after confirmation.</critical>
|
|
74
74
|
|
|
75
75
|
**Loading Rules:**
|
|
76
76
|
|
|
@@ -18,14 +18,26 @@ This uses **micro-file architecture** for disciplined execution:
|
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
+
## AUTO MODE
|
|
22
|
+
|
|
23
|
+
**If `--auto` was passed in ARGUMENTS OR `config.mode == "yolo"`:**
|
|
24
|
+
- Skip all user-confirmation gates throughout the workflow.
|
|
25
|
+
- In step-01-init: discover input documents automatically, proceed without asking the user to confirm or add files.
|
|
26
|
+
- In all subsequent steps: choose the recommended option at every decision point without prompting.
|
|
27
|
+
- Log each auto-selected choice inline so the output is auditable.
|
|
28
|
+
- This flag persists for the entire workflow invocation (all steps see it).
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
21
32
|
## INITIALIZATION
|
|
22
33
|
|
|
23
34
|
### Configuration Loading
|
|
24
35
|
|
|
25
|
-
Load config from `{project-root}/.rcode/config.
|
|
36
|
+
Load config from `{project-root}/.rcode/config.yaml` and resolve:
|
|
26
37
|
|
|
27
38
|
- `project_name`, `output_folder`, `planning_artifacts`, `user_name`
|
|
28
39
|
- `communication_language`, `document_output_language`, `user_skill_level`
|
|
40
|
+
- `mode` — if `yolo`, treat as `--auto` for this entire invocation
|
|
29
41
|
- `date` as system-generated current datetime
|
|
30
42
|
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
|
|
31
43
|
|
|
@@ -17,7 +17,7 @@ failed_layers: '' # set at runtime: comma-separated list of layers that failed o
|
|
|
17
17
|
|
|
18
18
|
2. Launch parallel subagents without conversation context. If subagents are not available, generate prompt files in `{implementation_artifacts}` — one per reviewer role below — and HALT. Ask the user to run each in a separate session (ideally a different LLM) and paste back the findings. When findings are pasted, resume from this point and proceed to step 3.
|
|
19
19
|
|
|
20
|
-
**Subagent mapping
|
|
20
|
+
**Subagent mapping:** the three reviewer roles below map to actual agents shipped in `.claude/agents/`. The skill names that used to be referenced here (`rcode-review-adversarial-general`, `rcode-review-edge-case-hunter`) are skills, not subagents, and `Task(subagent_type=...)` cannot reach them. Use the agents listed.
|
|
21
21
|
|
|
22
22
|
- **Blind Hunter** — receives `{diff_output}` only. No spec, no context docs, no project access. Dispatch:
|
|
23
23
|
`Task(subagent_type="rcode-security-adversary", model="{review_model}", prompt="<adversarial review of diff>")`. The security-adversary persona's cynical mindset is the right fit for an isolated diff-only review.
|
|
@@ -81,7 +81,7 @@ Do NOT include: force-pushes to main; commits with AI attribution; bundled commi
|
|
|
81
81
|
|
|
82
82
|
## Examples
|
|
83
83
|
|
|
84
|
-
**Happy path** —
|
|
84
|
+
**Happy path** — A tracked issue (refresh README counts) → branch `docs/readme-counts` → 1 commit with subject `docs(readme): refresh agent/command/skill counts and add MIGRATIONS link` → push → PR with `Closes` the tracked issue → squash-merge.
|
|
85
85
|
|
|
86
86
|
**Edge case — conflict on team.yaml** — Two branches both edit team.yaml. Resolve by: pull both versions, manually merge agent entries (preserve unique IDs), run `node --test test/agents-registry.test.cjs`, commit.
|
|
87
87
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rcode-herdr-orchestration
|
|
3
|
-
description: Orchestrate parallel cld agents in herdr —
|
|
3
|
+
description: Orchestrate parallel cld agents in herdr — fan-out or autonomous wave campaign.
|
|
4
4
|
triggers:
|
|
5
5
|
# English — single-shot orchestration
|
|
6
6
|
- "orchestrate agents"
|
|
@@ -50,6 +50,10 @@ Two modes: **single-shot** (bounded fan-out, one sitting, merge back done) and
|
|
|
50
50
|
branch). Both share the same golden rules and pane mechanics. See `references.md` for
|
|
51
51
|
the full campaign workflow and deep-dive rules.
|
|
52
52
|
|
|
53
|
+
**Do NOT use for a single quick task** — invoke the work directly without herdr for that.
|
|
54
|
+
Orchestration overhead (worktrees, panes, monitoring) only pays off across multiple
|
|
55
|
+
independent agents.
|
|
56
|
+
|
|
53
57
|
---
|
|
54
58
|
|
|
55
59
|
## Golden rules (NON-NEGOTIABLE — apply to BOTH modes)
|
|
@@ -34,11 +34,30 @@ This keeps `.rcode/state.json` in sync with disk — `/rcode-progress`, `/rcode-
|
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
37
|
+
## AUTO MODE (--auto / yolo)
|
|
38
|
+
|
|
39
|
+
**If `--auto` was passed OR `config.mode == "yolo"`:** skip all `<action>WAIT</action>` gates,
|
|
40
|
+
skip all roleplay dialog (Bob/Alice/Charlie personas), and produce the retrospective document
|
|
41
|
+
directly from available artifacts.
|
|
42
|
+
|
|
43
|
+
Auto-mode steps:
|
|
44
|
+
1. Load config + resolve paths (same as INITIALIZATION below).
|
|
45
|
+
2. Detect epic number automatically (highest epic in sprint-status or implementation_artifacts).
|
|
46
|
+
3. Read epic file, SUMMARY.md, and previous retrospective if present.
|
|
47
|
+
4. Produce the retrospective markdown document at `{implementation_artifacts}/epic-{N}-retro-{date}.md`
|
|
48
|
+
with sections: Epic Summary, Metrics, Successes, Challenges, Key Learnings, Action Items,
|
|
49
|
+
Next Epic Preparation.
|
|
50
|
+
5. Update sprint-status.yaml to mark `epic-{N}-retrospective` as done.
|
|
51
|
+
6. Run `node .rcode/bin/rcode-tools.cjs state sync --from-disk`.
|
|
52
|
+
7. Print completion banner and stop — do not run the interactive EXECUTION steps below.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
37
56
|
## INITIALIZATION
|
|
38
57
|
|
|
39
58
|
### Configuration Loading
|
|
40
59
|
|
|
41
|
-
Load config from `{project-root}/.rcode/config.
|
|
60
|
+
Load config from `{project-root}/.rcode/config.yaml` and resolve:
|
|
42
61
|
|
|
43
62
|
- `project_name`, `user_name`
|
|
44
63
|
- `communication_language`, `document_output_language`
|
|
@@ -495,83 +514,26 @@ Bob (Scrum Master): "No problem. We'll still do a thorough retro on Epic {{epic_
|
|
|
495
514
|
<action>Ensure key roles present: Product Owner, Scrum Master (facilitating), Devs, Testing/QA, Architect</action>
|
|
496
515
|
|
|
497
516
|
<output>
|
|
498
|
-
Bob (Scrum Master): "Alright team, everyone's here. Let me set the stage for our retrospective."
|
|
499
|
-
|
|
500
517
|
═══════════════════════════════════════════════════════════
|
|
501
518
|
🔄 TEAM RETROSPECTIVE - Epic {{epic_number}}: {{epic_title}}
|
|
502
519
|
═══════════════════════════════════════════════════════════
|
|
503
520
|
|
|
504
|
-
Bob (Scrum Master): "Here's what we accomplished together."
|
|
505
|
-
|
|
506
521
|
**EPIC {{epic_number}} SUMMARY:**
|
|
507
522
|
|
|
508
|
-
Delivery
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
- Velocity: {{actual_points}} story points{{#if planned_points}} (planned: {{planned_points}}){{/if}}
|
|
512
|
-
- Duration: {{actual_sprints}} sprints{{#if planned_sprints}} (planned: {{planned_sprints}}){{/if}}
|
|
513
|
-
- Average velocity: {{points_per_sprint}} points/sprint
|
|
514
|
-
|
|
515
|
-
Quality and Technical:
|
|
516
|
-
|
|
517
|
-
- Blockers encountered: {{blocker_count}}
|
|
518
|
-
- Technical debt items: {{debt_count}}
|
|
519
|
-
- Test coverage: {{coverage_info}}
|
|
520
|
-
- Production incidents: {{incident_count}}
|
|
521
|
-
|
|
522
|
-
Business Outcomes:
|
|
523
|
-
|
|
524
|
-
- Goals achieved: {{goals_met}}/{{total_goals}}
|
|
525
|
-
- Success criteria: {{criteria_status}}
|
|
526
|
-
- Stakeholder feedback: {{feedback_summary}}
|
|
527
|
-
|
|
528
|
-
Alice (Product Owner): "Those numbers tell a good story. {{completion_percentage}}% completion is {{#if completion_percentage >= 90}}excellent{{else}}something we should discuss{{/if}}."
|
|
529
|
-
|
|
530
|
-
Charlie (Senior Dev): "I'm more interested in that technical debt number - {{debt_count}} items is {{#if debt_count > 10}}concerning{{else}}manageable{{/if}}."
|
|
531
|
-
|
|
532
|
-
Dana (QA Engineer): "{{incident_count}} production incidents - {{#if incident_count == 0}}clean epic!{{else}}we should talk about those{{/if}}."
|
|
523
|
+
Delivery: {{completed_stories}}/{{total_stories}} stories ({{completion_percentage}}%) · {{actual_points}} pts · {{actual_sprints}} sprints · {{points_per_sprint}} pts/sprint avg
|
|
524
|
+
Quality: {{blocker_count}} blockers · {{debt_count}} tech-debt items · {{coverage_info}} coverage · {{incident_count}} incidents
|
|
525
|
+
Outcomes: {{goals_met}}/{{total_goals}} goals · {{criteria_status}} · {{feedback_summary}}
|
|
533
526
|
|
|
534
527
|
{{#if next_epic_exists}}
|
|
535
|
-
═══════════════════════════════════════════════════════════
|
|
536
528
|
**NEXT EPIC PREVIEW:** Epic {{next_epic_num}}: {{next_epic_title}}
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
{{list_dependencies}}
|
|
541
|
-
|
|
542
|
-
Preparation Needed:
|
|
543
|
-
{{list_preparation_gaps}}
|
|
544
|
-
|
|
545
|
-
Technical Prerequisites:
|
|
546
|
-
{{list_technical_prereqs}}
|
|
547
|
-
|
|
548
|
-
Bob (Scrum Master): "And here's what's coming next. Epic {{next_epic_num}} builds on what we just finished."
|
|
549
|
-
|
|
550
|
-
Elena (Junior Dev): "Wow, that's a lot of dependencies on our work."
|
|
551
|
-
|
|
552
|
-
Charlie (Senior Dev): "Which means we better make sure Epic {{epic_number}} is actually solid before moving on."
|
|
529
|
+
Dependencies: {{list_dependencies}}
|
|
530
|
+
Preparation gaps: {{list_preparation_gaps}}
|
|
531
|
+
Technical prerequisites: {{list_technical_prereqs}}
|
|
553
532
|
{{/if}}
|
|
554
533
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
{{list_participating_agents}}
|
|
560
|
-
|
|
561
|
-
Bob (Scrum Master): "{user_name}, you're joining us as Project Lead. Your perspective is crucial here."
|
|
562
|
-
|
|
563
|
-
{user_name} (Project Lead): [Participating in the retrospective]
|
|
564
|
-
|
|
565
|
-
Bob (Scrum Master): "Our focus today:"
|
|
566
|
-
|
|
567
|
-
1. Learning from Epic {{epic_number}} execution
|
|
568
|
-
{{#if next_epic_exists}}2. Preparing for Epic {{next_epic_num}} success{{/if}}
|
|
569
|
-
|
|
570
|
-
Bob (Scrum Master): "Ground rules: psychological safety first. No blame, no judgment. We focus on systems and processes, not individuals. Everyone's voice matters. Specific examples are better than generalizations."
|
|
571
|
-
|
|
572
|
-
Alice (Product Owner): "And everything shared here stays in this room - unless we decide together to escalate something."
|
|
573
|
-
|
|
574
|
-
Bob (Scrum Master): "Exactly. {user_name}, any questions before we dive in?"
|
|
534
|
+
Participants: {{list_participating_agents}} + {user_name} (Project Lead)
|
|
535
|
+
Focus: (1) Learn from Epic {{epic_number}} · {{#if next_epic_exists}}(2) Prepare Epic {{next_epic_num}}{{/if}}
|
|
536
|
+
Ground rules: No blame — systems focus — psychological safety — specific examples preferred.
|
|
575
537
|
</output>
|
|
576
538
|
|
|
577
539
|
<action>WAIT for {user_name} to respond or indicate readiness</action>
|
|
@@ -874,49 +836,19 @@ Bob (Scrum Master): "I want specific, achievable actions with clear owners. Not
|
|
|
874
836
|
- Time-bound: Has clear deadline
|
|
875
837
|
|
|
876
838
|
<output>
|
|
877
|
-
Bob (Scrum Master): "Based on our discussion, here are the action items I'm proposing..."
|
|
878
|
-
|
|
879
839
|
═══════════════════════════════════════════════════════════
|
|
880
840
|
📝 EPIC {{epic_number}} ACTION ITEMS:
|
|
881
841
|
═══════════════════════════════════════════════════════════
|
|
882
842
|
|
|
883
843
|
**Process Improvements:**
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
Owner: {{agent_1}}
|
|
887
|
-
Deadline: {{timeline_1}}
|
|
888
|
-
Success criteria: {{criteria_1}}
|
|
889
|
-
|
|
890
|
-
2. {{action_item_2}}
|
|
891
|
-
Owner: {{agent_2}}
|
|
892
|
-
Deadline: {{timeline_2}}
|
|
893
|
-
Success criteria: {{criteria_2}}
|
|
894
|
-
|
|
895
|
-
Charlie (Senior Dev): "I can own action item 1, but {{timeline_1}} is tight. Can we push it to {{alternative_timeline}}?"
|
|
896
|
-
|
|
897
|
-
Bob (Scrum Master): "What do others think? Does that timing still work?"
|
|
898
|
-
|
|
899
|
-
Alice (Product Owner): "{{alternative_timeline}} works for me, as long as it's done before Epic {{next_epic_num}} starts."
|
|
900
|
-
|
|
901
|
-
Bob (Scrum Master): "Agreed. Updated to {{alternative_timeline}}."
|
|
844
|
+
1. {{action_item_1}} — Owner: {{agent_1}} · Due: {{timeline_1}} · Success: {{criteria_1}}
|
|
845
|
+
2. {{action_item_2}} — Owner: {{agent_2}} · Due: {{timeline_2}} · Success: {{criteria_2}}
|
|
902
846
|
|
|
903
847
|
**Technical Debt:**
|
|
848
|
+
1. {{debt_item_1}} — Owner: {{agent_3}} · Priority: {{priority_1}} · Effort: {{effort_1}}
|
|
849
|
+
2. {{debt_item_2}} — Owner: {{agent_4}} · Priority: {{priority_2}} · Effort: {{effort_2}}
|
|
904
850
|
|
|
905
|
-
1. {{
|
|
906
|
-
Owner: {{agent_3}}
|
|
907
|
-
Priority: {{priority_1}}
|
|
908
|
-
Estimated effort: {{effort_1}}
|
|
909
|
-
|
|
910
|
-
2. {{debt_item_2}}
|
|
911
|
-
Owner: {{agent_4}}
|
|
912
|
-
Priority: {{priority_2}}
|
|
913
|
-
Estimated effort: {{effort_2}}
|
|
914
|
-
|
|
915
|
-
Dana (QA Engineer): "For debt item 1, can we prioritize that as high? It caused testing issues in three different stories."
|
|
916
|
-
|
|
917
|
-
Charlie (Senior Dev): "I marked it medium because {{reasoning}}, but I hear your point."
|
|
918
|
-
|
|
919
|
-
Bob (Scrum Master): "{user_name}, this is a priority call. Testing impact vs. {{reasoning}} - how do you want to prioritize it?"
|
|
851
|
+
{user_name}, debt item 1 priority is a call you need to make — testing impact vs. {{reasoning}}.
|
|
920
852
|
</output>
|
|
921
853
|
|
|
922
854
|
<action>WAIT for {user_name} to help resolve priority discussions</action>
|
|
@@ -998,59 +930,20 @@ Estimated: {{est_4}}
|
|
|
998
930
|
|
|
999
931
|
<check if="significant discoveries detected">
|
|
1000
932
|
<output>
|
|
933
|
+
🚨 SIGNIFICANT DISCOVERY — Epic {{next_epic_num}} plan needs review
|
|
1001
934
|
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
Bob (Scrum Master): "{user_name}, we need to flag something important."
|
|
1007
|
-
|
|
1008
|
-
Bob (Scrum Master): "During Epic {{epic_number}}, the team uncovered findings that may require updating the plan for Epic {{next_epic_num}}."
|
|
1009
|
-
|
|
1010
|
-
**Significant Changes Identified:**
|
|
935
|
+
Changes identified:
|
|
936
|
+
1. {{significant_change_1}} — Impact: {{impact_description_1}}
|
|
937
|
+
2. {{significant_change_2}} — Impact: {{impact_description_2}}
|
|
938
|
+
{{#if significant_change_3}}3. {{significant_change_3}} — Impact: {{impact_description_3}}{{/if}}
|
|
1011
939
|
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
2. {{significant_change_2}}
|
|
1016
|
-
Impact: {{impact_description_2}}
|
|
1017
|
-
|
|
1018
|
-
{{#if significant_change_3}} 3. {{significant_change_3}}
|
|
1019
|
-
Impact: {{impact_description_3}}
|
|
1020
|
-
{{/if}}
|
|
940
|
+
Epic {{next_epic_num}} currently assumes: {{wrong_assumption_1}} / {{wrong_assumption_2}}
|
|
941
|
+
Epic {{epic_number}} revealed: {{actual_reality_1}} / {{actual_reality_2}}
|
|
942
|
+
Changes needed: {{list_likely_changes_needed}}
|
|
1021
943
|
|
|
1022
|
-
|
|
944
|
+
Recommended: review Epic {{next_epic_num}} definition · update affected stories · hold alignment session{{#if prd_update_needed}} · update PRD{{/if}}
|
|
1023
945
|
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
Dana (QA Engineer): "If we start Epic {{next_epic_num}} as-is, we're going to hit walls fast."
|
|
1027
|
-
|
|
1028
|
-
**Impact on Epic {{next_epic_num}}:**
|
|
1029
|
-
|
|
1030
|
-
The current plan for Epic {{next_epic_num}} assumes:
|
|
1031
|
-
|
|
1032
|
-
- {{wrong_assumption_1}}
|
|
1033
|
-
- {{wrong_assumption_2}}
|
|
1034
|
-
|
|
1035
|
-
But Epic {{epic_number}} revealed:
|
|
1036
|
-
|
|
1037
|
-
- {{actual_reality_1}}
|
|
1038
|
-
- {{actual_reality_2}}
|
|
1039
|
-
|
|
1040
|
-
This means Epic {{next_epic_num}} likely needs:
|
|
1041
|
-
{{list_likely_changes_needed}}
|
|
1042
|
-
|
|
1043
|
-
**RECOMMENDED ACTIONS:**
|
|
1044
|
-
|
|
1045
|
-
1. Review and update Epic {{next_epic_num}} definition based on new learnings
|
|
1046
|
-
2. Update affected stories in Epic {{next_epic_num}} to reflect reality
|
|
1047
|
-
3. Consider updating architecture or technical specifications if applicable
|
|
1048
|
-
4. Hold alignment session with Product Owner before starting Epic {{next_epic_num}}
|
|
1049
|
-
{{#if prd_update_needed}}5. Update PRD sections affected by new understanding{{/if}}
|
|
1050
|
-
|
|
1051
|
-
Bob (Scrum Master): "**Epic Update Required**: YES - Schedule epic planning review session"
|
|
1052
|
-
|
|
1053
|
-
Bob (Scrum Master): "{user_name}, this is significant. We need to address this before committing to Epic {{next_epic_num}}'s current plan. How do you want to handle it?"
|
|
946
|
+
{user_name}: how do you want to handle this before committing to Epic {{next_epic_num}}'s current plan?
|
|
1054
947
|
</output>
|
|
1055
948
|
|
|
1056
949
|
<action>WAIT for {user_name} to decide on how to handle the significant changes</action>
|
|
@@ -1274,61 +1167,27 @@ Charlie (Senior Dev): "Better to catch this now than three stories into the next
|
|
|
1274
1167
|
<step n="10" goal="Retrospective Closure with Celebration and Commitment">
|
|
1275
1168
|
|
|
1276
1169
|
<output>
|
|
1277
|
-
Bob (Scrum Master): "We've covered a lot of ground today. Let me bring this retrospective to a close."
|
|
1278
|
-
|
|
1279
1170
|
═══════════════════════════════════════════════════════════
|
|
1280
|
-
✅ RETROSPECTIVE COMPLETE
|
|
1171
|
+
✅ RETROSPECTIVE COMPLETE — Epic {{epic_number}}: {{epic_title}}
|
|
1281
1172
|
═══════════════════════════════════════════════════════════
|
|
1282
1173
|
|
|
1283
|
-
Bob (Scrum Master): "Epic {{epic_number}}: {{epic_title}} - REVIEWED"
|
|
1284
|
-
|
|
1285
1174
|
**Key Takeaways:**
|
|
1286
|
-
|
|
1287
1175
|
1. {{key_lesson_1}}
|
|
1288
1176
|
2. {{key_lesson_2}}
|
|
1289
1177
|
3. {{key_lesson_3}}
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
Alice (Product Owner): "That first takeaway is huge - {{impact_of_lesson_1}}."
|
|
1293
|
-
|
|
1294
|
-
Charlie (Senior Dev): "And lesson 2 is something we can apply immediately."
|
|
1295
|
-
|
|
1296
|
-
Bob (Scrum Master): "Commitments made today:"
|
|
1297
|
-
|
|
1298
|
-
- Action Items: {{action_count}}
|
|
1299
|
-
- Preparation Tasks: {{prep_task_count}}
|
|
1300
|
-
- Critical Path Items: {{critical_count}}
|
|
1301
|
-
|
|
1302
|
-
Dana (QA Engineer): "That's a lot of commitments. We need to actually follow through this time."
|
|
1178
|
+
{{#if key_lesson_4}}4. {{key_lesson_4}}{{/if}}
|
|
1303
1179
|
|
|
1304
|
-
|
|
1180
|
+
Commitments: {{action_count}} action items · {{prep_task_count}} prep tasks · {{critical_count}} critical path items
|
|
1305
1181
|
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
1. Execute Preparation Sprint (Est: {{prep_days}} days)
|
|
1311
|
-
2. Complete Critical Path items before Epic {{next_epic_num}}
|
|
1182
|
+
**Next Steps:**
|
|
1183
|
+
1. Execute Preparation Sprint ({{prep_days}} days)
|
|
1184
|
+
2. Complete critical path items before Epic {{next_epic_num}}
|
|
1312
1185
|
3. Review action items in next standup
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
Elena (Junior Dev): "{{prep_days}} days of prep work is significant, but necessary."
|
|
1186
|
+
{{#if epic_update_needed}}4. Hold Epic {{next_epic_num}} planning review{{else}}4. Begin Epic {{next_epic_num}} planning when prep complete{{/if}}
|
|
1316
1187
|
|
|
1317
|
-
|
|
1188
|
+
Epic {{epic_number}} delivered {{completed_stories}} stories with {{velocity_description}} velocity across {{blocker_count}} blockers.
|
|
1318
1189
|
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
Bob (Scrum Master): "Before we wrap, I want to take a moment to acknowledge the team."
|
|
1322
|
-
|
|
1323
|
-
Bob (Scrum Master): "Epic {{epic_number}} delivered {{completed_stories}} stories with {{velocity_description}} velocity. We overcame {{blocker_count}} blockers. We learned a lot. That's real work by real people."
|
|
1324
|
-
|
|
1325
|
-
Charlie (Senior Dev): "Hear, hear."
|
|
1326
|
-
|
|
1327
|
-
Alice (Product Owner): "I'm proud of what we shipped."
|
|
1328
|
-
|
|
1329
|
-
Dana (QA Engineer): "And I'm excited about Epic {{next_epic_num}} - especially now that we're prepared for it."
|
|
1330
|
-
|
|
1331
|
-
Bob (Scrum Master): "{user_name}, any final thoughts before we close?"
|
|
1190
|
+
{user_name}, any final thoughts before we close?
|
|
1332
1191
|
</output>
|
|
1333
1192
|
|
|
1334
1193
|
<action>WAIT for {user_name} to share final reflections</action>
|
|
@@ -1409,61 +1268,17 @@ Retrospective document was saved successfully, but {sprint_status_file} may need
|
|
|
1409
1268
|
<output>
|
|
1410
1269
|
**✅ Retrospective Complete, {user_name}!**
|
|
1411
1270
|
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
- Epic {{epic_number}}: {{epic_title}} reviewed
|
|
1415
|
-
- Retrospective Status: completed
|
|
1416
|
-
- Retrospective saved: {implementation_artifacts}/epic-{{epic_number}}-retro-{date}.md
|
|
1417
|
-
|
|
1418
|
-
**Commitments Made:**
|
|
1419
|
-
|
|
1420
|
-
- Action Items: {{action_count}}
|
|
1421
|
-
- Preparation Tasks: {{prep_task_count}}
|
|
1422
|
-
- Critical Path Items: {{critical_count}}
|
|
1271
|
+
Epic {{epic_number}}: {{epic_title}} — retrospective saved: `{implementation_artifacts}/epic-{{epic_number}}-retro-{date}.md`
|
|
1272
|
+
Commitments: {{action_count}} action items · {{prep_task_count}} prep tasks · {{critical_count}} critical path items
|
|
1423
1273
|
|
|
1424
1274
|
**Next Steps:**
|
|
1275
|
+
1. Review `{implementation_artifacts}/epic-{{epic_number}}-retro-{date}.md`
|
|
1276
|
+
2. Execute preparation sprint (~{{prep_days}} days) — {{critical_count}} critical items + {{prep_task_count}} prep tasks
|
|
1277
|
+
3. Review action items in next standup
|
|
1278
|
+
{{#if epic_update_needed}}4. ⚠️ SCHEDULE Epic {{next_epic_num}} planning review — do NOT start until complete{{else}}4. Begin Epic {{next_epic_num}} when prep complete{{/if}}
|
|
1425
1279
|
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
2. **Execute preparation sprint** (Est: {{prep_days}} days)
|
|
1429
|
-
- Complete {{critical_count}} critical path items
|
|
1430
|
-
- Execute {{prep_task_count}} preparation tasks
|
|
1431
|
-
- Verify all action items are in progress
|
|
1432
|
-
|
|
1433
|
-
3. **Review action items in next standup**
|
|
1434
|
-
- Ensure ownership is clear
|
|
1435
|
-
- Track progress on commitments
|
|
1436
|
-
- Adjust timelines if needed
|
|
1437
|
-
|
|
1438
|
-
{{#if epic_update_needed}} 4. **IMPORTANT: Schedule Epic {{next_epic_num}} planning review session**
|
|
1439
|
-
|
|
1440
|
-
- Significant discoveries from Epic {{epic_number}} require epic updates
|
|
1441
|
-
- Review and update affected stories
|
|
1442
|
-
- Align team on revised approach
|
|
1443
|
-
- Do NOT start Epic {{next_epic_num}} until review is complete
|
|
1444
|
-
{{else}}
|
|
1445
|
-
|
|
1446
|
-
4. **Begin Epic {{next_epic_num}} when ready**
|
|
1447
|
-
- Start creating stories with SM agent's `create-story`
|
|
1448
|
-
- Epic will be marked as `in-progress` automatically when first story is created
|
|
1449
|
-
- Ensure all critical path items are done first
|
|
1450
|
-
{{/if}}
|
|
1451
|
-
|
|
1452
|
-
**Team Performance:**
|
|
1453
|
-
Epic {{epic_number}} delivered {{completed_stories}} stories with {{velocity_summary}}. The retrospective surfaced {{insight_count}} key insights and {{significant_discovery_count}} significant discoveries. The team is well-positioned for Epic {{next_epic_num}} success.
|
|
1454
|
-
|
|
1455
|
-
{{#if significant_discovery_count > 0}}
|
|
1456
|
-
⚠️ **REMINDER**: Epic update required before starting Epic {{next_epic_num}}
|
|
1457
|
-
{{/if}}
|
|
1458
|
-
|
|
1459
|
-
---
|
|
1460
|
-
|
|
1461
|
-
Bob (Scrum Master): "Great session today, {user_name}. The team did excellent work."
|
|
1462
|
-
|
|
1463
|
-
Alice (Product Owner): "See you at epic planning!"
|
|
1464
|
-
|
|
1465
|
-
Charlie (Senior Dev): "Time to knock out that prep work."
|
|
1466
|
-
|
|
1280
|
+
Epic {{epic_number}}: {{completed_stories}} stories · {{velocity_summary}} · {{insight_count}} insights · {{significant_discovery_count}} discoveries
|
|
1281
|
+
{{#if significant_discovery_count > 0}}⚠️ Epic update required before starting Epic {{next_epic_num}}{{/if}}
|
|
1467
1282
|
</output>
|
|
1468
1283
|
|
|
1469
1284
|
</step>
|