bigpowers 2.2.0 → 2.4.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/.pi/package.json +16 -0
- package/.pi/prompts/assess-impact.md +76 -0
- package/.pi/prompts/audit-code.md +156 -0
- package/.pi/prompts/build-epic.md +44 -0
- package/.pi/prompts/change-request.md +105 -0
- package/.pi/prompts/commit-message.md +135 -0
- package/.pi/prompts/compose-workflow.md +40 -0
- package/.pi/prompts/craft-skill.md +150 -0
- package/.pi/prompts/deepen-architecture.md +235 -0
- package/.pi/prompts/define-language.md +79 -0
- package/.pi/prompts/define-success.md +62 -0
- package/.pi/prompts/delegate-task.md +76 -0
- package/.pi/prompts/design-interface.md +96 -0
- package/.pi/prompts/develop-tdd.md +375 -0
- package/.pi/prompts/diagnose-root.md +23 -0
- package/.pi/prompts/dispatch-agents.md +83 -0
- package/.pi/prompts/edit-document.md +22 -0
- package/.pi/prompts/elaborate-spec.md +81 -0
- package/.pi/prompts/enforce-first.md +77 -0
- package/.pi/prompts/evolve-skill.md +38 -0
- package/.pi/prompts/execute-plan.md +54 -0
- package/.pi/prompts/fix-bug.md +36 -0
- package/.pi/prompts/grill-me.md +95 -0
- package/.pi/prompts/grill-with-docs.md +37 -0
- package/.pi/prompts/guard-git.md +212 -0
- package/.pi/prompts/hook-commits.md +93 -0
- package/.pi/prompts/inspect-quality.md +105 -0
- package/.pi/prompts/investigate-bug.md +117 -0
- package/.pi/prompts/kickoff-branch.md +99 -0
- package/.pi/prompts/map-codebase.md +70 -0
- package/.pi/prompts/migrate-spec.md +482 -0
- package/.pi/prompts/model-domain.md +227 -0
- package/.pi/prompts/orchestrate-project.md +161 -0
- package/.pi/prompts/organize-workspace.md +159 -0
- package/.pi/prompts/plan-refactor.md +77 -0
- package/.pi/prompts/plan-release.md +145 -0
- package/.pi/prompts/plan-work.md +161 -0
- package/.pi/prompts/release-branch.md +158 -0
- package/.pi/prompts/request-review.md +70 -0
- package/.pi/prompts/research-first.md +62 -0
- package/.pi/prompts/reset-baseline.md +20 -0
- package/.pi/prompts/respond-review.md +70 -0
- package/.pi/prompts/run-evals.md +56 -0
- package/.pi/prompts/run-planning.md +26 -0
- package/.pi/prompts/scope-work.md +23 -0
- package/.pi/prompts/search-skills.md +21 -0
- package/.pi/prompts/seed-conventions.md +132 -0
- package/.pi/prompts/session-state.md +146 -0
- package/.pi/prompts/setup-environment.md +23 -0
- package/.pi/prompts/simulate-agents.md +25 -0
- package/.pi/prompts/slice-tasks.md +23 -0
- package/.pi/prompts/spike-prototype.md +94 -0
- package/.pi/prompts/stocktake-skills.md +40 -0
- package/.pi/prompts/survey-context.md +129 -0
- package/.pi/prompts/terse-mode.md +37 -0
- package/.pi/prompts/trace-requirement.md +68 -0
- package/.pi/prompts/using-bigpowers.md +105 -0
- package/.pi/prompts/validate-fix.md +98 -0
- package/.pi/prompts/verify-work.md +125 -0
- package/.pi/prompts/visual-dashboard.md +51 -0
- package/.pi/prompts/wire-observability.md +92 -0
- package/.pi/prompts/write-document.md +244 -0
- package/.pi/skills/assess-impact/SKILL.md +77 -0
- package/.pi/skills/audit-code/SKILL.md +157 -0
- package/.pi/skills/build-epic/SKILL.md +45 -0
- package/.pi/skills/change-request/SKILL.md +106 -0
- package/.pi/skills/commit-message/SKILL.md +136 -0
- package/.pi/skills/compose-workflow/SKILL.md +41 -0
- package/.pi/skills/craft-skill/SKILL.md +151 -0
- package/.pi/skills/deepen-architecture/SKILL.md +236 -0
- package/.pi/skills/define-language/SKILL.md +80 -0
- package/.pi/skills/define-success/SKILL.md +63 -0
- package/.pi/skills/delegate-task/SKILL.md +77 -0
- package/.pi/skills/design-interface/SKILL.md +97 -0
- package/.pi/skills/develop-tdd/SKILL.md +376 -0
- package/.pi/skills/diagnose-root/SKILL.md +24 -0
- package/.pi/skills/dispatch-agents/SKILL.md +84 -0
- package/.pi/skills/edit-document/SKILL.md +23 -0
- package/.pi/skills/elaborate-spec/SKILL.md +82 -0
- package/.pi/skills/enforce-first/SKILL.md +78 -0
- package/.pi/skills/evolve-skill/SKILL.md +39 -0
- package/.pi/skills/execute-plan/SKILL.md +55 -0
- package/.pi/skills/fix-bug/SKILL.md +37 -0
- package/.pi/skills/grill-me/SKILL.md +96 -0
- package/.pi/skills/grill-with-docs/SKILL.md +38 -0
- package/.pi/skills/guard-git/SKILL.md +213 -0
- package/.pi/skills/hook-commits/SKILL.md +94 -0
- package/.pi/skills/inspect-quality/SKILL.md +106 -0
- package/.pi/skills/investigate-bug/SKILL.md +118 -0
- package/.pi/skills/kickoff-branch/SKILL.md +100 -0
- package/.pi/skills/map-codebase/SKILL.md +71 -0
- package/.pi/skills/migrate-spec/SKILL.md +483 -0
- package/.pi/skills/model-domain/SKILL.md +228 -0
- package/.pi/skills/orchestrate-project/SKILL.md +162 -0
- package/.pi/skills/organize-workspace/SKILL.md +160 -0
- package/.pi/skills/plan-refactor/SKILL.md +78 -0
- package/.pi/skills/plan-release/SKILL.md +146 -0
- package/.pi/skills/plan-work/SKILL.md +162 -0
- package/.pi/skills/release-branch/SKILL.md +159 -0
- package/.pi/skills/request-review/SKILL.md +71 -0
- package/.pi/skills/research-first/SKILL.md +63 -0
- package/.pi/skills/reset-baseline/SKILL.md +21 -0
- package/.pi/skills/respond-review/SKILL.md +71 -0
- package/.pi/skills/run-evals/SKILL.md +57 -0
- package/.pi/skills/run-planning/SKILL.md +27 -0
- package/.pi/skills/scope-work/SKILL.md +24 -0
- package/.pi/skills/search-skills/SKILL.md +22 -0
- package/.pi/skills/seed-conventions/SKILL.md +133 -0
- package/.pi/skills/session-state/SKILL.md +147 -0
- package/.pi/skills/setup-environment/SKILL.md +24 -0
- package/.pi/skills/simulate-agents/SKILL.md +26 -0
- package/.pi/skills/slice-tasks/SKILL.md +24 -0
- package/.pi/skills/spike-prototype/SKILL.md +95 -0
- package/.pi/skills/stocktake-skills/SKILL.md +41 -0
- package/.pi/skills/survey-context/SKILL.md +130 -0
- package/.pi/skills/terse-mode/SKILL.md +38 -0
- package/.pi/skills/trace-requirement/SKILL.md +69 -0
- package/.pi/skills/using-bigpowers/SKILL.md +106 -0
- package/.pi/skills/validate-fix/SKILL.md +99 -0
- package/.pi/skills/verify-work/SKILL.md +126 -0
- package/.pi/skills/visual-dashboard/SKILL.md +52 -0
- package/.pi/skills/wire-observability/SKILL.md +93 -0
- package/.pi/skills/write-document/SKILL.md +245 -0
- package/CHANGELOG.md +14 -0
- package/README.md +27 -1
- package/deepen-architecture/SKILL.md +2 -0
- package/define-language/SKILL.md +2 -0
- package/diagnose-root/SKILL.md +2 -0
- package/edit-document/SKILL.md +2 -0
- package/fix-bug/SKILL.md +3 -1
- package/grill-me/SKILL.md +3 -1
- package/grill-with-docs/SKILL.md +3 -1
- package/investigate-bug/SKILL.md +5 -11
- package/map-codebase/SKILL.md +3 -1
- package/model-domain/SKILL.md +2 -0
- package/package.json +11 -2
- package/plan-release/SKILL.md +1 -1
- package/plan-work/SKILL.md +3 -1
- package/release-branch/SKILL.md +4 -2
- package/run-planning/SKILL.md +3 -2
- package/scope-work/SKILL.md +3 -1
- package/scripts/sync-skills.sh +48 -3
- package/scripts/validate-doctrine.sh +24 -9
- package/seed-conventions/SKILL.md +2 -0
- package/slice-tasks/SKILL.md +3 -1
- package/survey-context/SKILL.md +3 -1
- package/write-document/SKILL.md +2 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "RELEASE-INDEX BUILDER — Sequence elaborated epics into specs/release-plan.yaml with WSJF ordering and BCP baselines. NOT a planning-spine substitute: it does not scope work (scope-work) or write story tasks (plan-work). Use after elaborate-spec when the user wants a versioned release index of epics."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Plan Release
|
|
7
|
+
|
|
8
|
+
> **HARD GATE** — Do NOT run this skill unless `elaborate-spec` has produced a clear spec or the user has already defined the feature in detail. If the problem is still fuzzy, run `elaborate-spec` first.
|
|
9
|
+
|
|
10
|
+
> **HARD GATE** — `specs/product/SCOPE_LATEST.yaml` (or legacy `specs/product/SCOPE_LATEST.yaml`) must exist. If missing, run `scope-work` first.
|
|
11
|
+
|
|
12
|
+
Synthesize the conversation context into `specs/release-plan.yaml` (index) and shard detail under `specs/epics/`. No new interview — only clarify if something is genuinely ambiguous.
|
|
13
|
+
|
|
14
|
+
## Outputs
|
|
15
|
+
|
|
16
|
+
| File | Content |
|
|
17
|
+
|------|---------|
|
|
18
|
+
| `specs/release-plan.yaml` | `release.version`, semver bump hint, WSJF-ordered epic list with `id`, `capsule_dir`, `wsjf`, `bcps` — **no story status** |
|
|
19
|
+
| `specs/epics/eNN-<slug>/epic.yaml` | Epic manifest: `id`, `title`, `wsjf`, `total_bcps`, `status`, `stories[]` list |
|
|
20
|
+
| `specs/epics/eNN-<slug>/eNNsYY-<slug>.md` | Story spec in [countable-story-format.md](file:///Users/danielvm/Developer/bigpowers/countable-story-format.md) with 20 sections and Gherkin acceptance criteria |
|
|
21
|
+
| `specs/epics/eNN-<slug>/eNNsYY-tasks.yaml` | Decoupled task checklist with `verify:` commands per task |
|
|
22
|
+
| `specs/execution-status.yaml` | Flat key-value store for story status (`eNNsYY: todo`) |
|
|
23
|
+
|
|
24
|
+
## Epic Capsule Structure
|
|
25
|
+
|
|
26
|
+
All epics use capsule directories (no flat/folder distinction):
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
specs/epics/e01-auth-system/
|
|
30
|
+
├── epic.yaml # Epic manifest
|
|
31
|
+
├── adr/ # Epic-local ADRs (created lazily)
|
|
32
|
+
├── e01s01-login.md # Story spec (countable-story-format)
|
|
33
|
+
├── e01s01-tasks.yaml # Decoupled task checklist
|
|
34
|
+
├── e01s02-jwt.md # Story spec
|
|
35
|
+
└── e01s02-tasks.yaml # Decoupled task checklist
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Rationale:** Capsule dirs achieve change isolation (C9), enable archive pruning (C2/C6), and enforce SRP by decoupling spec `.md` from execution `-tasks.yaml` (C1). See `sdd-adequacy-ranking.md` for the full 10-criteria scoring.
|
|
39
|
+
|
|
40
|
+
## Process
|
|
41
|
+
|
|
42
|
+
### 1. Draft epics and stories
|
|
43
|
+
|
|
44
|
+
From the conversation context, define:
|
|
45
|
+
- **Epics** — `e01`, `e02`, … (stable IDs; WSJF order in `release-plan.yaml` only)
|
|
46
|
+
- **Stories** — `e01s01`, `e01s02`, … with Gherkin acceptance criteria
|
|
47
|
+
|
|
48
|
+
WSJF-sort epics: score = (Business Value + Time Criticality + Risk Reduction) / Job Size. Highest score first.
|
|
49
|
+
|
|
50
|
+
### 2. Write acceptance criteria (Gherkin)
|
|
51
|
+
|
|
52
|
+
For each story, write at least one happy-path and one edge-case scenario (countable format §17 if maturity ≥ 3).
|
|
53
|
+
|
|
54
|
+
### 3. Write tasks with verify commands
|
|
55
|
+
|
|
56
|
+
Every task must have a `verify:` command. No verify command = not a task.
|
|
57
|
+
|
|
58
|
+
### 4. Save specs/release-plan.yaml
|
|
59
|
+
|
|
60
|
+
```yaml
|
|
61
|
+
release:
|
|
62
|
+
version: "3.0.0"
|
|
63
|
+
codename: "Feature Name"
|
|
64
|
+
status: planning # planning | in_progress | released
|
|
65
|
+
semantic_release: true
|
|
66
|
+
bump_hint: minor # patch | minor | major — CI decides at merge
|
|
67
|
+
epics:
|
|
68
|
+
- id: e01
|
|
69
|
+
title: Auth System
|
|
70
|
+
wsjf: 4.5
|
|
71
|
+
capsule_dir: epics/e01-auth-system
|
|
72
|
+
- id: e02
|
|
73
|
+
title: User Profile
|
|
74
|
+
wsjf: 3.8
|
|
75
|
+
capsule_dir: epics/e02-user-profile
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 5. Save epic manifest (`epic.yaml`)
|
|
79
|
+
|
|
80
|
+
Each epic capsule directory contains an `epic.yaml` manifest:
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
id: e01
|
|
84
|
+
title: Auth System
|
|
85
|
+
wsjf: 4.5
|
|
86
|
+
total_bcps: 8
|
|
87
|
+
status: in_progress
|
|
88
|
+
stories:
|
|
89
|
+
- id: e01s01
|
|
90
|
+
title: Login
|
|
91
|
+
bcps: 3
|
|
92
|
+
status: todo
|
|
93
|
+
spec: e01s01-login.md
|
|
94
|
+
tasks: e01s01-tasks.yaml
|
|
95
|
+
- id: e01s02
|
|
96
|
+
title: JWT Token Management
|
|
97
|
+
bcps: 5
|
|
98
|
+
status: todo
|
|
99
|
+
spec: e01s02-jwt.md
|
|
100
|
+
tasks: e01s02-tasks.yaml
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 6. Save story specs (countable-story-format .md)
|
|
104
|
+
|
|
105
|
+
Each story becomes a standalone `.md` file following [countable-story-format.md](file:///Users/danielvm/Developer/bigpowers/countable-story-format.md). Minimum: maturity 3 (Countable) with all 20 sections present. Acceptance criteria in §17 use Gherkin scenarios.
|
|
106
|
+
|
|
107
|
+
### 7. Save decoupled task files (`-tasks.yaml`)
|
|
108
|
+
|
|
109
|
+
Each story has a decoupled `-tasks.yaml` with implementation steps:
|
|
110
|
+
|
|
111
|
+
```yaml
|
|
112
|
+
story_id: e01s01
|
|
113
|
+
title: Login
|
|
114
|
+
status: todo
|
|
115
|
+
bcps: 3
|
|
116
|
+
tasks:
|
|
117
|
+
- id: 1
|
|
118
|
+
description: "Add login form component tests"
|
|
119
|
+
verify: "npm test -- login-form.test.tsx"
|
|
120
|
+
status: todo
|
|
121
|
+
- id: 2
|
|
122
|
+
description: "Implement login form with validation"
|
|
123
|
+
verify: "npm test -- login-form.test.tsx"
|
|
124
|
+
status: todo
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
> **HARD GATE** — Every task MUST have a runnable `verify:` command. No `verify:` = not a task.
|
|
128
|
+
|
|
129
|
+
→ verify: `bash scripts/validate-specs-yaml.sh`
|
|
130
|
+
|
|
131
|
+
### 8. Sync execution status
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
bash scripts/sync-status-from-epics.sh
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 9. Snapshot on planning close (optional)
|
|
138
|
+
|
|
139
|
+
Copy to `specs/product/snapshots/release-<version>/` when the user approves the plan.
|
|
140
|
+
|
|
141
|
+
### 10. Suggest next steps
|
|
142
|
+
|
|
143
|
+
- Run `assess-impact` before `plan-work` for any story touching existing modules.
|
|
144
|
+
- Run `plan-work` per story for detailed steps inside the epic shard.
|
|
145
|
+
- Run `change-request` if a new requirement arrives mid-flight.
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "PLANNING SPINE STEP 3 of 3 — Plan the work: write detailed implementation tasks into the active epic capsule (specs/epics/eNN-slug/). Produces countable-story-format .md specs and runnable -tasks.yaml files. Use after slice-tasks (step 2). Not a substitute for scope-work (step 1) or slice-tasks (step 2)."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Plan Work
|
|
7
|
+
|
|
8
|
+
> **Spine position:** Step 3 — scope-work → slice-tasks → plan-work.
|
|
9
|
+
|
|
10
|
+
Produce a detailed, verifiable implementation plan in the **active epic capsule directory** (`specs/epics/eNN-slug/`). Output: a story spec `.md` file (countable-story-format) and a decoupled `eNNsYY-tasks.yaml` with runnable verify commands. "I think it works" is not a step.
|
|
11
|
+
|
|
12
|
+
> **HARD GATE** — Do NOT proceed with a plan until the task's success criteria are clear. If success is ambiguous, run `define-success` first to convert the task into "step → verify: <cmd>" pairs.
|
|
13
|
+
>
|
|
14
|
+
> **RECURSIVE DISCIPLINE** — This lifecycle applies to EVERY task, including updating these skills. Never skip planning because a task is "meta" or "just documentation."
|
|
15
|
+
|
|
16
|
+
## Pre-flight
|
|
17
|
+
|
|
18
|
+
Read: `release-plan.yaml`, `product/SCOPE_LATEST.yaml`, active `epics/<capsule>/epic.yaml`, `tech-architecture/tech-stack.md`, `product/GLOSSARY_LATEST.yaml`.
|
|
19
|
+
|
|
20
|
+
> **ZOOM-OUT MANDATE** (v1.17.0) — If modifying an existing module: (1) State the module's **purpose**. (2) Name its **callers**. (3) List its **contracts**. Cannot answer all three? Stop — scope is misunderstood.
|
|
21
|
+
|
|
22
|
+
If this plan touches an existing module, run `assess-impact` first to understand blast radius.
|
|
23
|
+
|
|
24
|
+
> **DISCOVERY MANDATE** (v1.18.0) — For external API integration, verify the API signature via local docs or search and quote at least one technical detail in the step's context.
|
|
25
|
+
|
|
26
|
+
> **MULTIPLE INTERPRETATIONS (HARD GATE)** — If the task admits ≥2 valid interpretations, list them and get a user decision before drafting any steps.
|
|
27
|
+
|
|
28
|
+
> **COMPLEXITY PUSHBACK (HARD GATE)** — Every new abstraction MUST include a one-sentence "Reason for Depth." If it can't be filled non-trivially, the abstraction is premature — use inline code instead.
|
|
29
|
+
|
|
30
|
+
> **SLOPCHECK (HARD GATE)** — For every external package, tag it `[OK]`, `[SUS]`, or `[SLOP]`. `[SUS]`/`[SLOP]` require human approval before execution.
|
|
31
|
+
|
|
32
|
+
## Invocation modes
|
|
33
|
+
|
|
34
|
+
- Default: full plan with zoom-out mandate, impact assessment, slopcheck
|
|
35
|
+
- `--fast`: Skip zoom-out and impact assessment. Use for tasks under 3 BCPs with no module interface changes.
|
|
36
|
+
|
|
37
|
+
## Process
|
|
38
|
+
|
|
39
|
+
1. **Explore** — Use `Explore` subagent to understand affected modules, existing test patterns, similar prior art, and dependencies.
|
|
40
|
+
|
|
41
|
+
2. **Draft steps** — Break implementation into the smallest possible steps where each step leaves the codebase working, has one observable outcome, and can be verified with a single command. Red-flag check: name any rationalization you caught before moving to step 3.
|
|
42
|
+
|
|
43
|
+
3. **Write capsule story spec + tasks** — Output two files inside the active epic capsule. See [REFERENCE.md](REFERENCE.md) for file formats and the plan-template.
|
|
44
|
+
|
|
45
|
+
4. **Verify step format** — Every step MUST follow: `N. <What to do> → verify: <runnable command>`. See [REFERENCE.md](REFERENCE.md) for good/bad examples.
|
|
46
|
+
|
|
47
|
+
5. **Review with user** — Confirm step order, granularity, and that verify commands are runnable in this project.
|
|
48
|
+
|
|
49
|
+
After writing capsule tasks, suggest `kickoff-branch` (if not already on a feature branch) then `build-epic`, `execute-plan`, or `develop-tdd`.
|
|
50
|
+
|
|
51
|
+
## Handoff
|
|
52
|
+
|
|
53
|
+
Gate: READY -> next: kickoff-branch
|
|
54
|
+
Writes: state.yaml handoff.next_skill = kickoff-branch
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
# Plan Work — Reference
|
|
59
|
+
|
|
60
|
+
## Output file formats
|
|
61
|
+
|
|
62
|
+
### Story spec: `specs/epics/<capsule>/eNNsYY-<slug>.md`
|
|
63
|
+
|
|
64
|
+
Populated countable-story-format with all 20 sections. Minimum maturity: 3 (Countable). Acceptance criteria in §17.
|
|
65
|
+
|
|
66
|
+
### Task checklist: `specs/epics/<capsule>/eNNsYY-tasks.yaml`
|
|
67
|
+
|
|
68
|
+
```yaml
|
|
69
|
+
story_id: e01s01
|
|
70
|
+
title: Login
|
|
71
|
+
status: todo
|
|
72
|
+
bcps: 3
|
|
73
|
+
tasks:
|
|
74
|
+
- id: 1
|
|
75
|
+
description: "Add login form component tests"
|
|
76
|
+
verify: "npm test -- login-form.test.tsx"
|
|
77
|
+
status: todo
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Update `specs/epics/<capsule>/epic.yaml` manifest to list the story and its BCPs. Run `bash scripts/sync-status-from-epics.sh` after structural changes.
|
|
81
|
+
|
|
82
|
+
## Plan template
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
### Story [X.Y]: [title] — Implementation Steps
|
|
86
|
+
|
|
87
|
+
**type:** feat | fix | refactor
|
|
88
|
+
**context:** domain | infra
|
|
89
|
+
**Context**: [One paragraph: what this story implements and why]
|
|
90
|
+
|
|
91
|
+
## Steps
|
|
92
|
+
|
|
93
|
+
1. [Step description] (ref: ADR-NNNN or commit SHA) → verify: `<runnable command>`
|
|
94
|
+
2. [Step description] (ref: ADR-NNNN or commit SHA) → verify: `<runnable command>`
|
|
95
|
+
...
|
|
96
|
+
|
|
97
|
+
## Verification Script (Step-by-Step)
|
|
98
|
+
|
|
99
|
+
[A human-readable, step-by-step script for the user to verify the story's outcome.]
|
|
100
|
+
|
|
101
|
+
1. [Action 1: e.g. Start the server]
|
|
102
|
+
2. [Action 2: e.g. Open browser to http://localhost:3000]
|
|
103
|
+
3. [Observation: e.g. Verify that the login modal appears]
|
|
104
|
+
|
|
105
|
+
## Out of scope
|
|
106
|
+
|
|
107
|
+
- [Explicit exclusions]
|
|
108
|
+
|
|
109
|
+
## Risks
|
|
110
|
+
|
|
111
|
+
- [Anything that could go wrong and how to detect it early]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Verify step format rules
|
|
115
|
+
|
|
116
|
+
Every step MUST follow this exact format:
|
|
117
|
+
```
|
|
118
|
+
N. <What to do> → verify: <runnable command that proves it worked>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Good examples:**
|
|
122
|
+
```
|
|
123
|
+
1. Add User model with email and name fields → verify: npm test -- user.test.ts
|
|
124
|
+
2. Add POST /users endpoint → verify: curl -s -X POST http://localhost:3000/users -d '{"email":"a@b.com"}' | jq .id
|
|
125
|
+
3. Add email uniqueness constraint → verify: npm test -- user-uniqueness.test.ts
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Bad examples (no verify command):**
|
|
129
|
+
```
|
|
130
|
+
1. Implement the user creation flow
|
|
131
|
+
2. Write tests for the API
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Sub-operations
|
|
135
|
+
|
|
136
|
+
### Define Success
|
|
137
|
+
|
|
138
|
+
Before planning, convert task statements into observable "step → verify: <cmd>" pairs:
|
|
139
|
+
- Break the task into observable outcomes (behaviors) rather than implementation steps
|
|
140
|
+
- Write pairs in the format: `[What must be true] → verify: <runnable command>`
|
|
141
|
+
- Challenge completeness: are all required behaviors covered?
|
|
142
|
+
- Get user confirmation: "Does this capture everything the task requires?"
|
|
143
|
+
- Once confirmed, these pairs become the skeleton for plan-work steps
|
|
144
|
+
|
|
145
|
+
### Zoom-Out Check
|
|
146
|
+
|
|
147
|
+
When modifying an existing module, confirm scope is understood:
|
|
148
|
+
- State the module's **purpose** — what is it responsible for?
|
|
149
|
+
- Name the **callers** — who depends on it?
|
|
150
|
+
- List the **contracts** — what invariants or interfaces must be preserved?
|
|
151
|
+
|
|
152
|
+
If you cannot answer all three without deep code archaeology, scope is misunderstood. Clarify with the user before writing steps.
|
|
153
|
+
|
|
154
|
+
### Slopcheck
|
|
155
|
+
|
|
156
|
+
For every external package proposed in the plan, tag each with one of:
|
|
157
|
+
- `[OK]` — package is mature, actively maintained, appropriate scope
|
|
158
|
+
- `[SUS]` — suspiciously broad, has maintenance concerns, or unclear fit
|
|
159
|
+
- `[SLOP]` — unmaintained, known security issues, or out of scope
|
|
160
|
+
|
|
161
|
+
`[SUS]` and `[SLOP]` require explicit human approval before the step may execute. Document tags inline next to the package name.
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Make the merge/PR/keep/discard decision for a feature branch, verify coverage gates, create the PR with gh, and clean up the worktree. Use when a feature is done and ready to ship, or when user says "release", "merge", or "open a PR".
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Release Branch
|
|
7
|
+
|
|
8
|
+
> **HARD GATE** — Do NOT merge or release if tests fail or if coverage gates are not met. If the branch is red, return to `develop-tdd` to fix regressions or add missing tests before proceeding.
|
|
9
|
+
|
|
10
|
+
Finalize a completed feature branch: verify coverage gates, integrate onto `main`, and clean up the worktree.
|
|
11
|
+
|
|
12
|
+
## Additional modes
|
|
13
|
+
|
|
14
|
+
- `--hotfix`: Emergency fix. Cherry-pick to main plus immediate tag. Skip PR in solo profile.
|
|
15
|
+
|
|
16
|
+
## Integrate mode
|
|
17
|
+
|
|
18
|
+
Read `specs/state.yaml` key `workflow_mode` first (`team-pr` | `solo-git`). Fall back to sniffing `profiles/solo-git.md` only when the key is absent.
|
|
19
|
+
|
|
20
|
+
| Mode | When | Ship path |
|
|
21
|
+
|------|------|-----------|
|
|
22
|
+
| **solo-local** | `workflow_mode: solo-git` (or `profiles/solo-git.md` present as fallback) | `bash scripts/land-branch.sh <branch> "<conventional message>"` |
|
|
23
|
+
| **team-pr** | `workflow_mode: team-pr` (default) | `gh pr create` → `gh pr merge --squash` |
|
|
24
|
+
|
|
25
|
+
If unsure and working alone, prefer **solo-local**.
|
|
26
|
+
|
|
27
|
+
## Process
|
|
28
|
+
|
|
29
|
+
### 1. Final verification
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
<full test command> && <typecheck command> && <lint command>
|
|
33
|
+
git log main...HEAD --oneline | grep -vE "^[a-f0-9]+ (feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+\))?!?: .+$" && echo "❌ Non-conventional commits found" || echo "✅ Commits verified"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- [ ] All tests pass, no type errors, no lint violations, all commits follow Conventional Commits
|
|
37
|
+
|
|
38
|
+
### 2. Coverage check
|
|
39
|
+
|
|
40
|
+
- [ ] Overall coverage ≥ 80%; business logic coverage ≥ 95%
|
|
41
|
+
|
|
42
|
+
### 3. Diff review
|
|
43
|
+
|
|
44
|
+
- [ ] All commits intentional, no secrets, CONVENTIONS.md compliance
|
|
45
|
+
|
|
46
|
+
### 4. Decision
|
|
47
|
+
|
|
48
|
+
Options: **Release (solo-local)** / **Open PR** / **Keep branch** / **Discard**
|
|
49
|
+
|
|
50
|
+
### 5. Solo-local integrate
|
|
51
|
+
|
|
52
|
+
Run `commit-message` to produce the squash commit subject, then:
|
|
53
|
+
```bash
|
|
54
|
+
bash scripts/land-branch.sh <task-slug> "feat(scope): description"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 6. Create PR (team-pr only)
|
|
58
|
+
|
|
59
|
+
See [REFERENCE.md](REFERENCE.md) for the full PR body template and gh commands.
|
|
60
|
+
|
|
61
|
+
### 7. Merge (team-pr only)
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
gh pr merge --squash --delete-branch
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
`semantic-release` auto-detects the commit, bumps SemVer, tags the repo, generates release notes.
|
|
68
|
+
|
|
69
|
+
### 7a. Archive completed epic capsule
|
|
70
|
+
|
|
71
|
+
> **HARD GATE** — When all epic stories are done (all `done` in `execution-status.yaml`), archive the capsule:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
mv specs/epics/eNN-slug specs/epics/archive/
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 8. Clean up worktree
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
git worktree prune
|
|
81
|
+
git worktree remove ../<branch-name> 2>/dev/null || true
|
|
82
|
+
git branch -d <branch-name>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 8a. Cycle-time recording
|
|
86
|
+
|
|
87
|
+
After landing, record delivery metrics. See [REFERENCE.md](REFERENCE.md) for fields and example row.
|
|
88
|
+
|
|
89
|
+
### 9. Return to main
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
git checkout main && git status && pwd
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Report: "Branch released. Integrate mode: <solo-local|team-pr>. cwd: $(pwd) on $(git branch --show-current)."
|
|
96
|
+
|
|
97
|
+
## Handoff
|
|
98
|
+
|
|
99
|
+
Gate: READY -> next: survey-context
|
|
100
|
+
Writes: state.yaml handoff.next_skill = survey-context
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
# Release Branch — Reference
|
|
105
|
+
|
|
106
|
+
## PR body template (team-pr mode)
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
PR_TITLE="<type>(<scope>): <description>"
|
|
110
|
+
echo "$PR_TITLE" | grep -vE "^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+\))?!?: .+$" && echo "❌ ERROR: PR Title must follow Conventional Commits"
|
|
111
|
+
|
|
112
|
+
gh pr create \
|
|
113
|
+
--title "$PR_TITLE" \
|
|
114
|
+
--body "$(cat <<'EOF'
|
|
115
|
+
## Summary
|
|
116
|
+
- [What this PR does]
|
|
117
|
+
- [Key decisions made]
|
|
118
|
+
|
|
119
|
+
## Verify
|
|
120
|
+
- [ ] All tests pass
|
|
121
|
+
- [ ] Coverage gates met (≥80% overall, ≥95% business logic)
|
|
122
|
+
- [ ] CONVENTIONS.md compliance verified
|
|
123
|
+
- [ ] PR Title follows Conventional Commits (for automated release)
|
|
124
|
+
|
|
125
|
+
## specs/ artifacts
|
|
126
|
+
- [List any specs/ files produced or updated]
|
|
127
|
+
EOF
|
|
128
|
+
)"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Worktree cleanup details
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
# From the main repo root
|
|
135
|
+
git worktree prune
|
|
136
|
+
git worktree remove ../<branch-name> 2>/dev/null || true
|
|
137
|
+
git branch -d <branch-name>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
If `git worktree remove` fails due to uncommitted changes, ask: "There are uncommitted changes in the worktree. Force remove? (y/n)". If yes: `git worktree remove -f ../<branch-name>`.
|
|
141
|
+
|
|
142
|
+
## Cycle-time recording
|
|
143
|
+
|
|
144
|
+
After landing the branch, record delivery metrics for this story:
|
|
145
|
+
|
|
146
|
+
1. Write `metrics.story_end` (ISO 8601) to `specs/state.yaml`
|
|
147
|
+
2. Compute `cycle_minutes`: `story_end` minus `story_start` in minutes
|
|
148
|
+
3. Compute `bcp_per_hour`: `epic_cycle.story_bcps / (cycle_minutes / 60)`
|
|
149
|
+
4. Append a row to `specs/metrics/cycle-times.yaml`:
|
|
150
|
+
|
|
151
|
+
```yaml
|
|
152
|
+
- id: e01s01
|
|
153
|
+
bcps: 3
|
|
154
|
+
start: "2026-06-10T09:45:00Z"
|
|
155
|
+
end: "2026-06-10T11:15:00Z"
|
|
156
|
+
cycle_minutes: 90
|
|
157
|
+
bcp_per_hour: 2.0
|
|
158
|
+
```
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Dispatch a fresh reviewer agent with a clean context to critique the code after audit-code passes. The reviewer has no shared state with the coding agent and gives a genuine second opinion. Use after audit-code passes, before committing, or when user wants an independent code review.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Request Review
|
|
7
|
+
|
|
8
|
+
Dispatch a fresh reviewer agent with a clean context. The reviewer has no shared state — it can give a genuine second opinion because it hasn't been involved in writing the code.
|
|
9
|
+
|
|
10
|
+
**Distinct from `audit-code`:** `audit-code` is the coding agent checking its own work (internal). This skill dispatches an external agent whose job is to find what the coding agent missed.
|
|
11
|
+
|
|
12
|
+
**Solo developer note:** This replaces the human reviewer. The reviewer agent IS the reviewer.
|
|
13
|
+
|
|
14
|
+
**Run `audit-code` first.** This skill assumes `audit-code` has already passed. Don't waste a reviewer's attention on hygiene issues you could have caught yourself.
|
|
15
|
+
|
|
16
|
+
## Process
|
|
17
|
+
|
|
18
|
+
### 1. Prepare the review brief
|
|
19
|
+
|
|
20
|
+
Write a self-contained brief for the reviewer agent. Include:
|
|
21
|
+
|
|
22
|
+
- What was built (feature description, not implementation)
|
|
23
|
+
- Which files changed (the diff context)
|
|
24
|
+
- What `specs/` artifacts are relevant (active `epics/eNN-*.yaml`, `requirements/SCOPE_LATEST.yaml`, `bugs/BUG-*.md`)
|
|
25
|
+
- What CONVENTIONS.md requires
|
|
26
|
+
- What the verify command is
|
|
27
|
+
- What you're most uncertain about (where you want fresh eyes)
|
|
28
|
+
|
|
29
|
+
### 2. Dispatch the reviewer agent
|
|
30
|
+
|
|
31
|
+
Use the Agent tool with a completely fresh context. The agent prompt must be self-contained — no references to "our conversation" or "what we discussed."
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
You are a code reviewer. Review the following code changes.
|
|
35
|
+
|
|
36
|
+
Context: [feature description]
|
|
37
|
+
CONVENTIONS.md rules: [paste relevant sections]
|
|
38
|
+
Active epic shard: [paste or summarize from specs/epics/]
|
|
39
|
+
|
|
40
|
+
Diff: [paste git diff or describe changed files]
|
|
41
|
+
|
|
42
|
+
Verify command: [runnable command]
|
|
43
|
+
|
|
44
|
+
Review for:
|
|
45
|
+
1. Correctness — does the code do what was intended?
|
|
46
|
+
2. CONVENTIONS.md compliance — are all rules followed?
|
|
47
|
+
3. Test quality — do tests verify behavior (not implementation)?
|
|
48
|
+
4. Design — are there simpler or more robust approaches?
|
|
49
|
+
5. Edge cases — what inputs or states could cause failures?
|
|
50
|
+
6. Security — any injection, auth, or data exposure risks?
|
|
51
|
+
|
|
52
|
+
For each finding, categorize as: must-fix / should-fix / consider.
|
|
53
|
+
Run the verify command and report the result.
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 3. Collect the report
|
|
57
|
+
|
|
58
|
+
When the reviewer returns:
|
|
59
|
+
- Read every finding before acting on any
|
|
60
|
+
- Note the verify command result
|
|
61
|
+
- Compute the quality score: `100 × (total_items − must_fix − should_fix) / total_items`
|
|
62
|
+
- Report the score to the user
|
|
63
|
+
|
|
64
|
+
> **HARD GATE** — If score < 94%, do NOT merge. Run `respond-review` to resolve must-fix and should-fix findings first. The 94% threshold also applies to the compliance SCORE computed by `npm run compliance` (scripts/audit-compliance.sh): SCORE = passing Gherkin scenarios / total × 100.
|
|
65
|
+
|
|
66
|
+
### 4. Hand off to respond-review
|
|
67
|
+
|
|
68
|
+
Pass the reviewer's report to `respond-review` to categorize findings and apply fixes.
|
|
69
|
+
|
|
70
|
+
Report to user: "Review complete. [N] findings: [X] must-fix, [Y] should-fix, [Z] consider. Running respond-review."
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Look-before-build — search registries, repo, existing skills, and web for prior art before implementing. Appends Prior Art to the spec. Use after survey-context and before elaborate-spec, when adding dependencies, or when the task may already be solved.model: sonnet
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Research First
|
|
7
|
+
|
|
8
|
+
> **HARD GATE** — Do NOT implement until prior art is searched. Minimum outcome: adopt, extend, compose, or build — with evidence.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
1. Read `specs/product/SCOPE_LATEST.yaml`, `specs/release-plan.yaml + epic shards`, and the current task statement.
|
|
13
|
+
2. Search in order: this repo → bigpowers skills (`search-skills`) → package registries → web docs.
|
|
14
|
+
3. For each candidate: note name, URL/path, fit (adopt | extend | compose | build).
|
|
15
|
+
4. Append `## Prior Art` to `requirements/SCOPE_LATEST.yaml` notes or the active epic story.
|
|
16
|
+
|
|
17
|
+
## Outcome matrix
|
|
18
|
+
|
|
19
|
+
| Verdict | Action |
|
|
20
|
+
|---------|--------|
|
|
21
|
+
| **adopt** | Use as-is; link in plan; no new code |
|
|
22
|
+
| **extend** | Wrap or configure existing solution |
|
|
23
|
+
| **compose** | Chain existing skills/modules |
|
|
24
|
+
| **build** | New implementation — justify why others failed |
|
|
25
|
+
|
|
26
|
+
## Verify
|
|
27
|
+
|
|
28
|
+
→ verify: `grep -c "Prior Art" specs/product/SCOPE_LATEST.yaml specs/release-plan.yaml + epic shards 2>/dev/null | awk '{s+=$1} END {if(s>0) print "OK"; else print "MISSING"}'`
|
|
29
|
+
|
|
30
|
+
See [REFERENCE.md](REFERENCE.md) for search commands and registry checklist.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
# Research First — Reference
|
|
35
|
+
|
|
36
|
+
## Search commands
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Repo prior art
|
|
40
|
+
rg -l "<keyword>" --glob '!node_modules' .
|
|
41
|
+
find . -maxdepth 3 -name "SKILL.md" | xargs grep -l "<intent>"
|
|
42
|
+
|
|
43
|
+
# Installed packages (if package.json exists)
|
|
44
|
+
cat package.json | jq '.dependencies,.devDependencies' 2>/dev/null
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Registry checklist
|
|
48
|
+
|
|
49
|
+
- [ ] npm / PyPI / crates.io (if applicable)
|
|
50
|
+
- [ ] Existing bigpowers skill (`bash scripts/build-skill-index.sh && rg "<intent>" specs/SKILL-SEARCH-INDEX.md`)
|
|
51
|
+
- [ ] Project `docs/` and `specs/adr/`
|
|
52
|
+
- [ ] Official library documentation (quote one API detail)
|
|
53
|
+
|
|
54
|
+
## Prior Art template
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
## Prior Art
|
|
58
|
+
|
|
59
|
+
| Candidate | Source | Verdict | Notes |
|
|
60
|
+
|-----------|--------|---------|-------|
|
|
61
|
+
| ... | ... | adopt/extend/compose/build | ... |
|
|
62
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Restore the project to a known clean state between agent runs or experiments. Use between benchmark runs, after a failed spike, or when user wants a clean working tree.model: haiku
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Reset Baseline
|
|
7
|
+
|
|
8
|
+
> **HARD GATE** — Confirm with user before any destructive git operation. Never `reset --hard` without explicit approval.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
1. `git status` — list uncommitted and untracked files.
|
|
13
|
+
2. Ask: stash, discard, or keep each category.
|
|
14
|
+
3. Safe defaults: `git stash push -u -m "reset-baseline"` for WIP; never force-push.
|
|
15
|
+
4. Re-run `setup-environment` after reset.
|
|
16
|
+
5. Run test baseline from `kickoff-branch` verify command.
|
|
17
|
+
|
|
18
|
+
## Verify
|
|
19
|
+
|
|
20
|
+
→ verify: `git status --short | wc -l | awk '{if($1==0) print "OK"; else print "DIRTY:" $1}'
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Act on a reviewer agent's feedback systematically — categorize findings, apply fixes, verify tests still pass. Use after request-review returns a report, or when user wants to work through code review findings.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
# Respond Review
|
|
7
|
+
> **HARD GATE** — **HARD GATE** — Every reviewer comment must be addressed (fix, disagree + document reason, or ask clarification). Do NOT ignore feedback and merge.
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Work through reviewer findings systematically. Don't apply changes blindly — categorize first, then decide, then fix, then verify.
|
|
11
|
+
|
|
12
|
+
## Process
|
|
13
|
+
|
|
14
|
+
### 1. Read the full review report
|
|
15
|
+
|
|
16
|
+
Read every finding before acting on any of them. Get the full picture first.
|
|
17
|
+
|
|
18
|
+
### 2. Categorize findings
|
|
19
|
+
|
|
20
|
+
For each finding, assign a category:
|
|
21
|
+
|
|
22
|
+
| Category | Meaning | Action |
|
|
23
|
+
|----------|---------|--------|
|
|
24
|
+
| **must-fix** | Correctness bug, security issue, test failure, CONVENTIONS.md violation | Fix before proceeding |
|
|
25
|
+
| **should-fix** | Code quality issue, naming, clarity — worth fixing but not blocking | Fix if time allows |
|
|
26
|
+
| **consider** | Architectural suggestion, alternative approach — may or may not apply | Discuss with user |
|
|
27
|
+
|
|
28
|
+
Create a numbered list of all findings with their categories.
|
|
29
|
+
|
|
30
|
+
### 3. Confirm with user (for consider-category items)
|
|
31
|
+
|
|
32
|
+
For each "consider" item, briefly describe the trade-off and ask: "Apply, skip, or discuss?"
|
|
33
|
+
|
|
34
|
+
### 4. Apply must-fix items first
|
|
35
|
+
|
|
36
|
+
Fix every must-fix item. For each one:
|
|
37
|
+
- Describe what you're changing and why
|
|
38
|
+
- Make the change
|
|
39
|
+
- Run the verify command if one exists for this area
|
|
40
|
+
|
|
41
|
+
### 5. Apply should-fix items
|
|
42
|
+
|
|
43
|
+
Apply should-fix items. If any are large enough to warrant their own commit, note them separately.
|
|
44
|
+
|
|
45
|
+
### 6. Run the full suite
|
|
46
|
+
|
|
47
|
+
After all changes are applied:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
<full test command>
|
|
51
|
+
<typecheck command>
|
|
52
|
+
<lint command>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
- [ ] All tests pass
|
|
56
|
+
- [ ] No type errors
|
|
57
|
+
- [ ] No lint violations
|
|
58
|
+
|
|
59
|
+
### 7. Report
|
|
60
|
+
|
|
61
|
+
Summarize what was applied and what was skipped:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Applied (must-fix): #1, #2, #3
|
|
65
|
+
Applied (should-fix): #4
|
|
66
|
+
Skipped (consider): #5 — agreed with user to defer
|
|
67
|
+
All tests pass.
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Suggest next skill: `commit-message`.
|