learnship 1.9.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 +26 -0
- package/.cursor-plugin/plugin.json +26 -0
- package/LICENSE +21 -0
- package/README.md +791 -0
- package/SKILL.md +86 -0
- package/agents/debugger.md +102 -0
- package/agents/executor.md +115 -0
- package/agents/learnship-debugger.md +146 -0
- package/agents/learnship-executor.md +155 -0
- package/agents/learnship-phase-researcher.md +128 -0
- package/agents/learnship-plan-checker.md +119 -0
- package/agents/learnship-planner.md +146 -0
- package/agents/learnship-verifier.md +157 -0
- package/agents/planner.md +109 -0
- package/agents/researcher.md +80 -0
- package/agents/verifier.md +114 -0
- package/bin/install.js +1242 -0
- package/bin/learnship.js +56 -0
- package/commands/learnship/add-phase.md +22 -0
- package/commands/learnship/add-tests.md +24 -0
- package/commands/learnship/add-todo.md +21 -0
- package/commands/learnship/audit-milestone.md +21 -0
- package/commands/learnship/check-todos.md +22 -0
- package/commands/learnship/cleanup.md +22 -0
- package/commands/learnship/complete-milestone.md +22 -0
- package/commands/learnship/debug.md +27 -0
- package/commands/learnship/decision-log.md +22 -0
- package/commands/learnship/diagnose-issues.md +23 -0
- package/commands/learnship/discovery-phase.md +24 -0
- package/commands/learnship/discuss-milestone.md +23 -0
- package/commands/learnship/discuss-phase.md +23 -0
- package/commands/learnship/execute-phase.md +27 -0
- package/commands/learnship/execute-plan.md +26 -0
- package/commands/learnship/health.md +20 -0
- package/commands/learnship/help.md +19 -0
- package/commands/learnship/insert-phase.md +22 -0
- package/commands/learnship/knowledge-base.md +21 -0
- package/commands/learnship/list-phase-assumptions.md +21 -0
- package/commands/learnship/ls.md +20 -0
- package/commands/learnship/map-codebase.md +23 -0
- package/commands/learnship/milestone-retrospective.md +21 -0
- package/commands/learnship/new-milestone.md +23 -0
- package/commands/learnship/new-project.md +24 -0
- package/commands/learnship/next.md +22 -0
- package/commands/learnship/pause-work.md +21 -0
- package/commands/learnship/plan-milestone-gaps.md +22 -0
- package/commands/learnship/plan-phase.md +24 -0
- package/commands/learnship/progress.md +20 -0
- package/commands/learnship/quick.md +27 -0
- package/commands/learnship/reapply-patches.md +21 -0
- package/commands/learnship/release.md +21 -0
- package/commands/learnship/remove-phase.md +23 -0
- package/commands/learnship/research-phase.md +23 -0
- package/commands/learnship/resume-work.md +21 -0
- package/commands/learnship/set-profile.md +21 -0
- package/commands/learnship/settings.md +21 -0
- package/commands/learnship/transition.md +21 -0
- package/commands/learnship/update.md +21 -0
- package/commands/learnship/validate-phase.md +22 -0
- package/commands/learnship/verify-work.md +23 -0
- package/cursor-rules/learnship.mdc +60 -0
- package/gemini-extension.json +10 -0
- package/hooks/hooks-claude.json +15 -0
- package/hooks/hooks-cursor.json +10 -0
- package/hooks/session-start +43 -0
- package/install.sh +254 -0
- package/learnship/references/design-commands.md +119 -0
- package/learnship/references/git-integration.md +249 -0
- package/learnship/references/learning-design.md +142 -0
- package/learnship/references/model-profiles.md +90 -0
- package/learnship/references/planning-config.md +184 -0
- package/learnship/references/questioning.md +162 -0
- package/learnship/references/ui-brand.md +160 -0
- package/learnship/references/verification-patterns.md +608 -0
- package/learnship/templates/agents.md +166 -0
- package/learnship/templates/context.md +72 -0
- package/learnship/templates/plan.md +202 -0
- package/learnship/templates/project.md +184 -0
- package/learnship/templates/requirements.md +231 -0
- package/learnship/templates/state.md +176 -0
- package/learnship/templates/uat.md +80 -0
- package/learnship/workflows/add-phase.md +84 -0
- package/learnship/workflows/add-tests.md +191 -0
- package/learnship/workflows/add-todo.md +108 -0
- package/learnship/workflows/audit-milestone.md +178 -0
- package/learnship/workflows/check-todos.md +138 -0
- package/learnship/workflows/cleanup.md +107 -0
- package/learnship/workflows/complete-milestone.md +191 -0
- package/learnship/workflows/debug.md +245 -0
- package/learnship/workflows/decision-log.md +131 -0
- package/learnship/workflows/diagnose-issues.md +145 -0
- package/learnship/workflows/discovery-phase.md +183 -0
- package/learnship/workflows/discuss-milestone.md +136 -0
- package/learnship/workflows/discuss-phase.md +244 -0
- package/learnship/workflows/execute-phase.md +345 -0
- package/learnship/workflows/execute-plan.md +149 -0
- package/learnship/workflows/health.md +171 -0
- package/learnship/workflows/help.md +153 -0
- package/learnship/workflows/insert-phase.md +106 -0
- package/learnship/workflows/knowledge-base.md +168 -0
- package/learnship/workflows/list-phase-assumptions.md +129 -0
- package/learnship/workflows/ls.md +145 -0
- package/learnship/workflows/map-codebase.md +142 -0
- package/learnship/workflows/milestone-retrospective.md +178 -0
- package/learnship/workflows/new-milestone.md +200 -0
- package/learnship/workflows/new-project.md +340 -0
- package/learnship/workflows/next.md +100 -0
- package/learnship/workflows/pause-work.md +122 -0
- package/learnship/workflows/plan-milestone-gaps.md +160 -0
- package/learnship/workflows/plan-phase.md +288 -0
- package/learnship/workflows/progress.md +118 -0
- package/learnship/workflows/quick.md +256 -0
- package/learnship/workflows/reapply-patches.md +130 -0
- package/learnship/workflows/release.md +217 -0
- package/learnship/workflows/remove-phase.md +128 -0
- package/learnship/workflows/research-phase.md +137 -0
- package/learnship/workflows/resume-work.md +162 -0
- package/learnship/workflows/set-profile.md +78 -0
- package/learnship/workflows/settings.md +204 -0
- package/learnship/workflows/sync-upstream-skills.md +269 -0
- package/learnship/workflows/transition.md +165 -0
- package/learnship/workflows/update.md +166 -0
- package/learnship/workflows/validate-phase.md +174 -0
- package/learnship/workflows/verify-work.md +264 -0
- package/package.json +62 -0
- package/references/design-commands.md +119 -0
- package/references/git-integration.md +249 -0
- package/references/learning-design.md +142 -0
- package/references/model-profiles.md +90 -0
- package/references/planning-config.md +184 -0
- package/references/questioning.md +162 -0
- package/references/ui-brand.md +160 -0
- package/references/verification-patterns.md +608 -0
- package/skills/agentic-learning/SKILL.md +373 -0
- package/skills/agentic-learning/references/either-or-format.md +161 -0
- package/skills/agentic-learning/references/learning-science.md +190 -0
- package/skills/agentic-learning/references/struggle-ladder.md +140 -0
- package/skills/impeccable/SKILL.md +125 -0
- package/skills/impeccable/adapt/SKILL.md +199 -0
- package/skills/impeccable/animate/SKILL.md +190 -0
- package/skills/impeccable/audit/SKILL.md +129 -0
- package/skills/impeccable/bolder/SKILL.md +132 -0
- package/skills/impeccable/clarify/SKILL.md +180 -0
- package/skills/impeccable/colorize/SKILL.md +158 -0
- package/skills/impeccable/critique/SKILL.md +118 -0
- package/skills/impeccable/delight/SKILL.md +317 -0
- package/skills/impeccable/distill/SKILL.md +137 -0
- package/skills/impeccable/extract/SKILL.md +95 -0
- package/skills/impeccable/frontend-design/SKILL.md +127 -0
- package/skills/impeccable/frontend-design/reference/color-and-contrast.md +132 -0
- package/skills/impeccable/frontend-design/reference/interaction-design.md +123 -0
- package/skills/impeccable/frontend-design/reference/motion-design.md +99 -0
- package/skills/impeccable/frontend-design/reference/responsive-design.md +114 -0
- package/skills/impeccable/frontend-design/reference/spatial-design.md +100 -0
- package/skills/impeccable/frontend-design/reference/typography.md +131 -0
- package/skills/impeccable/frontend-design/reference/ux-writing.md +107 -0
- package/skills/impeccable/harden/SKILL.md +358 -0
- package/skills/impeccable/normalize/SKILL.md +67 -0
- package/skills/impeccable/onboard/SKILL.md +243 -0
- package/skills/impeccable/optimize/SKILL.md +269 -0
- package/skills/impeccable/polish/SKILL.md +202 -0
- package/skills/impeccable/quieter/SKILL.md +118 -0
- package/skills/impeccable/teach-impeccable/SKILL.md +69 -0
- package/templates/agents.md +166 -0
- package/templates/config.json +22 -0
- package/templates/context.md +72 -0
- package/templates/plan.md +202 -0
- package/templates/project.md +184 -0
- package/templates/requirements.md +231 -0
- package/templates/state.md +176 -0
- package/templates/uat.md +80 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Batch-diagnose multiple UAT issues after verify-work — groups by root cause, proposes fix plan
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Diagnose Issues
|
|
6
|
+
|
|
7
|
+
Batch-diagnose all open UAT issues after `verify-work`. Groups issues by root cause, identifies shared fixes, and proposes a structured fix plan — more efficient than debugging issues one at a time.
|
|
8
|
+
|
|
9
|
+
**Usage:** `diagnose-issues [phase]`
|
|
10
|
+
|
|
11
|
+
**Run after:** `verify-work [N]` has logged issues in a UAT file.
|
|
12
|
+
|
|
13
|
+
## Step 1: Load Issues
|
|
14
|
+
|
|
15
|
+
Find the UAT file for the phase:
|
|
16
|
+
```bash
|
|
17
|
+
ls ".planning/phases/"*[N]*"/"*-UAT.md 2>/dev/null | head -1
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
If no UAT file found: stop — "Run `verify-work [N]` first to log issues."
|
|
21
|
+
|
|
22
|
+
Read the UAT file. Extract all open issues (status: open).
|
|
23
|
+
|
|
24
|
+
If no open issues:
|
|
25
|
+
```
|
|
26
|
+
No open issues in Phase [N] UAT. All issues are resolved or deferred.
|
|
27
|
+
```
|
|
28
|
+
Stop.
|
|
29
|
+
|
|
30
|
+
Display:
|
|
31
|
+
```
|
|
32
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
33
|
+
learnship ► DIAGNOSE ISSUES — Phase [N]
|
|
34
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
35
|
+
|
|
36
|
+
[N] open issue(s) to diagnose:
|
|
37
|
+
[list of issue titles and severities]
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Step 2: Read Phase Context
|
|
41
|
+
|
|
42
|
+
Read all PLAN.md and SUMMARY.md files for the phase to understand what was built and how:
|
|
43
|
+
```bash
|
|
44
|
+
cat ".planning/phases/[phase-dir]/"*-PLAN.md
|
|
45
|
+
cat ".planning/phases/[phase-dir]/"*-SUMMARY.md
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Also read `.planning/DECISIONS.md` if it exists — prior decisions often explain why an issue occurred.
|
|
49
|
+
|
|
50
|
+
## Step 3: Diagnose Each Issue
|
|
51
|
+
|
|
52
|
+
For each open issue, using `@./agents/debugger.md` in diagnosis mode (read-only — no implementation changes):
|
|
53
|
+
|
|
54
|
+
1. **Trace the symptom** — follow the user-reported behavior inward through the codebase
|
|
55
|
+
2. **Find the divergence point** — the specific file:line where behavior diverges from expected
|
|
56
|
+
3. **Classify root cause:**
|
|
57
|
+
- `implementation_bug` — code exists but is wrong
|
|
58
|
+
- `missing_implementation` — code simply wasn't written
|
|
59
|
+
- `integration_gap` — two components don't connect properly
|
|
60
|
+
- `requirements_mismatch` — built correctly but wrong spec
|
|
61
|
+
- `environment` — works in code but breaks in specific environment
|
|
62
|
+
|
|
63
|
+
Record for each issue:
|
|
64
|
+
```
|
|
65
|
+
Issue: [title]
|
|
66
|
+
Root cause type: [type]
|
|
67
|
+
Location: [file:line]
|
|
68
|
+
Cause: [one sentence]
|
|
69
|
+
Confidence: high | medium | low
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Step 4: Group by Root Cause
|
|
73
|
+
|
|
74
|
+
Look for shared root causes across issues — frequently multiple UAT issues trace back to the same source:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Root Cause Groups:
|
|
78
|
+
|
|
79
|
+
Group A: [common cause] → affects issues: [1, 3, 5]
|
|
80
|
+
One fix here resolves all three.
|
|
81
|
+
|
|
82
|
+
Group B: [cause] → affects issue: [2]
|
|
83
|
+
Standalone fix needed.
|
|
84
|
+
|
|
85
|
+
Group C: [cause] → affects issues: [4, 6]
|
|
86
|
+
Shared component needs updating.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Step 5: Propose Fix Plan
|
|
90
|
+
|
|
91
|
+
For each group, propose a minimal fix approach:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Proposed Fix Plan
|
|
95
|
+
|
|
96
|
+
**Fix 1: [group A description]**
|
|
97
|
+
Closes: Issues [1, 3, 5]
|
|
98
|
+
Approach: [1-2 sentences]
|
|
99
|
+
Files: [list]
|
|
100
|
+
Effort: small | medium | large
|
|
101
|
+
|
|
102
|
+
**Fix 2: [group B description]**
|
|
103
|
+
Closes: Issue [2]
|
|
104
|
+
Approach: [1-2 sentences]
|
|
105
|
+
Files: [list]
|
|
106
|
+
Effort: small | medium | large
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Ask: "Does this diagnosis look right? Proceed with creating fix plans?"
|
|
110
|
+
|
|
111
|
+
## Step 6: Create Fix Plans
|
|
112
|
+
|
|
113
|
+
For each fix group, write a PLAN.md in the phase directory:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
ls ".planning/phases/[phase-dir]/"*-PLAN.md | wc -l
|
|
117
|
+
# Next plan ID = existing count + 1
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Write `[padded_phase]-[next-id]-FIX-PLAN.md` using the standard plan template format.
|
|
121
|
+
|
|
122
|
+
Update the UAT file — for each issue being addressed, add:
|
|
123
|
+
```yaml
|
|
124
|
+
fix_plan: [padded_phase]-[plan-id]-FIX-PLAN.md
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Step 7: Commit and Report
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
git add ".planning/phases/[phase-dir]/"
|
|
131
|
+
git commit -m "docs([padded_phase]): add fix plans for [N] UAT issues"
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
136
|
+
learnship ► DIAGNOSIS COMPLETE ✓
|
|
137
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
138
|
+
|
|
139
|
+
Issues diagnosed: [N]
|
|
140
|
+
Root cause groups: [M]
|
|
141
|
+
Fix plans created: [K]
|
|
142
|
+
|
|
143
|
+
▶ Next: execute-plan [phase] [plan-id] (for each fix plan)
|
|
144
|
+
or: execute-phase [phase] (runs all remaining plans including fixes)
|
|
145
|
+
```
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Structured codebase discovery before working on an unfamiliar area — reads code, maps dependencies, surfaces risks
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Discovery Phase
|
|
6
|
+
|
|
7
|
+
Structured discovery for working on an unfamiliar part of the codebase. Maps the relevant code area, traces dependencies, identifies risks, and produces a focused discovery report before planning starts.
|
|
8
|
+
|
|
9
|
+
**Usage:** `discovery-phase [N]` or `discovery-phase [area description]`
|
|
10
|
+
|
|
11
|
+
**Run before:** `discuss-phase [N]` or `plan-phase [N]` when the area is unfamiliar.
|
|
12
|
+
|
|
13
|
+
## Step 1: Identify Discovery Target
|
|
14
|
+
|
|
15
|
+
If a phase number was provided, read the phase goal from ROADMAP.md:
|
|
16
|
+
```bash
|
|
17
|
+
cat .planning/ROADMAP.md | grep -A 10 "Phase [N]:"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
If a description was provided, use it directly.
|
|
21
|
+
|
|
22
|
+
Display:
|
|
23
|
+
```
|
|
24
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
25
|
+
learnship ► DISCOVERY — [target area]
|
|
26
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Step 2: Locate Relevant Code
|
|
30
|
+
|
|
31
|
+
Search for code related to the target area using key terms from the phase goal:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Find files mentioning key terms
|
|
35
|
+
grep -rl "[key term 1]" src/ 2>/dev/null | head -15
|
|
36
|
+
grep -rl "[key term 2]" src/ 2>/dev/null | head -10
|
|
37
|
+
|
|
38
|
+
# Find related directories
|
|
39
|
+
find src/ -type d | grep -i "[key term]" 2>/dev/null
|
|
40
|
+
|
|
41
|
+
# Find entry points
|
|
42
|
+
grep -rn "export\|module.exports\|def " src/ --include="*.ts" --include="*.js" --include="*.py" 2>/dev/null | grep -i "[key term]" | head -20
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Read the 5-8 most relevant files. Focus on interfaces, types, exports, and public API — not implementation details.
|
|
46
|
+
|
|
47
|
+
## Step 3: Map Dependencies
|
|
48
|
+
|
|
49
|
+
For the relevant files, trace what they depend on and what depends on them:
|
|
50
|
+
|
|
51
|
+
**Incoming dependencies** (who calls this code):
|
|
52
|
+
```bash
|
|
53
|
+
grep -rl "import.*[module name]\|require.*[module name]" src/ 2>/dev/null | head -10
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Outgoing dependencies** (what this code calls):
|
|
57
|
+
Read import statements from the relevant files.
|
|
58
|
+
|
|
59
|
+
Build a dependency map:
|
|
60
|
+
```
|
|
61
|
+
[target area]
|
|
62
|
+
← used by: [file A], [file B]
|
|
63
|
+
→ uses: [lib X], [module Y], [service Z]
|
|
64
|
+
↔ shares state with: [store/context/DB table]
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Step 4: Identify Integration Points
|
|
68
|
+
|
|
69
|
+
Find where new code for this phase would need to connect:
|
|
70
|
+
- Entry points (routes, event handlers, CLI commands)
|
|
71
|
+
- Shared state (stores, contexts, DB models)
|
|
72
|
+
- External service calls that affect this area
|
|
73
|
+
- Configuration that controls behavior
|
|
74
|
+
|
|
75
|
+
## Step 5: Surface Risks
|
|
76
|
+
|
|
77
|
+
Look specifically for:
|
|
78
|
+
|
|
79
|
+
**Complexity hotspots:**
|
|
80
|
+
```bash
|
|
81
|
+
# Files with most lines of code in the area
|
|
82
|
+
wc -l $(find src/ -name "*.ts" -o -name "*.py" 2>/dev/null | xargs grep -l "[key term]" 2>/dev/null) | sort -n | tail -10
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Test coverage gaps:**
|
|
86
|
+
```bash
|
|
87
|
+
find . -name "*.test.*" -o -name "test_*.py" | xargs grep -l "[key term]" 2>/dev/null
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**TODO/FIXME in the area:**
|
|
91
|
+
```bash
|
|
92
|
+
grep -rn "TODO\|FIXME\|HACK\|XXX" src/ 2>/dev/null | grep -i "[key term]" | head -10
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Known issues from DECISIONS.md:**
|
|
96
|
+
```bash
|
|
97
|
+
grep -i "[key term]" .planning/DECISIONS.md 2>/dev/null
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Step 6: Write Discovery Report
|
|
101
|
+
|
|
102
|
+
Write `.planning/phases/[padded_phase]-[slug]/[padded_phase]-DISCOVERY.md`:
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
---
|
|
106
|
+
phase: [N]
|
|
107
|
+
area: [target area]
|
|
108
|
+
created: [date]
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
# Discovery: [target area]
|
|
112
|
+
|
|
113
|
+
## Relevant Files
|
|
114
|
+
|
|
115
|
+
| File | Role | Lines |
|
|
116
|
+
|------|------|-------|
|
|
117
|
+
| [path] | [what it does] | [N] |
|
|
118
|
+
|
|
119
|
+
## Dependency Map
|
|
120
|
+
|
|
121
|
+
[ASCII diagram or bullet list]
|
|
122
|
+
|
|
123
|
+
## Integration Points
|
|
124
|
+
|
|
125
|
+
- **Entry point:** [where new code connects]
|
|
126
|
+
- **Shared state:** [what is shared]
|
|
127
|
+
- **External dependencies:** [services, APIs]
|
|
128
|
+
|
|
129
|
+
## Risks
|
|
130
|
+
|
|
131
|
+
### High
|
|
132
|
+
- [risk]: [why it's risky, what to watch for]
|
|
133
|
+
|
|
134
|
+
### Medium
|
|
135
|
+
- [risk]: [description]
|
|
136
|
+
|
|
137
|
+
### Low / Acceptable
|
|
138
|
+
- [risk]: [description]
|
|
139
|
+
|
|
140
|
+
## Test Coverage
|
|
141
|
+
|
|
142
|
+
[Summary of what's tested, what's not]
|
|
143
|
+
|
|
144
|
+
## Recommendations
|
|
145
|
+
|
|
146
|
+
Before planning Phase [N]:
|
|
147
|
+
- [Specific recommendation 1]
|
|
148
|
+
- [Specific recommendation 2]
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Step 7: Commit and Report
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
git add ".planning/phases/[padded_phase]-[slug]/"
|
|
155
|
+
git commit -m "docs([padded_phase]): discovery report for [area]"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
160
|
+
learnship ► DISCOVERY COMPLETE ✓
|
|
161
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
162
|
+
|
|
163
|
+
Area: [target]
|
|
164
|
+
Files mapped: [N]
|
|
165
|
+
Risks found: [high: N, medium: M, low: K]
|
|
166
|
+
|
|
167
|
+
▶ Next: discuss-phase [N] — your decisions will be informed by this discovery
|
|
168
|
+
or: plan-phase [N] — discovery is available for the planner to read
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Learning Checkpoint
|
|
174
|
+
|
|
175
|
+
Read `learning_mode` from `.planning/config.json`.
|
|
176
|
+
|
|
177
|
+
**If `auto`:** Offer:
|
|
178
|
+
|
|
179
|
+
> 💡 **Learning moment:** Discovery complete. Verify your mental model before building:
|
|
180
|
+
>
|
|
181
|
+
> `@agentic-learning explain [area name]` — Explain the area you just discovered back in your own words. Gaps in the explanation are gaps in the understanding — better to find them now.
|
|
182
|
+
|
|
183
|
+
**If `manual`:** Add quietly: *"Tip: `@agentic-learning explain [area]` to verify your understanding before planning."*
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Capture milestone-level goals, constraints, and anti-goals before new-milestone starts
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Discuss Milestone
|
|
6
|
+
|
|
7
|
+
Capture what the next milestone should achieve — and what it should explicitly *not* do — before committing to a roadmap. Produces a `MILESTONE-CONTEXT.md` that `new-milestone` reads to skip re-asking.
|
|
8
|
+
|
|
9
|
+
**Usage:** `discuss-milestone [version]` — e.g., `discuss-milestone v2.0`
|
|
10
|
+
|
|
11
|
+
**Run before:** `new-milestone`
|
|
12
|
+
|
|
13
|
+
## Step 1: Load Prior Context
|
|
14
|
+
|
|
15
|
+
Read what has already shipped:
|
|
16
|
+
```bash
|
|
17
|
+
cat .planning/PROJECT.md
|
|
18
|
+
cat .planning/STATE.md
|
|
19
|
+
ls .planning/milestones/ 2>/dev/null | sort -V | tail -3
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Display the last milestone summary so the conversation starts informed:
|
|
23
|
+
```
|
|
24
|
+
Last shipped: [VERSION] — [Name]
|
|
25
|
+
[2-sentence summary from milestones archive]
|
|
26
|
+
|
|
27
|
+
Pending todos: [N] items
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Check if a MILESTONE-CONTEXT.md already exists:
|
|
31
|
+
```bash
|
|
32
|
+
test -f .planning/MILESTONE-CONTEXT.md && echo "EXISTS"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
If exists: ask "A milestone context file already exists from a prior discussion. Update it or start fresh?"
|
|
36
|
+
|
|
37
|
+
## Step 2: Discuss Goals
|
|
38
|
+
|
|
39
|
+
Ask openly: **"What do you want this milestone to achieve?"**
|
|
40
|
+
|
|
41
|
+
Follow the thread. Dig into:
|
|
42
|
+
- What user capability will exist after this milestone that doesn't exist now?
|
|
43
|
+
- What's the single most important thing to ship?
|
|
44
|
+
- Are there any dependencies on external things (APIs, other teams, timing)?
|
|
45
|
+
- Is there a deadline or forcing function?
|
|
46
|
+
|
|
47
|
+
## Step 3: Capture Anti-Goals
|
|
48
|
+
|
|
49
|
+
These are often the most valuable thing to capture explicitly:
|
|
50
|
+
|
|
51
|
+
Ask: **"What should this milestone explicitly NOT do?"**
|
|
52
|
+
|
|
53
|
+
Examples that reveal useful constraints:
|
|
54
|
+
- "Don't touch the auth system — it's in use by paying customers"
|
|
55
|
+
- "Don't add real-time features — that's v3"
|
|
56
|
+
- "Don't change the public API shape — clients depend on it"
|
|
57
|
+
|
|
58
|
+
If the user doesn't have strong anti-goals, prompt: "Any areas of the codebase that should be off-limits? Features that feel like scope creep for this cycle?"
|
|
59
|
+
|
|
60
|
+
## Step 4: Capture Constraints
|
|
61
|
+
|
|
62
|
+
Ask about practical constraints:
|
|
63
|
+
- **Team/time**: Solo? Team of N? Approximate timeline?
|
|
64
|
+
- **Quality bar**: Prototype/spike, or production-grade?
|
|
65
|
+
- **Known technical debt**: Anything that must be addressed in this milestone?
|
|
66
|
+
- **Architecture decisions already made**: Anything that constrains the approach?
|
|
67
|
+
|
|
68
|
+
## Step 5: Write MILESTONE-CONTEXT.md
|
|
69
|
+
|
|
70
|
+
Write `.planning/MILESTONE-CONTEXT.md`:
|
|
71
|
+
|
|
72
|
+
```markdown
|
|
73
|
+
---
|
|
74
|
+
version: [VERSION]
|
|
75
|
+
created: [date]
|
|
76
|
+
status: ready
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
# Milestone Context: [VERSION]
|
|
80
|
+
|
|
81
|
+
## Goals
|
|
82
|
+
|
|
83
|
+
[2-4 bullet points — what the user wants to achieve]
|
|
84
|
+
|
|
85
|
+
## Must-Have Features
|
|
86
|
+
|
|
87
|
+
[List of features/capabilities that define this milestone's success]
|
|
88
|
+
|
|
89
|
+
## Anti-Goals
|
|
90
|
+
|
|
91
|
+
[What this milestone explicitly does NOT include — equally important as goals]
|
|
92
|
+
|
|
93
|
+
## Constraints
|
|
94
|
+
|
|
95
|
+
- **Scope**: [Solo/Team, timeline if known]
|
|
96
|
+
- **Quality bar**: [prototype | production-grade]
|
|
97
|
+
- **Off-limits areas**: [parts of codebase not to touch]
|
|
98
|
+
- **Architecture constraints**: [decisions already locked in]
|
|
99
|
+
|
|
100
|
+
## Open Questions
|
|
101
|
+
|
|
102
|
+
[Anything unresolved that new-milestone should ask about]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Step 6: Commit and Confirm
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
git add .planning/MILESTONE-CONTEXT.md
|
|
109
|
+
git commit -m "docs: capture milestone [VERSION] context"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
114
|
+
learnship ► MILESTONE CONTEXT CAPTURED ✓
|
|
115
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
116
|
+
|
|
117
|
+
Milestone: [VERSION]
|
|
118
|
+
Goals: [N] captured
|
|
119
|
+
Anti-goals: [N] captured
|
|
120
|
+
|
|
121
|
+
▶ Next: new-milestone [VERSION] (will read this context automatically)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Learning Checkpoint
|
|
127
|
+
|
|
128
|
+
Read `learning_mode` from `.planning/config.json`.
|
|
129
|
+
|
|
130
|
+
**If `auto`:** Offer:
|
|
131
|
+
|
|
132
|
+
> 💡 **Learning moment:** About to start a new milestone. Brainstorm the design before locking scope:
|
|
133
|
+
>
|
|
134
|
+
> `@agentic-learning brainstorm [milestone topic]` — Talk through the new capabilities before committing. What's the mental model? What are the 2-3 ways this could be built? Surface blind spots now, not mid-execution.
|
|
135
|
+
|
|
136
|
+
**If `manual`:** Add quietly: *"Tip: `@agentic-learning brainstorm [topic]` before new-milestone to surface approach alternatives."*
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Capture implementation decisions for a phase before planning starts
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Discuss Phase
|
|
6
|
+
|
|
7
|
+
Extract implementation decisions that downstream planning needs. Analyze the phase to identify gray areas, let the user choose what to discuss, then deep-dive each selected area until satisfied.
|
|
8
|
+
|
|
9
|
+
**Usage:** Run `discuss-phase [N]` before `plan-phase [N]`.
|
|
10
|
+
|
|
11
|
+
**You are a thinking partner, not an interviewer.** The user is the visionary — you are the builder. Capture decisions that will guide research and planning.
|
|
12
|
+
|
|
13
|
+
## Step 1: Load Phase
|
|
14
|
+
|
|
15
|
+
Read `.planning/ROADMAP.md` and find the requested phase number. If not found, stop and show available phases.
|
|
16
|
+
|
|
17
|
+
Read prior context to avoid re-asking decided questions:
|
|
18
|
+
```bash
|
|
19
|
+
cat .planning/PROJECT.md
|
|
20
|
+
cat .planning/REQUIREMENTS.md
|
|
21
|
+
cat .planning/STATE.md
|
|
22
|
+
find .planning/phases -name "*-CONTEXT.md" 2>/dev/null | sort
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Extract from prior CONTEXT.md files: locked preferences, patterns the user has established (e.g., "user consistently prefers minimal UI", "user rejected single-key shortcuts").
|
|
26
|
+
|
|
27
|
+
## Step 1b: Load Decisions Register
|
|
28
|
+
|
|
29
|
+
If `.planning/DECISIONS.md` exists, read it:
|
|
30
|
+
```bash
|
|
31
|
+
cat .planning/DECISIONS.md 2>/dev/null | head -80
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Note any decisions that constrain or inform this phase's approach. Surface them during discussion rather than re-asking decided questions.
|
|
35
|
+
|
|
36
|
+
## Step 2: Check Existing Context
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
ls .planning/phases/*-CONTEXT.md 2>/dev/null
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
If CONTEXT.md already exists for this phase:
|
|
43
|
+
- Offer: **Update it** / **View it** / **Skip** (use as-is)
|
|
44
|
+
- If "Skip" → exit workflow
|
|
45
|
+
|
|
46
|
+
If no CONTEXT.md exists but plans already exist for this phase:
|
|
47
|
+
- Warn: "Phase [X] already has plans created without user context. Your decisions here won't affect existing plans unless you re-run plan-phase."
|
|
48
|
+
- Ask: **Continue and replan after** / **Cancel**
|
|
49
|
+
|
|
50
|
+
## Step 3: Scout Codebase
|
|
51
|
+
|
|
52
|
+
Do a lightweight scan to inform the discussion. Look for:
|
|
53
|
+
- Existing components, hooks, utilities relevant to this phase
|
|
54
|
+
- Established patterns (state management, styling, data fetching)
|
|
55
|
+
- Integration points where new code would connect
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
ls src/components/ src/hooks/ src/lib/ src/utils/ 2>/dev/null
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Use grep to find files related to the phase goal's key terms. Read 3-5 most relevant files. Store findings internally — don't write to a file yet.
|
|
62
|
+
|
|
63
|
+
## Step 4: Identify Gray Areas
|
|
64
|
+
|
|
65
|
+
Analyze the phase goal from ROADMAP.md. A gray area is an **implementation decision the user cares about** — something that could go multiple ways and would change the result.
|
|
66
|
+
|
|
67
|
+
**By domain type:**
|
|
68
|
+
- Something users **SEE** → layout, density, interactions, empty states
|
|
69
|
+
- Something users **CALL** → response format, errors, auth flow, versioning
|
|
70
|
+
- Something users **RUN** → output format, flags, modes, error handling
|
|
71
|
+
- Something users **READ** → structure, tone, depth, flow
|
|
72
|
+
- Something being **ORGANIZED** → grouping criteria, naming, duplicates
|
|
73
|
+
|
|
74
|
+
**Check prior decisions first** — don't re-ask what's already locked from earlier phases.
|
|
75
|
+
|
|
76
|
+
Generate 3-4 **phase-specific** gray areas. Not generic categories ("UI", "UX") — concrete decisions:
|
|
77
|
+
```
|
|
78
|
+
Phase: "User authentication"
|
|
79
|
+
→ Session handling, Error responses, Multi-device policy, Recovery flow
|
|
80
|
+
|
|
81
|
+
Phase: "Post Feed"
|
|
82
|
+
→ Layout style (cards vs. timeline), Loading behavior, Content metadata, Empty state
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
If no meaningful gray areas exist (pure infrastructure, all already decided), note this and skip to Step 6.
|
|
86
|
+
|
|
87
|
+
## Step 5: Present Gray Areas and Discuss
|
|
88
|
+
|
|
89
|
+
Display:
|
|
90
|
+
```
|
|
91
|
+
Phase [X]: [Name]
|
|
92
|
+
Domain: [what this phase delivers]
|
|
93
|
+
|
|
94
|
+
We'll clarify HOW to implement this — new capabilities belong in other phases.
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
If prior decisions apply, show them:
|
|
98
|
+
```
|
|
99
|
+
Carrying forward from earlier phases:
|
|
100
|
+
- [Decision from Phase N]
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Present 3-4 gray areas for selection (multi-select). Annotate with:
|
|
104
|
+
- Prior decision context: "You chose X in Phase 5"
|
|
105
|
+
- Code context: "You already have a Card component with shadow/rounded variants"
|
|
106
|
+
|
|
107
|
+
**For each selected area, discuss:**
|
|
108
|
+
|
|
109
|
+
1. Announce: "Let's talk about [Area]."
|
|
110
|
+
2. Ask 4 focused questions with concrete options (not abstract). Include the recommended choice. Annotate options with existing code where relevant.
|
|
111
|
+
3. After 4 questions, ask: "More questions about [area], or move to next?"
|
|
112
|
+
4. If more → ask 4 more, then check again
|
|
113
|
+
|
|
114
|
+
After all selected areas:
|
|
115
|
+
- Summarize decisions captured
|
|
116
|
+
- Ask: "Which gray areas remain unclear?" → "Explore more" or "I'm ready for context"
|
|
117
|
+
|
|
118
|
+
**Scope guardrail:** If the user suggests a new capability, say:
|
|
119
|
+
```
|
|
120
|
+
"[Feature X] sounds like a new capability — that's its own phase.
|
|
121
|
+
Want me to note it for the roadmap backlog?
|
|
122
|
+
|
|
123
|
+
Back to [current area]..."
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Track deferred ideas internally.
|
|
127
|
+
|
|
128
|
+
## Step 6: Write CONTEXT.md
|
|
129
|
+
|
|
130
|
+
Find or create the phase directory:
|
|
131
|
+
```bash
|
|
132
|
+
mkdir -p ".planning/phases/[padded_phase]-[phase_slug]"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Write `.planning/phases/[padded_phase]-[phase_slug]/[padded_phase]-CONTEXT.md`:
|
|
136
|
+
|
|
137
|
+
```markdown
|
|
138
|
+
# Phase [X]: [Name] - Context
|
|
139
|
+
|
|
140
|
+
**Gathered:** [date]
|
|
141
|
+
**Status:** Ready for planning
|
|
142
|
+
|
|
143
|
+
<domain>
|
|
144
|
+
## Phase Boundary
|
|
145
|
+
|
|
146
|
+
[Clear statement of what this phase delivers]
|
|
147
|
+
|
|
148
|
+
</domain>
|
|
149
|
+
|
|
150
|
+
<decisions>
|
|
151
|
+
## Implementation Decisions
|
|
152
|
+
|
|
153
|
+
### [Category discussed]
|
|
154
|
+
- [Decision captured]
|
|
155
|
+
|
|
156
|
+
### Claude's Discretion
|
|
157
|
+
[Areas where user said "you decide"]
|
|
158
|
+
|
|
159
|
+
</decisions>
|
|
160
|
+
|
|
161
|
+
<code_context>
|
|
162
|
+
## Existing Code Insights
|
|
163
|
+
|
|
164
|
+
### Reusable Assets
|
|
165
|
+
- [Component/hook]: [How it could be used]
|
|
166
|
+
|
|
167
|
+
### Established Patterns
|
|
168
|
+
- [Pattern]: [How it constrains/enables this phase]
|
|
169
|
+
|
|
170
|
+
### Integration Points
|
|
171
|
+
- [Where new code connects to existing system]
|
|
172
|
+
|
|
173
|
+
</code_context>
|
|
174
|
+
|
|
175
|
+
<specifics>
|
|
176
|
+
## Specific Ideas
|
|
177
|
+
|
|
178
|
+
[Any "I want it like X" moments or specific references]
|
|
179
|
+
|
|
180
|
+
[If none: "No specific requirements — open to standard approaches"]
|
|
181
|
+
|
|
182
|
+
</specifics>
|
|
183
|
+
|
|
184
|
+
<deferred>
|
|
185
|
+
## Deferred Ideas
|
|
186
|
+
|
|
187
|
+
[Ideas that came up but belong in other phases]
|
|
188
|
+
|
|
189
|
+
[If none: "None — discussion stayed within phase scope"]
|
|
190
|
+
|
|
191
|
+
</deferred>
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
*Phase: [padded_phase]-[phase_slug]*
|
|
195
|
+
*Context gathered: [date]*
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Step 7: Commit and Confirm
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
git add ".planning/phases/[padded_phase]-[phase_slug]/[padded_phase]-CONTEXT.md"
|
|
202
|
+
git commit -m "docs([padded_phase]): capture phase context"
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Update STATE.md with session info, then commit:
|
|
206
|
+
```bash
|
|
207
|
+
git add .planning/STATE.md && git commit -m "docs(state): record phase [X] context session"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Present summary:
|
|
211
|
+
```
|
|
212
|
+
Created: .planning/phases/[padded_phase]-[slug]/[padded_phase]-CONTEXT.md
|
|
213
|
+
|
|
214
|
+
## Decisions Captured
|
|
215
|
+
|
|
216
|
+
### [Category]
|
|
217
|
+
- [Key decision]
|
|
218
|
+
|
|
219
|
+
[If deferred ideas:]
|
|
220
|
+
## Noted for Later
|
|
221
|
+
- [Deferred idea] — future phase
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
▶ Next Up: plan-phase [X]
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Learning Checkpoint
|
|
231
|
+
|
|
232
|
+
Read `learning_mode` from `.planning/config.json`.
|
|
233
|
+
|
|
234
|
+
**If `auto`:** Offer based on where you are in the discussion:
|
|
235
|
+
|
|
236
|
+
> 💡 **Learning moment:** Implementation decisions just captured. Make them stick:
|
|
237
|
+
>
|
|
238
|
+
> `@agentic-learning either-or` — Record the decision paths considered, the choice made, and expected consequences. Builds a searchable record of your reasoning that future phases can reference.
|
|
239
|
+
>
|
|
240
|
+
> `@agentic-learning brainstorm [phase topic]` — If any area felt unclear or you settled quickly, talk it through now. Better to surface a blind spot here than mid-execution.
|
|
241
|
+
>
|
|
242
|
+
> `@agentic-learning explain-first [phase topic]` — Explain the planned approach back in your own words. If the explanation has gaps, the CONTEXT.md probably does too.
|
|
243
|
+
|
|
244
|
+
**If `manual`:** Add quietly: *"Tip: `@agentic-learning either-or` to log today's decisions as a decision journal entry."*
|