learnship 1.9.22 → 2.0.0

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 (56) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/.cursor-plugin/plugin.json +2 -2
  3. package/README.md +75 -21
  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 +100 -48
  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/new-project.md +5 -3
  43. package/learnship/workflows/next.md +3 -2
  44. package/learnship/workflows/plan-phase.md +23 -0
  45. package/learnship/workflows/progress.md +9 -3
  46. package/learnship/workflows/review.md +226 -0
  47. package/learnship/workflows/set-profile.md +6 -6
  48. package/learnship/workflows/settings.md +8 -8
  49. package/learnship/workflows/ship.md +219 -0
  50. package/learnship/workflows/sync-docs.md +159 -0
  51. package/learnship/workflows/sync-upstream-skills.md +10 -10
  52. package/learnship/workflows/validate-phase.md +4 -4
  53. package/learnship/workflows/verify-work.md +3 -0
  54. package/package.json +1 -1
  55. package/references/model-profiles.md +41 -33
  56. package/templates/config.json +13 -1
@@ -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?"
@@ -0,0 +1,305 @@
1
+ ---
2
+ description: Capture a solution at the moment of solving — structured doc to .planning/solutions/
3
+ ---
4
+
5
+ # Compound
6
+
7
+ Capture a recently solved problem or learned pattern while context is fresh. Creates structured documentation in `.planning/solutions/` with YAML frontmatter for searchability. Each documented solution compounds your team's knowledge — the first time takes research, the next time takes minutes.
8
+
9
+ **Usage:** `compound` — document the most recent fix or learning
10
+ **Usage:** `compound [brief context]` — provide additional context hint
11
+
12
+ ## Step 1: Choose Mode
13
+
14
+ Present the user with two options before proceeding. Use the platform's blocking question tool (`AskUserQuestion` in Claude Code, `request_user_input` in Codex, `ask_user` in Gemini, `ask_user_question` in Windsurf). If no question tool is available, present the options and wait for the user's reply.
15
+
16
+ ```
17
+ 1. Full (recommended) — the complete compound workflow. Researches,
18
+ cross-references, and reviews your solution to produce documentation
19
+ that compounds your project's knowledge.
20
+
21
+ 2. Lightweight — same documentation, single pass. Faster and uses
22
+ fewer tokens, but won't detect duplicates or cross-reference
23
+ existing docs. Best for simple fixes or long sessions nearing
24
+ context limits.
25
+ ```
26
+
27
+ Do NOT pre-select a mode. Do NOT skip this prompt. Wait for the user's choice before proceeding.
28
+
29
+ ---
30
+
31
+ ## Full Mode
32
+
33
+ ### Phase 1: Parallel Research
34
+
35
+ Read `parallelization` from `.planning/config.json` (defaults to `false`).
36
+
37
+ **If `parallelization` is `true` (subagent mode — Claude Code, OpenCode, Codex):**
38
+
39
+ Launch these tasks IN PARALLEL. Each returns text data to the orchestrator — subagents must NOT write any files.
40
+
41
+ ```
42
+ Task(
43
+ subagent_type="learnship-solution-writer",
44
+ prompt="
45
+ <objective>
46
+ RESEARCH ONLY — do NOT write any files.
47
+ Analyze conversation history to extract:
48
+ 1. Problem classification (bug vs knowledge track)
49
+ 2. YAML frontmatter skeleton with fields: title, date, category, module,
50
+ problem_type, component, severity, tags
51
+ 3. Category directory path mapped from problem_type
52
+ 4. Suggested filename: [sanitized-problem-slug]-[YYYY-MM-DD].md
53
+
54
+ Bug track problem_types: build_error, test_failure, runtime_error,
55
+ performance_issue, database_issue, security_issue, ui_bug,
56
+ integration_issue, logic_error
57
+
58
+ Knowledge track problem_types: best_practice, documentation_gap,
59
+ workflow_issue, developer_experience
60
+
61
+ Category mapping:
62
+ - build_error → build-errors/
63
+ - test_failure → test-failures/
64
+ - runtime_error → runtime-errors/
65
+ - performance_issue → performance-issues/
66
+ - database_issue → database-issues/
67
+ - security_issue → security-issues/
68
+ - ui_bug → ui-bugs/
69
+ - integration_issue → integration-issues/
70
+ - logic_error → logic-errors/
71
+ - best_practice → best-practices/
72
+ - workflow_issue → workflow-issues/
73
+ - developer_experience → developer-experience/
74
+ - documentation_gap → documentation-gaps/
75
+
76
+ Return text data only.
77
+ </objective>
78
+
79
+ <files_to_read>
80
+ - $LEARNSHIP_DIR/references/solution-schema.md
81
+ </files_to_read>
82
+ "
83
+ )
84
+ ```
85
+
86
+ Simultaneously, search `.planning/solutions/` for related documentation:
87
+
88
+ ```bash
89
+ # Search for related solutions
90
+ find .planning/solutions/ -name "*.md" -type f 2>/dev/null | head -20
91
+ ```
92
+
93
+ If solutions exist, grep for keyword matches from the current problem:
94
+ ```bash
95
+ grep -ril "[keyword1]\|[keyword2]" .planning/solutions/ 2>/dev/null
96
+ ```
97
+
98
+ For each candidate, read the frontmatter (first 30 lines) to assess overlap across five dimensions: problem statement, root cause, solution approach, referenced files, and prevention rules.
99
+
100
+ Score overlap:
101
+ - **High** (4-5 dimensions match): essentially the same problem solved again
102
+ - **Moderate** (2-3 dimensions match): same area but different angle
103
+ - **Low** (0-1 dimensions match): related but distinct
104
+
105
+ **If `parallelization` is `false` (sequential mode):**
106
+
107
+ Using `@./agents/solution-writer.md` as your analysis persona, perform all research in sequence:
108
+
109
+ 1. Extract from conversation history: problem, symptoms, what was tried, what worked
110
+ 2. Classify: determine track (bug vs knowledge), problem_type, category, severity
111
+ 3. Search `.planning/solutions/` for related docs using grep-first filtering
112
+ 4. Assess overlap with existing docs
113
+ 5. Suggest filename: `[sanitized-slug]-[YYYY-MM-DD].md`
114
+
115
+ ### Phase 2: Assembly & Write
116
+
117
+ **WAIT for all Phase 1 research to complete before proceeding.**
118
+
119
+ Check the overlap assessment:
120
+
121
+ | Overlap | Action |
122
+ |---------|--------|
123
+ | **High** — existing doc covers the same problem and solution | **Update the existing doc** with fresher context rather than creating a duplicate. Add `last_updated: YYYY-MM-DD` to frontmatter. |
124
+ | **Moderate** — same area but different angle or solution | **Create a new doc**. Note the overlap for future consolidation. |
125
+ | **Low or none** | **Create a new doc** normally. |
126
+
127
+ Create directory if needed:
128
+ ```bash
129
+ node -e "require('fs').mkdirSync('.planning/solutions/[category]/',{recursive:true})"
130
+ ```
131
+
132
+ Write the solution document using the appropriate track template:
133
+
134
+ **Bug track template:**
135
+ ```markdown
136
+ ---
137
+ title: [Clear problem title]
138
+ date: [YYYY-MM-DD]
139
+ category: [category directory]
140
+ module: [module or area]
141
+ problem_type: [enum value]
142
+ severity: [critical|high|medium|low]
143
+ tags: [keyword-one, keyword-two]
144
+ ---
145
+
146
+ # [Clear problem title]
147
+
148
+ ## Problem
149
+ [1-2 sentence description of the issue and impact]
150
+
151
+ ## Symptoms
152
+ - [Observable symptom or error]
153
+
154
+ ## What Didn't Work
155
+ - [Attempted fix and why it failed]
156
+
157
+ ## Solution
158
+ [The fix that worked, including code snippets]
159
+
160
+ ## Why This Works
161
+ [Root cause explanation and why the fix addresses it]
162
+
163
+ ## Prevention
164
+ - [Concrete practice, test, or guardrail]
165
+
166
+ ## Related
167
+ - [Related docs or issues, if any]
168
+ ```
169
+
170
+ **Knowledge track template:**
171
+ ```markdown
172
+ ---
173
+ title: [Clear, descriptive title]
174
+ date: [YYYY-MM-DD]
175
+ category: [category directory]
176
+ module: [module or area]
177
+ problem_type: [enum value]
178
+ severity: [critical|high|medium|low]
179
+ tags: [keyword-one, keyword-two]
180
+ ---
181
+
182
+ # [Clear, descriptive title]
183
+
184
+ ## Context
185
+ [What situation, gap, or friction prompted this guidance]
186
+
187
+ ## Guidance
188
+ [The practice, pattern, or recommendation with code examples]
189
+
190
+ ## Why This Matters
191
+ [Rationale and impact of following or not following this guidance]
192
+
193
+ ## When to Apply
194
+ - [Conditions or situations where this applies]
195
+
196
+ ## Examples
197
+ [Concrete before/after or usage examples]
198
+
199
+ ## Related
200
+ - [Related docs or issues, if any]
201
+ ```
202
+
203
+ ### Phase 3: Commit & Confirm
204
+
205
+ ```bash
206
+ git add ".planning/solutions/[category]/[filename].md"
207
+ git commit -m "docs(solutions): compound — [short title]"
208
+ ```
209
+
210
+ Display:
211
+ ```
212
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
213
+ learnship ► COMPOUND COMPLETE ✓
214
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
215
+
216
+ File created:
217
+ - .planning/solutions/[category]/[filename].md
218
+
219
+ What's next?
220
+ 1. Continue workflow (recommended)
221
+ 2. View documentation
222
+ 3. Link related documentation
223
+ ```
224
+
225
+ Present the "What's next?" options using the platform's blocking question tool. Wait for the user's selection before proceeding.
226
+
227
+ **Alternate output (when updating an existing doc due to high overlap):**
228
+
229
+ ```
230
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
231
+ learnship ► COMPOUND UPDATED ✓
232
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
233
+
234
+ Overlap detected: .planning/solutions/[category]/[existing-file].md
235
+ Action: Updated existing doc with fresher context
236
+ Added: last_updated: [YYYY-MM-DD]
237
+
238
+ File updated:
239
+ - .planning/solutions/[category]/[existing-file].md
240
+ ```
241
+
242
+ ---
243
+
244
+ ## Lightweight Mode
245
+
246
+ Single-pass alternative — same documentation, fewer tokens. No subagents, no cross-referencing, no duplicate detection.
247
+
248
+ 1. **Extract from conversation**: Identify the problem and solution from conversation history
249
+ 2. **Classify**: Determine track (bug vs knowledge), category, and filename using the schema from `$LEARNSHIP_DIR/references/solution-schema.md`
250
+ 3. **Write minimal doc**: Create `.planning/solutions/[category]/[filename].md` using the appropriate track template with:
251
+ - YAML frontmatter with track-appropriate fields
252
+ - Bug track: Problem, solution with key code snippets, one prevention tip
253
+ - Knowledge track: Context, guidance with key examples, one applicability note
254
+ 4. **Skip cross-referencing** to conserve context
255
+
256
+ ```bash
257
+ node -e "require('fs').mkdirSync('.planning/solutions/[category]/',{recursive:true})"
258
+ # Write the file
259
+ git add ".planning/solutions/[category]/[filename].md"
260
+ git commit -m "docs(solutions): compound — [short title] (lightweight)"
261
+ ```
262
+
263
+ **Lightweight output:**
264
+ ```
265
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
266
+ learnship ► COMPOUND COMPLETE ✓ (lightweight)
267
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
268
+
269
+ File created:
270
+ - .planning/solutions/[category]/[filename].md
271
+
272
+ Note: This was created in lightweight mode. For richer documentation
273
+ (cross-references, overlap detection), re-run /compound in a fresh session.
274
+ ```
275
+
276
+ **No subagents are launched. No parallel tasks. One file written.**
277
+
278
+ ---
279
+
280
+ ## The Compounding Philosophy
281
+
282
+ Each documented solution compounds your project's knowledge:
283
+
284
+ 1. First time you solve a problem → Research (30 min)
285
+ 2. Document the solution → `.planning/solutions/` (5 min)
286
+ 3. Next time similar issue occurs → Quick lookup (2 min)
287
+ 4. Knowledge compounds → Team gets smarter
288
+
289
+ **Each unit of engineering work should make subsequent units of work easier — not harder.**
290
+
291
+ ---
292
+
293
+ ## Learning Checkpoint
294
+
295
+ Read `learning_mode` from `.planning/config.json`.
296
+
297
+ **If `auto`:** After documenting, offer based on what happened:
298
+
299
+ > 💡 **Learning moment:** Solution captured. Compound the knowledge further:
300
+ >
301
+ > `@agentic-learning learn [solution domain]` — Active retrieval on the concept you just documented. You explain the root cause first, gaps get filled. This is how fixes become lasting pattern recognition.
302
+ >
303
+ > `@agentic-learning space` — Schedule this concept for spaced revisit. Writes to `docs/revisit.md`. Future sessions start with less decay.
304
+
305
+ **If `manual`:** Add quietly: *"Tip: `@agentic-learning learn [domain]` · `@agentic-learning space` to turn this solution into a lasting pattern."*
@@ -200,6 +200,13 @@ node -e "require('fs').mkdirSync('.planning/debug/resolved',{recursive:true})"
200
200
  mv ".planning/debug/[session-file]" ".planning/debug/resolved/"
201
201
  ```
202
202
 
203
+ Suggest compounding the solution:
204
+ ```
205
+ 💡 Compound this fix? Run `/compound` to capture the problem, root cause,
206
+ and solution while context is fresh. Future plan-phase runs will search
207
+ these solutions before planning.
208
+ ```
209
+
203
210
  ## Step 9b: Update AGENTS.md Regressions
204
211
 
205
212
  If `AGENTS.md` exists at the project root, append a regression entry to the `## Regressions` section:
@@ -120,6 +120,11 @@ Goals: [N] captured
120
120
  Anti-goals: [N] captured
121
121
 
122
122
  ▶ Next: new-milestone [VERSION] (will read this context automatically)
123
+
124
+ 💡 For ambitious milestones, consider running `/challenge` first to stress-test
125
+ the scope through product and engineering lenses before committing.
126
+
127
+ 💡 Not sure what to build? Run `/ideate` for codebase-grounded idea generation.
123
128
  ```
124
129
 
125
130
  ---
@@ -82,6 +82,27 @@ Check if `@impeccable teach-impeccable` has been run for this project (look for
82
82
 
83
83
  Carry these principles through every task in every wave of this phase.
84
84
 
85
+ ## Step 2c: TDD Mode Check
86
+
87
+ Read `test_first` from `.planning/config.json` (defaults to `false`).
88
+
89
+ If `test_first` is `true`:
90
+ ```
91
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
92
+ learnship ► TDD MODE ACTIVE — red-green-refactor per task
93
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
94
+ ```
95
+
96
+ In TDD mode, each executor uses the red-green-refactor cycle:
97
+ 1. **Red** — write the failing test first
98
+ 2. **Verify red** — confirm the test fails
99
+ 3. **Green** — write minimum code to pass
100
+ 4. **Verify green** — confirm the test passes
101
+ 5. **Refactor** — clean up without changing behavior
102
+ 6. **Commit** — atomic commit (test + implementation together)
103
+
104
+ Both inline (`@./agents/executor.md`) and subagent (`learnship-executor`) executors honor this setting.
105
+
85
106
  ## Step 3: Execute Waves
86
107
 
87
108
  Read `parallelization` from `.planning/config.json` (defaults to `false`).
@@ -323,7 +344,10 @@ git commit -m "docs: update AGENTS.md — phase [X] complete"
323
344
  **Phase [X]: [Name]** — all plans complete, goals verified.
324
345
 
325
346
  ▶ Next: verify-work [X] (manual UAT)
347
+ Then: /review → /ship → /compound
326
348
  Then: discuss-phase [X+1] → plan-phase [X+1]
349
+
350
+ 💡 Working on sensitive files? Run `/guard [scope]` to enable safety mode.
327
351
  ```
328
352
 
329
353
  ---