maestro-flow 0.4.12 → 0.4.14
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/agents/role-design-author.md +6 -4
- package/.agents/skills/learn-decompose/SKILL.md +6 -6
- package/.agents/skills/learn-follow/SKILL.md +4 -4
- package/.agents/skills/learn-investigate/SKILL.md +6 -6
- package/.agents/skills/learn-retro/SKILL.md +7 -7
- package/.agents/skills/learn-second-opinion/SKILL.md +4 -4
- package/.agents/skills/maestro-amend/SKILL.md +1 -0
- package/.agents/skills/maestro-analyze/SKILL.md +10 -3
- package/.agents/skills/maestro-blueprint/SKILL.md +4 -3
- package/.agents/skills/maestro-brainstorm/SKILL.md +6 -5
- package/.agents/skills/maestro-fork/SKILL.md +1 -1
- package/.agents/skills/maestro-guard/SKILL.md +3 -2
- package/.agents/skills/maestro-impeccable/SKILL.md +13 -11
- package/.agents/skills/maestro-milestone-release/SKILL.md +1 -1
- package/.agents/skills/maestro-plan/SKILL.md +3 -1
- package/.agents/skills/maestro-ralph/SKILL.md +21 -16
- package/.agents/skills/maestro-ralph-execute/SKILL.md +30 -11
- package/.agents/skills/maestro-roadmap/SKILL.md +4 -3
- package/.agents/skills/maestro-verify/SKILL.md +1 -1
- package/.agents/skills/manage-harvest/SKILL.md +1 -0
- package/.agents/skills/manage-issue-discover/SKILL.md +1 -1
- package/.agents/skills/manage-knowhow/SKILL.md +1 -1
- package/.agents/skills/manage-learn/SKILL.md +4 -4
- package/.agents/skills/quality-auto-test/SKILL.md +5 -5
- package/.agents/skills/quality-refactor/SKILL.md +1 -1
- package/.agents/skills/quality-retrospective/SKILL.md +2 -2
- package/.agents/skills/security-audit/SKILL.md +24 -0
- package/.agents/skills/spec-remove/SKILL.md +6 -2
- package/.agy/agents/role-design-author.md +6 -4
- package/.agy/skills/learn-decompose/SKILL.md +6 -6
- package/.agy/skills/learn-follow/SKILL.md +4 -4
- package/.agy/skills/learn-investigate/SKILL.md +6 -6
- package/.agy/skills/learn-retro/SKILL.md +7 -7
- package/.agy/skills/learn-second-opinion/SKILL.md +4 -4
- package/.agy/skills/maestro-amend/SKILL.md +1 -0
- package/.agy/skills/maestro-analyze/SKILL.md +10 -3
- package/.agy/skills/maestro-blueprint/SKILL.md +4 -3
- package/.agy/skills/maestro-brainstorm/SKILL.md +6 -5
- package/.agy/skills/maestro-fork/SKILL.md +1 -1
- package/.agy/skills/maestro-guard/SKILL.md +3 -2
- package/.agy/skills/maestro-impeccable/SKILL.md +13 -11
- package/.agy/skills/maestro-milestone-release/SKILL.md +1 -1
- package/.agy/skills/maestro-plan/SKILL.md +3 -1
- package/.agy/skills/maestro-ralph/SKILL.md +21 -16
- package/.agy/skills/maestro-ralph-execute/SKILL.md +30 -11
- package/.agy/skills/maestro-roadmap/SKILL.md +4 -3
- package/.agy/skills/maestro-verify/SKILL.md +1 -1
- package/.agy/skills/manage-harvest/SKILL.md +1 -0
- package/.agy/skills/manage-issue-discover/SKILL.md +1 -1
- package/.agy/skills/manage-knowhow/SKILL.md +1 -1
- package/.agy/skills/manage-learn/SKILL.md +4 -4
- package/.agy/skills/quality-auto-test/SKILL.md +5 -5
- package/.agy/skills/quality-refactor/SKILL.md +1 -1
- package/.agy/skills/quality-retrospective/SKILL.md +2 -2
- package/.agy/skills/security-audit/SKILL.md +24 -0
- package/.agy/skills/spec-remove/SKILL.md +6 -2
- package/.claude/agents/role-design-author.md +6 -4
- package/.claude/commands/learn-decompose.md +6 -6
- package/.claude/commands/learn-follow.md +4 -4
- package/.claude/commands/learn-investigate.md +6 -6
- package/.claude/commands/learn-retro.md +7 -7
- package/.claude/commands/learn-second-opinion.md +4 -4
- package/.claude/commands/maestro-amend.md +1 -0
- package/.claude/commands/maestro-analyze.md +10 -3
- package/.claude/commands/maestro-blueprint.md +4 -3
- package/.claude/commands/maestro-brainstorm.md +6 -5
- package/.claude/commands/maestro-fork.md +1 -1
- package/.claude/commands/maestro-guard.md +3 -2
- package/.claude/commands/maestro-impeccable.md +13 -11
- package/.claude/commands/maestro-milestone-release.md +1 -1
- package/.claude/commands/maestro-plan.md +3 -1
- package/.claude/commands/maestro-ralph-execute.md +30 -11
- package/.claude/commands/maestro-ralph.md +21 -16
- package/.claude/commands/maestro-roadmap.md +4 -3
- package/.claude/commands/maestro-verify.md +1 -1
- package/.claude/commands/manage-harvest.md +1 -0
- package/.claude/commands/manage-issue-discover.md +1 -1
- package/.claude/commands/manage-knowhow.md +1 -1
- package/.claude/commands/manage-learn.md +4 -4
- package/.claude/commands/quality-auto-test.md +5 -5
- package/.claude/commands/quality-refactor.md +1 -1
- package/.claude/commands/quality-retrospective.md +2 -2
- package/.claude/commands/security-audit.md +24 -0
- package/.claude/commands/spec-remove.md +6 -2
- package/.codex/skills/learn-decompose/SKILL.md +4 -4
- package/.codex/skills/learn-follow/SKILL.md +3 -3
- package/.codex/skills/learn-investigate/SKILL.md +3 -3
- package/.codex/skills/learn-retro/SKILL.md +3 -3
- package/.codex/skills/learn-second-opinion/SKILL.md +3 -3
- package/.codex/skills/maestro-analyze/SKILL.md +4 -3
- package/.codex/skills/maestro-blueprint/SKILL.md +4 -3
- package/.codex/skills/maestro-brainstorm/SKILL.md +148 -7
- package/.codex/skills/maestro-fork/SKILL.md +2 -0
- package/.codex/skills/maestro-guard/SKILL.md +3 -2
- package/.codex/skills/maestro-impeccable/SKILL.md +13 -11
- package/.codex/skills/maestro-ralph/SKILL.md +1 -1
- package/.codex/skills/maestro-roadmap/SKILL.md +4 -3
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +9 -5
- package/.codex/skills/manage-harvest/SKILL.md +1 -1
- package/.codex/skills/manage-issue-discover/SKILL.md +1 -1
- package/.codex/skills/manage-knowhow/SKILL.md +1 -1
- package/.codex/skills/manage-learn/SKILL.md +3 -3
- package/.codex/skills/quality-refactor/SKILL.md +2 -2
- package/.codex/skills/quality-retrospective/SKILL.md +3 -3
- package/.codex/skills/security-audit/SKILL.md +24 -0
- package/.codex/skills/spec-remove/SKILL.md +8 -2
- package/package.json +1 -1
- package/workflows/agy-instructions.md +2 -0
- package/workflows/analyze.md +6 -6
- package/workflows/auto-test.md +6 -1
- package/workflows/brainstorm.md +26 -12
- package/workflows/claude-instructions.md +2 -0
- package/workflows/codex-instructions.md +16 -83
- package/workflows/debug.md +5 -5
- package/workflows/harvest.md +2 -2
- package/workflows/impeccable.md +2 -0
- package/workflows/init.md +1 -1
- package/workflows/issue-analyze.md +14 -100
- package/workflows/issue-discover.md +2 -3
- package/workflows/issue-execute.md +1 -1
- package/workflows/issue-gaps-analyze.md +2 -0
- package/workflows/learn.md +1 -1
- package/workflows/maestro-chain-execute.md +10 -228
- package/workflows/maestro.md +1 -0
- package/workflows/milestone-complete.md +3 -3
- package/workflows/milestone-release.md +82 -0
- package/workflows/plan.md +5 -5
- package/workflows/quick.md +4 -4
- package/workflows/refactor.md +3 -3
- package/workflows/retrospective.md +4 -4
- package/workflows/roadmap.md +1 -1
- package/workflows/spec-generate.md +2 -0
- package/workflows/specs-add.md +6 -1
- package/workflows/specs-load.md +6 -1
- package/workflows/specs-setup.md +6 -1
- package/workflows/sync.md +13 -0
- package/workflows/tools-spec.md +4 -0
- package/workflows/ui-design.md +4 -4
- package/workflows/ui-style.md +1 -1
- package/workflows/verify.md +1 -1
- package/workflows/wiki-manage.md +2 -0
|
@@ -12,7 +12,7 @@ allowed-tools:
|
|
|
12
12
|
- AskUserQuestion
|
|
13
13
|
---
|
|
14
14
|
<purpose>
|
|
15
|
-
Guided reading: walk through content section-by-section using forcing questions to extract patterns, identify assumptions, and build an understanding map. Findings persist to
|
|
15
|
+
Guided reading: walk through content section-by-section using forcing questions to extract patterns, identify assumptions, and build an understanding map. Findings persist to `.workflow/specs/learnings.md` as `<spec-entry>` blocks.
|
|
16
16
|
</purpose>
|
|
17
17
|
|
|
18
18
|
<context>
|
|
@@ -30,8 +30,8 @@ $ARGUMENTS — target and optional flags.
|
|
|
30
30
|
- `--depth deep`: every function, every branch, every assumption
|
|
31
31
|
- `--save-wiki`: create wiki note entry with reading notes
|
|
32
32
|
|
|
33
|
-
**Storage read**: target file + wiki forward/backlinks + `coding-conventions.md` +
|
|
34
|
-
**Storage write**: `.workflow/knowhow/KNW-follow-{slug}-{date}.md` + append
|
|
33
|
+
**Storage read**: target file + wiki forward/backlinks + `coding-conventions.md` + `.workflow/specs/learnings.md` (dedup)
|
|
34
|
+
**Storage write**: `.workflow/knowhow/KNW-follow-{slug}-{date}.md` + append `.workflow/specs/learnings.md`
|
|
35
35
|
</context>
|
|
36
36
|
|
|
37
37
|
<state_machine>
|
|
@@ -64,7 +64,7 @@ S_EXTRACT:
|
|
|
64
64
|
→ S_PERSIST DO: A_EXTRACT_PATTERNS
|
|
65
65
|
|
|
66
66
|
S_PERSIST:
|
|
67
|
-
→ END DO: write KNW-follow + append specs/learnings.md [+ wiki note if --save-wiki]
|
|
67
|
+
→ END DO: write KNW-follow + append .workflow/specs/learnings.md [+ wiki note if --save-wiki]
|
|
68
68
|
|
|
69
69
|
</transitions>
|
|
70
70
|
|
|
@@ -28,9 +28,9 @@ $ARGUMENTS — question text and optional flags.
|
|
|
28
28
|
- `.workflow/knowhow/KNW-investigate-{slug}/evidence.ndjson` — structured evidence (one JSON line per item)
|
|
29
29
|
- `.workflow/knowhow/KNW-investigate-{slug}/understanding.md` — evolving understanding
|
|
30
30
|
- `.workflow/knowhow/KNW-investigate-{slug}/report.md` — final report
|
|
31
|
-
-
|
|
31
|
+
- `.workflow/specs/learnings.md` — appended `<spec-entry>` blocks
|
|
32
32
|
|
|
33
|
-
**Storage read**: source files in scope + `maestro wiki search` +
|
|
33
|
+
**Storage read**: source files in scope + `maestro wiki search` + `.workflow/specs/learnings.md` + `debug-notes.md` + `codebase/architecture.md`
|
|
34
34
|
</context>
|
|
35
35
|
|
|
36
36
|
<state_machine>
|
|
@@ -43,7 +43,7 @@ S_HYPOTHESIZE — 生成假设列表 PERSIST:
|
|
|
43
43
|
S_CLI_EXPLORE — CLI 辅助探索(可选) PERSIST: evidence.ndjson (append)
|
|
44
44
|
S_TEST — 逐假设测试 PERSIST: evidence.ndjson + understanding.md
|
|
45
45
|
S_ESCALATE — 3-strike 升级 PERSIST: —
|
|
46
|
-
S_REPORT — 综合报告 + persist PERSIST: report.md + specs/learnings.md
|
|
46
|
+
S_REPORT — 综合报告 + persist PERSIST: report.md + .workflow/specs/learnings.md
|
|
47
47
|
</states>
|
|
48
48
|
|
|
49
49
|
<transitions>
|
|
@@ -55,7 +55,7 @@ S_EVIDENCE:
|
|
|
55
55
|
→ S_PATTERN DO: A_COLLECT_EVIDENCE
|
|
56
56
|
|
|
57
57
|
S_PATTERN:
|
|
58
|
-
→ S_HYPOTHESIZE DO: match evidence against debug-notes.md + specs/learnings.md patterns
|
|
58
|
+
→ S_HYPOTHESIZE DO: match evidence against debug-notes.md + .workflow/specs/learnings.md patterns
|
|
59
59
|
|
|
60
60
|
S_HYPOTHESIZE:
|
|
61
61
|
→ S_CLI_EXPLORE WHEN: CLI tools enabled AND hypotheses non-trivial DO: A_FORM_HYPOTHESES
|
|
@@ -83,7 +83,7 @@ S_REPORT:
|
|
|
83
83
|
### A_FRAME_QUESTION
|
|
84
84
|
|
|
85
85
|
1. Parse question, generate slug, create KNW-investigate-{slug}/
|
|
86
|
-
2. Search prior knowledge: `maestro wiki search "<question>"` + search specs/learnings.md + read debug-notes.md
|
|
86
|
+
2. Search prior knowledge: `maestro wiki search "<question>"` + search .workflow/specs/learnings.md + read debug-notes.md
|
|
87
87
|
3. Write initial understanding.md (question, prior knowledge summary, scope, timestamp)
|
|
88
88
|
|
|
89
89
|
### A_COLLECT_EVIDENCE
|
|
@@ -124,7 +124,7 @@ For each hypothesis (rank order):
|
|
|
124
124
|
### A_SYNTHESIZE_REPORT
|
|
125
125
|
|
|
126
126
|
Write report.md: Answer (or INCONCLUSIVE), Evidence Trail table, Hypotheses Tested table, Key Learnings, Open Questions.
|
|
127
|
-
Append to specs/learnings.md: confirmed → roles="implement", disproved → roles="analyze" (gotcha).
|
|
127
|
+
Append to .workflow/specs/learnings.md: confirmed → roles="implement", disproved → roles="analyze" (gotcha).
|
|
128
128
|
|
|
129
129
|
</actions>
|
|
130
130
|
|
|
@@ -14,7 +14,7 @@ allowed-tools:
|
|
|
14
14
|
<purpose>
|
|
15
15
|
Unified retrospective combining git activity analysis and decision quality evaluation. Works on raw git history and wiki/spec data. Two lenses (git, decision), usable independently or together.
|
|
16
16
|
|
|
17
|
-
All insights persist to
|
|
17
|
+
All insights persist to `.workflow/specs/learnings.md` as `<spec-entry>` blocks.
|
|
18
18
|
</purpose>
|
|
19
19
|
|
|
20
20
|
<context>
|
|
@@ -28,9 +28,9 @@ $ARGUMENTS — lens selection and scope flags.
|
|
|
28
28
|
**Storage write**:
|
|
29
29
|
- `.workflow/knowhow/KNW-retro-{date}.md` — unified report
|
|
30
30
|
- `.workflow/knowhow/KNW-retro-{date}.json` — structured metrics
|
|
31
|
-
-
|
|
31
|
+
- `.workflow/specs/learnings.md` — appended `<spec-entry>` blocks (source: retro-git / retro-decision)
|
|
32
32
|
|
|
33
|
-
**Storage read**: git history, `.workflow/state.json`, prior `KNW-retro-*.json`,
|
|
33
|
+
**Storage read**: git history, `.workflow/state.json`, prior `KNW-retro-*.json`, `.workflow/specs/learnings.md`, wiki specs, `architecture-constraints.md`, phase context files
|
|
34
34
|
</context>
|
|
35
35
|
|
|
36
36
|
<state_machine>
|
|
@@ -40,7 +40,7 @@ S_PARSE — 解析 lens + flags PERSIST: —
|
|
|
40
40
|
S_GIT — git 活动分析(lens=git/all 时) PERSIST: metrics
|
|
41
41
|
S_DECISION — 决策质量评估(lens=decision/all 时) PERSIST: evaluations
|
|
42
42
|
S_REPORT — 生成统一报告 PERSIST: .md + .json
|
|
43
|
-
S_PERSIST — 写 spec-entry 块 PERSIST: specs/learnings.md
|
|
43
|
+
S_PERSIST — 写 spec-entry 块 PERSIST: .workflow/specs/learnings.md
|
|
44
44
|
</states>
|
|
45
45
|
|
|
46
46
|
<transitions>
|
|
@@ -60,7 +60,7 @@ S_REPORT:
|
|
|
60
60
|
→ S_PERSIST DO: write KNW-retro-{date}.md + .json
|
|
61
61
|
|
|
62
62
|
S_PERSIST:
|
|
63
|
-
→ END DO: append insights to specs/learnings.md via `maestro spec add learning`
|
|
63
|
+
→ END DO: append insights to .workflow/specs/learnings.md via `maestro spec add learning`
|
|
64
64
|
RULE: INS-id = hash(lens + metric_or_decision_id + date) for cross-session stability
|
|
65
65
|
|
|
66
66
|
</transitions>
|
|
@@ -102,7 +102,7 @@ maestro wiki search "decision" --json
|
|
|
102
102
|
maestro wiki list --type spec --json
|
|
103
103
|
git log --oneline --all --grep="decision\|chose\|decided" -20
|
|
104
104
|
```
|
|
105
|
-
Plus: architecture-constraints.md, phase context Locked/Deferred sections, specs/learnings.md.
|
|
105
|
+
Plus: architecture-constraints.md, phase context Locked/Deferred sections, .workflow/specs/learnings.md.
|
|
106
106
|
Apply --phase/--tag/--id filters.
|
|
107
107
|
|
|
108
108
|
**Build registry** per decision: id, title, source, date, rationale, alternatives, phase, implementation_evidence [file paths].
|
|
@@ -146,7 +146,7 @@ Apply --phase/--tag/--id filters.
|
|
|
146
146
|
- [ ] Git lens: metrics computed (commits, LOC, test ratio, churn, sessions), insights distilled
|
|
147
147
|
- [ ] Decision lens: decisions collected, 3 agents evaluated in parallel, lifecycle classified
|
|
148
148
|
- [ ] Unified report + structured JSON written
|
|
149
|
-
- [ ] specs/learnings.md appended with stable INS-ids
|
|
149
|
+
- [ ] .workflow/specs/learnings.md appended with stable INS-ids
|
|
150
150
|
</success_criteria>
|
|
151
151
|
|
|
152
152
|
<next_step_routing>
|
|
@@ -17,7 +17,7 @@ Structured second-opinion on code, decisions, or plans. Three modes:
|
|
|
17
17
|
- **challenge**: single adversarial agent — break assumptions, propose alternatives
|
|
18
18
|
- **consult**: interactive Q&A — agent studies target, answers your questions
|
|
19
19
|
|
|
20
|
-
Findings persist to
|
|
20
|
+
Findings persist to `.workflow/specs/learnings.md` as `<spec-entry>` blocks.
|
|
21
21
|
</purpose>
|
|
22
22
|
|
|
23
23
|
<context>
|
|
@@ -45,7 +45,7 @@ S_RESOLVE — 解析 target PERSIST: —
|
|
|
45
45
|
S_CONTEXT — 加载 specs/wiki 上下文 PERSIST: —
|
|
46
46
|
S_EXECUTE — 按 mode 执行分析 PERSIST: —
|
|
47
47
|
S_SYNTHESIZE — 综合观点、生成报告 PERSIST: outputs
|
|
48
|
-
S_PERSIST — 写文件、append specs/learnings.md PERSIST: knowhow files
|
|
48
|
+
S_PERSIST — 写文件、append .workflow/specs/learnings.md PERSIST: knowhow files
|
|
49
49
|
</states>
|
|
50
50
|
|
|
51
51
|
<transitions>
|
|
@@ -66,7 +66,7 @@ S_SYNTHESIZE:
|
|
|
66
66
|
→ S_PERSIST DO: merge perspectives → agreements, disagreements, verdict, top 3 recommendations
|
|
67
67
|
|
|
68
68
|
S_PERSIST:
|
|
69
|
-
→ END DO: write KNW-opinion + append <spec-entry> blocks to specs/learnings.md
|
|
69
|
+
→ END DO: write KNW-opinion + append <spec-entry> blocks to .workflow/specs/learnings.md
|
|
70
70
|
|
|
71
71
|
</transitions>
|
|
72
72
|
|
|
@@ -112,7 +112,7 @@ Interactive loop:
|
|
|
112
112
|
<success_criteria>
|
|
113
113
|
- [ ] Mode executed: review (3 parallel agents) / challenge (adversarial) / consult (interactive Q&A)
|
|
114
114
|
- [ ] Synthesis with agreements, disagreements, verdict
|
|
115
|
-
- [ ] Report written + findings appended to specs/learnings.md
|
|
115
|
+
- [ ] Report written + findings appended to .workflow/specs/learnings.md
|
|
116
116
|
</success_criteria>
|
|
117
117
|
|
|
118
118
|
<next_step_routing>
|
|
@@ -148,6 +148,7 @@ On validation failure: fix JSON, retry (max 2).
|
|
|
148
148
|
| Code | Condition | Recovery |
|
|
149
149
|
|------|-----------|----------|
|
|
150
150
|
| E001 | No signals from any source | Verify artifact paths or provide description |
|
|
151
|
+
| E002 | Signal source path invalid or unreadable | Check `--from-*` path; ensure artifact exists |
|
|
151
152
|
| E003 | All signals are code bugs, not command gaps | Use /maestro-quick or /maestro-plan --gaps |
|
|
152
153
|
| E004 | Overlay validation failed after 2 retries | Review JSON manually |
|
|
153
154
|
| W001 | Some signals skipped (code bugs) | Route to appropriate fix command |
|
|
@@ -38,6 +38,12 @@ $ARGUMENTS -- phase number for micro mode, topic text for macro/adhoc mode, no a
|
|
|
38
38
|
- **Macro mode** (text argument): Explore impact surface of a topic/requirement. Produces coarse-grained context with `scope_verdict` to route next step. Use before roadmap or for standalone analysis.
|
|
39
39
|
- **Micro mode** (numeric argument): Phase-level deep analysis within an existing roadmap. Produces fine-grained context for plan consumption. `analyze 1` = Phase 1 of current milestone.
|
|
40
40
|
|
|
41
|
+
**Disambiguation rule (mode selection):**
|
|
42
|
+
- First positional arg matches `^\d+$` (pure digits, e.g. `1`, `42`) → **micro mode** (treat as phase number)
|
|
43
|
+
- First positional arg is non-numeric text (e.g. `auth-refactor`, `improve search`) → **macro mode** (treat as topic)
|
|
44
|
+
- No positional arg → milestone-wide micro mode (when roadmap present) else macro fallback
|
|
45
|
+
- Mixed input like `"1 phase"` is treated as text → macro mode (only bare numerics trigger micro)
|
|
46
|
+
|
|
41
47
|
**Flags:**
|
|
42
48
|
- `-y` / `--yes`: Auto mode — skip interactive scoping, use recommended defaults, auto-deepen
|
|
43
49
|
- `-c` / `--continue`: Resume from existing session (auto-detect session folder + discussion.md)
|
|
@@ -54,14 +60,15 @@ Scope routing, output directory format, artifact registration schema, and output
|
|
|
54
60
|
<interview_protocol>
|
|
55
61
|
Interview the user relentlessly until shared understanding is reached. Active only in interactive mode; skip when `-y/--yes`, `-c/--continue`, or input is already specific (explicit phase number or unambiguous topic).
|
|
56
62
|
|
|
57
|
-
- One decision per turn via AskUserQuestion with 2–4 options + a (Recommended) default
|
|
58
|
-
-
|
|
63
|
+
- One decision per turn via AskUserQuestion with 2–4 options + a (Recommended) default. The user controls termination — keep interviewing until convergence; they can interrupt naturally or via `Other` at any time.
|
|
64
|
+
- Search-first when uncertain: before asking, resolve via `state.json`, `roadmap.md`, `issues.jsonl`, `maestro spec load`, `maestro wiki search`, Grep, Read, or — for open-ended multi-file scans — spawn `Agent(subagent_type: Explore)` / `maestro delegate ... --role explore`. Never ask what code or memory can verify; never bounce your own ambiguity back to the user — search first, then ask only what truly needs human judgment.
|
|
65
|
+
- Writeback cadence: each settled decision is immediately appended/updated in `discussion.md` (top table) and mirrored into `context.md` "Interview Decisions". Do NOT batch writeback to the end — partial decisions must already be on disk before the next question.
|
|
59
66
|
- Walk the decision dependency tree strictly: scope → depth → dimensions → Go/No-Go threshold. Do not open the next branch until the current one is settled.
|
|
60
67
|
- Scope guard: only ask about decisions owned by `analyze`. Do not prejudge plan/execute concerns.
|
|
61
68
|
|
|
62
69
|
Decision points: scope (phase / topic / milestone-wide / adhoc / --gaps) → depth (quick / standard / deep) → dimensions (which of the 6 to keep) → Go/No-Go threshold.
|
|
63
70
|
|
|
64
|
-
Exit:
|
|
71
|
+
Exit: when all decision points are settled (or user explicitly signals to proceed), finalize session metadata. The decision table (populated incrementally during interview) uses this schema:
|
|
65
72
|
`| # | Decision | Choice | Source (user / code / default) |`
|
|
66
73
|
</interview_protocol>
|
|
67
74
|
|
|
@@ -64,14 +64,15 @@ maestro-analyze → maestro-roadmap → maestro-plan
|
|
|
64
64
|
<interview_protocol>
|
|
65
65
|
Interview the user relentlessly about every aspect of the spec until shared understanding is reached. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one; if a question can be answered by exploring the codebase, explore the codebase instead. Active only in interactive mode; skip when `-y/--yes`, `-c/--continue`, or input is already specific (clear idea + scope).
|
|
66
66
|
|
|
67
|
-
- Ask one question per turn via AskUserQuestion and wait for the user's feedback before continuing; every question must carry a recommended answer marked `(Recommended)`, 2–4 options total
|
|
68
|
-
-
|
|
67
|
+
- Ask one question per turn via AskUserQuestion and wait for the user's feedback before continuing; every question must carry a recommended answer marked `(Recommended)`, 2–4 options total. The user controls termination — keep interviewing until convergence; they can interrupt naturally or via `Other` at any time.
|
|
68
|
+
- Search-first when uncertain: before asking, resolve via `state.json`, existing artifacts, `maestro spec load`, direct codebase exploration (Glob/Grep/Read), or — for open-ended multi-file scans — spawn `Agent(subagent_type: Explore)` / `maestro delegate ... --role explore`. Never ask what code or memory can verify; never bounce your own ambiguity back to the user — search first, then ask only what truly needs human judgment.
|
|
69
|
+
- Writeback cadence: each settled decision is immediately persisted into `blueprint-config.json` before the next question. Do NOT batch writeback to the end — partial decisions must already be on disk.
|
|
69
70
|
- Walk the decision dependency tree depth-first: scope → spec type → focus areas → requirement priorities. Do not open the next branch until the current one is settled.
|
|
70
71
|
- Scope guard: only decide the shape of the specification. Do not pre-resolve roadmap phases or plan tasks — those belong to downstream commands.
|
|
71
72
|
|
|
72
73
|
Decision points: scope (full product / feature set / single feature) → spec type (service / api / library / platform) → focus areas → whether to run codebase exploration.
|
|
73
74
|
|
|
74
|
-
Exit: on consensus or
|
|
75
|
+
Exit: on consensus or explicit user signal to proceed, finalize blueprint-config.json (decisions already written incrementally) and proceed to Phase 1.
|
|
75
76
|
</interview_protocol>
|
|
76
77
|
|
|
77
78
|
<execution>
|
|
@@ -12,7 +12,7 @@ allowed-tools:
|
|
|
12
12
|
- AskUserQuestion
|
|
13
13
|
---
|
|
14
14
|
<purpose>
|
|
15
|
-
Unified brainstorming combining interactive framework generation, multi-role parallel analysis, cross-role review, and resolution writeback. Two modes: Auto (full pipeline: guidance-specification → parallel {role}/ multi-file analysis → cross-role-reviewer compares Decision Digests for conflicts/gaps/synergies → user-confirmed resolutions patched into role files + logged in guidance §12) and Single Role (individual role analysis for an existing session). Outputs structured artifacts in `.workflow/scratch/brainstorm-{slug}
|
|
15
|
+
Unified brainstorming combining interactive framework generation, multi-role parallel analysis, cross-role review, and resolution writeback. Two modes: Auto (full pipeline: guidance-specification → parallel {role}/ multi-file analysis → cross-role-reviewer compares Decision Digests for conflicts/gaps/synergies → user-confirmed resolutions patched into role files + logged in guidance §12) and Single Role (individual role analysis for an existing session). Outputs structured artifacts in `.workflow/scratch/{YYYYMMDD}-brainstorm-{slug}/` ready for downstream planning (roadmap / analyze / blueprint consume `guidance-specification.md`).
|
|
16
16
|
</purpose>
|
|
17
17
|
|
|
18
18
|
<required_reading>
|
|
@@ -30,7 +30,7 @@ $ARGUMENTS -- topic text for auto mode, or role name for single role mode.
|
|
|
30
30
|
|
|
31
31
|
**Auto mode**: topic text (e.g., "Build real-time collaboration platform") triggers full pipeline.
|
|
32
32
|
**Single role mode**: valid role name (e.g., "system-architect") runs one role analysis.
|
|
33
|
-
**All output** goes to `.workflow/scratch/{YYYYMMDD}-brainstorm-{slug}
|
|
33
|
+
**All output** goes to `.workflow/scratch/{YYYYMMDD}-brainstorm-{slug}/` (orchestrator MUST resolve this to an absolute path before passing to sub-agents).
|
|
34
34
|
**Artifact registration**: On completion, registers artifact (type=brainstorm) in state.json.
|
|
35
35
|
**Output boundary**: ALL file writes MUST target `{output_dir}/` or `.workflow/state.json` only. NEVER modify source code or files outside these paths.
|
|
36
36
|
**Produced files**: `guidance-specification.md`, `design-research.md` (optional), `{role}/analysis.md` + `{role}/analysis-F-*.md` + `{role}/findings-*.md` (per selected role).
|
|
@@ -62,14 +62,15 @@ $ARGUMENTS -- topic text for auto mode, or role name for single role mode.
|
|
|
62
62
|
<interview_protocol>
|
|
63
63
|
Interview the user relentlessly until shared understanding is reached. Active only in interactive mode; skip when `--yes/-y`, `--skip-questions`, `--session` (existing session), or input is already specific.
|
|
64
64
|
|
|
65
|
-
- One decision per turn via AskUserQuestion with 2–4 options + a (Recommended) default;
|
|
66
|
-
-
|
|
65
|
+
- One decision per turn via AskUserQuestion with 2–4 options + a (Recommended) default. The user controls termination — keep interviewing until convergence; they can interrupt naturally or via `Other` at any time.
|
|
66
|
+
- Search-first when uncertain: before asking, resolve via `state.json`, the session directory, `maestro spec load`, `maestro wiki search`, Glob/Grep/Read, or — for open-ended multi-file scans — spawn `Agent(subagent_type: Explore)` / `maestro delegate ... --role explore`. Never ask what code or memory can verify; never bounce your own ambiguity back to the user — search first, then ask only what truly needs human judgment.
|
|
67
|
+
- Writeback cadence: each time a decision settles, immediately append/update its row in `guidance-specification.md` §11 (create the section if absent). Do NOT batch writeback to the end — partial decisions must already be on disk before the next question.
|
|
67
68
|
- Branch jumps allowed: the user may switch freely between mode / role / upstream / sub-pipeline branches; sequence is not enforced, but every decision point must end with a definite answer.
|
|
68
69
|
- Scope guard: only ask about decisions owned by `brainstorm`. Do not pre-resolve roadmap/plan choices.
|
|
69
70
|
|
|
70
71
|
Decision points: mode (auto / single-role / review-only) / role selection and `--count` / `--from` upstream source / whether to enable design-research and the DESIGN.md sub-pipeline.
|
|
71
72
|
|
|
72
|
-
Exit: on consensus or
|
|
73
|
+
Exit: on consensus or explicit user signal to proceed, finalize session metadata. The §11 table (already populated incrementally) uses this schema:
|
|
73
74
|
`| # | Decision | Choice | Source (user / code / default) |`
|
|
74
75
|
</interview_protocol>
|
|
75
76
|
|
|
@@ -19,7 +19,7 @@ Since `.workflow/` is gitignored, this command explicitly copies project context
|
|
|
19
19
|
|
|
20
20
|
Also supports `--sync` mode to pull latest main branch changes and shared artifacts into an active worktree (prevents source and artifact drift for long-lived worktrees).
|
|
21
21
|
|
|
22
|
-
Produces `.workflow/worktrees.json` registry in the main worktree and `.workflow/worktree-scope.json` marker in the worktree.
|
|
22
|
+
Produces `.workflow/worktrees.json` registry in the main worktree and `.workflow/worktree-scope.json` marker in the worktree, and writes a scoped `state.json` inside the worktree containing only the forked milestone's artifacts.
|
|
23
23
|
</purpose>
|
|
24
24
|
|
|
25
25
|
<required_reading>
|
|
@@ -77,10 +77,11 @@ Read `.workflow/config.json`. If file missing, initialize with empty guard secti
|
|
|
77
77
|
- Write config
|
|
78
78
|
|
|
79
79
|
**`deny <path>`:**
|
|
80
|
-
- Normalize path to forward slashes
|
|
80
|
+
- Normalize path to forward slashes, ensure trailing slash for directories
|
|
81
|
+
- If `guard.mode` is `allow`, switch to `deny` and clear paths with warning
|
|
81
82
|
- Set `guard.mode = "deny"`
|
|
82
83
|
- Add path to `guard.paths` (deduplicate)
|
|
83
|
-
- Set `guard.enabled = true` if not already
|
|
84
|
+
- Set `guard.enabled = true` if not already (symmetric with `allow`: adding a deny path auto-enables the guard)
|
|
84
85
|
- Write config
|
|
85
86
|
|
|
86
87
|
**Step 4: Confirm**
|
|
@@ -74,6 +74,8 @@ responsive-design.md, spatial-design.md, typography.md, ux-writing.md
|
|
|
74
74
|
|
|
75
75
|
## Chains
|
|
76
76
|
|
|
77
|
+
Chain step names below reuse Command Routing names but resolve through the chain runner. To avoid ambiguity with Direct command invocation, internal display, todo items, and session status records always tag chain steps with the `impeccable:` prefix (e.g. `impeccable:craft`, `impeccable:critique`). The bare names in this table refer to the workflow file at `~/.maestro/workflows/impeccable/{name}.md` that the chain step reads.
|
|
78
|
+
|
|
77
79
|
| Chain | Steps | Scenario |
|
|
78
80
|
|-------|-------|----------|
|
|
79
81
|
| build | teach? → explore? → shape → craft → critique → [refine] → audit → polish | New from scratch |
|
|
@@ -181,17 +183,17 @@ Before reading any command workflow:
|
|
|
181
183
|
## Chain Execution
|
|
182
184
|
|
|
183
185
|
1. Prerequisites ✓
|
|
184
|
-
2. **Display chain preview**: parse chain definition, output full step preview:
|
|
186
|
+
2. **Display chain preview**: parse chain definition, output full step preview (chain steps prefixed `impeccable:` to disambiguate from Direct commands):
|
|
185
187
|
```
|
|
186
188
|
── Chain: build ──────────────────────────
|
|
187
|
-
1. teach (conditional: PRODUCT.md missing)
|
|
188
|
-
2. explore (conditional: DESIGN.md missing)
|
|
189
|
-
3. shape
|
|
190
|
-
4. craft
|
|
191
|
-
5. critique ◆ quality gate (threshold: 26/40)
|
|
192
|
-
6. [refine] ↺ auto-fix loop (max: 3)
|
|
193
|
-
7. audit ◆ quality gate (threshold: 14/20)
|
|
194
|
-
8. polish
|
|
189
|
+
1. impeccable:teach (conditional: PRODUCT.md missing)
|
|
190
|
+
2. impeccable:explore (conditional: DESIGN.md missing)
|
|
191
|
+
3. impeccable:shape
|
|
192
|
+
4. impeccable:craft
|
|
193
|
+
5. impeccable:critique ◆ quality gate (threshold: 26/40)
|
|
194
|
+
6. impeccable:[refine] ↺ auto-fix loop (max: 3)
|
|
195
|
+
7. impeccable:audit ◆ quality gate (threshold: 14/20)
|
|
196
|
+
8. impeccable:polish
|
|
195
197
|
─────────────────────────────────────────
|
|
196
198
|
Target: {target}
|
|
197
199
|
```
|
|
@@ -205,9 +207,9 @@ Before reading any command workflow:
|
|
|
205
207
|
"gate_history": [], "loop_count": 0, "status": "running" }
|
|
206
208
|
```
|
|
207
209
|
4. **TodoWrite init**: create todo items for all chain steps
|
|
208
|
-
- One item per step, format: `[chain] step N: {command} — {description}`
|
|
210
|
+
- One item per step, format: `[chain] step N: impeccable:{command} — {description}` (use `impeccable:` prefix to disambiguate from Direct command items)
|
|
209
211
|
- If conditional step is skipped, immediately mark completed
|
|
210
|
-
- Quality gate steps include threshold: `[chain] step 5: critique ◆ gate ≥26/40`
|
|
212
|
+
- Quality gate steps include threshold: `[chain] step 5: impeccable:critique ◆ gate ≥26/40`
|
|
211
213
|
5. For each step:
|
|
212
214
|
- Read `~/.maestro/workflows/impeccable/{command}.md` → execute
|
|
213
215
|
- **Step start**: TodoWrite marks current step in_progress
|
|
@@ -44,7 +44,7 @@ $ARGUMENTS -- optional explicit version string and flags.
|
|
|
44
44
|
</context>
|
|
45
45
|
|
|
46
46
|
<execution>
|
|
47
|
-
Follow '~/.maestro/workflows/release.md' completely.
|
|
47
|
+
Follow '~/.maestro/workflows/milestone-release.md' completely.
|
|
48
48
|
|
|
49
49
|
**High-level flow:**
|
|
50
50
|
1. Validate preconditions (milestone completed, clean tree, audit PASS)
|
|
@@ -54,7 +54,9 @@ Scope routing, base flags (`--collab`, `--spec`, `-y`, `--gaps`, `--dir`), outpu
|
|
|
54
54
|
5. No args + roadmap → scope = "milestone" (unchanged)
|
|
55
55
|
6. No args + no roadmap → search state.json for latest analyze artifact, fallback standalone
|
|
56
56
|
|
|
57
|
-
**Ad-hoc milestone (D-008):** When scope resolves to "standalone" and `current_milestone == null`, plan auto-creates an adhoc milestone (`type: "adhoc"`) in state.json before proceeding. This ensures downstream milestone-audit/complete have a valid milestone context. See workflow plan.md § "Ad-hoc Milestone Auto-Creation".
|
|
57
|
+
**Ad-hoc milestone (D-008):** When scope resolves to "standalone" via the standard standalone resolution (no `--from` source), and `current_milestone == null`, plan auto-creates an adhoc milestone (`type: "adhoc"`) in state.json before proceeding. This ensures downstream milestone-audit/complete have a valid milestone context. See workflow plan.md § "Ad-hoc Milestone Auto-Creation".
|
|
58
|
+
|
|
59
|
+
**Exception (`--from analyze:ANL-xxx` / `blueprint:BLP-xxx`):** When scope is set to "standalone" by `--from`, skip adhoc milestone auto-creation — the upstream analyze/blueprint artifact already provides the milestone context (or is intentionally milestone-free). Adhoc creation in this path would conflict with the `--from` semantic of "this is a one-shot plan rooted in an existing artifact".
|
|
58
60
|
|
|
59
61
|
### Role Knowledge
|
|
60
62
|
`maestro wiki list --category arch` → select relevant → `maestro wiki load`
|
|
@@ -38,7 +38,9 @@ Also read `session.auto_mode` from status.json — if true, treat as `-y`.
|
|
|
38
38
|
| external (opt-in) | `maestro delegate --to claude --mode write` (STOP → callback) | Self-invoke next |
|
|
39
39
|
|
|
40
40
|
HARD RULES:
|
|
41
|
-
- internal step
|
|
41
|
+
- internal step:优先通过 `Read({command_path})` 把命令 .md 加载进当前会话,再按内容执行;不要对 internal step 使用 `Skill({skill})` 调用
|
|
42
|
+
- **必须遵循 `<required_reading>` / `<deferred_reading>` 标签**:命令 .md 通常采用"入口 + workflow"形式,主体逻辑放在 workflow 文件中并通过 `<required_reading>` 引用;不加载 required_reading 会导致命令执行不完整
|
|
43
|
+
- decision 节点例外:A_EXEC_DECISION 必须使用 `Skill({ skill: "maestro-ralph" })` 进行 handoff(这是 decision 节点的唯一允许用法)
|
|
42
44
|
- `command_path` 由 ralph 在 A_BUILD_STEPS 写入 status.json;ralph-execute 不再自行解析(缺失 → 报错 E002)
|
|
43
45
|
- external 仅在 `step.type == "external"` 显式声明时使用,并 always append `-y` 到 prompt args
|
|
44
46
|
- 每个 step 必须产出 `--- COMPLETION STATUS ---` 块,否则视为 NEEDS_RETRY
|
|
@@ -46,10 +48,13 @@ HARD RULES:
|
|
|
46
48
|
|
|
47
49
|
<invariants>
|
|
48
50
|
1. **Internal = Read + inline** — 通过 Read 读取 `step.command_path`,按其指令在当前 session 内执行
|
|
49
|
-
2. **
|
|
50
|
-
3.
|
|
51
|
-
4. **
|
|
52
|
-
5. **
|
|
51
|
+
2. **Required reading must be loaded** — 命令 .md 中的 `<required_reading>` 引用的所有文件必须立即 Read;缺一 → 视为加载失败,pause session(E007)
|
|
52
|
+
3. **Deferred reading recorded only** — `<deferred_reading>` 列出的文件路径需记录,执行过程按需 Read;不在加载阶段读取
|
|
53
|
+
4. **Skill loaded confirmation** — 所有 required_reading 加载完成后必须输出一行确认:`✓ skill {step.skill} 加载完成 (required: N, deferred: M)`
|
|
54
|
+
5. **External = explicit only** — `step.type == "external"` 才走 delegate;默认绝不发起
|
|
55
|
+
6. **必须显式 completion confirmation** — 每个 step 完成时需有 `STATUS: DONE` 且写入 `step.completion_confirmed = true`
|
|
56
|
+
7. **Self-invocation chain** — 持续直到全部 `completion_confirmed` 或 paused
|
|
57
|
+
8. **status.json 每步骤后写盘** — resume-safe
|
|
53
58
|
</invariants>
|
|
54
59
|
|
|
55
60
|
<state_machine>
|
|
@@ -157,12 +162,21 @@ Write enriched args back to status.json.
|
|
|
157
162
|
1. Validate `step.command_path != null`;否则 raise E002,pause session
|
|
158
163
|
2. Mark step running, write status.json
|
|
159
164
|
3. Display: `[{index}/{total}] {step.skill} [internal · {step.command_scope}]`
|
|
160
|
-
4. `Read({ file_path: step.command_path })` — 把命令 .md
|
|
161
|
-
5.
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
165
|
+
4. `Read({ file_path: step.command_path })` — 把命令 .md 全文加载进当前会话(prefer Read over Skill for internal steps;decision 节点另行使用 Skill 见 A_EXEC_DECISION)
|
|
166
|
+
5. **解析 reading 标签**("入口 + workflow"形式核心步骤):
|
|
167
|
+
- 抽取 frontmatter `argument-hint` / `allowed-tools`
|
|
168
|
+
- 抽取 `<required_reading>` 块的所有 `@path` 引用 → 立刻 `Read({ file_path: <expanded path> })` 加载(`~/` / `@~/` 展开为用户主目录);任一文件缺失或读取失败 → raise E007,pause session
|
|
169
|
+
- 抽取 `<deferred_reading>` 块的所有路径 → 仅记录到 `step.deferred_reads = [...]`,执行阶段按需 Read
|
|
170
|
+
- 抽取 `<purpose>/<context>/<state_machine>/<execution>/<actions>` 等指令块
|
|
171
|
+
6. **加载完成确认**:required_reading 全部成功 Read 后,输出一行:
|
|
172
|
+
```
|
|
173
|
+
✓ skill {step.skill} 加载完成 (required: {N}, deferred: {M})
|
|
174
|
+
```
|
|
175
|
+
其中 N = required_reading 引用数,M = deferred_reading 路径数(缺省块按 0 计)
|
|
176
|
+
7. 计算 `effective_args`:`step.args` + auto flag(`auto ? (flag_map[step.skill] || "") : ""`)
|
|
177
|
+
8. 按读到的指令在本会话中**内联执行**:调用允许的工具完成命令所规定的工作,不再发起 delegate;执行过程中如触发 deferred_reading 引用的资源 → 按需 Read
|
|
178
|
+
9. 执行结束:要求最后一段必须包含 `--- COMPLETION STATUS ---` 块(见 A_MARK_COMPLETE)
|
|
179
|
+
10. Return success / failure
|
|
166
180
|
|
|
167
181
|
**Auto flag map**: 所有 lifecycle skill → `-y`; `quality-test` → `-y --auto-fix`; 未列出 → 无 flag
|
|
168
182
|
|
|
@@ -250,7 +264,9 @@ Write enriched args back to status.json.
|
|
|
250
264
|
| E003 | error | status.json corrupt | Show path, manual check |
|
|
251
265
|
| E004 | error | Delegate failed + user abort | Mark paused, suggest resume |
|
|
252
266
|
| E005 | error | COMPLETION STATUS block missing | Trigger NEEDS_RETRY |
|
|
267
|
+
| E007 | error | required_reading file 缺失或读取失败 | List missing paths, pause session |
|
|
253
268
|
| W001 | warning | Step completed with concerns | Log and continue |
|
|
269
|
+
| W002 | warning | command .md 无 `<required_reading>` 标签 | 直接执行 .md 主体,跳过加载阶段 |
|
|
254
270
|
|
|
255
271
|
### Success Criteria
|
|
256
272
|
|
|
@@ -259,6 +275,9 @@ Write enriched args back to status.json.
|
|
|
259
275
|
- [ ] Placeholders resolved;per-skill enrichment 正确
|
|
260
276
|
- [ ] Decision 节点 Skill("maestro-ralph") handoff
|
|
261
277
|
- [ ] Internal 节点通过 Read({step.command_path}) 内联执行,禁止 Skill()
|
|
278
|
+
- [ ] Internal 节点 Read 后必须解析并加载 `<required_reading>` 引用的文件;缺失 → E007 pause
|
|
279
|
+
- [ ] `<deferred_reading>` 仅记录路径到 `step.deferred_reads`,执行阶段按需 Read
|
|
280
|
+
- [ ] required_reading 加载完成后输出 `✓ skill {name} 加载完成 (required: N, deferred: M)`
|
|
262
281
|
- [ ] External 仅在显式声明时走 delegate,prompt 必带 `-y`
|
|
263
282
|
- [ ] 每个 step 强制 `--- COMPLETION STATUS ---`;缺失 → NEEDS_RETRY
|
|
264
283
|
- [ ] step.completion_confirmed = true 仅在 STATUS: DONE/DONE_WITH_CONCERNS 时设置
|
|
@@ -17,10 +17,12 @@ Closed-loop decision engine for the maestro workflow lifecycle.
|
|
|
17
17
|
Reads project state → infers position → builds adaptive chain → delegates execution.
|
|
18
18
|
|
|
19
19
|
Entry points:
|
|
20
|
-
- **`/maestro-ralph "intent"`** — New session: infer → decompose → build → execute
|
|
21
|
-
- **`/maestro-ralph continue`** —
|
|
20
|
+
- **`/maestro-ralph "intent"`** — New session: infer → decompose → build → (decomposition → emit /goal prompt, STOP;否则 dispatch ralph-execute)
|
|
21
|
+
- **`/maestro-ralph continue`** — Wrapper; dispatches to ralph-execute(首选直接 `/maestro-ralph-execute` 推进 step)
|
|
22
22
|
- **`/maestro-ralph status`** — Display session progress
|
|
23
23
|
|
|
24
|
+
> 推进规则:**step 推进由 `/maestro-ralph-execute` 负责**;ralph 仅在 build / decision 评估时介入。decision 节点由 ralph-execute 自动 `Skill("maestro-ralph")` handoff,无需用户手动切换。
|
|
25
|
+
|
|
24
26
|
Initial decomposition (S_DECOMPOSE): boundary-clarified via ≤3 questions for broad intents (重构/全面/迁移/重写). 写入 status.json 的 `boundary_contract` / `execution_criteria` / `task_decomposition`,附 `/goal` prompt。
|
|
25
27
|
|
|
26
28
|
Node types:
|
|
@@ -68,15 +70,16 @@ Remaining → intent
|
|
|
68
70
|
|
|
69
71
|
<invariants>
|
|
70
72
|
1. **Ralph never executes steps** — only creates sessions and evaluates decisions
|
|
71
|
-
2. **Handoff via Skill("maestro-ralph-execute")** —
|
|
73
|
+
2. **Handoff via Skill("maestro-ralph-execute")** — 仅当 session 无 `task_decomposition` 时在创建后自动 handoff;decomposition 路径 STOP 等用户输入。decision 评估后始终 handoff
|
|
72
74
|
3. **Decision delegates read-only** — `maestro delegate --role analyze --mode analysis`
|
|
73
75
|
4. **Default type = internal** — `external` 仅显式标注时出现,build 不默认生成
|
|
74
76
|
5. **status.json 是唯一真源** — 不生成 markdown 清单或侧文件
|
|
75
77
|
6. **每个 step 必须 `completion_confirmed: true`** — 基于 `--- COMPLETION STATUS ---` 的 `STATUS: DONE`;缺失则视为未完成
|
|
76
78
|
7. **command_path 在 A_BUILD_STEPS 解析** — 全局优先 `~/.claude/commands/{name}.md`,fallback 项目 `.claude/commands/{name}.md`,写入 status.json
|
|
77
|
-
8. **
|
|
78
|
-
9. **
|
|
79
|
-
10. **
|
|
79
|
+
8. **Internal step 加载契约** — ralph-execute 读 `command_path` 后,必须解析并加载该命令 `<required_reading>` 引用的所有文件("入口 + workflow"形式的核心),并把 `<deferred_reading>` 路径记录到 `step.deferred_reads`;加载完成后输出 `✓ skill {name} 加载完成`。ralph 在 build 阶段只解析路径,不读 .md 内容
|
|
80
|
+
9. **Decomposition is outcome-oriented** — sub-goals 为可观测交付,禁止 lifecycle 复刻;`/goal` 用户绑定,ralph 只发提示词后 STOP,等用户输入
|
|
81
|
+
10. **planning_mode governs arg granularity** — `unified` → skill args 无 `{phase}`;`independent` → 含 `{phase}`
|
|
82
|
+
11. **task_decomposition 驱动 steps[] 动态生长** — `post-goal-audit` 按 unmet 子目标插入 scoped mini-loop;字段可选/累加,既有字段不删不改
|
|
80
83
|
</invariants>
|
|
81
84
|
|
|
82
85
|
<state_machine>
|
|
@@ -146,8 +149,9 @@ S_BUILD_CHAIN:
|
|
|
146
149
|
→ S_CREATE_SESSION DO: A_BUILD_STEPS
|
|
147
150
|
|
|
148
151
|
S_CREATE_SESSION:
|
|
149
|
-
→
|
|
150
|
-
→
|
|
152
|
+
→ END WHEN: task_decomposition present DO: A_CREATE_SESSION (emits Goal Prompt → STOP,等用户输入 /goal 后手动 /maestro-ralph-execute)
|
|
153
|
+
→ S_CONFIRM WHEN: not auto_confirm AND no decomposition DO: A_CREATE_SESSION
|
|
154
|
+
→ S_DISPATCH WHEN: auto_confirm AND no decomposition DO: A_CREATE_SESSION
|
|
151
155
|
|
|
152
156
|
S_CONFIRM:
|
|
153
157
|
→ S_DISPATCH WHEN: user selects "Proceed"
|
|
@@ -411,7 +415,8 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
|
|
|
411
415
|
- 全局优先:`~/.claude/commands/{name}.md` 存在 → `command_scope = "global"`
|
|
412
416
|
- Fallback:`.claude/commands/{name}.md` 存在 → `command_scope = "project"`
|
|
413
417
|
- 两者都缺 → `command_scope = "missing"`, `command_path = null`,A_CREATE_SESSION 报错 E006
|
|
414
|
-
|
|
418
|
+
- **不在 build 阶段读取 .md 内容**;`<required_reading>` / `<deferred_reading>` 解析与加载由 ralph-execute A_EXEC_INTERNAL 负责(保持入口/工作流分离)
|
|
419
|
+
10. **每个 step 初始化** `completion_confirmed: false`, `completion_status: null`, `completion_evidence: null`, `deferred_reads: []`
|
|
415
420
|
11. **scope_verdict gating**(仅当 chain 起点 = `analyze-macro`):
|
|
416
421
|
- `scope_verdict ∈ {medium, small}` → 跳过 `roadmap` + `analyze` 两 stage;`plan` 选 standalone 列(`--from analyze:{analyze_macro_id}`),不带 `{phase}`
|
|
417
422
|
- `scope_verdict == large` → 保留 `roadmap` + `analyze`;`plan` 选 phase 列(`{phase}`)
|
|
@@ -429,7 +434,7 @@ Generate steps from `session.lifecycle_position` to `milestone-complete`.
|
|
|
429
434
|
1. Validate: 所有 step 的 `command_scope != "missing"`;否则 raise E006 + 列出缺失 skill
|
|
430
435
|
2. Write `.workflow/.maestro/ralph-{YYYYMMDD-HHmmss}/status.json` (Appendix: Session Schema)
|
|
431
436
|
3. Display chain overview:每步显示 `{index}. {skill} [{type}] [{command_scope}]`
|
|
432
|
-
4. If `task_decomposition` present: display
|
|
437
|
+
4. If `task_decomposition` present: display **Goal Prompt block** (Appendix) → STOP,等用户输入 `/goal`(auto_confirm 也不跳过)
|
|
433
438
|
|
|
434
439
|
### A_DELEGATE_EVALUATE
|
|
435
440
|
|
|
@@ -618,7 +623,8 @@ Runs only when `task_decomposition` present.
|
|
|
618
623
|
"completion_confirmed": false,
|
|
619
624
|
"completion_status": null,
|
|
620
625
|
"completion_evidence": null,
|
|
621
|
-
"completed_at": null
|
|
626
|
+
"completed_at": null,
|
|
627
|
+
"deferred_reads": [] // 由 ralph-execute A_EXEC_INTERNAL 解析 .md 时填充
|
|
622
628
|
}],
|
|
623
629
|
"waves": [], "current_step": 0,
|
|
624
630
|
|
|
@@ -702,11 +708,9 @@ decision:post-goal-audit {retry+1}
|
|
|
702
708
|
链路概览后逐字显示(仅当 decomposition 已产出):
|
|
703
709
|
|
|
704
710
|
```
|
|
705
|
-
📋
|
|
706
|
-
|
|
707
|
-
/goal 目标达成条件: {session_dir}/status.json 中 task_decomposition[*].status == "done" 且 task_decomposition[*].completion_confirmed == true 且 steps[*].completion_confirmed == true。未达成时:阅读 {session_dir}/status.json 取得 execution_criteria / boundary_contract / task_decomposition / steps 作为行动手册,调用 /maestro-ralph continue 推进;严禁手动执行 skill 或越界修改 status.json.boundary_contract.out_of_scope。
|
|
711
|
+
📋 任务分解完成。复制以下 /goal 设定终止条件,随后运行 /maestro-ralph-execute:
|
|
708
712
|
|
|
709
|
-
|
|
713
|
+
/goal 直到 {session_dir}/status.json 的 task_decomposition[*] 与 steps[*] 全部 completion_confirmed=true 才停。每轮以 status.json 为唯一行动手册,通过 /maestro-ralph-execute 推进 step;decision 节点由其自动 handoff 回 ralph 评估。禁止手动执行 skill 或修改 boundary_contract.out_of_scope。
|
|
710
714
|
```
|
|
711
715
|
|
|
712
716
|
`/goal` 由用户输入;ralph 只输出此提示词。判据以 status.json 为权威。
|
|
@@ -742,7 +746,8 @@ decision:post-goal-audit {retry+1}
|
|
|
742
746
|
- [ ] Decomposition: broad intent ≤3 question clarify;narrow auto-derive
|
|
743
747
|
- [ ] status.json 唯一真源:boundary_contract + execution_criteria + task_decomposition;无外部清单
|
|
744
748
|
- [ ] 每个 step 默认 `type: "internal"`,含 `command_scope` + `command_path`(全局优先 fallback 项目)
|
|
745
|
-
- [ ]
|
|
749
|
+
- [ ] Ralph build 阶段只解析路径,不读 .md 内容;`<required_reading>` 加载由 ralph-execute A_EXEC_INTERNAL 完成
|
|
750
|
+
- [ ] 每个 step 含 `completion_confirmed` + `completion_status` + `completion_evidence` + `deferred_reads`(初始 false/null/[])
|
|
746
751
|
- [ ] 每个 sub-goal 含 `completion_confirmed`(初始 false)
|
|
747
752
|
- [ ] post-goal-audit decision 仅在 decomposed 时插入,位于 milestone-complete 之前
|
|
748
753
|
- [ ] Unmet sub-goals 动态 grow steps[](goal_ref tagged);max retries → escalate
|
|
@@ -69,14 +69,15 @@ maestro-analyze {phase} → maestro-plan → maestro-execute → maestro-verify
|
|
|
69
69
|
<interview_protocol>
|
|
70
70
|
Interview the user relentlessly until shared understanding is reached. Active only in interactive mode; skip when `-y/--yes`, `--revise`, `--review`, `-c/--continue`, or input is already specific (clear requirement + mode).
|
|
71
71
|
|
|
72
|
-
- One decision per turn via AskUserQuestion with 2–4 options + a (Recommended) default;
|
|
73
|
-
-
|
|
72
|
+
- One decision per turn via AskUserQuestion with 2–4 options + a (Recommended) default. The user controls termination — keep interviewing until convergence; they can interrupt naturally or via `Other` at any time.
|
|
73
|
+
- Search-first when uncertain: before asking, resolve via `state.json`, existing `roadmap.md`, `project.md`, `maestro spec load`, `maestro wiki search`, Glob/Grep/Read, or — for open-ended multi-file scans — spawn `Agent(subagent_type: Explore)` / `maestro delegate ... --role explore`. Never ask what code or memory can verify; never bounce your own ambiguity back to the user — search first, then ask only what truly needs human judgment.
|
|
74
|
+
- Writeback cadence: each settled decision is immediately appended/updated in the `Roadmap Decisions` section at the top of `.workflow/roadmap.md` (create the section if absent). Do NOT batch writeback to the end — partial decisions must already be on disk before the next question.
|
|
74
75
|
- Walk the decision dependency tree strictly: mode → requirement scope → decomposition strategy → phase dependencies/order. Do not open the next branch until the current one is settled.
|
|
75
76
|
- Scope guard: only decide the shape of the roadmap. Do not pre-resolve intra-phase task breakdown — that belongs to `plan`.
|
|
76
77
|
|
|
77
78
|
Decision points: scope (MVP / complete / phased) → strategy (progressive / direct / auto) → milestone boundaries → phase dependencies and order.
|
|
78
79
|
|
|
79
|
-
Exit: on consensus or
|
|
80
|
+
Exit: on consensus or explicit user signal to proceed, finalize the `Roadmap Decisions` section (rows already populated incrementally). Schema:
|
|
80
81
|
`| # | Decision | Choice | Source (user / code / default) |`
|
|
81
82
|
</interview_protocol>
|
|
82
83
|
|
|
@@ -19,7 +19,7 @@ Verify execution results through three complementary methods:
|
|
|
19
19
|
3. **Nyquist test coverage validation** — requirement-to-test mapping with gap classification
|
|
20
20
|
|
|
21
21
|
Supports dual-level verification:
|
|
22
|
-
- **Single plan**: `verify --dir scratch/plan-xxx` — verifies one plan, writes `verification.json` into plan dir
|
|
22
|
+
- **Single plan**: `verify --dir scratch/{YYYYMMDD}-plan-xxx` — verifies one plan, writes `verification.json` into plan dir
|
|
23
23
|
- **Milestone**: `verify` (no args) — aggregates all execute artifacts for current milestone into `scratch/{YYYYMMDD}-verify-M{N}-{slug}/milestone-verification.json`
|
|
24
24
|
|
|
25
25
|
Registers VRF artifact in state.json on completion.
|
|
@@ -47,6 +47,7 @@ Follow '~/.maestro/workflows/harvest.md' Stages 1-8 in order.
|
|
|
47
47
|
1. **Read-only until Stage 6** — extraction and classification happen in-memory.
|
|
48
48
|
2. **Dedup before write** — check harvest-log.jsonl and existing stores before each write.
|
|
49
49
|
3. **Never modify source artifacts** — harvest is purely extractive.
|
|
50
|
+
4. **Dedup contract with parallel writers** — when appending to `issues.jsonl`, set `source: "harvest"` on each row so concurrent writers (e.g. `manage-issue-discover` with `source: "discover"`) can be distinguished and deduplicated.
|
|
50
51
|
|
|
51
52
|
Extraction patterns, classification rules, routing infrastructure, and fragment ID scheme defined in workflow harvest.md.
|
|
52
53
|
|
|
@@ -46,7 +46,7 @@ $ARGUMENTS -- optional. Parse first token to determine mode.
|
|
|
46
46
|
- `--depth=standard|deep` -- exploration depth (by-prompt only, default: `standard`)
|
|
47
47
|
|
|
48
48
|
**State files:**
|
|
49
|
-
- `.workflow/issues/issues.jsonl` -- issues appended here
|
|
49
|
+
- `.workflow/issues/issues.jsonl` -- issues appended here (set `source: "discover"` on each row so concurrent writers like `manage-harvest` with `source: "harvest"` can be distinguished and deduplicated)
|
|
50
50
|
- `.workflow/issues/discoveries/{SESSION_ID}/` -- session artifacts
|
|
51
51
|
|
|
52
52
|
### Pre-load specs
|