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.
- package/.claude-plugin/plugin.json +2 -2
- package/.cursor-plugin/plugin.json +2 -2
- package/README.md +75 -21
- package/SKILL.md +17 -0
- package/agents/learnship-challenger.md +96 -0
- package/agents/learnship-code-reviewer.md +109 -0
- package/agents/learnship-executor.md +15 -0
- package/agents/learnship-ideation-agent.md +83 -0
- package/agents/learnship-solution-writer.md +140 -0
- package/bin/install.js +100 -48
- package/commands/learnship/challenge.md +22 -0
- package/commands/learnship/compound.md +22 -0
- package/commands/learnship/guard.md +21 -0
- package/commands/learnship/ideate.md +23 -0
- package/commands/learnship/review.md +23 -0
- package/commands/learnship/ship.md +21 -0
- package/commands/learnship/sync-docs.md +21 -0
- package/cursor-rules/learnship.mdc +7 -0
- package/gemini-extension.json +2 -2
- package/learnship/agents/challenger.md +52 -0
- package/learnship/agents/code-reviewer.md +81 -0
- package/learnship/agents/executor.md +15 -0
- package/learnship/agents/ideation-agent.md +54 -0
- package/learnship/agents/plan-checker.md +95 -0
- package/learnship/agents/solution-writer.md +64 -0
- package/learnship/references/model-profiles.md +41 -33
- package/learnship/references/planning-config.md +49 -0
- package/learnship/references/solution-schema.md +159 -0
- package/learnship/templates/agents.md +6 -1
- package/learnship/workflows/challenge.md +189 -0
- package/learnship/workflows/complete-milestone.md +9 -0
- package/learnship/workflows/compound.md +305 -0
- package/learnship/workflows/debug.md +7 -0
- package/learnship/workflows/discuss-milestone.md +5 -0
- package/learnship/workflows/execute-phase.md +24 -0
- package/learnship/workflows/guard.md +164 -0
- package/learnship/workflows/help.md +14 -2
- package/learnship/workflows/ideate.md +182 -0
- package/learnship/workflows/knowledge-base.md +8 -0
- package/learnship/workflows/ls.md +7 -3
- package/learnship/workflows/milestone-retrospective.md +45 -0
- package/learnship/workflows/new-project.md +5 -3
- package/learnship/workflows/next.md +3 -2
- package/learnship/workflows/plan-phase.md +23 -0
- package/learnship/workflows/progress.md +9 -3
- package/learnship/workflows/review.md +226 -0
- package/learnship/workflows/set-profile.md +6 -6
- package/learnship/workflows/settings.md +8 -8
- package/learnship/workflows/ship.md +219 -0
- package/learnship/workflows/sync-docs.md +159 -0
- package/learnship/workflows/sync-upstream-skills.md +10 -10
- package/learnship/workflows/validate-phase.md +4 -4
- package/learnship/workflows/verify-work.md +3 -0
- package/package.json +1 -1
- package/references/model-profiles.md +41 -33
- 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
|
---
|