maestro-flow-one 0.2.0 → 0.2.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.
Files changed (96) hide show
  1. package/.ace-tool/index.json +108 -0
  2. package/bin/maestro-flow.js +30 -0
  3. package/claude/maestro-flow/agents/cli-explore-agent.md +187 -0
  4. package/claude/maestro-flow/agents/conceptual-planning-agent.md +245 -0
  5. package/claude/maestro-flow/agents/team-supervisor.md +143 -0
  6. package/claude/maestro-flow/agents/team-worker.md +237 -0
  7. package/claude/maestro-flow/agents/ui-design-agent.md +286 -0
  8. package/claude/maestro-flow/agents/workflow-analyzer.md +115 -0
  9. package/claude/maestro-flow/agents/workflow-codebase-mapper.md +77 -0
  10. package/claude/maestro-flow/agents/workflow-collab-planner.md +143 -0
  11. package/claude/maestro-flow/agents/workflow-debugger.md +103 -0
  12. package/claude/maestro-flow/agents/workflow-executor.md +129 -0
  13. package/claude/maestro-flow/agents/workflow-external-researcher.md +86 -0
  14. package/claude/maestro-flow/agents/workflow-integration-checker.md +83 -0
  15. package/claude/maestro-flow/agents/workflow-nyquist-auditor.md +85 -0
  16. package/claude/maestro-flow/agents/workflow-phase-researcher.md +85 -0
  17. package/claude/maestro-flow/agents/workflow-plan-checker.md +90 -0
  18. package/claude/maestro-flow/agents/workflow-planner.md +195 -0
  19. package/claude/maestro-flow/agents/workflow-project-researcher.md +74 -0
  20. package/claude/maestro-flow/agents/workflow-research-synthesizer.md +70 -0
  21. package/claude/maestro-flow/agents/workflow-reviewer.md +82 -0
  22. package/claude/maestro-flow/agents/workflow-roadmapper.md +81 -0
  23. package/claude/maestro-flow/agents/workflow-verifier.md +120 -0
  24. package/codex/maestro-flow/agents/team-supervisor.toml +40 -0
  25. package/codex/maestro-flow/agents/team-worker.toml +63 -0
  26. package/maestro-flow/agents/cli-explore-agent.md +187 -0
  27. package/maestro-flow/agents/conceptual-planning-agent.md +245 -0
  28. package/maestro-flow/agents/team-supervisor.md +143 -0
  29. package/maestro-flow/agents/team-worker.md +237 -0
  30. package/maestro-flow/agents/ui-design-agent.md +286 -0
  31. package/maestro-flow/agents/workflow-analyzer.md +115 -0
  32. package/maestro-flow/agents/workflow-codebase-mapper.md +77 -0
  33. package/maestro-flow/agents/workflow-collab-planner.md +143 -0
  34. package/maestro-flow/agents/workflow-debugger.md +103 -0
  35. package/maestro-flow/agents/workflow-executor.md +129 -0
  36. package/maestro-flow/agents/workflow-external-researcher.md +86 -0
  37. package/maestro-flow/agents/workflow-integration-checker.md +83 -0
  38. package/maestro-flow/agents/workflow-nyquist-auditor.md +85 -0
  39. package/maestro-flow/agents/workflow-phase-researcher.md +85 -0
  40. package/maestro-flow/agents/workflow-plan-checker.md +90 -0
  41. package/maestro-flow/agents/workflow-planner.md +195 -0
  42. package/maestro-flow/agents/workflow-project-researcher.md +74 -0
  43. package/maestro-flow/agents/workflow-research-synthesizer.md +70 -0
  44. package/maestro-flow/agents/workflow-reviewer.md +82 -0
  45. package/maestro-flow/agents/workflow-roadmapper.md +81 -0
  46. package/maestro-flow/agents/workflow-verifier.md +120 -0
  47. package/maestro-flow/commands/learn/decompose.md +176 -0
  48. package/maestro-flow/commands/learn/follow.md +167 -0
  49. package/maestro-flow/commands/learn/investigate.md +221 -0
  50. package/maestro-flow/commands/learn/retro.md +303 -0
  51. package/maestro-flow/commands/learn/second-opinion.md +167 -0
  52. package/maestro-flow/commands/lifecycle/amend.md +300 -0
  53. package/maestro-flow/commands/lifecycle/analyze.md +130 -0
  54. package/maestro-flow/commands/lifecycle/brainstorm.md +104 -0
  55. package/maestro-flow/commands/lifecycle/composer.md +354 -0
  56. package/maestro-flow/commands/lifecycle/execute.md +120 -0
  57. package/maestro-flow/commands/lifecycle/fork.md +86 -0
  58. package/maestro-flow/commands/lifecycle/init.md +78 -0
  59. package/maestro-flow/commands/lifecycle/learn.md +140 -0
  60. package/maestro-flow/commands/lifecycle/link-coordinate.md +71 -0
  61. package/maestro-flow/commands/lifecycle/merge.md +61 -0
  62. package/maestro-flow/commands/lifecycle/overlay.md +178 -0
  63. package/maestro-flow/commands/lifecycle/plan.md +154 -0
  64. package/maestro-flow/commands/lifecycle/player.md +404 -0
  65. package/maestro-flow/commands/lifecycle/quick.md +56 -0
  66. package/maestro-flow/commands/lifecycle/roadmap.md +164 -0
  67. package/maestro-flow/commands/lifecycle/ui-design.md +93 -0
  68. package/maestro-flow/commands/lifecycle/update.md +176 -0
  69. package/maestro-flow/commands/lifecycle/verify.md +96 -0
  70. package/maestro-flow/commands/manage/codebase-rebuild.md +75 -0
  71. package/maestro-flow/commands/manage/codebase-refresh.md +57 -0
  72. package/maestro-flow/commands/manage/harvest.md +94 -0
  73. package/maestro-flow/commands/manage/issue-discover.md +77 -0
  74. package/maestro-flow/commands/manage/issue.md +73 -0
  75. package/maestro-flow/commands/manage/knowhow-capture.md +193 -0
  76. package/maestro-flow/commands/manage/knowhow.md +77 -0
  77. package/maestro-flow/commands/manage/learn.md +67 -0
  78. package/maestro-flow/commands/manage/status.md +51 -0
  79. package/maestro-flow/commands/manage/wiki.md +62 -0
  80. package/maestro-flow/commands/milestone/audit.md +68 -0
  81. package/maestro-flow/commands/milestone/complete.md +75 -0
  82. package/maestro-flow/commands/milestone/release.md +96 -0
  83. package/maestro-flow/commands/quality/auto-test.md +128 -0
  84. package/maestro-flow/commands/quality/debug.md +125 -0
  85. package/maestro-flow/commands/quality/refactor.md +55 -0
  86. package/maestro-flow/commands/quality/retrospective.md +78 -0
  87. package/maestro-flow/commands/quality/review.md +114 -0
  88. package/maestro-flow/commands/quality/sync.md +51 -0
  89. package/maestro-flow/commands/quality/test.md +107 -0
  90. package/maestro-flow/commands/spec/add.md +49 -0
  91. package/maestro-flow/commands/spec/load.md +51 -0
  92. package/maestro-flow/commands/spec/remove.md +51 -0
  93. package/maestro-flow/commands/spec/setup.md +51 -0
  94. package/maestro-flow/commands/wiki/connect.md +62 -0
  95. package/maestro-flow/commands/wiki/digest.md +69 -0
  96. package/package.json +1 -1
@@ -0,0 +1,303 @@
1
+ ---
2
+ name: learn-retro
3
+ description: Retrospective of git activity and decision quality
4
+ argument-hint: "[--lens git|decision|all] [--days N] [--author <name>] [--area <path>] [--phase N] [--tag <tag>] [--id <id>] [--compare]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ - Grep
11
+ - Agent
12
+ - AskUserQuestion
13
+ ---
14
+ <purpose>
15
+ Unified retrospective that combines git activity analysis and decision quality evaluation into a single command with lens-based selection. Works on raw git history and wiki/spec data — does not require completed phase artifacts (unlike `quality-retrospective`).
16
+
17
+ Two lenses, usable independently or together:
18
+ - **git**: Commit metrics, session detection, per-author breakdown, file hotspots, trend tracking
19
+ - **decision**: Decision tracing across wiki/specs/git, multi-perspective evaluation, lifecycle classification
20
+
21
+ All insights persist to `.workflow/learning/lessons.jsonl` for cross-session queryability via `manage-learn`.
22
+ </purpose>
23
+
24
+ <context>
25
+ Arguments: $ARGUMENTS
26
+
27
+ **Lens selection:**
28
+ - `--lens git` — Git activity retrospective only
29
+ - `--lens decision` — Decision evaluation only
30
+ - `--lens all` — Both lenses (default)
31
+
32
+ **Git lens flags:**
33
+ - `--days N` — Time window in days (default: 7)
34
+ - `--author <name>` — Filter commits by author name (substring match)
35
+ - `--area <path>` — Scope to files under a specific directory
36
+ - `--compare` — Compare against the previous retro report if one exists
37
+
38
+ **Decision lens flags:**
39
+ - `--phase N` — Decisions from phase N's context and related specs
40
+ - `--tag <tag>` — Decisions tagged with specific tag in wiki/specs
41
+ - `--id <id>` — Single decision by wiki ID or lessons.jsonl INS-id
42
+
43
+ **Storage written:**
44
+ - `.workflow/learning/retro-{YYYY-MM-DD}.md` — Unified human-readable report
45
+ - `.workflow/learning/retro-{YYYY-MM-DD}.json` — Structured metrics (machine-readable)
46
+ - `.workflow/learning/lessons.jsonl` — Appended insights (source: "retro-git" or "retro-decision")
47
+ - `.workflow/learning/learning-index.json` — Updated index
48
+
49
+ **Storage read:**
50
+ - `.workflow/state.json` — Current phase context (optional)
51
+ - `.workflow/learning/retro-*.json` — Prior retro for trend comparison
52
+ - `.workflow/learning/lessons.jsonl` — Existing insights for dedup
53
+ - `maestro wiki list --type spec --json` — Spec entries (decision lens)
54
+ - `.workflow/specs/architecture-constraints.md` — Documented architectural decisions (decision lens)
55
+ - Phase context with Locked/Free/Deferred decisions (decision lens) — resolve via `state.json.artifacts[]` scratch paths
56
+ </context>
57
+
58
+ <execution>
59
+
60
+ ### Stage 1: Parse Arguments & Select Lenses
61
+ - Parse `--lens` flag: `git`, `decision`, or `all` (default: `all`)
62
+ - Extract lens-specific flags
63
+ - Check `.workflow/learning/` exists; bootstrap if missing
64
+
65
+ Display banner:
66
+ ```
67
+ ============================================================
68
+ LEARN RETRO
69
+ ============================================================
70
+ Lens: {git | decision | all}
71
+ Scope: {days/author/area for git} {phase/tag/id for decision}
72
+ ```
73
+
74
+ ---
75
+
76
+ ### Stage 2: Git Lens (skip if --lens decision)
77
+
78
+ #### 2a: Gather Raw Data (parallel git commands)
79
+ Run ALL these git commands in parallel:
80
+
81
+ ```bash
82
+ # Commit stats with author, timestamp, subject, files changed
83
+ git log --since="<start-date>T00:00:00" --format="%H|%aN|%ae|%ai|%s" --shortstat
84
+
85
+ # Per-commit numstat for test vs production LOC split
86
+ git log --since="<start-date>T00:00:00" --format="COMMIT:%H|%aN" --numstat
87
+
88
+ # Timestamps for session detection (sorted)
89
+ git log --since="<start-date>T00:00:00" --format="%at|%aN|%ai|%s" | sort -n
90
+
91
+ # File hotspots (most frequently changed files)
92
+ git log --since="<start-date>T00:00:00" --format="" --name-only | grep -v '^$' | sort | uniq -c | sort -rn | head -20
93
+
94
+ # Per-author commit counts
95
+ git shortlog --since="<start-date>T00:00:00" -sn --no-merges
96
+ ```
97
+
98
+ Apply `--author` and `--area` filters if provided.
99
+
100
+ #### 2b: Compute Metrics
101
+ | Metric | Computation |
102
+ |--------|-------------|
103
+ | Commits | Count of non-merge commits |
104
+ | Contributors | Unique author count |
105
+ | Total insertions / deletions | Sum from shortstat |
106
+ | Net LOC | insertions - deletions |
107
+ | Test LOC (insertions) | Sum insertions for test files from numstat |
108
+ | Test ratio | test_insertions / total_insertions x 100% |
109
+ | Churn rate | Files changed >2 times / total unique files |
110
+ | Active days | Distinct dates with commits |
111
+
112
+ #### 2c: Detect Work Sessions
113
+ Cluster commits by >2hr gaps in timestamps:
114
+ - Per session: start time, end time, duration, commit count, primary focus area
115
+ - Compute: total sessions, avg session duration, avg LOC/session-hour
116
+
117
+ #### 2d: Per-Author Breakdown
118
+ For each author:
119
+ - Commit count, LOC added/removed, top 3 file areas
120
+ - Test ratio (their test LOC / their total LOC)
121
+ - Session count and patterns
122
+
123
+ #### 2e: Trend Comparison (if --compare or prior report exists)
124
+ - Find most recent `.workflow/learning/retro-*.json`
125
+ - Compute deltas: commits, LOC, test ratio, churn rate, session count
126
+ - Flag significant changes (>20% delta) as trend highlights
127
+
128
+ #### 2f: Distill Git Insights
129
+ - **High churn files** (changed >3 times): instability signal
130
+ - **Low test ratio areas** (<20%): testing gap
131
+ - **Session patterns**: scattered vs deep sessions
132
+ - **Area drift**: commits not aligned with current roadmap phase
133
+
134
+ Each insight: title, description, category (pattern/antipattern/technique), tags, confidence.
135
+
136
+ ---
137
+
138
+ ### Stage 3: Decision Lens (skip if --lens git)
139
+
140
+ #### 3a: Collect Decisions (parallel)
141
+ ```bash
142
+ maestro wiki search "decision" --json
143
+ maestro wiki list --type spec --json
144
+ git log --oneline --all --grep="decision\|chose\|decided\|architecture" -20
145
+ ```
146
+
147
+ Also read:
148
+ - `.workflow/specs/architecture-constraints.md` — grep for `<spec-entry category="arch"` blocks
149
+ - Phase context files — resolve via `state.json.artifacts[]` scratch paths — scan for "Locked:", "Deferred:" sections
150
+ - `.workflow/learning/lessons.jsonl` — filter `category == "decision"`
151
+
152
+ Apply scope filter (--phase, --tag, --id).
153
+
154
+ #### 3b: Build Decision Registry
155
+ Per decision:
156
+ ```json
157
+ {
158
+ "id": "source id",
159
+ "title": "what was decided",
160
+ "source": "wiki|spec|phase-context|lesson|git",
161
+ "date": "when decided",
162
+ "rationale": "why",
163
+ "alternatives": "what was considered",
164
+ "phase": "which phase",
165
+ "implementation_evidence": ["file paths from git"]
166
+ }
167
+ ```
168
+
169
+ #### 3c: Multi-Perspective Evaluation
170
+ Spawn 3 Agents in a single message:
171
+
172
+ **Agent 1 — Technical Soundness:**
173
+ - Does implementation match stated intent?
174
+ - Has technical context changed since decision was made?
175
+ - Grade: sound / degraded / violated
176
+
177
+ **Agent 2 — Cost Assessment:**
178
+ - What complexity did this decision add?
179
+ - Is it creating coupling or tech debt?
180
+ - Grade: low-cost / acceptable / expensive / debt-creating
181
+
182
+ **Agent 3 — Alternative Hindsight:**
183
+ - With what we know now, was this the right call?
184
+ - Would reversing be feasible?
185
+ - Grade: confirmed / questionable / should-revisit
186
+
187
+ #### 3d: Classify Decision Lifecycle
188
+ | Status | Criteria |
189
+ |--------|---------|
190
+ | **Validated** | Sound + Low/Acceptable cost + Confirmed |
191
+ | **Aging** | Sound but Expensive + Confirmed |
192
+ | **Questionable** | Degraded or Violated + Questionable |
193
+ | **Stale** | Any + Should-revisit |
194
+ | **Reversed** | Code contradicts the decision |
195
+
196
+ #### 3e: Generate Recommendations
197
+ - **Aging**: flag for tech debt review
198
+ - **Questionable**: create issue for investigation
199
+ - **Stale**: suggest decision refresh
200
+ - **Reversed**: suggest documenting the reversal
201
+
202
+ ---
203
+
204
+ ### Stage 4: Unified Report
205
+
206
+ Write `.workflow/learning/retro-{date}.md`:
207
+
208
+ ```markdown
209
+ # Retrospective: {date}
210
+ **Lenses:** {active lenses} | **Period:** {days}d
211
+
212
+ ## Git Activity (if git lens active)
213
+ ### Metrics
214
+ | Metric | Value | Trend |
215
+ |--------|-------|-------|
216
+ | Commits | N | +/-% |
217
+ | ...
218
+
219
+ ### Work Sessions
220
+ {session timeline}
221
+
222
+ ### File Hotspots
223
+ {top 10 most-changed files}
224
+
225
+ ### Per-Author
226
+ {author breakdown table}
227
+
228
+ ## Decision Health (if decision lens active)
229
+ ### Dashboard
230
+ | Status | Count | Decisions |
231
+ |--------|-------|-----------|
232
+ | Validated | N | {list} |
233
+ | Aging | N | {list} |
234
+ | ...
235
+
236
+ ### Per-Decision Evaluation
237
+ {detailed evaluations}
238
+
239
+ ## Combined Insights
240
+ {merged insights from both lenses, deduplicated}
241
+
242
+ ## Recommended Actions
243
+ 1. {action}: {reason}
244
+ ```
245
+
246
+ Write `.workflow/learning/retro-{date}.json` with structured data.
247
+
248
+ ---
249
+
250
+ ### Stage 5: Persist
251
+ 1. Write report files
252
+ 2. Append insights to `lessons.jsonl`:
253
+ - Git insights: `source: "retro-git"`, `category` per insight type
254
+ - Decision insights: `source: "retro-decision"`, `category: "decision"`
255
+ - Stable INS-id from `hash(lens + metric_or_decision + date)`
256
+ 3. Update `learning-index.json`
257
+ 4. Display summary
258
+
259
+ **Next-step routing:**
260
+ - Browse insights → `/manage-learn list --tag retro`
261
+ - Deep dive on high-churn file → `/learn-follow <path>`
262
+ - Fix test gaps → `/quality-auto-test <area>`
263
+ - Create issue for questionable decision → `/manage-issue create ...`
264
+ - Investigate stale decision → `/learn-investigate <question>`
265
+ - Full phase retrospective → `/quality-retrospective`
266
+ </execution>
267
+
268
+ <error_codes>
269
+ | Code | Severity | Condition | Recovery |
270
+ |------|----------|-----------|----------|
271
+ | E001 | error | Not inside a git repository (git lens) | Navigate to a git repo directory |
272
+ | E002 | error | No commits found in time window (git lens) | Increase --days or check filters |
273
+ | E003 | error | No decisions found in any source (decision lens) | Check wiki/specs content, or provide --id |
274
+ | E004 | error | --id not found in wiki or lessons (decision lens) | Verify the decision ID exists |
275
+ | W001 | warning | `.workflow/learning/` not found, bootstrapping | Auto-created; proceed normally |
276
+ | W002 | warning | No prior retro report for comparison | Skip trend section; first retro establishes baseline |
277
+ | W003 | warning | One perspective agent failed — partial evaluation (decision lens) | Proceed with available perspectives |
278
+ | W004 | warning | No git implementation evidence for a decision | Evaluation is theoretical only |
279
+ | W005 | warning | Phase context files not found (decision lens) | Skip phase-context decisions |
280
+ </error_codes>
281
+
282
+ <success_criteria>
283
+ - [ ] Lens selection parsed correctly (git / decision / all)
284
+ - [ ] Git lens (if active):
285
+ - [ ] All git commands executed successfully
286
+ - [ ] Metrics computed: commits, LOC, test ratio, churn rate, sessions
287
+ - [ ] Sessions detected with >2hr gap clustering
288
+ - [ ] Per-author breakdown generated
289
+ - [ ] Trend comparison computed if prior report exists
290
+ - [ ] At least 1 actionable insight distilled
291
+ - [ ] Decision lens (if active):
292
+ - [ ] Decisions collected from available sources
293
+ - [ ] Scope filter applied correctly
294
+ - [ ] 3 perspective agents spawned in parallel
295
+ - [ ] Each decision classified by lifecycle status
296
+ - [ ] Recommendations generated for non-Validated decisions
297
+ - [ ] Unified report written to `retro-{date}.md`
298
+ - [ ] Structured data written to `retro-{date}.json`
299
+ - [ ] `lessons.jsonl` appended with insights (stable INS-ids)
300
+ - [ ] `learning-index.json` updated
301
+ - [ ] No files modified outside `.workflow/learning/`
302
+ - [ ] Summary displayed with next-step routing
303
+ </success_criteria>
@@ -0,0 +1,167 @@
1
+ ---
2
+ name: learn-second-opinion
3
+ description: Get alternative perspectives — review, challenge, or consult
4
+ argument-hint: "<target> [--mode review|challenge|consult]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ - Grep
11
+ - Agent
12
+ - AskUserQuestion
13
+ ---
14
+ <purpose>
15
+ Structured second-opinion workflow for code, decisions, or plans. Three modes inspired by gstack `/codex`:
16
+
17
+ - **review** (default): 3 parallel agents with distinct personas (pragmatist, purist, strategist) independently assess the target
18
+ - **challenge**: single adversarial agent that tries to break the approach, find hidden assumptions, and propose alternatives
19
+ - **consult**: interactive Q&A mode where the agent studies the target and answers your questions
20
+
21
+ Decoupled from the phase/execution lifecycle — can be invoked on any piece of code or knowledge at any time. Findings persist to `lessons.jsonl`.
22
+ </purpose>
23
+
24
+ <context>
25
+ Arguments: $ARGUMENTS
26
+
27
+ **Target resolution (auto-detected):**
28
+ - File path → analyze that file's content
29
+ - Wiki ID (`<type>-<slug>`) → fetch via `maestro wiki get`
30
+ - `HEAD` or `staged` → analyze current git diff (`git diff HEAD` or `git diff --staged`)
31
+ - Phase number (e.g., `3`) → resolve via `state.json.artifacts[]` to find plan in scratch dir
32
+
33
+ **Flags:**
34
+ - `--mode review` — 3-persona parallel review (default)
35
+ - `--mode challenge` — Adversarial single-agent analysis
36
+ - `--mode consult` — Interactive Q&A session
37
+
38
+ **Storage written:**
39
+ - `.workflow/learning/opinion-{slug}-{YYYY-MM-DD}.md` — Opinion report
40
+ - `.workflow/learning/lessons.jsonl` — New insights from analysis (source: "second-opinion")
41
+ - `.workflow/learning/learning-index.json` — Updated index
42
+
43
+ **Storage read:**
44
+ - Target content (file, wiki entry, diff, or plan)
45
+ - `.workflow/specs/` — Project conventions for context
46
+ - `maestro wiki search` — Related knowledge entries
47
+ - `.workflow/learning/lessons.jsonl` — Prior insights about the topic
48
+ </context>
49
+
50
+ <execution>
51
+
52
+ ### Stage 1: Resolve Target
53
+ - File path: Read the file
54
+ - Wiki ID: `maestro wiki get <id>`
55
+ - `HEAD`: `git diff HEAD` (unstaged + staged changes)
56
+ - `staged`: `git diff --staged`
57
+ - Phase N: Resolve via `state.json.artifacts.find(a => a.type === 'plan' && a.phase === N)` → read `.workflow/{artifact.path}/plan.json`
58
+ - If unresolvable, AskUserQuestion for clarification
59
+
60
+ ### Stage 2: Load Context
61
+ - Read relevant specs: `Skill({ skill: "spec-load" })` silently to get project conventions
62
+ - Search wiki: `maestro wiki search "<target topic>"` for related entries (top 5)
63
+ - Search lessons: grep `lessons.jsonl` for entries related to the target area
64
+ - Build context brief: target content + conventions + related knowledge
65
+
66
+ ### Stage 3: Execute Mode
67
+
68
+ #### Mode: review (default)
69
+ Spawn 3 Agents in a single message with distinct personas:
70
+
71
+ **Agent 1 — Pragmatist:**
72
+ - Focus: simplicity, YAGNI, maintenance cost, readability
73
+ - Question: "Is this the simplest thing that could work? What's the maintenance burden?"
74
+ - Evaluates: complexity score, abstraction depth, dependency count
75
+
76
+ **Agent 2 — Purist:**
77
+ - Focus: correctness, type safety, edge cases, error handling
78
+ - Question: "What assumptions can be violated? Where are the edge cases?"
79
+ - Evaluates: error paths covered, type completeness, invariant preservation
80
+
81
+ **Agent 3 — Strategist:**
82
+ - Focus: scalability, extensibility, architecture alignment
83
+ - Question: "Does this support future growth? Does it fit the overall architecture?"
84
+ - Evaluates: coupling, cohesion, architecture constraint compliance
85
+
86
+ Each agent returns:
87
+ ```json
88
+ {
89
+ "persona": "pragmatist|purist|strategist",
90
+ "verdict": "approve|concern|reject",
91
+ "confidence": "high|medium|low",
92
+ "findings": [{ "severity": "high|medium|low", "description": "...", "location": "file:line", "suggestion": "..." }],
93
+ "summary": "one paragraph assessment"
94
+ }
95
+ ```
96
+
97
+ #### Mode: challenge
98
+ Spawn 1 Agent as an adversarial reviewer:
99
+
100
+ - Try to find the weakest assumption in the approach
101
+ - Propose a concrete scenario that breaks the current implementation
102
+ - Identify the single biggest risk
103
+ - Suggest an alternative approach and argue why it might be better
104
+ - Apply forcing questions:
105
+ - "What assumption would invalidate this entire approach?"
106
+ - "What's the simplest thing that breaks this?"
107
+ - "If you had to rewrite this in 6 months, what would you regret?"
108
+ - "What's the implicit contract that isn't enforced?"
109
+
110
+ #### Mode: consult
111
+ Interactive loop:
112
+ 1. Agent studies the target content thoroughly
113
+ 2. Display: "Target loaded. What would you like to know?"
114
+ 3. AskUserQuestion for the first question
115
+ 4. Agent answers with code references and evidence
116
+ 5. Loop: AskUserQuestion for follow-up or "done" to exit
117
+ 6. On exit, compile all Q&A into the report
118
+
119
+ ### Stage 4: Synthesize
120
+ Across all perspectives (or from single agent in challenge/consult):
121
+ - **Points of agreement**: findings all personas share
122
+ - **Points of disagreement**: where personas diverge (with reasoning)
123
+ - **Verdict**: combined assessment with confidence level
124
+ - **Top 3 recommendations**: prioritized by impact
125
+
126
+ ### Stage 5: Persist & Report
127
+ 1. Write `.workflow/learning/opinion-{slug}-{date}.md`:
128
+ - Target summary
129
+ - Per-persona findings (review) / adversarial analysis (challenge) / Q&A transcript (consult)
130
+ - Synthesis: agreements, disagreements, verdict
131
+ - Recommendations
132
+ 2. Append non-trivial findings to `lessons.jsonl`:
133
+ - `source: "second-opinion"`, `category: "pattern"` or `"antipattern"` or `"decision"`
134
+ - Tags: `["second-opinion", "{mode}", "{target-slug}"]`
135
+ 3. Update `learning-index.json`
136
+ 4. Display summary with verdict and recommendations
137
+
138
+ **Next-step routing:**
139
+ - Create issue for a finding → `/manage-issue create <description>`
140
+ - Decompose patterns found → `/learn-decompose <path>`
141
+ - Follow-along on the code → `/learn-follow <path>`
142
+ </execution>
143
+
144
+ <error_codes>
145
+ | Code | Severity | Condition | Recovery |
146
+ |------|----------|-----------|----------|
147
+ | E001 | error | Target not resolvable (file/wiki/diff/plan not found) | Verify target argument, provide correct path or ID |
148
+ | E002 | error | Unknown --mode value | Use: review, challenge, or consult |
149
+ | W001 | warning | One review agent failed — partial perspectives | Proceed with available agents, note incomplete coverage |
150
+ | W002 | warning | No related wiki entries found for context | Proceed without wiki context |
151
+ | W003 | warning | Git diff empty (no changes) for HEAD/staged target | Nothing to review; suggest using a file path instead |
152
+ </error_codes>
153
+
154
+ <success_criteria>
155
+ - [ ] Target resolved and content loaded
156
+ - [ ] Context gathered (specs, wiki, lessons)
157
+ - [ ] Mode executed correctly:
158
+ - review: 3 agents spawned in parallel, all returned findings
159
+ - challenge: adversarial analysis completed with forcing questions
160
+ - consult: interactive Q&A loop completed
161
+ - [ ] Synthesis produced with agreements, disagreements, verdict
162
+ - [ ] Report written to `opinion-{slug}-{date}.md`
163
+ - [ ] Non-trivial findings appended to `lessons.jsonl`
164
+ - [ ] `learning-index.json` updated
165
+ - [ ] No files modified outside `.workflow/learning/`
166
+ - [ ] Summary displayed with verdict and next-step routing
167
+ </success_criteria>