@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,263 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dons-flow
|
|
3
|
+
description: Use when starting or navigating a major piece of work to apply the integrated RPIV + Superpowers-style workflow — discovery, research, design/plan, implement, validate, review, commit, and land
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Don's Flow
|
|
7
|
+
|
|
8
|
+
**Version 2** of the integrated workflow for developer `@locksmithdon`: **RPIV's observable, artifact-chained delivery pipeline** plus **Superpowers' scope control, verification discipline, and cycle closeout**, with the `land` ritual that neither provides on its own.
|
|
9
|
+
|
|
10
|
+
v1 was Superpowers-based with a custom landing ritual. v2 adds RPIV's pipeline while keeping the closeout, scope-control, and learning-capture practices.
|
|
11
|
+
|
|
12
|
+
This skill is the map. It does not replace the skills it references — it tells you which skill to invoke when, and which conventions must stay true across all of them.
|
|
13
|
+
|
|
14
|
+
Superpowers is the upstream methodology at [obra/superpowers](https://github.com/obra/superpowers). It is not published to npm under a resolvable name, so this package declares it as an optional git peer dependency (`github:obra/superpowers`). Install it via your agent harness's plugin system, via the git URL, or by forking and publishing it under your own scope.
|
|
15
|
+
|
|
16
|
+
## Announce at start
|
|
17
|
+
|
|
18
|
+
> "I'm using the `dons-flow` skill to run the integrated RPIV + Superpowers workflow."
|
|
19
|
+
|
|
20
|
+
## When to use this skill
|
|
21
|
+
|
|
22
|
+
- At the **start** of a new piece of work, to pick the right entry point.
|
|
23
|
+
- When you are **mid-work** and unsure whether to keep going, hand off, revise, or close out.
|
|
24
|
+
- At the **end** of a validated implementation, to begin the `land` closeout ritual.
|
|
25
|
+
- When onboarding a fresh repo to this workflow.
|
|
26
|
+
|
|
27
|
+
## Required installed packages
|
|
28
|
+
|
|
29
|
+
This skill assumes the following Pi packages are installed:
|
|
30
|
+
|
|
31
|
+
- `@juicesharp/rpiv-pi` — the RPIV pipeline skills
|
|
32
|
+
- `@tintinweb/pi-subagents` — subagent runtime used by RPIV
|
|
33
|
+
- `@locksmithdon/dons-flow` — this package, which adds closeout and discipline skills
|
|
34
|
+
- `superpowers` — the upstream Superpowers methodology (optional, via harness plugin or `github:obra/superpowers`)
|
|
35
|
+
|
|
36
|
+
If RPIV or the subagent runtime is missing, stop and install them before proceeding. If Superpowers is missing, this package's ported skills still provide the closeout workflow, but you will not have access to the upstream Superpowers entry points like `brainstorming` or `test-driven-development`.
|
|
37
|
+
|
|
38
|
+
## Before you start
|
|
39
|
+
|
|
40
|
+
If this repo has not been onboarded yet, run:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
/skill:setup-dons-flow
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
That skill checks prerequisites, detects Superpowers, and creates the repo-owned conventions (`docs/tabled.md`, `docs/status.md`, `docs/memory/`, `docs/changes/`, `docs/retros/`, `docs/runbooks/`, `AGENTS.md`).
|
|
47
|
+
|
|
48
|
+
## Integrated workflow
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Discover → Research → Design/Blueprint → Plan → Implement → Validate → Review → Commit → Land
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Each arrow is a skill invocation. Each skill produces or updates an artifact. Nothing is unilateral: every boundary is a conversation or a checkpoint.
|
|
55
|
+
|
|
56
|
+
### 1. Discover — capture intent
|
|
57
|
+
|
|
58
|
+
**Skill:** `/skill:discover "[feature description]"`
|
|
59
|
+
|
|
60
|
+
**When:** The problem is not yet fully shaped; you need to extract goals, non-goals, constraints, acceptance criteria, and decisions before touching code.
|
|
61
|
+
|
|
62
|
+
**What it produces:** `.rpiv/artifacts/discover/YYYY-MM-DD_HH-MM-SS_<topic>.md` — a Feature Requirements Document (FRD).
|
|
63
|
+
|
|
64
|
+
**Integration note:** If you already have a written spec or ticket, pass its path to `discover` for refinement. For free-form ideation, run Superpowers `brainstorming` first and feed the result into `discover`.
|
|
65
|
+
|
|
66
|
+
**End-of-artifact checkpoint:** After the FRD is written, run `capturing-learnings` before proceeding. Process any `docs/tabled.md` entries that surfaced during the interview.
|
|
67
|
+
|
|
68
|
+
### 2. Research — ground intent in code
|
|
69
|
+
|
|
70
|
+
**Skill:** `/skill:research .rpiv/artifacts/discover/<latest>.md`
|
|
71
|
+
|
|
72
|
+
**When:** You have an FRD and need to understand the codebase reality that will shape the design.
|
|
73
|
+
|
|
74
|
+
**What it produces:** `.rpiv/artifacts/research/<slug>_<topic>.md`
|
|
75
|
+
|
|
76
|
+
**Integration note:** The FRD's `Decisions` block becomes research's Developer Context. Carry any unresolved Open Questions forward.
|
|
77
|
+
|
|
78
|
+
**End-of-artifact checkpoint:** Run `capturing-learnings` after research is accepted.
|
|
79
|
+
|
|
80
|
+
### 3. Design / Blueprint / Explore — decide the shape
|
|
81
|
+
|
|
82
|
+
**Option A — compare approaches first:** `/skill:explore "[problem]"` → `/skill:design .rpiv/artifacts/solutions/<latest>.md`
|
|
83
|
+
|
|
84
|
+
**Option B — full design artifact:** `/skill:design .rpiv/artifacts/research/<latest>.md`
|
|
85
|
+
|
|
86
|
+
**Option C — fast path for smaller work:** `/skill:blueprint .rpiv/artifacts/research/<latest>.md`
|
|
87
|
+
|
|
88
|
+
**When:** Multiple valid approaches exist → `explore`. The design is itself a deliverable or the work is large/cross-cutting → `design` then `plan`. The work is well-understood and you want an implement-ready plan in one pass → `blueprint`.
|
|
89
|
+
|
|
90
|
+
**What it produces:**
|
|
91
|
+
- `explore` → `.rpiv/artifacts/solutions/<slug>_<topic>.md`
|
|
92
|
+
- `design` → `.rpiv/artifacts/designs/<slug>_<topic>.md`
|
|
93
|
+
- `blueprint` → `.rpiv/artifacts/plans/<slug>_<topic>.md`
|
|
94
|
+
|
|
95
|
+
**Integration note:** `blueprint` fuses `design` + `plan`. It is the closest RPIV equivalent to the Superpowers `writing-plans` + `subagent-driven-development` combo, but it is codebase-grounded and reviewed.
|
|
96
|
+
|
|
97
|
+
**End-of-artifact checkpoint:** Run `capturing-learnings` after the design or plan is accepted.
|
|
98
|
+
|
|
99
|
+
### 4. Plan — sequence the work
|
|
100
|
+
|
|
101
|
+
**Skill:** `/skill:plan .rpiv/artifacts/designs/<latest>.md`
|
|
102
|
+
|
|
103
|
+
**When:** You ran `design` separately and now need a phased implementation plan.
|
|
104
|
+
|
|
105
|
+
**What it produces:** `.rpiv/artifacts/plans/<slug>_<topic>.md`
|
|
106
|
+
|
|
107
|
+
**Integration note:** Skip this step if you used `blueprint`, which already emitted a plan.
|
|
108
|
+
|
|
109
|
+
**End-of-artifact checkpoint:** Run `capturing-learnings` after the plan is accepted.
|
|
110
|
+
|
|
111
|
+
### 5. Implement — execute phase by phase
|
|
112
|
+
|
|
113
|
+
**Skill:** `/skill:implement .rpiv/artifacts/plans/<latest>.md [Phase N]`
|
|
114
|
+
|
|
115
|
+
**When:** The plan is `status: ready`.
|
|
116
|
+
|
|
117
|
+
**What it does:** Applies the plan's code changes to the working tree.
|
|
118
|
+
|
|
119
|
+
**Integration notes:**
|
|
120
|
+
- Keep `epiphany-tabling` active. Any realization, fork, or follow-up that is not trivially cheap and in-scope goes into `docs/tabled.md`.
|
|
121
|
+
- Apply `verification-before-completion` discipline: no success claim without fresh verification evidence.
|
|
122
|
+
- If a session ends mid-implementation, run `/skill:create-handoff`.
|
|
123
|
+
- If code reality diverges from the plan, surface it via implement's mismatch flow or run `/skill:revise <plan-path>` first.
|
|
124
|
+
|
|
125
|
+
### 6. Validate — verify against the plan
|
|
126
|
+
|
|
127
|
+
**Skill:** `/skill:validate .rpiv/artifacts/plans/<latest>.md`
|
|
128
|
+
|
|
129
|
+
**When:** Implementation is complete (or you need a checkpoint).
|
|
130
|
+
|
|
131
|
+
**What it produces:** `.rpiv/artifacts/validation/<slug>_<topic>.md` with a `verdict: pass | fail`.
|
|
132
|
+
|
|
133
|
+
**Integration note:** Do not proceed to `commit` or `land` if `verdict: fail`. Fix gaps, then re-run `validate`.
|
|
134
|
+
|
|
135
|
+
### 7. Review — structured code review
|
|
136
|
+
|
|
137
|
+
**Skill:** `/skill:code-review [scope]`
|
|
138
|
+
|
|
139
|
+
**When:** After validate passes and before committing.
|
|
140
|
+
|
|
141
|
+
**What it produces:** `.rpiv/artifacts/reviews/<slug>_<scope>.md`
|
|
142
|
+
|
|
143
|
+
**Integration note:** The `land` skill's step 1 (code review) can consume this artifact. Fix small findings now; table substantive ones to `docs/tabled/`.
|
|
144
|
+
|
|
145
|
+
### 8. Commit — atomic, logical commits
|
|
146
|
+
|
|
147
|
+
**Skill:** `/skill:commit [message-hint]`
|
|
148
|
+
|
|
149
|
+
**When:** The working tree contains validated changes ready to be committed.
|
|
150
|
+
|
|
151
|
+
**What it does:** Groups staged/unstaged changes into logical commits.
|
|
152
|
+
|
|
153
|
+
**Integration note:** On a feature branch, you may commit close-out artifacts (as-built, retro, memory updates) separately. On `main`, present commit groupings for human approval.
|
|
154
|
+
|
|
155
|
+
### 9. Land — close the cycle
|
|
156
|
+
|
|
157
|
+
**Skill:** `/skill:land`
|
|
158
|
+
|
|
159
|
+
**When:** The implementation is verified, reviewed, and committed (or about to be merged).
|
|
160
|
+
|
|
161
|
+
**What it does:** Runs the 10-step closeout ritual:
|
|
162
|
+
|
|
163
|
+
1. Code review
|
|
164
|
+
2. Architectural review
|
|
165
|
+
3. Security review
|
|
166
|
+
4. As-built documentation (`as-built-documentation`)
|
|
167
|
+
5. Doc / knowledge-graph review
|
|
168
|
+
6. AGENTS.md updates
|
|
169
|
+
7. Memory reconcile
|
|
170
|
+
8. Retro (`writing-retros`)
|
|
171
|
+
9. Status review + resolve `docs/tabled.md`
|
|
172
|
+
10. Integrate (`finishing-a-development-branch`)
|
|
173
|
+
|
|
174
|
+
**Integration note:** `land` is the cycle boundary RPIV does not provide. It is the most important addition this package makes.
|
|
175
|
+
|
|
176
|
+
## Monitoring the relationship
|
|
177
|
+
|
|
178
|
+
We intentionally deferred deciding how to track Superpowers long-term. Review monthly using:
|
|
179
|
+
|
|
180
|
+
- `docs/memory/monitor_upstream_evolution.md` — decision context and last review date
|
|
181
|
+
- `docs/runbooks/monitor-upstream-evolution.md` — the check-in process
|
|
182
|
+
|
|
183
|
+
After 2–3 projects, decide whether to keep the git peer dependency, fork Superpowers, or drop it.
|
|
184
|
+
|
|
185
|
+
## Cross-cutting practices
|
|
186
|
+
|
|
187
|
+
These practices run continuously across the workflow, not at a single stage.
|
|
188
|
+
|
|
189
|
+
### Epiphany tabling
|
|
190
|
+
|
|
191
|
+
Use `epiphany-tabling` whenever an unexpected realization surfaces mid-task. Add it to `docs/tabled.md`. Never lose it, never let it derail current work. Resolve tabled items at end-of-artifact checkpoints and during `land` step 9.
|
|
192
|
+
|
|
193
|
+
### Verification before completion
|
|
194
|
+
|
|
195
|
+
Before any completion claim — a test passing, a phase done, a feature working — run the verification command fresh, read the output, and cite the evidence. No shortcuts.
|
|
196
|
+
|
|
197
|
+
### Capturing learnings
|
|
198
|
+
|
|
199
|
+
After each approved artifact (FRD, research, design, plan, major commit set), run `capturing-learnings`. Apply the rule: **once is a moment; twice is a pattern.** Promote tabled observations to skills, runbooks, or memory only on the second sighting.
|
|
200
|
+
|
|
201
|
+
### Handoffs
|
|
202
|
+
|
|
203
|
+
If you must stop mid-work, use `/skill:create-handoff`. Resume with `/skill:resume-handoff .rpiv/artifacts/handoffs/<latest>.md` in a fresh session.
|
|
204
|
+
|
|
205
|
+
## Repo conventions this workflow expects
|
|
206
|
+
|
|
207
|
+
Your codebase should contain these documents and folders. They are owned by the team, not by any package:
|
|
208
|
+
|
|
209
|
+
| Path | Purpose |
|
|
210
|
+
|---|---|
|
|
211
|
+
| `docs/tabled.md` | Working memory for epiphanies and deferred work |
|
|
212
|
+
| `docs/tabled/` | Optional per-item tabled docs (resolved to empty each cycle) |
|
|
213
|
+
| `docs/status.md` | Living status: Recently Completed, What's Next, etc. |
|
|
214
|
+
| `docs/memory/` | Persistent project/session memory entries |
|
|
215
|
+
| `docs/memory/MEMORY.md` | Index of memory entries |
|
|
216
|
+
| `docs/changes/` | As-built documentation: what shipped and why |
|
|
217
|
+
| `docs/retros/` | Frozen retrospective documents |
|
|
218
|
+
| `docs/runbooks/` | Multi-skill processes and practices |
|
|
219
|
+
| `AGENTS.md` | Repo-level agent guidance |
|
|
220
|
+
|
|
221
|
+
## What lives in the codebase vs. what lives in the developer's package
|
|
222
|
+
|
|
223
|
+
**In the codebase:** `docs/changes/`, `docs/retros/`, `docs/status.md`, `docs/memory/`, `AGENTS.md`, and the actual code changes.
|
|
224
|
+
|
|
225
|
+
**In this package:** the skills, runbooks, and workflow conventions. They travel with the developer across repos.
|
|
226
|
+
|
|
227
|
+
## Anti-patterns
|
|
228
|
+
|
|
229
|
+
- **Skipping `land`.** `validate` is not the finish line. Close the cycle.
|
|
230
|
+
- **Carrying `docs/tabled.md` across cycles.** Resolve every entry during `land` step 9.
|
|
231
|
+
- **Editing source files during discover/research/design/plan.** Those skills produce artifacts; `implement` edits code.
|
|
232
|
+
- **Recomposing RPIV slice boundaries.** `design`/`blueprint` owns decomposition; `plan` inherits slices 1:1.
|
|
233
|
+
- **Letting verification become a rubber stamp.** Evidence first, claims second.
|
|
234
|
+
|
|
235
|
+
## Quick reference
|
|
236
|
+
|
|
237
|
+
| I want to... | Invoke |
|
|
238
|
+
|---|---|
|
|
239
|
+
| Onboard a repo | `/skill:setup-dons-flow` |
|
|
240
|
+
| Capture intent | `/skill:discover "..."` |
|
|
241
|
+
| Understand the codebase | `/skill:research <artifact-or-topic>` |
|
|
242
|
+
| Compare options | `/skill:explore "..."` |
|
|
243
|
+
| Design + plan separately | `/skill:design <research>` → `/skill:plan <design>` |
|
|
244
|
+
| Design + plan together | `/skill:blueprint <research>` |
|
|
245
|
+
| Execute the plan | `/skill:implement <plan> [Phase N]` |
|
|
246
|
+
| Verify implementation | `/skill:validate <plan>` |
|
|
247
|
+
| Review changes | `/skill:code-review [scope]` |
|
|
248
|
+
| Commit changes | `/skill:commit` |
|
|
249
|
+
| Close out the cycle | `/skill:land` |
|
|
250
|
+
| Table a mid-flight realization | `/skill:epiphany-tabling` |
|
|
251
|
+
| Run an end-of-artifact checkpoint | `/skill:capturing-learnings` |
|
|
252
|
+
| Create a handoff | `/skill:create-handoff` |
|
|
253
|
+
| Resume a handoff | `/skill:resume-handoff <handoff-path>` |
|
|
254
|
+
|
|
255
|
+
## See also
|
|
256
|
+
|
|
257
|
+
- RPIV README: `@juicesharp/rpiv-pi`
|
|
258
|
+
- `setup-dons-flow` — onboarding skill
|
|
259
|
+
- `land` — the 10-step closeout
|
|
260
|
+
- `epiphany-tabling` — scope control
|
|
261
|
+
- `capturing-learnings` — promotion rule and end-of-artifact checkpoints
|
|
262
|
+
- `verification-before-completion` — evidence-first discipline
|
|
263
|
+
- `docs/runbooks/monitor-upstream-evolution.md` — how to track RPIV and Superpowers over time
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: epiphany-tabling
|
|
3
|
+
description: Use when an unexpected realization, pattern, follow-up item, or fork in the road surfaces mid-task — table it to docs/tabled.md instead of derailing the current work
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Epiphany Tabling
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
When something unexpected surfaces mid-work — a realization, a fork in the road, a follow-up item, a pattern we almost missed — we do not stop and redesign. We **table it**: add a short entry to `docs/tabled.md` with enough context to reconstruct later, then keep going.
|
|
11
|
+
|
|
12
|
+
`docs/tabled.md` is the single working-memory location for both epiphanies and tabled follow-up work. (Per-milestone followup files were retired at M4.5 close in favor of this unified location.)
|
|
13
|
+
|
|
14
|
+
**Announce at start:** "I'm using the epiphany-tabling skill to table `<topic>` — will process it at the next checkpoint."
|
|
15
|
+
|
|
16
|
+
## The rule
|
|
17
|
+
|
|
18
|
+
An epiphany is either:
|
|
19
|
+
|
|
20
|
+
1. **Acted on immediately**, if trivially cheap and in-scope for the current task. ("Trivially cheap" means: the current task will be done at roughly the same time either way.)
|
|
21
|
+
2. **Tabled**, otherwise.
|
|
22
|
+
|
|
23
|
+
Never lost. Never derailing.
|
|
24
|
+
|
|
25
|
+
## What tabling looks like
|
|
26
|
+
|
|
27
|
+
Add a bullet to `docs/tabled.md` with:
|
|
28
|
+
|
|
29
|
+
- A one-line title stating the insight.
|
|
30
|
+
- A 2–4 line description with enough context to reconstruct it later: what you were doing, what you noticed, what the shape of the fix or follow-up probably is.
|
|
31
|
+
- Where its next destination probably is (spec, runbook, skill, memory, retro, drop) — when known.
|
|
32
|
+
|
|
33
|
+
Example:
|
|
34
|
+
|
|
35
|
+
```markdown
|
|
36
|
+
- **Plan drift: `parseEvent` spread ordering in `docker-runner.ts`.** Production
|
|
37
|
+
code at ~line 67–78 spreads `...obj` AFTER setting explicit `type`/`phase`/`msg`
|
|
38
|
+
fields, so malformed JSON with `obj.type !== "status"` could overwrite the typed
|
|
39
|
+
`type` field. Not blocker for M1; fix before M2 if parseEvent is touched.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The entry has to be reconstructable cold. Assume future-Claude has not read the current conversation — write enough that the entry stands alone.
|
|
43
|
+
|
|
44
|
+
## When NOT to table
|
|
45
|
+
|
|
46
|
+
- **In-scope trivial fixes.** If the fix is three lines and the current task's tests already exercise it, just do it.
|
|
47
|
+
- **Clarifications the user just asked for.** Answer in conversation; don't table an answer to a live question.
|
|
48
|
+
- **Things already captured elsewhere** (existing `tabled.md` entry, spec section, memory entry) — update those, don't duplicate.
|
|
49
|
+
|
|
50
|
+
## Processing
|
|
51
|
+
|
|
52
|
+
Tabled entries are processed at:
|
|
53
|
+
|
|
54
|
+
- An **end-of-artifact checkpoint** (after an approved spec, plan, or major commit set).
|
|
55
|
+
- A **milestone retro** (processed alongside keep-doing / stop-or-change).
|
|
56
|
+
- A **milestone close** — outstanding items worth keeping roll into [`docs/roadmap.md#backlog`](../../docs/roadmap.md#backlog); completed/obsolete items are dropped. The file ends each milestone empty (or near-empty).
|
|
57
|
+
- **Ad-hoc**, if the working file grows past a screen of content — that is a signal to process, not to let it sprawl.
|
|
58
|
+
|
|
59
|
+
Each entry is processed into its probable destination (roadmap Backlog, spec amendment, runbook, skill, memory entry, as-built adaptation, or conscious drop) and then **removed** from `docs/tabled.md`. `tabled.md` stays small; entries arrive, get processed, and leave.
|
|
60
|
+
|
|
61
|
+
## Related practices
|
|
62
|
+
|
|
63
|
+
- `capturing-learnings` — the promotion rule that decides whether a processed entry becomes a skill, runbook, or memory.
|
|
64
|
+
- `writing-retros` — the milestone-level ritual where tabled entries often land.
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: finishing-a-development-branch
|
|
3
|
+
description: Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Finishing a Development Branch
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Guide completion of development work by presenting clear options and handling chosen workflow.
|
|
11
|
+
|
|
12
|
+
**Core principle:** Verify tests → Present options → Execute choice → Clean up.
|
|
13
|
+
|
|
14
|
+
**Announce at start:** "I'm using the finishing-a-development-branch skill to complete this work."
|
|
15
|
+
|
|
16
|
+
## The Process
|
|
17
|
+
|
|
18
|
+
### Step 1: Verify Tests
|
|
19
|
+
|
|
20
|
+
**Before presenting options, verify tests pass:**
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Run project's test suite
|
|
24
|
+
npm test / cargo test / pytest / go test ./...
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**If tests fail:**
|
|
28
|
+
```
|
|
29
|
+
Tests failing (<N> failures). Must fix before completing:
|
|
30
|
+
|
|
31
|
+
[Show failures]
|
|
32
|
+
|
|
33
|
+
Cannot proceed with merge/PR until tests pass.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Stop. Don't proceed to Step 2.
|
|
37
|
+
|
|
38
|
+
**If tests pass:** Continue to Step 2.
|
|
39
|
+
|
|
40
|
+
### Step 2: Determine Base Branch
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Try common base branches
|
|
44
|
+
git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Or ask: "This branch split from main - is that correct?"
|
|
48
|
+
|
|
49
|
+
### Step 3: Present Options
|
|
50
|
+
|
|
51
|
+
Present exactly these 4 options:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Implementation complete. What would you like to do?
|
|
55
|
+
|
|
56
|
+
1. Merge back to <base-branch> locally
|
|
57
|
+
2. Push and create a Pull Request
|
|
58
|
+
3. Keep the branch as-is (I'll handle it later)
|
|
59
|
+
4. Discard this work
|
|
60
|
+
|
|
61
|
+
Which option?
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Don't add explanation** - keep options concise.
|
|
65
|
+
|
|
66
|
+
### Step 4: Execute Choice
|
|
67
|
+
|
|
68
|
+
#### Option 1: Merge Locally
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Switch to base branch
|
|
72
|
+
git checkout <base-branch>
|
|
73
|
+
|
|
74
|
+
# Pull latest
|
|
75
|
+
git pull
|
|
76
|
+
|
|
77
|
+
# Merge feature branch
|
|
78
|
+
git merge <feature-branch>
|
|
79
|
+
|
|
80
|
+
# Verify tests on merged result
|
|
81
|
+
<test command>
|
|
82
|
+
|
|
83
|
+
# If tests pass
|
|
84
|
+
git branch -d <feature-branch>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Then: Cleanup worktree (Step 5)
|
|
88
|
+
|
|
89
|
+
#### Option 2: Push and Create PR
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Push branch
|
|
93
|
+
git push -u origin <feature-branch>
|
|
94
|
+
|
|
95
|
+
# Create PR
|
|
96
|
+
gh pr create --title "<title>" --body "$(cat <<'EOF'
|
|
97
|
+
## Summary
|
|
98
|
+
<2-3 bullets of what changed>
|
|
99
|
+
|
|
100
|
+
## Test Plan
|
|
101
|
+
- [ ] <verification steps>
|
|
102
|
+
EOF
|
|
103
|
+
)"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Then: Cleanup worktree (Step 5)
|
|
107
|
+
|
|
108
|
+
#### Option 3: Keep As-Is
|
|
109
|
+
|
|
110
|
+
Report: "Keeping branch <name>. Worktree preserved at <path>."
|
|
111
|
+
|
|
112
|
+
**Don't cleanup worktree.**
|
|
113
|
+
|
|
114
|
+
#### Option 4: Discard
|
|
115
|
+
|
|
116
|
+
**Confirm first:**
|
|
117
|
+
```
|
|
118
|
+
This will permanently delete:
|
|
119
|
+
- Branch <name>
|
|
120
|
+
- All commits: <commit-list>
|
|
121
|
+
- Worktree at <path>
|
|
122
|
+
|
|
123
|
+
Type 'discard' to confirm.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Wait for exact confirmation.
|
|
127
|
+
|
|
128
|
+
If confirmed:
|
|
129
|
+
```bash
|
|
130
|
+
git checkout <base-branch>
|
|
131
|
+
git branch -D <feature-branch>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Then: Cleanup worktree (Step 5)
|
|
135
|
+
|
|
136
|
+
### Step 5: Cleanup Worktree
|
|
137
|
+
|
|
138
|
+
**For Options 1, 2, 4:**
|
|
139
|
+
|
|
140
|
+
Check if in worktree:
|
|
141
|
+
```bash
|
|
142
|
+
git worktree list | grep $(git branch --show-current)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
If yes:
|
|
146
|
+
```bash
|
|
147
|
+
git worktree remove <worktree-path>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**For Option 3:** Keep worktree.
|
|
151
|
+
|
|
152
|
+
## Quick Reference
|
|
153
|
+
|
|
154
|
+
| Option | Merge | Push | Keep Worktree | Cleanup Branch |
|
|
155
|
+
|--------|-------|------|---------------|----------------|
|
|
156
|
+
| 1. Merge locally | ✓ | - | - | ✓ |
|
|
157
|
+
| 2. Create PR | - | ✓ | ✓ | - |
|
|
158
|
+
| 3. Keep as-is | - | - | ✓ | - |
|
|
159
|
+
| 4. Discard | - | - | - | ✓ (force) |
|
|
160
|
+
|
|
161
|
+
## Common Mistakes
|
|
162
|
+
|
|
163
|
+
**Skipping test verification**
|
|
164
|
+
- **Problem:** Merge broken code, create failing PR
|
|
165
|
+
- **Fix:** Always verify tests before offering options
|
|
166
|
+
|
|
167
|
+
**Open-ended questions**
|
|
168
|
+
- **Problem:** "What should I do next?" → ambiguous
|
|
169
|
+
- **Fix:** Present exactly 4 structured options
|
|
170
|
+
|
|
171
|
+
**Automatic worktree cleanup**
|
|
172
|
+
- **Problem:** Remove worktree when might need it (Option 2, 3)
|
|
173
|
+
- **Fix:** Only cleanup for Options 1 and 4
|
|
174
|
+
|
|
175
|
+
**No confirmation for discard**
|
|
176
|
+
- **Problem:** Accidentally delete work
|
|
177
|
+
- **Fix:** Require typed "discard" confirmation
|
|
178
|
+
|
|
179
|
+
## Red Flags
|
|
180
|
+
|
|
181
|
+
**Never:**
|
|
182
|
+
- Proceed with failing tests
|
|
183
|
+
- Merge without verifying tests on result
|
|
184
|
+
- Delete work without confirmation
|
|
185
|
+
- Force-push without explicit request
|
|
186
|
+
|
|
187
|
+
**Always:**
|
|
188
|
+
- Verify tests before offering options
|
|
189
|
+
- Present exactly 4 options
|
|
190
|
+
- Get typed confirmation for Option 4
|
|
191
|
+
- Clean up worktree for Options 1 & 4 only
|
|
192
|
+
|
|
193
|
+
## Integration
|
|
194
|
+
|
|
195
|
+
**Called by:**
|
|
196
|
+
- **land** (Step 10) — cycle closeout after verification and review
|
|
197
|
+
- **dons-flow** — after `/skill:implement` and `/skill:validate` complete
|
|
198
|
+
|
|
199
|
+
**Pairs with:**
|
|
200
|
+
- **using-git-worktrees** - Cleans up worktree created by that skill
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: land
|
|
3
|
+
description: Use at the end of a major piece of work to bring the cycle to a clean close — review the work, document what changed, capture lessons, and prepare for the next cycle
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Land
|
|
7
|
+
|
|
8
|
+
Bring the current piece of work to a clean close. Review what was built, document what changed, capture lessons, and leave the codebase ready for the next cycle.
|
|
9
|
+
|
|
10
|
+
## When to Use
|
|
11
|
+
|
|
12
|
+
- A design phase is complete and agreed
|
|
13
|
+
- An implementation plan has been fully executed and verified
|
|
14
|
+
- Any significant milestone where the project state has materially changed
|
|
15
|
+
- Before starting the next piece of work
|
|
16
|
+
|
|
17
|
+
This is a **cycle boundary** — the moment between "we finished that" and "what's next."
|
|
18
|
+
|
|
19
|
+
## When NOT to Use
|
|
20
|
+
|
|
21
|
+
- Mid-work checkpoints (that's normal commit discipline)
|
|
22
|
+
- Bug fixes or small refactors that don't change the project's shape
|
|
23
|
+
- Session endings where the work isn't at a natural completion point (just commit and note what's unfinished)
|
|
24
|
+
|
|
25
|
+
## The Process
|
|
26
|
+
|
|
27
|
+
Land has 10 ordered sub-steps. **Each sub-step is a conversation between agent and human, not unilateral execution.** Surface findings or work for the step, get review, decide together when to advance. See [`docs/ways-of-working.md`](../../../docs/ways-of-working.md) §"Development Lifecycle" for the canonical descriptions.
|
|
28
|
+
|
|
29
|
+
**Hard ordering rule:** all reviews (1–3) precede all documentation work (4–7). Documentation describes what is true; if a review changes what is true, doc work is wasted.
|
|
30
|
+
|
|
31
|
+
### 1. Code review
|
|
32
|
+
|
|
33
|
+
Comprehensive, back-and-forth review of all code that landed during this cycle. Find issues; fix small ones now, table substantive ones to `docs/tabled/`. Often a substantial conversation in itself.
|
|
34
|
+
|
|
35
|
+
### 2. Architectural review
|
|
36
|
+
|
|
37
|
+
Did this work introduce new patterns? Stress the architecture? Indicate that an existing pattern should change? Find structural issues — fix small ones now, table substantive ones.
|
|
38
|
+
|
|
39
|
+
### 3. Security review
|
|
40
|
+
|
|
41
|
+
Scope to the change. Find issues, fix small ones now, table substantive ones. (Once `docs/security-register.md` and the security-review skill exist, follow that playbook.)
|
|
42
|
+
|
|
43
|
+
### 4. As-built documentation
|
|
44
|
+
|
|
45
|
+
Once the code is final, capture what changed and why in `docs/changes/` (project-level) or per-repo `docs/changes/`. Use the `as-built-documentation` skill — it handles the synthesis, writing, and cleanup of superseded plans.
|
|
46
|
+
|
|
47
|
+
### 5. Doc / knowledge-graph review
|
|
48
|
+
|
|
49
|
+
Sweep over docs touched by this cycle. Add or refresh README files in the significant folders we worked in, per the incremental "build by touched folder" pattern (see WoW §"README knowledge graph"). Look for stale, contradictory, or low-signal docs and prune. Keep signal-to-noise high.
|
|
50
|
+
|
|
51
|
+
If unsure where new information should live, consult [`docs/memory.md`](../../../docs/memory.md).
|
|
52
|
+
|
|
53
|
+
### 6. AGENTS.md updates
|
|
54
|
+
|
|
55
|
+
Root and repo-level. Only update what actually changed.
|
|
56
|
+
|
|
57
|
+
### 7. Memory reconcile
|
|
58
|
+
|
|
59
|
+
Review persistent memory (markdown files in `docs/memory/` and any auto-loaded project memory) against the new state. Correct stale entries, remove redundancies, add new feedback / project / reference / user memories warranted by the cycle. Memory is a thin index pointing at authoritative sources, not a duplication.
|
|
60
|
+
|
|
61
|
+
### 8. Retro
|
|
62
|
+
|
|
63
|
+
Reflect on the cycle. What went well, what was hard, patterns to capture, anti-patterns to nudge against. Produce a permanent retro doc at `docs/retros/YYYY-MM-DD-<topic>.md`. Retro **closes off the cycle's work** — process improvement, not scope. Scope changes already got captured in steps 1–3 as tabled items / memories.
|
|
64
|
+
|
|
65
|
+
**Start by reading the previous retro in `docs/retros/`** — this threads the continual-improvement loop forward across cycles.
|
|
66
|
+
|
|
67
|
+
### 9. Status review + tabled-items confirmation + next piece of work
|
|
68
|
+
|
|
69
|
+
Walk through `docs/status.md` intentionally with the cycle's tabled items in hand. Decide what belongs in "Recently Completed," "What's Next," what to prune. **Resolve every tabled item** — either decide-now (document the decision and delete the tabled doc) or move-to-status (substance moves to "What's Next" and the tabled doc is deleted). `docs/tabled/` should end the cycle empty (just `.gitkeep`). Identify the next piece of work — usually the highest-priority moved-to-status item.
|
|
70
|
+
|
|
71
|
+
### 10. Integrate
|
|
72
|
+
|
|
73
|
+
If on a **feature branch**, invoke the **finishing-a-development-branch** skill to handle merge/PR/cleanup decisions.
|
|
74
|
+
|
|
75
|
+
If on **main**, stage all close-out changes in appropriately grouped commits and present a summary for review. Do NOT commit unilaterally — let the human approve groupings first.
|
|
76
|
+
|
|
77
|
+
## Key Principles
|
|
78
|
+
|
|
79
|
+
- **Each sub-step is a conversation.** Surface findings, get review, advance together. Don't execute multiple sub-steps in a single agent turn without human checkpoints.
|
|
80
|
+
- **This skill owns the sequence; child skills own the execution.** Don't duplicate instructions that live in referenced skills (`as-built-documentation`, `finishing-a-development-branch`).
|
|
81
|
+
- **Documents live where their scope lives.** Repo-specific docs in the repo. Cross-repo / project-level docs at the root.
|
|
82
|
+
- **Set up the next agent for success.** Every step should leave the codebase navigable: tabled items resolved, status current, retro filed, memories reconciled.
|
|
83
|
+
|
|
84
|
+
## Anti-patterns
|
|
85
|
+
|
|
86
|
+
- **Merge before close-out.** Don't partial-merge an in-flight branch and then try to retroactively close out a subset. Close the branch as a complete piece of work, table the continuation, pick up next on a fresh branch.
|
|
87
|
+
- **Treating a sub-step as a checkbox.** Each is a conversation. Rushing produces work that needs walking back.
|
|
88
|
+
- **Carrying tabled items across cycles.** Step 9 resolves every one.
|
|
89
|
+
|
|
90
|
+
## Development Lifecycle Context
|
|
91
|
+
|
|
92
|
+
This project uses a skills-driven development lifecycle (RPIV pipeline + Superpowers-style closeout):
|
|
93
|
+
|
|
94
|
+
1. **Discover** — Interview-driven intent capture (`/skill:discover` from RPIV)
|
|
95
|
+
2. **Research** — Codebase context and precedent mapping (`/skill:research` from RPIV)
|
|
96
|
+
3. **Design / Blueprint** — Architecture and phased planning (`/skill:design`, `/skill:blueprint`, or `/skill:explore` from RPIV)
|
|
97
|
+
4. **Plan** — Implementation plan sequencing (`/skill:plan` from RPIV, when design and plan are separate)
|
|
98
|
+
5. **Implement** — Phased execution (`/skill:implement` from RPIV)
|
|
99
|
+
6. **Verify** — Validation against the plan's success criteria (`/skill:validate` from RPIV, guided by `verification-before-completion` discipline)
|
|
100
|
+
7. **Review / Commit** — Code review and atomic commits (`/skill:code-review` and `/skill:commit` from RPIV)
|
|
101
|
+
8. **Land** — This skill. The 10 sub-steps above bring the cycle to a clean close.
|
|
102
|
+
|
|
103
|
+
Not every piece of work goes through all stages. Small changes may skip brainstorming and planning. The workflow adapts to size and complexity.
|