learnship 1.9.24 → 2.0.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 (54) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/.cursor-plugin/plugin.json +2 -2
  3. package/README.md +82 -25
  4. package/SKILL.md +17 -0
  5. package/agents/learnship-challenger.md +96 -0
  6. package/agents/learnship-code-reviewer.md +109 -0
  7. package/agents/learnship-executor.md +15 -0
  8. package/agents/learnship-ideation-agent.md +83 -0
  9. package/agents/learnship-solution-writer.md +140 -0
  10. package/bin/install.js +4 -0
  11. package/commands/learnship/challenge.md +22 -0
  12. package/commands/learnship/compound.md +22 -0
  13. package/commands/learnship/guard.md +21 -0
  14. package/commands/learnship/ideate.md +23 -0
  15. package/commands/learnship/review.md +23 -0
  16. package/commands/learnship/ship.md +21 -0
  17. package/commands/learnship/sync-docs.md +21 -0
  18. package/cursor-rules/learnship.mdc +7 -0
  19. package/gemini-extension.json +2 -2
  20. package/learnship/agents/challenger.md +52 -0
  21. package/learnship/agents/code-reviewer.md +81 -0
  22. package/learnship/agents/executor.md +15 -0
  23. package/learnship/agents/ideation-agent.md +54 -0
  24. package/learnship/agents/plan-checker.md +95 -0
  25. package/learnship/agents/solution-writer.md +64 -0
  26. package/learnship/references/model-profiles.md +41 -33
  27. package/learnship/references/planning-config.md +49 -0
  28. package/learnship/references/solution-schema.md +159 -0
  29. package/learnship/templates/agents.md +6 -1
  30. package/learnship/workflows/challenge.md +189 -0
  31. package/learnship/workflows/complete-milestone.md +9 -0
  32. package/learnship/workflows/compound.md +305 -0
  33. package/learnship/workflows/debug.md +7 -0
  34. package/learnship/workflows/discuss-milestone.md +5 -0
  35. package/learnship/workflows/execute-phase.md +24 -0
  36. package/learnship/workflows/guard.md +164 -0
  37. package/learnship/workflows/help.md +14 -2
  38. package/learnship/workflows/ideate.md +182 -0
  39. package/learnship/workflows/knowledge-base.md +8 -0
  40. package/learnship/workflows/ls.md +7 -3
  41. package/learnship/workflows/milestone-retrospective.md +45 -0
  42. package/learnship/workflows/next.md +3 -2
  43. package/learnship/workflows/plan-phase.md +23 -0
  44. package/learnship/workflows/progress.md +9 -3
  45. package/learnship/workflows/review.md +226 -0
  46. package/learnship/workflows/set-profile.md +6 -6
  47. package/learnship/workflows/settings.md +8 -8
  48. package/learnship/workflows/ship.md +219 -0
  49. package/learnship/workflows/sync-docs.md +159 -0
  50. package/learnship/workflows/validate-phase.md +4 -4
  51. package/learnship/workflows/verify-work.md +3 -0
  52. package/package.json +1 -1
  53. package/references/model-profiles.md +41 -33
  54. package/templates/config.json +13 -1
@@ -0,0 +1,64 @@
1
+ # Solution Writer Persona
2
+
3
+ You are now operating as the **learnship solution writer**. Your job is to analyze a recently solved problem or learned pattern and produce a structured solution document for `.planning/solutions/`.
4
+
5
+ You extract problem/symptoms/root-cause/solution/prevention from conversation history, classify the problem type, and write a searchable document with YAML frontmatter.
6
+
7
+ ## Writing Principles
8
+
9
+ **Capture while fresh** — the best time to document a solution is immediately after solving it. Context decays fast.
10
+
11
+ **Two tracks** — bugs (defects that were diagnosed and fixed) and knowledge (practices, patterns, workflow improvements). The problem_type determines the track.
12
+
13
+ **Structured for search** — YAML frontmatter with standardized fields enables future plan-phase searches to find prior art before reinventing solutions.
14
+
15
+ **Minimal but complete** — capture enough that someone encountering the same problem can solve it in minutes, not hours. No padding.
16
+
17
+ ## Before Writing
18
+
19
+ Load context:
20
+ 1. Read `$LEARNSHIP_DIR/references/solution-schema.md` for field definitions and category mapping
21
+ 2. Read conversation history for the problem and solution
22
+ 3. Search `.planning/solutions/` for existing related docs
23
+
24
+ ## Classification
25
+
26
+ Determine the **track** from the problem_type:
27
+
28
+ **Bug track:** `build_error`, `test_failure`, `runtime_error`, `performance_issue`, `database_issue`, `security_issue`, `ui_bug`, `integration_issue`, `logic_error`
29
+
30
+ **Knowledge track:** `best_practice`, `documentation_gap`, `workflow_issue`, `developer_experience`
31
+
32
+ Map problem_type to category directory:
33
+ - `build_error` → `build-errors/`
34
+ - `test_failure` → `test-failures/`
35
+ - `runtime_error` → `runtime-errors/`
36
+ - `performance_issue` → `performance-issues/`
37
+ - `database_issue` → `database-issues/`
38
+ - `security_issue` → `security-issues/`
39
+ - `ui_bug` → `ui-bugs/`
40
+ - `integration_issue` → `integration-issues/`
41
+ - `logic_error` → `logic-errors/`
42
+ - `best_practice` → `best-practices/`
43
+ - `workflow_issue` → `workflow-issues/`
44
+ - `developer_experience` → `developer-experience/`
45
+ - `documentation_gap` → `documentation-gaps/`
46
+
47
+ ## Output Format
48
+
49
+ Generate a filename: `[sanitized-problem-slug]-[YYYY-MM-DD].md`
50
+
51
+ Write the document using the appropriate track template from the solution schema reference. Validate all YAML frontmatter fields against allowed enum values.
52
+
53
+ ## Overlap Detection
54
+
55
+ When existing solutions are found, assess overlap across five dimensions:
56
+ 1. Problem statement
57
+ 2. Root cause
58
+ 3. Solution approach
59
+ 4. Referenced files
60
+ 5. Prevention rules
61
+
62
+ - **High** (4-5 match): update the existing doc instead of creating a duplicate
63
+ - **Moderate** (2-3 match): create new doc, note overlap
64
+ - **Low** (0-1 match): create new doc normally
@@ -1,40 +1,49 @@
1
1
  # Model Profiles
2
2
 
3
- Model profiles control which AI model each learnship agent uses. This allows balancing quality vs token spend.
3
+ Model profiles control which AI model tier each learnship agent uses. Profiles are platform-agnostic they use three tiers (`large`, `medium`, `small`) that map to specific models depending on your platform.
4
4
 
5
5
  ## Profile Definitions
6
6
 
7
7
  | Agent | `quality` | `balanced` | `budget` |
8
8
  |-------|-----------|------------|----------|
9
- | planner | opus | opus | sonnet |
10
- | roadmapper | opus | sonnet | sonnet |
11
- | executor | opus | sonnet | sonnet |
12
- | phase-researcher | opus | sonnet | haiku |
13
- | project-researcher | opus | sonnet | haiku |
14
- | research-synthesizer | sonnet | sonnet | haiku |
15
- | debugger | opus | sonnet | sonnet |
16
- | codebase-mapper | sonnet | haiku | haiku |
17
- | verifier | sonnet | sonnet | haiku |
18
- | plan-checker | sonnet | sonnet | haiku |
19
- | integration-checker | sonnet | sonnet | haiku |
20
- | nyquist-auditor | sonnet | sonnet | haiku |
9
+ | planner | large | large | medium |
10
+ | executor | large | medium | medium |
11
+ | phase-researcher | large | medium | small |
12
+ | debugger | large | medium | medium |
13
+ | verifier | medium | medium | small |
14
+ | plan-checker | medium | medium | small |
15
+ | solution-writer | medium | medium | small |
16
+ | code-reviewer | large | medium | medium |
17
+ | challenger | large | medium | medium |
18
+ | ideation-agent | large | medium | small |
19
+
20
+ ## Platform Model Resolution
21
+
22
+ Each tier resolves to the best available model on your platform:
23
+
24
+ | Tier | Anthropic (Claude Code) | Google (Gemini CLI) | OpenAI (Codex CLI) | Windsurf / Cursor / OpenCode |
25
+ |------|------------------------|--------------------|--------------------|-----------------------------|
26
+ | `large` | Claude Opus 4.6 | Gemini 3.1 Pro | GPT-5.4 | Uses platform default (best available) |
27
+ | `medium` | Claude Sonnet 4.6 | Gemini 3.1 Flash | GPT-5.4-mini | Uses platform default |
28
+ | `small` | Claude Haiku 4.5 | Gemini 3.1 Flash-Lite | GPT-5.4-nano | Uses platform default |
29
+
30
+ > **Note:** Windsurf, Cursor, and OpenCode do not expose per-agent model selection. The profile tiers are still useful — they signal the *intended complexity* of each agent's task, and workflows will adapt their prompting strategy accordingly (e.g., more explicit instructions for `small`-tier agents).
21
31
 
22
32
  ## Profile Philosophy
23
33
 
24
- **quality** - Maximum reasoning power
25
- - Opus for all decision-making agents
26
- - Sonnet for read-only verification
34
+ **quality** Maximum reasoning power
35
+ - `large` for all decision-making agents (planner, researcher, reviewer, challenger)
36
+ - `medium` for verification (needs reasoning, not just pattern matching)
27
37
  - Use when: quota available, critical architecture work
28
38
 
29
- **balanced** (default) - Smart allocation
30
- - Opus only for planning (where architecture decisions happen)
31
- - Sonnet for execution and research (follows explicit instructions)
32
- - Sonnet for verification (needs reasoning, not just pattern matching)
39
+ **balanced** (default) Smart allocation
40
+ - `large` only for planning (where architecture decisions happen)
41
+ - `medium` for execution, research, and verification
33
42
  - Use when: normal development, good balance of quality and cost
34
43
 
35
- **budget** - Minimal Opus usage
36
- - Sonnet for anything that writes code
37
- - Haiku for research and verification
44
+ **budget** Minimal large-model usage
45
+ - `medium` for anything that writes code
46
+ - `small` for research and verification
38
47
  - Use when: conserving quota, high-volume work, less critical phases
39
48
 
40
49
  ## Resolution Logic
@@ -45,7 +54,8 @@ Resolution order:
45
54
  1. Read .planning/config.json
46
55
  2. Check model_overrides for agent-specific override
47
56
  3. If no override, look up agent in profile table
48
- 4. Apply the resolved profile when adopting the agent persona
57
+ 4. Map the tier (large/medium/small) to the platform's actual model
58
+ 5. Apply the resolved model when adopting the agent persona
49
59
  ```
50
60
 
51
61
  ## Per-Agent Overrides
@@ -56,13 +66,13 @@ Override specific agents without changing the entire profile:
56
66
  {
57
67
  "model_profile": "balanced",
58
68
  "model_overrides": {
59
- "executor": "opus",
60
- "planner": "haiku"
69
+ "executor": "large",
70
+ "planner": "small"
61
71
  }
62
72
  }
63
73
  ```
64
74
 
65
- Overrides take precedence over the profile. Valid values: `opus`, `sonnet`, `haiku`.
75
+ Overrides take precedence over the profile. Valid values: `large`, `medium`, `small`.
66
76
 
67
77
  ## Switching Profiles
68
78
 
@@ -77,14 +87,12 @@ Per-project default: Set in `.planning/config.json`:
77
87
 
78
88
  ## Design Rationale
79
89
 
80
- **Why Opus for the planner?**
90
+ **Why `large` for the planner?**
81
91
  Planning involves architecture decisions, goal decomposition, and task design. This is where model quality has the highest impact.
82
92
 
83
- **Why Sonnet for the executor?**
93
+ **Why `medium` for the executor?**
84
94
  Executors follow explicit PLAN.md instructions. The plan already contains the reasoning; execution is implementation.
85
95
 
86
- **Why Sonnet (not Haiku) for verifiers in balanced?**
87
- Verification requires goal-backward reasoning — checking if code *delivers* what the phase promised, not just pattern matching. Sonnet handles this well; Haiku may miss subtle gaps.
96
+ **Why `medium` (not `small`) for verifiers in balanced?**
97
+ Verification requires goal-backward reasoning — checking if code *delivers* what the phase promised, not just pattern matching. Medium-tier models handle this well; small-tier models may miss subtle gaps.
88
98
 
89
- **Why Haiku for the codebase-mapper?**
90
- Read-only exploration and pattern extraction. No reasoning required, just structured output from file contents.
@@ -181,4 +181,53 @@ Squash merge is recommended — keeps main branch history clean while preserving
181
181
 
182
182
  </branching_strategy_behavior>
183
183
 
184
+ <v2_config_options>
185
+
186
+ ## v2.0.0 Configuration Options
187
+
188
+ These options were added in v2.0.0 to support the new compounding, review, ship, and safety workflows.
189
+
190
+ | Option | Default | Description |
191
+ |--------|---------|-------------|
192
+ | `test_first` | `false` | Enable TDD mode — red-green-refactor cycle in executor |
193
+ | `workflow.review` | `true` | Enable the `/review` code review workflow |
194
+ | `workflow.solutions_search` | `true` | Search `.planning/solutions/` for prior art during plan-phase |
195
+ | `review.auto_after_verify` | `false` | Automatically run `/review` after verify-work passes |
196
+ | `ship.auto_test` | `true` | Run tests before shipping |
197
+ | `ship.conventional_commits` | `true` | Use conventional commit format in `/ship` |
198
+ | `ship.pr_template` | `true` | Auto-generate PR description in `/ship` |
199
+
200
+ ### Example config.json with v2 options
201
+
202
+ ```json
203
+ {
204
+ "mode": "interactive",
205
+ "model_profile": "balanced",
206
+ "learning_mode": "auto",
207
+ "parallelization": false,
208
+ "test_first": false,
209
+ "workflow": {
210
+ "review": true,
211
+ "solutions_search": true,
212
+ "research": true,
213
+ "plan_check": true,
214
+ "verifier": true
215
+ },
216
+ "review": {
217
+ "auto_after_verify": false
218
+ },
219
+ "ship": {
220
+ "auto_test": true,
221
+ "conventional_commits": true,
222
+ "pr_template": true
223
+ },
224
+ "planning": {
225
+ "commit_docs": true,
226
+ "search_gitignored": false
227
+ }
228
+ }
229
+ ```
230
+
231
+ </v2_config_options>
232
+
184
233
  </planning_config>
@@ -0,0 +1,159 @@
1
+ # Solution Schema Reference
2
+
3
+ Canonical contract for `.planning/solutions/` frontmatter written by the `/compound` workflow.
4
+
5
+ Use this file as the quick reference for:
6
+ - Required fields
7
+ - Enum values
8
+ - Validation expectations
9
+ - Category mapping
10
+ - Track classification (bug vs knowledge)
11
+
12
+ ## Tracks
13
+
14
+ The `problem_type` determines which **track** applies. Each track has different required and optional fields.
15
+
16
+ | Track | problem_types | Description |
17
+ |-------|--------------|-------------|
18
+ | **Bug** | `build_error`, `test_failure`, `runtime_error`, `performance_issue`, `database_issue`, `security_issue`, `ui_bug`, `integration_issue`, `logic_error` | Defects and failures that were diagnosed and fixed |
19
+ | **Knowledge** | `best_practice`, `documentation_gap`, `workflow_issue`, `developer_experience` | Practices, patterns, workflow improvements, and documentation |
20
+
21
+ ## Required Fields (both tracks)
22
+
23
+ - **title**: Clear problem/learning title
24
+ - **date**: ISO date in `YYYY-MM-DD`
25
+ - **category**: Category directory from mapping below
26
+ - **module**: Module or area affected
27
+ - **problem_type**: One of the values listed in the Tracks table above
28
+ - **severity**: One of `critical`, `high`, `medium`, `low`
29
+
30
+ ## Optional Fields (both tracks)
31
+
32
+ - **tags**: Search keywords, lowercase and hyphen-separated
33
+ - **last_updated**: ISO date `YYYY-MM-DD` — added when updating an existing doc
34
+
35
+ ## Bug Track Additional Fields
36
+
37
+ Optional but recommended:
38
+ - **symptoms**: YAML array with 1-5 observable symptoms (errors, broken behavior)
39
+ - **root_cause**: Brief description of the underlying cause
40
+ - **resolution_type**: One of `code_fix`, `migration`, `config_change`, `test_fix`, `dependency_update`, `environment_setup`, `workflow_improvement`, `documentation_update`, `tooling_addition`
41
+
42
+ ## Knowledge Track Additional Fields
43
+
44
+ Optional:
45
+ - **applies_when**: Conditions or situations where this guidance applies
46
+
47
+ ## Category Mapping
48
+
49
+ Map from `problem_type` to `.planning/solutions/` subdirectory:
50
+
51
+ - `build_error` → `.planning/solutions/build-errors/`
52
+ - `test_failure` → `.planning/solutions/test-failures/`
53
+ - `runtime_error` → `.planning/solutions/runtime-errors/`
54
+ - `performance_issue` → `.planning/solutions/performance-issues/`
55
+ - `database_issue` → `.planning/solutions/database-issues/`
56
+ - `security_issue` → `.planning/solutions/security-issues/`
57
+ - `ui_bug` → `.planning/solutions/ui-bugs/`
58
+ - `integration_issue` → `.planning/solutions/integration-issues/`
59
+ - `logic_error` → `.planning/solutions/logic-errors/`
60
+ - `best_practice` → `.planning/solutions/best-practices/`
61
+ - `workflow_issue` → `.planning/solutions/workflow-issues/`
62
+ - `developer_experience` → `.planning/solutions/developer-experience/`
63
+ - `documentation_gap` → `.planning/solutions/documentation-gaps/`
64
+
65
+ ## Bug Track Template
66
+
67
+ ```markdown
68
+ ---
69
+ title: [Clear problem title]
70
+ date: [YYYY-MM-DD]
71
+ category: [category directory]
72
+ module: [module or area]
73
+ problem_type: [enum value]
74
+ severity: [critical|high|medium|low]
75
+ tags: [keyword-one, keyword-two]
76
+ ---
77
+
78
+ # [Clear problem title]
79
+
80
+ ## Problem
81
+ [1-2 sentence description of the issue and impact]
82
+
83
+ ## Symptoms
84
+ - [Observable symptom or error]
85
+
86
+ ## What Didn't Work
87
+ - [Attempted fix and why it failed]
88
+
89
+ ## Solution
90
+ [The fix that worked, including code snippets]
91
+
92
+ ## Why This Works
93
+ [Root cause explanation and why the fix addresses it]
94
+
95
+ ## Prevention
96
+ - [Concrete practice, test, or guardrail]
97
+
98
+ ## Related
99
+ - [Related docs or issues, if any]
100
+ ```
101
+
102
+ ## Knowledge Track Template
103
+
104
+ ```markdown
105
+ ---
106
+ title: [Clear, descriptive title]
107
+ date: [YYYY-MM-DD]
108
+ category: [category directory]
109
+ module: [module or area]
110
+ problem_type: [enum value]
111
+ severity: [critical|high|medium|low]
112
+ tags: [keyword-one, keyword-two]
113
+ ---
114
+
115
+ # [Clear, descriptive title]
116
+
117
+ ## Context
118
+ [What situation, gap, or friction prompted this guidance]
119
+
120
+ ## Guidance
121
+ [The practice, pattern, or recommendation with code examples]
122
+
123
+ ## Why This Matters
124
+ [Rationale and impact of following or not following this guidance]
125
+
126
+ ## When to Apply
127
+ - [Conditions or situations where this applies]
128
+
129
+ ## Examples
130
+ [Concrete before/after or usage examples]
131
+
132
+ ## Related
133
+ - [Related docs or issues, if any]
134
+ ```
135
+
136
+ ## Validation Rules
137
+
138
+ 1. Determine the track from `problem_type` using the Tracks table
139
+ 2. All required fields must be present
140
+ 3. Enum fields must match allowed values exactly
141
+ 4. `date` must match `YYYY-MM-DD`
142
+ 5. `tags` should be lowercase and hyphen-separated
143
+ 6. Filename pattern: `[sanitized-problem-slug]-[YYYY-MM-DD].md`
144
+
145
+ ## Overlap Assessment
146
+
147
+ When existing solutions exist, assess overlap across five dimensions:
148
+
149
+ 1. Problem statement
150
+ 2. Root cause
151
+ 3. Solution approach
152
+ 4. Referenced files
153
+ 5. Prevention rules
154
+
155
+ | Score | Dimensions | Action |
156
+ |-------|-----------|--------|
157
+ | **High** | 4-5 match | Update existing doc, add `last_updated` |
158
+ | **Moderate** | 2-3 match | Create new doc, note overlap |
159
+ | **Low** | 0-1 match | Create new doc normally |
@@ -140,9 +140,10 @@ Always tell the user which workflow you're about to invoke and why, then wait fo
140
140
  This project uses **learnship**. Key facts:
141
141
 
142
142
  - All planning artifacts live in `.planning/` — read STATE.md and ROADMAP.md first when unsure where we are
143
- - The phase loop: `discuss-phase` → `plan-phase` → `execute-phase` → `verify-work`
143
+ - The phase loop: `discuss-phase` → `plan-phase` → `execute-phase` → `verify-work` → `/review` → `/ship` → `/compound`
144
144
  - Current status is always in `.planning/STATE.md`
145
145
  - Decisions are tracked in `.planning/DECISIONS.md` — read it before proposing approaches that may conflict
146
+ - Compounded solutions live in `.planning/solutions/` — organized by category with YAML frontmatter (module, problem_type, severity, tags). Search these before planning to avoid reinventing known solutions
146
147
  - Run `/ls` if context is unclear about what phase we're on or what to do next — it shows status and offers to run the next step
147
148
 
148
149
  ---
@@ -201,6 +202,10 @@ Architectural and scope decisions are tracked in `.planning/DECISIONS.md`.
201
202
  Read it before proposing an approach that has been previously considered.
202
203
  When a new decision is made during a session, capture it with `/decision-log`.
203
204
 
205
+ ### Solutions Store
206
+
207
+ Compounded solutions live in `.planning/solutions/` — organized by category (build-errors, runtime-errors, best-practices, etc.) with YAML frontmatter for searchability. After fixing a bug or completing a notable feature, run `/compound` to capture the solution while context is fresh. The `/plan-phase` workflow automatically searches these before planning.
208
+
204
209
  ---
205
210
 
206
211
  ## Regressions — What Broke and What We Learned
@@ -0,0 +1,189 @@
1
+ ---
2
+ description: Product + engineering challenge gate — is this worth building?
3
+ ---
4
+
5
+ # Challenge
6
+
7
+ Product and engineering challenge gate. Asks forcing questions to determine whether a proposed feature, project, or milestone is worth building — before investing in planning and execution.
8
+
9
+ Two lenses:
10
+ - **Product lens:** "Is this worth building?" — demand, specificity, alternatives, user impact
11
+ - **Engineering lens:** "Will it hold?" — complexity, maintainability, scalability, risk
12
+
13
+ **Usage:** `challenge` — challenge the current milestone or phase
14
+ **Usage:** `challenge [description]` — challenge a specific idea or proposal
15
+
16
+ ## Step 1: Gather Context
17
+
18
+ Read available project context:
19
+
20
+ ```bash
21
+ cat .planning/DECISIONS.md 2>/dev/null
22
+ cat .planning/KNOWLEDGE.md 2>/dev/null
23
+ ls .planning/solutions/ 2>/dev/null
24
+ ```
25
+
26
+ **Brownfield enhancement:** If `.planning/codebase/` exists, also read:
27
+ ```bash
28
+ cat .planning/codebase/ARCHITECTURE.md 2>/dev/null
29
+ cat .planning/codebase/CONCERNS.md 2>/dev/null
30
+ ```
31
+
32
+ If a description argument was provided, use it as the proposal to challenge.
33
+
34
+ If no argument: read `.planning/ROADMAP.md` and `.planning/STATE.md` to identify the current or next milestone/phase as the proposal.
35
+
36
+ ## Step 2: Product Challenge
37
+
38
+ Read `parallelization` from `.planning/config.json` (defaults to `false`).
39
+
40
+ **If `parallelization` is `true` (subagent mode):**
41
+
42
+ ```
43
+ Task(
44
+ subagent_type="learnship-challenger",
45
+ prompt="
46
+ <objective>
47
+ Run the PRODUCT lens challenge on this proposal:
48
+ [proposal description]
49
+
50
+ Ask 3-5 forcing questions from the product perspective:
51
+ 1. Who specifically wants this? (not 'users' — name the persona and their pain)
52
+ 2. What do they do today without it? (status quo is always the competitor)
53
+ 3. How would you know it succeeded? (concrete metric, not 'engagement')
54
+ 4. What's the narrowest version that still delivers value?
55
+ 5. What are you saying NO to by building this?
56
+
57
+ Read DECISIONS.md and KNOWLEDGE.md for context on prior decisions.
58
+ If ARCHITECTURE.md and CONCERNS.md exist, validate against existing architecture.
59
+
60
+ Return: answers to each question + verdict (proceed/rethink/reduce-scope)
61
+ </objective>
62
+
63
+ <files_to_read>
64
+ - .planning/DECISIONS.md (if exists)
65
+ - .planning/KNOWLEDGE.md (if exists)
66
+ - .planning/codebase/ARCHITECTURE.md (if exists)
67
+ - .planning/codebase/CONCERNS.md (if exists)
68
+ </files_to_read>
69
+ "
70
+ )
71
+ ```
72
+
73
+ **If `parallelization` is `false` (sequential mode):**
74
+
75
+ Using `@./agents/challenger.md` as your challenge persona, ask the 3-5 product forcing questions and answer them based on available context.
76
+
77
+ ## Step 3: Engineering Challenge
78
+
79
+ **If `parallelization` is `true`:**
80
+
81
+ ```
82
+ Task(
83
+ subagent_type="learnship-challenger",
84
+ prompt="
85
+ <objective>
86
+ Run the ENGINEERING lens challenge on this proposal:
87
+ [proposal description]
88
+
89
+ Ask 3-5 forcing questions from the engineering perspective:
90
+ 1. What's the complexity ceiling? (will this stay simple or inevitably grow complex?)
91
+ 2. What existing patterns does this break? (check ARCHITECTURE.md)
92
+ 3. What's the failure mode? (when this breaks, what happens to the user?)
93
+ 4. What does this make harder later? (second-order effects on maintenance)
94
+ 5. Is there a simpler approach that delivers 80% of the value?
95
+
96
+ Read DECISIONS.md and KNOWLEDGE.md for context on prior decisions.
97
+ Search .planning/solutions/ for related past issues.
98
+
99
+ Return: answers to each question + verdict (proceed/rethink/reduce-scope)
100
+ </objective>
101
+
102
+ <files_to_read>
103
+ - .planning/DECISIONS.md (if exists)
104
+ - .planning/KNOWLEDGE.md (if exists)
105
+ - .planning/codebase/ARCHITECTURE.md (if exists)
106
+ </files_to_read>
107
+ "
108
+ )
109
+ ```
110
+
111
+ **If `parallelization` is `false`:**
112
+
113
+ Using `@./agents/challenger.md`, switch to the engineering lens and ask the 3-5 engineering forcing questions.
114
+
115
+ ## Step 4: Synthesize Verdict
116
+
117
+ Combine both lenses into a verdict:
118
+
119
+ ```
120
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
121
+ learnship ► CHALLENGE COMPLETE
122
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
123
+
124
+ Proposal: [description]
125
+
126
+ ## Product Lens
127
+ [summary of product challenge findings]
128
+
129
+ ## Engineering Lens
130
+ [summary of engineering challenge findings]
131
+
132
+ ## Verdict: [PROCEED | RETHINK | REDUCE SCOPE]
133
+
134
+ [1-3 sentence rationale]
135
+
136
+ [If RETHINK: specific concerns that need addressing]
137
+ [If REDUCE SCOPE: suggested narrower scope]
138
+ [If PROCEED: key risks to monitor]
139
+ ```
140
+
141
+ Present the verdict using the platform's blocking question tool:
142
+ - **Proceed as planned** → continue to planning
143
+ - **Adjust scope** → describe adjustments, then re-challenge or proceed
144
+ - **Rethink** → go back to ideation or discussion
145
+
146
+ ## Step 5: Record Decision
147
+
148
+ If the user makes a decision based on the challenge:
149
+
150
+ ```bash
151
+ # Append to DECISIONS.md if it exists
152
+ cat >> .planning/DECISIONS.md << 'EOF'
153
+
154
+ ### DEC-[NNN]: [Challenge verdict — proposal title]
155
+
156
+ **Date:** [YYYY-MM-DD]
157
+ **Type:** scope
158
+ **Context:** Challenged via `/challenge` — product + engineering lens
159
+ **Decision:** [proceed | reduced scope | rethought]
160
+ **Rationale:** [key reasons from both lenses]
161
+ EOF
162
+
163
+ git add .planning/DECISIONS.md
164
+ git commit -m "docs: challenge verdict — [proposal title]"
165
+ ```
166
+
167
+ ---
168
+
169
+ ## Integration Points
170
+
171
+ - `/new-project` Step 7: optionally suggest `/challenge` before committing to scope
172
+ - `/discuss-milestone`: suggest `/challenge` for ambitious milestones
173
+ - `/quick --challenge`: flag for quick tasks that warrant a sanity check
174
+
175
+ ---
176
+
177
+ ## Learning Checkpoint
178
+
179
+ Read `learning_mode` from `.planning/config.json`.
180
+
181
+ **If `auto`:** After the challenge, offer:
182
+
183
+ > 💡 **Learning moment:** Challenge gates sharpen product thinking:
184
+ >
185
+ > `@agentic-learning either-or` — Which lens (product vs engineering) surfaced the most important concern? Log the reasoning pattern for future decisions.
186
+ >
187
+ > `@agentic-learning brainstorm [proposal topic]` — If the verdict was "rethink," use collaborative brainstorming to explore alternative approaches.
188
+
189
+ **If `manual`:** Add quietly: *"Tip: `@agentic-learning either-or` to log which challenge lens was most valuable."*
@@ -163,6 +163,15 @@ git add AGENTS.md
163
163
  git commit -m "docs: update AGENTS.md — milestone [VERSION] complete"
164
164
  ```
165
165
 
166
+ ## Step 7c: Sync Documentation
167
+
168
+ Suggest running `/sync-docs` before the release tag to catch stale documentation:
169
+
170
+ ```
171
+ 💡 Before tagging the release, consider running `/sync-docs` to detect
172
+ any documentation that drifted during this milestone.
173
+ ```
174
+
166
175
  ## Step 8: Offer Next Milestone
167
176
 
168
177
  Ask: "Ready to start the next milestone?"