@locksmithdon/dons-flow 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/LICENSE +21 -0
- package/README.md +140 -0
- package/docs/conventions.md +55 -0
- package/docs/memory/MEMORY.md +9 -0
- package/docs/memory/monitor_upstream_evolution.md +52 -0
- package/docs/runbooks/monitor-upstream-evolution.md +82 -0
- package/package.json +56 -0
- package/skills/as-built-documentation/SKILL.md +143 -0
- package/skills/capturing-learnings/SKILL.md +74 -0
- package/skills/dons-flow/SKILL.md +263 -0
- package/skills/epiphany-tabling/SKILL.md +64 -0
- package/skills/finishing-a-development-branch/SKILL.md +200 -0
- package/skills/land/SKILL.md +103 -0
- package/skills/setup-dons-flow/SKILL.md +154 -0
- package/skills/using-git-worktrees/SKILL.md +220 -0
- package/skills/verification-before-completion/SKILL.md +139 -0
- package/skills/writing-retros/SKILL.md +64 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup-dons-flow
|
|
3
|
+
description: Use when installing or onboarding @locksmithdon/dons-flow in a repo — checks dependencies, detects Superpowers, and creates repo conventions
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Setup Don's Flow
|
|
7
|
+
|
|
8
|
+
Onboard a repo to the integrated RPIV + Superpowers + `land` workflow. This skill checks prerequisites, detects what is already installed, creates the repo-owned conventions, and tells you what still needs to be done.
|
|
9
|
+
|
|
10
|
+
## Announce at start
|
|
11
|
+
|
|
12
|
+
> "I'm using the `setup-dons-flow` skill to onboard this repo to the integrated workflow."
|
|
13
|
+
|
|
14
|
+
## When to use
|
|
15
|
+
|
|
16
|
+
- Right after installing `@locksmithdon/dons-flow` in a repo.
|
|
17
|
+
- When you suspect prerequisites are missing.
|
|
18
|
+
- When setting up a fresh repo for this workflow.
|
|
19
|
+
|
|
20
|
+
## Process
|
|
21
|
+
|
|
22
|
+
### Step 1: Detect installed Pi packages
|
|
23
|
+
|
|
24
|
+
Run:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
pi list
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Look for:
|
|
31
|
+
|
|
32
|
+
| Package | Required? | If missing |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| `npm:@juicesharp/rpiv-pi` | Yes | `pi install npm:@juicesharp/rpiv-pi` |
|
|
35
|
+
| `npm:@tintinweb/pi-subagents` | Yes | `pi install npm:@tintinweb/pi-subagents` |
|
|
36
|
+
| `npm:@locksmithdon/dons-flow` | Yes | `pi install npm:@locksmithdon/dons-flow` |
|
|
37
|
+
|
|
38
|
+
If RPIV is installed, also run `/rpiv-setup` once and restart Pi to install RPIV's sibling plugins.
|
|
39
|
+
|
|
40
|
+
### Step 2: Detect Superpowers
|
|
41
|
+
|
|
42
|
+
Superpowers is installed via your agent harness, not as a Pi npm package. Check one of:
|
|
43
|
+
|
|
44
|
+
- **Claude Code:** `/plugin list` should show `superpowers`
|
|
45
|
+
- **Codex CLI:** `/plugins` should list Superpowers
|
|
46
|
+
- **Gemini CLI:** `gemini extensions list` should show it
|
|
47
|
+
- **Skills directory:** `ls ~/.pi/agent/skills/` may contain Superpowers skills if they were copied manually
|
|
48
|
+
|
|
49
|
+
If Superpowers is not installed, ask the user which path they prefer:
|
|
50
|
+
|
|
51
|
+
1. **Harness plugin** (recommended for most users)
|
|
52
|
+
2. **Git URL** — `pi install github:obra/superpowers` if their Pi supports git URLs
|
|
53
|
+
3. **Skip for now** — the closeout workflow still works without Superpowers entry points
|
|
54
|
+
|
|
55
|
+
Record the choice in `docs/memory/MEMORY.md` if this is a long-lived project.
|
|
56
|
+
|
|
57
|
+
### Step 3: Check repo conventions
|
|
58
|
+
|
|
59
|
+
Check whether these project-owned files and folders exist:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
ls docs/tabled.md docs/status.md docs/memory/MEMORY.md docs/changes docs/retros docs/runbooks AGENTS.md 2>/dev/null
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Expected:
|
|
66
|
+
|
|
67
|
+
| Path | Purpose |
|
|
68
|
+
|---|---|
|
|
69
|
+
| `docs/tabled.md` | Working memory for deferred ideas |
|
|
70
|
+
| `docs/tabled/` | Optional per-item tabled docs |
|
|
71
|
+
| `docs/status.md` | Living status |
|
|
72
|
+
| `docs/memory/` | Persistent memory + `MEMORY.md` index |
|
|
73
|
+
| `docs/changes/` | As-built documentation |
|
|
74
|
+
| `docs/retros/` | Frozen retrospectives |
|
|
75
|
+
| `docs/runbooks/` | Multi-skill processes |
|
|
76
|
+
| `AGENTS.md` | Repo-level agent guidance |
|
|
77
|
+
|
|
78
|
+
### Step 4: Create missing conventions
|
|
79
|
+
|
|
80
|
+
If the user approves, create missing conventions:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
mkdir -p docs/{tabled,memory,changes,retros,runbooks}
|
|
84
|
+
touch docs/tabled.md docs/status.md docs/memory/MEMORY.md AGENTS.md
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Seed `docs/status.md` with:
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
# Status
|
|
91
|
+
|
|
92
|
+
## Active Work
|
|
93
|
+
|
|
94
|
+
- Onboarding `@locksmithdon/dons-flow`
|
|
95
|
+
|
|
96
|
+
## Recently Completed
|
|
97
|
+
|
|
98
|
+
_None yet._
|
|
99
|
+
|
|
100
|
+
## What's Next
|
|
101
|
+
|
|
102
|
+
_None yet._
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Seed `docs/memory/MEMORY.md` with:
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
# Memory Index
|
|
109
|
+
|
|
110
|
+
Cross-session context for this project.
|
|
111
|
+
|
|
112
|
+
## Entries
|
|
113
|
+
|
|
114
|
+
_None yet._
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Seed `AGENTS.md` with a minimal entry pointing at this workflow:
|
|
118
|
+
|
|
119
|
+
```markdown
|
|
120
|
+
# AGENTS.md
|
|
121
|
+
|
|
122
|
+
This project uses the `@locksmithdon/dons-flow` workflow:
|
|
123
|
+
- RPIV pipeline for discovery, research, design/plan, implement, validate, review, commit.
|
|
124
|
+
- Superpowers-style scope control and verification discipline.
|
|
125
|
+
- `land` skill for 10-step cycle closeout.
|
|
126
|
+
|
|
127
|
+
See `docs/runbooks/` for detailed processes and `docs/memory/` for project context.
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Step 5: Report status and next steps
|
|
131
|
+
|
|
132
|
+
Present a concise summary:
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
Setup status for <repo>:
|
|
136
|
+
|
|
137
|
+
✓ RPIV installed
|
|
138
|
+
✗ @tintinweb/pi-subagents missing — run: pi install npm:@tintinweb/pi-subagents
|
|
139
|
+
✓ Repo conventions created
|
|
140
|
+
? Superpowers — not detected; install via harness plugin if desired
|
|
141
|
+
|
|
142
|
+
Next step: /skill:dons-flow to see the workflow map.
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Anti-patterns
|
|
146
|
+
|
|
147
|
+
- **Creating conventions without asking.** The repo belongs to the team; don't mutate its doc structure unilaterally.
|
|
148
|
+
- **Assuming Superpowers is installed.** It is optional and harness-specific. Always detect or ask.
|
|
149
|
+
- **Installing packages without confirmation.** Present the install commands; let the human run them.
|
|
150
|
+
|
|
151
|
+
## Integration
|
|
152
|
+
|
|
153
|
+
- Called automatically on first install if an extension hook is added later.
|
|
154
|
+
- Should be re-run after major RPIV or Superpowers updates to refresh conventions.
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: using-git-worktrees
|
|
3
|
+
description: Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Using Git Worktrees
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Git worktrees create isolated workspaces sharing the same repository, allowing work on multiple branches simultaneously without switching.
|
|
11
|
+
|
|
12
|
+
**Core principle:** Systematic directory selection + safety verification = reliable isolation.
|
|
13
|
+
|
|
14
|
+
**Announce at start:** "I'm using the using-git-worktrees skill to set up an isolated workspace."
|
|
15
|
+
|
|
16
|
+
## Directory Selection Process
|
|
17
|
+
|
|
18
|
+
Follow this priority order:
|
|
19
|
+
|
|
20
|
+
### 1. Check Existing Directories
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Check in priority order
|
|
24
|
+
ls -d .worktrees 2>/dev/null # Preferred (hidden)
|
|
25
|
+
ls -d worktrees 2>/dev/null # Alternative
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**If found:** Use that directory. If both exist, `.worktrees` wins.
|
|
29
|
+
|
|
30
|
+
### 2. Check CLAUDE.md
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
grep -i "worktree.*director" CLAUDE.md 2>/dev/null
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**If preference specified:** Use it without asking.
|
|
37
|
+
|
|
38
|
+
### 3. Ask User
|
|
39
|
+
|
|
40
|
+
If no directory exists and no CLAUDE.md preference:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
No worktree directory found. Where should I create worktrees?
|
|
44
|
+
|
|
45
|
+
1. .worktrees/ (project-local, hidden)
|
|
46
|
+
2. ~/.pi/worktrees/<project-name>/ (global location)
|
|
47
|
+
|
|
48
|
+
Which would you prefer?
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Safety Verification
|
|
52
|
+
|
|
53
|
+
### For Project-Local Directories (.worktrees or worktrees)
|
|
54
|
+
|
|
55
|
+
**MUST verify directory is ignored before creating worktree:**
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Check if directory is ignored (respects local, global, and system gitignore)
|
|
59
|
+
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**If NOT ignored:**
|
|
63
|
+
|
|
64
|
+
Per Jesse's rule "Fix broken things immediately":
|
|
65
|
+
1. Add appropriate line to .gitignore
|
|
66
|
+
2. Commit the change
|
|
67
|
+
3. Proceed with worktree creation
|
|
68
|
+
|
|
69
|
+
**Why critical:** Prevents accidentally committing worktree contents to repository.
|
|
70
|
+
|
|
71
|
+
### For Global Directory (~/.pi/worktrees)
|
|
72
|
+
|
|
73
|
+
No .gitignore verification needed - outside project entirely.
|
|
74
|
+
|
|
75
|
+
## Creation Steps
|
|
76
|
+
|
|
77
|
+
### 1. Detect Project Name
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
project=$(basename "$(git rev-parse --show-toplevel)")
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 2. Create Worktree
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Determine full path
|
|
87
|
+
case $LOCATION in
|
|
88
|
+
.worktrees|worktrees)
|
|
89
|
+
path="$LOCATION/$BRANCH_NAME"
|
|
90
|
+
;;
|
|
91
|
+
~/.pi/worktrees/*)
|
|
92
|
+
path="~/.pi/worktrees/$project/$BRANCH_NAME"
|
|
93
|
+
;;
|
|
94
|
+
esac
|
|
95
|
+
|
|
96
|
+
# Create worktree with new branch
|
|
97
|
+
git worktree add "$path" -b "$BRANCH_NAME"
|
|
98
|
+
cd "$path"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 3. Run Project Setup
|
|
102
|
+
|
|
103
|
+
Auto-detect and run appropriate setup:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Node.js
|
|
107
|
+
if [ -f package.json ]; then npm install; fi
|
|
108
|
+
|
|
109
|
+
# Rust
|
|
110
|
+
if [ -f Cargo.toml ]; then cargo build; fi
|
|
111
|
+
|
|
112
|
+
# Python
|
|
113
|
+
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
|
114
|
+
if [ -f pyproject.toml ]; then poetry install; fi
|
|
115
|
+
|
|
116
|
+
# Go
|
|
117
|
+
if [ -f go.mod ]; then go mod download; fi
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### 4. Verify Clean Baseline
|
|
121
|
+
|
|
122
|
+
Run tests to ensure worktree starts clean:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Examples - use project-appropriate command
|
|
126
|
+
npm test
|
|
127
|
+
cargo test
|
|
128
|
+
pytest
|
|
129
|
+
go test ./...
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**If tests fail:** Report failures, ask whether to proceed or investigate.
|
|
133
|
+
|
|
134
|
+
**If tests pass:** Report ready.
|
|
135
|
+
|
|
136
|
+
### 5. Report Location
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
Worktree ready at <full-path>
|
|
140
|
+
Tests passing (<N> tests, 0 failures)
|
|
141
|
+
Ready to implement <feature-name>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Quick Reference
|
|
145
|
+
|
|
146
|
+
| Situation | Action |
|
|
147
|
+
|-----------|--------|
|
|
148
|
+
| `.worktrees/` exists | Use it (verify ignored) |
|
|
149
|
+
| `worktrees/` exists | Use it (verify ignored) |
|
|
150
|
+
| Both exist | Use `.worktrees/` |
|
|
151
|
+
| Neither exists | Check CLAUDE.md → Ask user |
|
|
152
|
+
| Directory not ignored | Add to .gitignore + commit |
|
|
153
|
+
| Tests fail during baseline | Report failures + ask |
|
|
154
|
+
| No package.json/Cargo.toml | Skip dependency install |
|
|
155
|
+
|
|
156
|
+
## Common Mistakes
|
|
157
|
+
|
|
158
|
+
### Skipping ignore verification
|
|
159
|
+
|
|
160
|
+
- **Problem:** Worktree contents get tracked, pollute git status
|
|
161
|
+
- **Fix:** Always use `git check-ignore` before creating project-local worktree
|
|
162
|
+
|
|
163
|
+
### Assuming directory location
|
|
164
|
+
|
|
165
|
+
- **Problem:** Creates inconsistency, violates project conventions
|
|
166
|
+
- **Fix:** Follow priority: existing > CLAUDE.md > ask
|
|
167
|
+
|
|
168
|
+
### Proceeding with failing tests
|
|
169
|
+
|
|
170
|
+
- **Problem:** Can't distinguish new bugs from pre-existing issues
|
|
171
|
+
- **Fix:** Report failures, get explicit permission to proceed
|
|
172
|
+
|
|
173
|
+
### Hardcoding setup commands
|
|
174
|
+
|
|
175
|
+
- **Problem:** Breaks on projects using different tools
|
|
176
|
+
- **Fix:** Auto-detect from project files (package.json, etc.)
|
|
177
|
+
|
|
178
|
+
## Example Workflow
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
You: I'm using the using-git-worktrees skill to set up an isolated workspace.
|
|
182
|
+
|
|
183
|
+
[Check .worktrees/ - exists]
|
|
184
|
+
[Verify ignored - git check-ignore confirms .worktrees/ is ignored]
|
|
185
|
+
[Create worktree: git worktree add .worktrees/auth -b feature/auth]
|
|
186
|
+
[Run npm install]
|
|
187
|
+
[Run npm test - 47 passing]
|
|
188
|
+
|
|
189
|
+
Worktree ready at /Users/jesse/myproject/.worktrees/auth
|
|
190
|
+
Tests passing (47 tests, 0 failures)
|
|
191
|
+
Ready to implement auth feature
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Red Flags
|
|
195
|
+
|
|
196
|
+
**Never:**
|
|
197
|
+
- Create worktree without verifying it's ignored (project-local)
|
|
198
|
+
- Skip baseline test verification
|
|
199
|
+
- Proceed with failing tests without asking
|
|
200
|
+
- Assume directory location when ambiguous
|
|
201
|
+
- Skip CLAUDE.md check
|
|
202
|
+
|
|
203
|
+
**Always:**
|
|
204
|
+
- Follow directory priority: existing > CLAUDE.md > ask
|
|
205
|
+
- Verify directory is ignored for project-local
|
|
206
|
+
- Auto-detect and run project setup
|
|
207
|
+
- Verify clean test baseline
|
|
208
|
+
|
|
209
|
+
## Integration
|
|
210
|
+
|
|
211
|
+
**Called by:**
|
|
212
|
+
- **dons-flow** — recommended before `/skill:implement` when working on a feature branch
|
|
213
|
+
- **any skill needing an isolated workspace**
|
|
214
|
+
|
|
215
|
+
**Also pairs with:**
|
|
216
|
+
- RPIV `/skill:implement` — use a worktree for long-running or multi-phase implementation
|
|
217
|
+
- RPIV `/skill:blueprint` or `/skill:plan` — set up the worktree after the plan is ready
|
|
218
|
+
|
|
219
|
+
**Pairs with:**
|
|
220
|
+
- **finishing-a-development-branch** - REQUIRED for cleanup after work complete
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-before-completion
|
|
3
|
+
description: Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Verification Before Completion
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Claiming work is complete without verification is dishonesty, not efficiency.
|
|
11
|
+
|
|
12
|
+
**Core principle:** Evidence before claims, always.
|
|
13
|
+
|
|
14
|
+
**Violating the letter of this rule is violating the spirit of this rule.**
|
|
15
|
+
|
|
16
|
+
## The Iron Law
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
If you haven't run the verification command in this message, you cannot claim it passes.
|
|
23
|
+
|
|
24
|
+
## The Gate Function
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
BEFORE claiming any status or expressing satisfaction:
|
|
28
|
+
|
|
29
|
+
1. IDENTIFY: What command proves this claim?
|
|
30
|
+
2. RUN: Execute the FULL command (fresh, complete)
|
|
31
|
+
3. READ: Full output, check exit code, count failures
|
|
32
|
+
4. VERIFY: Does output confirm the claim?
|
|
33
|
+
- If NO: State actual status with evidence
|
|
34
|
+
- If YES: State claim WITH evidence
|
|
35
|
+
5. ONLY THEN: Make the claim
|
|
36
|
+
|
|
37
|
+
Skip any step = lying, not verifying
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Common Failures
|
|
41
|
+
|
|
42
|
+
| Claim | Requires | Not Sufficient |
|
|
43
|
+
|-------|----------|----------------|
|
|
44
|
+
| Tests pass | Test command output: 0 failures | Previous run, "should pass" |
|
|
45
|
+
| Linter clean | Linter output: 0 errors | Partial check, extrapolation |
|
|
46
|
+
| Build succeeds | Build command: exit 0 | Linter passing, logs look good |
|
|
47
|
+
| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
|
|
48
|
+
| Regression test works | Red-green cycle verified | Test passes once |
|
|
49
|
+
| Agent completed | VCS diff shows changes | Agent reports "success" |
|
|
50
|
+
| Requirements met | Line-by-line checklist | Tests passing |
|
|
51
|
+
|
|
52
|
+
## Red Flags - STOP
|
|
53
|
+
|
|
54
|
+
- Using "should", "probably", "seems to"
|
|
55
|
+
- Expressing satisfaction before verification ("Great!", "Perfect!", "Done!", etc.)
|
|
56
|
+
- About to commit/push/PR without verification
|
|
57
|
+
- Trusting agent success reports
|
|
58
|
+
- Relying on partial verification
|
|
59
|
+
- Thinking "just this once"
|
|
60
|
+
- Tired and wanting work over
|
|
61
|
+
- **ANY wording implying success without having run verification**
|
|
62
|
+
|
|
63
|
+
## Rationalization Prevention
|
|
64
|
+
|
|
65
|
+
| Excuse | Reality |
|
|
66
|
+
|--------|---------|
|
|
67
|
+
| "Should work now" | RUN the verification |
|
|
68
|
+
| "I'm confident" | Confidence ≠ evidence |
|
|
69
|
+
| "Just this once" | No exceptions |
|
|
70
|
+
| "Linter passed" | Linter ≠ compiler |
|
|
71
|
+
| "Agent said success" | Verify independently |
|
|
72
|
+
| "I'm tired" | Exhaustion ≠ excuse |
|
|
73
|
+
| "Partial check is enough" | Partial proves nothing |
|
|
74
|
+
| "Different words so rule doesn't apply" | Spirit over letter |
|
|
75
|
+
|
|
76
|
+
## Key Patterns
|
|
77
|
+
|
|
78
|
+
**Tests:**
|
|
79
|
+
```
|
|
80
|
+
✅ [Run test command] [See: 34/34 pass] "All tests pass"
|
|
81
|
+
❌ "Should pass now" / "Looks correct"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Regression tests (TDD Red-Green):**
|
|
85
|
+
```
|
|
86
|
+
✅ Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)
|
|
87
|
+
❌ "I've written a regression test" (without red-green verification)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Build:**
|
|
91
|
+
```
|
|
92
|
+
✅ [Run build] [See: exit 0] "Build passes"
|
|
93
|
+
❌ "Linter passed" (linter doesn't check compilation)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Requirements:**
|
|
97
|
+
```
|
|
98
|
+
✅ Re-read plan → Create checklist → Verify each → Report gaps or completion
|
|
99
|
+
❌ "Tests pass, phase complete"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Agent delegation:**
|
|
103
|
+
```
|
|
104
|
+
✅ Agent reports success → Check VCS diff → Verify changes → Report actual state
|
|
105
|
+
❌ Trust agent report
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Why This Matters
|
|
109
|
+
|
|
110
|
+
From 24 failure memories:
|
|
111
|
+
- your human partner said "I don't believe you" - trust broken
|
|
112
|
+
- Undefined functions shipped - would crash
|
|
113
|
+
- Missing requirements shipped - incomplete features
|
|
114
|
+
- Time wasted on false completion → redirect → rework
|
|
115
|
+
- Violates: "Honesty is a core value. If you lie, you'll be replaced."
|
|
116
|
+
|
|
117
|
+
## When To Apply
|
|
118
|
+
|
|
119
|
+
**ALWAYS before:**
|
|
120
|
+
- ANY variation of success/completion claims
|
|
121
|
+
- ANY expression of satisfaction
|
|
122
|
+
- ANY positive statement about work state
|
|
123
|
+
- Committing, PR creation, task completion
|
|
124
|
+
- Moving to next task
|
|
125
|
+
- Delegating to agents
|
|
126
|
+
|
|
127
|
+
**Rule applies to:**
|
|
128
|
+
- Exact phrases
|
|
129
|
+
- Paraphrases and synonyms
|
|
130
|
+
- Implications of success
|
|
131
|
+
- ANY communication suggesting completion/correctness
|
|
132
|
+
|
|
133
|
+
## The Bottom Line
|
|
134
|
+
|
|
135
|
+
**No shortcuts for verification.**
|
|
136
|
+
|
|
137
|
+
Run the command. Read the output. THEN claim the result.
|
|
138
|
+
|
|
139
|
+
This is non-negotiable.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: writing-retros
|
|
3
|
+
description: Use at milestone close to produce a retrospective — four-section format (keep doing / stop or change / promote to artifact / commit to memory) with concrete, owned action items
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Writing Retros
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
A retrospective at milestone close is the culmination of continuous reflection, not a replacement for it. Tabled entries have been processed throughout execution; end-of-artifact checkpoints have fed back into the next artifact. The retro captures what the milestone *as a whole* teaches us, and converts it into concrete, owned action items.
|
|
11
|
+
|
|
12
|
+
**Announce at start:** "I'm using the writing-retros skill to produce the retro for `<milestone>`."
|
|
13
|
+
|
|
14
|
+
## Output
|
|
15
|
+
|
|
16
|
+
One file: `docs/retros/YYYY-MM-DD-<milestone>.md`. **Frozen at commit.** Future amendments go into a new retro, not this one — inline edits to a retro erode its value as an episodic record.
|
|
17
|
+
|
|
18
|
+
## The four sections
|
|
19
|
+
|
|
20
|
+
Every retro has exactly these sections, in this order:
|
|
21
|
+
|
|
22
|
+
1. **Keep doing.** What worked and should continue. Name the practice, not just the outcome. ("Epiphany-tabling to `tabled.md`" is actionable; "M1 went well" is not.)
|
|
23
|
+
2. **Stop or change.** What did not work and should adjust. Be specific about the pain and the proposed change.
|
|
24
|
+
3. **Promote to artifact.** Patterns worth extracting into skills, runbooks, scripts, memory entries, or as-built sections. Cross-reference the **promotion rule** (see `capturing-learnings`) — each item here should have at least one prior sighting the retro can point at.
|
|
25
|
+
4. **Commit to memory.** What, if anything, belongs in the cross-conversation memory system at `docs/memory/`. Often a subset of §3; sometimes its own distinct item. Announce writes (see AGENTS.md).
|
|
26
|
+
|
|
27
|
+
Optional lightweight sections at the end (appendix-style): headline stats, acknowledgements, historical context. Keep them short.
|
|
28
|
+
|
|
29
|
+
## Action items
|
|
30
|
+
|
|
31
|
+
Every retro ends with **concrete, owned action items** — not essays. Each item has:
|
|
32
|
+
|
|
33
|
+
- A specific outcome (a file to change, an artifact to create, a decision to make).
|
|
34
|
+
- An owner (a session, a date, a person) — or an explicit "by next milestone."
|
|
35
|
+
- Enough context for someone who didn't run the retro to execute the item.
|
|
36
|
+
|
|
37
|
+
If the action-item list is large enough to risk the retro becoming a working document rather than an episodic record, **split the execution into a separate closeout doc** (e.g., `docs/m1-closeout.md`) and reference it from §5. The retro stays frozen; the closeout doc is the working artifact.
|
|
38
|
+
|
|
39
|
+
## Process
|
|
40
|
+
|
|
41
|
+
1. **Gather inputs.**
|
|
42
|
+
- `docs/tabled.md` — every entry is a candidate for one of the four sections or for processing during retro review.
|
|
43
|
+
- The as-built (if already drafted) or the spec + plan + git log (if not).
|
|
44
|
+
- Memory writes made during the milestone.
|
|
45
|
+
- Any explicit "save this for retro" notes from the user during execution.
|
|
46
|
+
|
|
47
|
+
2. **Draft top-to-bottom.** Short, specific bullets under each section. Avoid the urge to write prose paragraphs — retros are scannable lists.
|
|
48
|
+
|
|
49
|
+
3. **Review with the user before committing.** Retros are frozen at commit, so the review *must* happen first. Expect the user to expand the action-item set — that is normal; the retro is a conversation starter, not a monologue.
|
|
50
|
+
|
|
51
|
+
4. **Commit.** One file, one commit. After this point, do **not** rewrite the retro inline; if paths or references later need updating, add a note at the top and point at the source of truth.
|
|
52
|
+
|
|
53
|
+
## Common failure modes
|
|
54
|
+
|
|
55
|
+
- **Meta-theater.** Reflection that produces more reflection rather than better work. If a section has no concrete output, either it does not belong in the retro or the work to produce the output hasn't happened. Name the missing action item; don't paper over it.
|
|
56
|
+
- **Silent drift.** Practices on paper diverging from practices in use. The retro only catches this if honest — don't smooth over what went wrong.
|
|
57
|
+
- **Stale references.** A frozen retro loses value when the paths it references move. Either update the paths at the close *before* commit, or add a dated note at the top after commit — never rewrite inline.
|
|
58
|
+
- **Undifferentiated "stop or change."** Generic complaints without a proposed change aren't retro content. If you can't name what to try differently, that's a candidate for §3 "promote to artifact" or for a deliberate drop.
|
|
59
|
+
|
|
60
|
+
## Related practices
|
|
61
|
+
|
|
62
|
+
- `capturing-learnings` — promotion rule; how §3 items become skills/runbooks/memory.
|
|
63
|
+
- `epiphany-tabling` — the in-flight practice that feeds retro content.
|
|
64
|
+
- `as-built-documentation` — the permanent record of what shipped (retros and as-builts are complementary: retros capture *how* we worked; as-builts capture *what* we built).
|