learnship 1.9.24 → 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 +74 -20
- 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 +4 -0
- 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/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/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,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.
|
|
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 |
|
|
10
|
-
|
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
|
|
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**
|
|
25
|
-
-
|
|
26
|
-
-
|
|
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)
|
|
30
|
-
-
|
|
31
|
-
-
|
|
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**
|
|
36
|
-
-
|
|
37
|
-
-
|
|
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.
|
|
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": "
|
|
60
|
-
"planner": "
|
|
69
|
+
"executor": "large",
|
|
70
|
+
"planner": "small"
|
|
61
71
|
}
|
|
62
72
|
}
|
|
63
73
|
```
|
|
64
74
|
|
|
65
|
-
Overrides take precedence over the profile. Valid values: `
|
|
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
|
|
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
|
|
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
|
|
87
|
-
Verification requires goal-backward reasoning — checking if code *delivers* what the phase promised, not just pattern matching.
|
|
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?"
|