@hanzlaa/rcode 4.1.0 → 4.1.1
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/cli/index.js +16 -0
- package/cli/install.js +1 -0
- package/cli/workflow.js +97 -0
- package/dist/rcode.js +179 -161
- package/package.json +1 -1
- package/rcode/bin/lib/config.cjs +3 -2
- package/rcode/bin/rcode-tools.cjs +8 -3
- 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-herdr-orchestration/SKILL.md +5 -1
- package/rcode/skills/actions/4-implementation/rcode-retrospective/workflow.md +61 -246
- 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 +3 -15
- package/rcode/workflows/execute-sprint.md +3 -1
- package/rcode/workflows/retrospective.md +5 -1
- package/rcode/workflows/sprint-planning.md +9 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hanzlaa/rcode",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.1",
|
|
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 = {
|
|
@@ -3170,7 +3170,9 @@ function cmdState(subArgs) {
|
|
|
3170
3170
|
}
|
|
3171
3171
|
}
|
|
3172
3172
|
|
|
3173
|
-
// Walk
|
|
3173
|
+
// Walk phase sprint artifacts into state.sprints[] (issue #135).
|
|
3174
|
+
// Support both legacy `sprint-1.md` and workflow-generated
|
|
3175
|
+
// `01-01-SPRINT.md` / `1-1-SPRINT.md` names.
|
|
3174
3176
|
const phasesDir = path.join(PLANNING_DIR, 'phases');
|
|
3175
3177
|
const rcodePhasesDir = path.join(RCODE_DIR, 'phases');
|
|
3176
3178
|
const sprintRoot = fs.existsSync(phasesDir) ? phasesDir : (fs.existsSync(rcodePhasesDir) ? rcodePhasesDir : null);
|
|
@@ -3182,9 +3184,11 @@ function cmdState(subArgs) {
|
|
|
3182
3184
|
const phaseNumMatch = phaseEntry.match(/^(\d+(?:\.\d+)?)/);
|
|
3183
3185
|
const phaseNum = phaseNumMatch ? phaseNumMatch[1] : phaseEntry;
|
|
3184
3186
|
for (const file of fs.readdirSync(phaseDir)) {
|
|
3185
|
-
const sprintMatch =
|
|
3187
|
+
const sprintMatch =
|
|
3188
|
+
file.match(/^sprint-(\d+)\.md$/i) ||
|
|
3189
|
+
file.match(/^(?:\d+(?:\.\d+)?[-_.])?(\d+)[-_.].*SPRINT\.md$/i);
|
|
3186
3190
|
if (!sprintMatch) continue;
|
|
3187
|
-
const sprintNum = sprintMatch[1];
|
|
3191
|
+
const sprintNum = String(parseInt(sprintMatch[1], 10));
|
|
3188
3192
|
const sprintKey = `${phaseNum}/${sprintNum}`;
|
|
3189
3193
|
parsed.sprints_found += 1;
|
|
3190
3194
|
const sprintPath = path.join(phaseDir, file);
|
|
@@ -6795,6 +6799,7 @@ function cmdGitignore(args) {
|
|
|
6795
6799
|
'.rcode/brain/best-practices/',
|
|
6796
6800
|
'',
|
|
6797
6801
|
'# Runtime noise',
|
|
6802
|
+
'node_modules/',
|
|
6798
6803
|
'.rcode/state.json.lock',
|
|
6799
6804
|
'.planning/debug/',
|
|
6800
6805
|
'.planning/_backup/',
|
|
@@ -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
|
|
|
@@ -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>
|
package/rcode/workflows/audit.md
CHANGED
|
@@ -18,6 +18,7 @@ If `$ARGUMENTS` contains `--help` or `-h`:
|
|
|
18
18
|
|
|
19
19
|
```
|
|
20
20
|
/rcode-audit # interactive — asks what to audit
|
|
21
|
+
/rcode-audit --auto # non-interactive — auto-picks best target from project state
|
|
21
22
|
/rcode-audit plans [--report] # → audit-plans (structural + status + deps check)
|
|
22
23
|
/rcode-audit phase [<NN>] # → /rcode-verify-phase
|
|
23
24
|
/rcode-audit milestone [--strict] # → /rcode-audit-milestone (with synth fallback)
|
|
@@ -49,6 +50,8 @@ DISCUSS=$($TOOL config-get workflow.discuss_mode 2>/dev/null || echo "adaptive")
|
|
|
49
50
|
```
|
|
50
51
|
|
|
51
52
|
Parse `$ARGUMENTS`:
|
|
53
|
+
- If `--auto` flag is present: strip it from args and force `MODE=yolo` for this invocation
|
|
54
|
+
(allows non-interactive runs without permanently changing the project config).
|
|
52
55
|
- First word ∈ {plans, phase, milestone, uat, code, fix, work, lens, worktrees} → set `$TARGET`, drop it from args, jump to Step 4.
|
|
53
56
|
- Empty or unrecognised → continue to Step 2.
|
|
54
57
|
|
|
@@ -40,7 +40,7 @@ AskUserQuestion(
|
|
|
40
40
|
|
|
41
41
|
## Step 2 — Load brainstorming methods
|
|
42
42
|
|
|
43
|
-
Read
|
|
43
|
+
Read `.rcode/references/brain-methods.csv` and parse it.
|
|
44
44
|
|
|
45
45
|
If `--method` was specified:
|
|
46
46
|
- Validate the method exists in the CSV
|
|
@@ -29,9 +29,10 @@ Closure: `rcode ► COUNCIL COMPLETE ✓` + Next Up with decision options.
|
|
|
29
29
|
|
|
30
30
|
<required_reading>
|
|
31
31
|
@.rcode/references/auto-init-guard.md
|
|
32
|
-
@.rcode/references/output-format.md
|
|
33
32
|
@.rcode/references/council-protocol.md
|
|
34
33
|
</required_reading>
|
|
34
|
+
<!-- output-format.md removed: council is self-contained via <output_format> above.
|
|
35
|
+
General banner/todo/spawn patterns are defined inline — no 398-line load needed. -->
|
|
35
36
|
|
|
36
37
|
<process>
|
|
37
38
|
## Step 0 — Usage check
|
|
@@ -101,6 +102,12 @@ list from INIT_JSON so new agents added to team.yaml are automatically available
|
|
|
101
102
|
Do not invoke `general-purpose` or any agent type not present in
|
|
102
103
|
`installed_agents`. If the scorer surfaces an unknown agent, drop it
|
|
103
104
|
from the panel silently.
|
|
105
|
+
|
|
106
|
+
**Post-install agent namespace fallback:** If a `Task(subagent_type="rcode-{id}")` call
|
|
107
|
+
fails with "Agent type not found", the runtime has not yet registered the new agent files
|
|
108
|
+
(requires IDE/window reload). In that case retry with `subagent_type="rihal-{id}"` — the
|
|
109
|
+
`rihal-*` agents are content-identical to `rcode-*` (pre-rebrand names). If neither works,
|
|
110
|
+
skip that panelist and log `[council] agent rcode-{id} not available — reload IDE to register`.
|
|
104
111
|
</available_agent_types>
|
|
105
112
|
|
|
106
113
|
## Step 1 — Observe
|
|
@@ -9,7 +9,11 @@ Write an Architecture Decision Record (ADR) or system design document. Delegates
|
|
|
9
9
|
Locate and follow the installed skill:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
|
|
12
|
+
if [ -f .rcode/skills/rcode-create-architecture/workflow.md ]; then
|
|
13
|
+
printf '%s\n' ".rcode/skills/rcode-create-architecture/workflow.md"
|
|
14
|
+
else
|
|
15
|
+
find .rcode/skills/actions -path "*rcode-create-architecture/workflow.md" 2>/dev/null | head -1
|
|
16
|
+
fi
|
|
13
17
|
```
|
|
14
18
|
|
|
15
19
|
Read and follow the workflow at that path. If the path is empty:
|
|
@@ -9,7 +9,11 @@ Create a Product Requirements Document from scratch through guided facilitation.
|
|
|
9
9
|
Locate and follow the installed skill:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
|
|
12
|
+
if [ -f .rcode/skills/rcode-create-prd/workflow.md ]; then
|
|
13
|
+
printf '%s\n' ".rcode/skills/rcode-create-prd/workflow.md"
|
|
14
|
+
else
|
|
15
|
+
find .rcode/skills/actions -path "*rcode-create-prd/workflow.md" 2>/dev/null | head -1
|
|
16
|
+
fi
|
|
13
17
|
```
|
|
14
18
|
|
|
15
19
|
Read and follow the workflow at that path. If the path is empty:
|
|
@@ -33,8 +33,11 @@ if [ -f ./server/dashboard.js ]; then
|
|
|
33
33
|
# 2. Installed package copy inside project
|
|
34
34
|
elif [ -f ./.rcode/lib/server/dashboard.js ]; then
|
|
35
35
|
DASHBOARD="./.rcode/lib/server/dashboard.js"
|
|
36
|
+
# 3. Local npm dependency install
|
|
37
|
+
elif [ -f ./node_modules/@hanzlaa/rcode/server/dashboard.js ]; then
|
|
38
|
+
DASHBOARD="./node_modules/@hanzlaa/rcode/server/dashboard.js"
|
|
36
39
|
else
|
|
37
|
-
#
|
|
40
|
+
# 4. Global installs — check npm, pnpm, and yarn roots
|
|
38
41
|
for ROOT in "$(npm root -g 2>/dev/null)" "$(pnpm root -g 2>/dev/null)" "$(yarn global dir 2>/dev/null)/node_modules"; do
|
|
39
42
|
[ -z "$ROOT" ] && continue
|
|
40
43
|
if [ -f "$ROOT/@hanzlaa/rcode/server/dashboard.js" ]; then
|
|
@@ -42,7 +45,7 @@ else
|
|
|
42
45
|
break
|
|
43
46
|
fi
|
|
44
47
|
done
|
|
45
|
-
#
|
|
48
|
+
# 5. Last resort — resolve via the rcode/rcode binary symlink
|
|
46
49
|
if [ -z "$DASHBOARD" ]; then
|
|
47
50
|
for BIN in rcode; do
|
|
48
51
|
BIN_PATH="$(command -v $BIN 2>/dev/null)" || continue
|
|
@@ -39,21 +39,9 @@ Only include domain-probes.md when `HAS_PRODUCT_SIGNALS` is 0.
|
|
|
39
39
|
</downstream_awareness>
|
|
40
40
|
|
|
41
41
|
<philosophy>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
- How they imagine it working
|
|
46
|
-
- What it should look/feel like
|
|
47
|
-
- What's essential vs nice-to-have
|
|
48
|
-
- Specific behaviors or references they have in mind
|
|
49
|
-
|
|
50
|
-
The user doesn't know (and shouldn't be asked):
|
|
51
|
-
- Codebase patterns (researcher reads the code)
|
|
52
|
-
- Technical risks (researcher identifies these)
|
|
53
|
-
- Implementation approach (planner figures this out)
|
|
54
|
-
- Success metrics (inferred from the work)
|
|
55
|
-
|
|
56
|
-
Ask about vision and implementation choices. Capture decisions for downstream agents.
|
|
42
|
+
User = visionary (knows what, not how). Claude = builder (asks about choices, not implementation).
|
|
43
|
+
Ask about vision and decisions. Capture for downstream agents. Never ask about codebase patterns,
|
|
44
|
+
technical risks, or architecture — those are research/planner territory.
|
|
57
45
|
</philosophy>
|
|
58
46
|
|
|
59
47
|
<scope_guardrail>
|