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,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
|
---
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Safety mode — warn on destructive commands, lock file scope
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Guard
|
|
6
|
+
|
|
7
|
+
Safety mode for sensitive phases. Warns before destructive commands, locks file scope to prevent accidental changes outside the working area, and persists guard state across sessions.
|
|
8
|
+
|
|
9
|
+
**Usage:** `guard [scope]` — activate guard mode for a specific scope (directory, file pattern, or phase)
|
|
10
|
+
**Usage:** `guard off` — deactivate guard mode
|
|
11
|
+
|
|
12
|
+
## Step 1: Parse Arguments
|
|
13
|
+
|
|
14
|
+
If argument is `off` → deactivate guard mode (Step 6).
|
|
15
|
+
|
|
16
|
+
Otherwise, interpret the scope:
|
|
17
|
+
- **Directory path** (e.g., `src/auth/`) → guard all files under that path
|
|
18
|
+
- **File pattern** (e.g., `*.migration`) → guard files matching the pattern
|
|
19
|
+
- **Phase number** (e.g., `3`) → guard files modified by that phase's plans
|
|
20
|
+
- **No argument** → guard the current phase's file scope
|
|
21
|
+
|
|
22
|
+
## Step 2: Determine File Scope
|
|
23
|
+
|
|
24
|
+
**If a directory or pattern was provided:** Use it directly.
|
|
25
|
+
|
|
26
|
+
**If a phase number was provided:**
|
|
27
|
+
```bash
|
|
28
|
+
# Extract files_modified from all plans in the phase
|
|
29
|
+
grep -h "files_modified" .planning/phases/[padded_phase]-*/*-PLAN.md -A 50 2>/dev/null | grep "^ *-" | sed 's/^ *- //'
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**If no argument — auto-detect from current phase:**
|
|
33
|
+
```bash
|
|
34
|
+
# Read current phase from STATE.md
|
|
35
|
+
cat .planning/STATE.md 2>/dev/null | grep -i "phase"
|
|
36
|
+
|
|
37
|
+
# Get files from current phase plans
|
|
38
|
+
grep -rh "files_modified" .planning/phases/$(ls .planning/phases/ | sort | tail -1)/*-PLAN.md -A 50 2>/dev/null | grep "^ *-" | sed 's/^ *- //'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Brownfield enhancement:** If `.planning/codebase/CONCERNS.md` exists, read it and auto-suggest guard scope for files flagged as high-risk:
|
|
42
|
+
```bash
|
|
43
|
+
cat .planning/codebase/CONCERNS.md 2>/dev/null | grep -i "risk\|sensitive\|critical\|production"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Step 3: Activate Guard
|
|
47
|
+
|
|
48
|
+
Write guard state to `.planning/guard-state.md`:
|
|
49
|
+
|
|
50
|
+
```markdown
|
|
51
|
+
---
|
|
52
|
+
active: true
|
|
53
|
+
activated: [ISO timestamp]
|
|
54
|
+
scope: [description of what's guarded]
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
# Guard Mode Active
|
|
58
|
+
|
|
59
|
+
## Protected Scope
|
|
60
|
+
|
|
61
|
+
[list of files/directories/patterns being guarded]
|
|
62
|
+
|
|
63
|
+
## Destructive Command Warnings
|
|
64
|
+
|
|
65
|
+
The following commands will trigger a warning before execution:
|
|
66
|
+
- `rm`, `rm -rf`, `git reset --hard`, `git clean -fd`
|
|
67
|
+
- `DROP TABLE`, `DELETE FROM`, `TRUNCATE`
|
|
68
|
+
- `git push --force`, `git rebase` (on shared branches)
|
|
69
|
+
- Any write to files outside the guarded scope
|
|
70
|
+
|
|
71
|
+
## Session Log
|
|
72
|
+
|
|
73
|
+
- [timestamp]: Guard activated — scope: [scope description]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
git add .planning/guard-state.md
|
|
78
|
+
git commit -m "docs: activate guard mode — scope: [description]"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Display:
|
|
82
|
+
```
|
|
83
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
84
|
+
learnship ► GUARD MODE ACTIVE
|
|
85
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
86
|
+
|
|
87
|
+
Protected scope:
|
|
88
|
+
[list of guarded files/dirs]
|
|
89
|
+
|
|
90
|
+
Warnings will trigger for:
|
|
91
|
+
- Destructive commands (rm -rf, git reset --hard, DROP TABLE)
|
|
92
|
+
- Writes outside guarded scope
|
|
93
|
+
- Force pushes and rebases on shared branches
|
|
94
|
+
|
|
95
|
+
▶ Run: guard off — to deactivate
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Step 4: Guard Behavior (While Active)
|
|
99
|
+
|
|
100
|
+
When guard mode is active (`.planning/guard-state.md` exists with `active: true`):
|
|
101
|
+
|
|
102
|
+
**Before any file write:** Check if the target file is within the guarded scope.
|
|
103
|
+
- **Inside scope** → proceed normally
|
|
104
|
+
- **Outside scope** → warn: "⚠ Guard: This file is outside the guarded scope ([scope]). Proceed anyway?"
|
|
105
|
+
|
|
106
|
+
**Before destructive commands:** Always warn:
|
|
107
|
+
```
|
|
108
|
+
⚠ Guard: Destructive command detected: [command]
|
|
109
|
+
This will [description of what it does].
|
|
110
|
+
Proceed? (yes/no)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Log all guard events** to the Session Log in `guard-state.md`.
|
|
114
|
+
|
|
115
|
+
## Step 5: Persistent State
|
|
116
|
+
|
|
117
|
+
Guard mode persists across sessions via `.planning/guard-state.md`. Any workflow that reads `.planning/config.json` should also check for active guard state:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Check if guard is active
|
|
121
|
+
grep -q "active: true" .planning/guard-state.md 2>/dev/null && echo "GUARD_ACTIVE"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Step 6: Deactivate
|
|
125
|
+
|
|
126
|
+
When `guard off` is invoked:
|
|
127
|
+
|
|
128
|
+
Update `.planning/guard-state.md`:
|
|
129
|
+
```markdown
|
|
130
|
+
---
|
|
131
|
+
active: false
|
|
132
|
+
activated: [original timestamp]
|
|
133
|
+
deactivated: [ISO timestamp]
|
|
134
|
+
scope: [original scope]
|
|
135
|
+
---
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
git add .planning/guard-state.md
|
|
140
|
+
git commit -m "docs: deactivate guard mode"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
145
|
+
learnship ► GUARD MODE DEACTIVATED
|
|
146
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
147
|
+
|
|
148
|
+
Guard was active for: [duration]
|
|
149
|
+
Events logged: [N]
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Learning Checkpoint
|
|
155
|
+
|
|
156
|
+
Read `learning_mode` from `.planning/config.json`.
|
|
157
|
+
|
|
158
|
+
**If `auto`:** After activating guard, offer:
|
|
159
|
+
|
|
160
|
+
> 💡 **Learning moment:** Safety modes reflect risk awareness:
|
|
161
|
+
>
|
|
162
|
+
> `@agentic-learning either-or` — When should you use guard mode vs just being careful? Log the decision criteria for future reference.
|
|
163
|
+
|
|
164
|
+
**If `manual`:** Add quietly: *"Tip: `@agentic-learning either-or` to log when guard mode is worth the overhead."*
|
|
@@ -16,7 +16,7 @@ You only need to remember **5 commands** to use learnship effectively:
|
|
|
16
16
|
| `/next` | Auto-pilot — reads state and runs the right workflow for you |
|
|
17
17
|
| `/new-project` | Starting a brand new project |
|
|
18
18
|
| `/quick "..."` | One-off task with atomic commit, no ceremony |
|
|
19
|
-
| `/help` | This screen — see all
|
|
19
|
+
| `/help` | This screen — see all 49 commands |
|
|
20
20
|
|
|
21
21
|
Everything else below is discoverable from `/ls` as you go.
|
|
22
22
|
|
|
@@ -79,6 +79,18 @@ Everything else below is discoverable from `/ls` as you go.
|
|
|
79
79
|
| `/check-todos` | Review and act on captured todos |
|
|
80
80
|
| `/add-tests [N]` | Generate unit and E2E tests post-execution |
|
|
81
81
|
|
|
82
|
+
### Compounding & Quality — capture, review, ship
|
|
83
|
+
|
|
84
|
+
| Workflow | What it does |
|
|
85
|
+
|----------|-------------|
|
|
86
|
+
| `/compound` | Capture a solution while context is fresh → `.planning/solutions/` |
|
|
87
|
+
| `/review [mode]` | Multi-persona code review (correctness, testing, security, performance, maintainability) |
|
|
88
|
+
| `/challenge [description]` | Product + engineering challenge gate — is this worth building? |
|
|
89
|
+
| `/ship` | Ship pipeline: test → lint → commit → push → PR |
|
|
90
|
+
| `/ideate [focus]` | Codebase-grounded divergent thinking — discover what to work on |
|
|
91
|
+
| `/guard [scope\|off]` | Safety mode — warn on destructive commands, lock file scope |
|
|
92
|
+
| `/sync-docs` | Detect stale documentation after code changes |
|
|
93
|
+
|
|
82
94
|
### Decision Intelligence — institutional memory
|
|
83
95
|
|
|
84
96
|
| Workflow | What it does |
|
|
@@ -119,7 +131,7 @@ Everything else below is discoverable from `/ls` as you go.
|
|
|
119
131
|
|
|
120
132
|
**Standard phase loop:**
|
|
121
133
|
```
|
|
122
|
-
/discuss-phase N → /plan-phase N → /execute-phase N → /verify-work N
|
|
134
|
+
/discuss-phase N → /plan-phase N → /execute-phase N → /verify-work N → /review → /ship → /compound
|
|
123
135
|
```
|
|
124
136
|
|
|
125
137
|
**Quick fix:**
|