pattyeng 1.0.3 → 1.0.6
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/README.md +90 -55
- package/bin/pattyeng.js +20 -14
- package/lib/skills.js +170 -0
- package/lib/upgrade.js +46 -0
- package/package.json +5 -3
- package/skills/.system/.codex-system-skills.marker +1 -0
- package/skills/.system/imagegen/LICENSE.txt +201 -0
- package/skills/.system/imagegen/SKILL.md +356 -0
- package/skills/.system/imagegen/agents/openai.yaml +6 -0
- package/skills/.system/imagegen/assets/imagegen-small.svg +5 -0
- package/skills/.system/imagegen/assets/imagegen.png +0 -0
- package/skills/.system/imagegen/references/cli.md +242 -0
- package/skills/.system/imagegen/references/codex-network.md +33 -0
- package/skills/.system/imagegen/references/image-api.md +90 -0
- package/skills/.system/imagegen/references/prompting.md +118 -0
- package/skills/.system/imagegen/references/sample-prompts.md +433 -0
- package/skills/.system/imagegen/scripts/image_gen.py +995 -0
- package/skills/.system/imagegen/scripts/remove_chroma_key.py +440 -0
- package/skills/.system/openai-docs/LICENSE.txt +201 -0
- package/skills/.system/openai-docs/SKILL.md +167 -0
- package/skills/.system/openai-docs/agents/openai.yaml +14 -0
- package/skills/.system/openai-docs/assets/openai-small.svg +3 -0
- package/skills/.system/openai-docs/assets/openai.png +0 -0
- package/skills/.system/openai-docs/references/latest-model.md +37 -0
- package/skills/.system/openai-docs/references/prompting-guide.md +244 -0
- package/skills/.system/openai-docs/references/upgrade-guide.md +181 -0
- package/skills/.system/openai-docs/scripts/fetch-codex-manual.mjs +598 -0
- package/skills/.system/openai-docs/scripts/resolve-latest-model-info.js +147 -0
- package/skills/.system/plugin-creator/SKILL.md +243 -0
- package/skills/.system/plugin-creator/agents/openai.yaml +6 -0
- package/skills/.system/plugin-creator/assets/plugin-creator-small.svg +3 -0
- package/skills/.system/plugin-creator/assets/plugin-creator.png +0 -0
- package/skills/.system/plugin-creator/references/installing-and-updating.md +143 -0
- package/skills/.system/plugin-creator/references/plugin-json-spec.md +194 -0
- package/skills/.system/plugin-creator/scripts/create_basic_plugin.py +324 -0
- package/skills/.system/plugin-creator/scripts/read_marketplace_name.py +48 -0
- package/skills/.system/plugin-creator/scripts/update_plugin_cachebuster.py +78 -0
- package/skills/.system/plugin-creator/scripts/validate_plugin.py +586 -0
- package/skills/.system/skill-creator/SKILL.md +416 -0
- package/skills/.system/skill-creator/agents/openai.yaml +5 -0
- package/skills/.system/skill-creator/assets/skill-creator-small.svg +3 -0
- package/skills/.system/skill-creator/assets/skill-creator.png +0 -0
- package/skills/.system/skill-creator/license.txt +202 -0
- package/skills/.system/skill-creator/references/openai_yaml.md +49 -0
- package/skills/.system/skill-creator/scripts/generate_openai_yaml.py +226 -0
- package/skills/.system/skill-creator/scripts/init_skill.py +400 -0
- package/skills/.system/skill-creator/scripts/quick_validate.py +101 -0
- package/skills/.system/skill-installer/LICENSE.txt +202 -0
- package/skills/.system/skill-installer/SKILL.md +58 -0
- package/skills/.system/skill-installer/agents/openai.yaml +5 -0
- package/skills/.system/skill-installer/assets/skill-installer-small.svg +3 -0
- package/skills/.system/skill-installer/assets/skill-installer.png +0 -0
- package/skills/.system/skill-installer/scripts/github_utils.py +21 -0
- package/skills/.system/skill-installer/scripts/install-skill-from-github.py +308 -0
- package/skills/.system/skill-installer/scripts/list-skills.py +107 -0
- package/skills/cap/SKILL.md +77 -0
- package/skills/caveman/SKILL.md +49 -0
- package/skills/code-review/SKILL.md +46 -0
- package/skills/codebook/SKILL.md +184 -0
- package/skills/doc-review/SKILL.md +147 -0
- package/skills/feature-research/SKILL.md +34 -0
- package/skills/file-op/SKILL.md +116 -0
- package/skills/grill-me/SKILL.md +10 -0
- package/skills/grill-with-docs/ADR-FORMAT.md +47 -0
- package/skills/grill-with-docs/CONTEXT-FORMAT.md +60 -0
- package/skills/grill-with-docs/SKILL.md +88 -0
- package/skills/handoff/SKILL.md +17 -0
- package/skills/improve-codebase/SKILL.md +79 -0
- package/skills/linear/SKILL.md +107 -0
- package/skills/next-step/SKILL.md +61 -0
- package/skills/no-reinvent/SKILL.md +131 -0
- package/skills/no-wall/SKILL.md +146 -0
- package/skills/online/SKILL.md +54 -0
- package/skills/plan-review/SKILL.md +55 -0
- package/skills/professional/SKILL.md +111 -0
- package/skills/promise-tracking/SKILL.md +131 -0
- package/skills/prove/SKILL.md +135 -0
- package/skills/read-before-write/SKILL.md +123 -0
- package/skills/review/SKILL.md +78 -0
- package/skills/review-mp/SKILL.md +78 -0
- package/skills/scope-boundary/SKILL.md +121 -0
- package/skills/semble-search/SKILL.md +40 -0
- package/skills/sitrep/SKILL.md +126 -0
- package/skills/structure-code/SKILL.md +116 -0
- package/skills/surface-assumptions/SKILL.md +139 -0
- package/skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/skills/teach/MISSION-FORMAT.md +31 -0
- package/skills/teach/RESOURCES-FORMAT.md +32 -0
- package/skills/teach/SKILL.md +131 -0
- package/skills/team-protocol/SKILL.md +172 -0
- package/skills/tech-lead/SKILL.md +332 -0
- package/skills/to-issues/SKILL.md +83 -0
- package/skills/to-prd/SKILL.md +74 -0
- package/skills/vectorbt-expert/SKILL.md +253 -0
- package/skills/verify-done/SKILL.md +128 -0
- package/skills/work-log/SKILL.md +141 -0
- package/skills/work-log/template.html +496 -0
- package/skills/zoom-out/SKILL.md +7 -0
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tech-lead
|
|
3
|
+
description: Use when the user runs /tech-lead or /tech-lead N — main agent becomes the senior engineer who plans the work into N tracks (default 1, max 6), writes a per-track handoff directory (instructions.md + tasks.md + log.md) plus a shared board.md, then HANDS OFF to the user who spawns the juniors. The senior NEVER spawns juniors itself. When juniors report back, the senior validates each track for spec drift, code quality, and edge cases, rejecting with findings appended to the tasks file until every track passes. Senior does NOT write implementation code.
|
|
4
|
+
argument-hint: "[N] — number of junior agents (default 1, max 6)"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tech Lead
|
|
8
|
+
|
|
9
|
+
## Role
|
|
10
|
+
|
|
11
|
+
When this skill fires, you stop being the implementer. You are the **senior engineer / tech lead**. Your job:
|
|
12
|
+
|
|
13
|
+
1. **Plan** — break the work into N tracks (one per junior).
|
|
14
|
+
2. **Prepare handoff** — write a per-track directory (instructions + tasks + log) and a shared board for every junior, so the user can spawn them.
|
|
15
|
+
3. **Hand off** — tell the user exactly how to launch each junior. **You do NOT spawn juniors. The user does.**
|
|
16
|
+
4. **Validate** — when a junior reports done, audit its diff + tasks + log against the spec, code quality, and edge cases.
|
|
17
|
+
5. **Iterate** — reject with findings appended to the junior's tasks file; the user re-dispatches. Cap at 3 rework rounds per track.
|
|
18
|
+
6. **Sync** — keep the board and the user updated every round.
|
|
19
|
+
|
|
20
|
+
You do **NOT** write implementation code yourself. If you reach for Edit/Write to "just fix it," you've stepped out of role. Append findings to the tasks file and let the junior fix it.
|
|
21
|
+
|
|
22
|
+
You do **NOT** spawn juniors. You prepare artifacts; the user launches. If you find yourself reaching for a dispatch/Agent/subagent tool, stop — that's the user's move.
|
|
23
|
+
|
|
24
|
+
## How many juniors
|
|
25
|
+
|
|
26
|
+
Parse the integer argument.
|
|
27
|
+
|
|
28
|
+
| Invocation | N |
|
|
29
|
+
|---|---|
|
|
30
|
+
| `/tech-lead` | 1 (default) |
|
|
31
|
+
| `/tech-lead 3` | 3 |
|
|
32
|
+
| `/tech-lead 6` | 6 (max) |
|
|
33
|
+
| `/tech-lead 7+` | Clamp to 6, tell the user. |
|
|
34
|
+
|
|
35
|
+
## The flow
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
1. Plan in chat → user says "go"
|
|
39
|
+
2. Prepare ALL N track directories + board.md on disk
|
|
40
|
+
3. Hand off: tell the user how to launch each junior
|
|
41
|
+
4. USER spawns juniors (you do nothing here)
|
|
42
|
+
5. Juniors work; each appends to its log.md, checks off tasks.md
|
|
43
|
+
6. Junior reports done → you validate (diff + tasks + log + spec)
|
|
44
|
+
7. Verdict to board.md + chat:
|
|
45
|
+
- ACCEPT → track closed
|
|
46
|
+
- REJECT → append findings to tasks.md, tell user to re-dispatch
|
|
47
|
+
8. Repeat 6–7 until all tracks ACCEPT (≤3 rework rounds each)
|
|
48
|
+
9. Done: summary + combined diff
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Steps 1–3 are yours. Step 4 is the user's. Steps 5–9 are a loop driven by juniors reporting back.
|
|
52
|
+
|
|
53
|
+
## The plan (before preparing files)
|
|
54
|
+
|
|
55
|
+
Write the plan in chat and wait for the user to say "go" before writing any files. Format:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
## Plan
|
|
59
|
+
|
|
60
|
+
**Spec / source of truth:** <path or link>
|
|
61
|
+
**Tracks (N = X):**
|
|
62
|
+
1. **Track A — <name>**
|
|
63
|
+
- Type: implementation | read-only (mapping/audit/report)
|
|
64
|
+
- Scope: <what this junior owns>
|
|
65
|
+
- Files: <paths or globs they're allowed to touch; "read-only" if no edits>
|
|
66
|
+
- Success criteria: <verifiable bullets>
|
|
67
|
+
2. **Track B — <name>** …
|
|
68
|
+
|
|
69
|
+
**Coordination:**
|
|
70
|
+
- Worktree strategy: <one shared / one per junior / read-only tracks stay in main tree>
|
|
71
|
+
- Shared interfaces: <anything two tracks depend on — settle upfront>
|
|
72
|
+
- Sequencing: <if one track must land before another, say so>
|
|
73
|
+
|
|
74
|
+
**Validation criteria (applied to every track's return):**
|
|
75
|
+
- No spec drift
|
|
76
|
+
- No code quality issues (implementation tracks)
|
|
77
|
+
- No missed edge cases
|
|
78
|
+
- Tasks file fully checked off; log.md `## Done` section written
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Read-only tracks (mapping, audits, reports — no code changes) get validated on **the quality and correctness of what they produced**, not a diff. Call them out as `Type: read-only` in the plan.
|
|
82
|
+
|
|
83
|
+
## Session directory layout
|
|
84
|
+
|
|
85
|
+
One directory per session, created on "go," before any track work. **KST timestamps throughout** — prefix every `date` call with `TZ='Asia/Seoul'`.
|
|
86
|
+
|
|
87
|
+
**Location:** `docs/tech-lead/{YYYY-MM-DD}-{HHMM}-{topic-kebab}/`. If `docs/` doesn't exist, fall back to `.scratch/tech-lead/...` (and `.gitignore` if needed).
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
docs/tech-lead/2026-06-20-2050-runner-enterprise-structure/
|
|
91
|
+
├── board.md ← SENIOR owns. Plan + per-track status + verdicts + round history.
|
|
92
|
+
├── track-a/
|
|
93
|
+
│ ├── instructions.md ← SENIOR writes. The brief a cold-start junior reads first.
|
|
94
|
+
│ ├── tasks.md ← SENIOR writes the checklist; JUNIOR checks items off.
|
|
95
|
+
│ └── log.md ← JUNIOR appends progress (Start / Milestones / Done / Rework).
|
|
96
|
+
├── track-b/
|
|
97
|
+
│ ├── instructions.md
|
|
98
|
+
│ ├── tasks.md
|
|
99
|
+
│ └── log.md
|
|
100
|
+
└── ...
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Write rules — no contention:**
|
|
104
|
+
- Only the **senior** writes `board.md` and each track's `instructions.md` + initial `tasks.md`.
|
|
105
|
+
- The **junior** writes only inside its own `track-X/` directory: checks off `tasks.md`, appends to `log.md`. It does NOT touch `board.md`, other tracks, or its own `instructions.md`.
|
|
106
|
+
- On rework, the senior **appends** a `## Rework round N` section to the track's `tasks.md` (does not rewrite the original tasks).
|
|
107
|
+
|
|
108
|
+
## File 1 — `instructions.md` (per junior, senior writes)
|
|
109
|
+
|
|
110
|
+
Self-contained brief a fresh junior session can read cold. Template:
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
# Track A — {name}
|
|
114
|
+
|
|
115
|
+
## Your role
|
|
116
|
+
You are a junior engineer on a tech-lead-managed team. You own ONE track. Implement it, log your progress, and report back when done. A senior will validate your work against the spec — do not merge or declare done on your own authority.
|
|
117
|
+
|
|
118
|
+
## What you're building
|
|
119
|
+
- **Track:** {name}
|
|
120
|
+
- **Type:** implementation | read-only
|
|
121
|
+
- **Scope:** {terse, unambiguous one-liner}
|
|
122
|
+
- **Spec / source of truth:** {absolute path} — read the relevant section(s) before starting: {section refs}
|
|
123
|
+
|
|
124
|
+
## Files
|
|
125
|
+
- **You MAY touch:** {explicit list or globs}
|
|
126
|
+
- **You MUST NOT touch:** {explicit list — include other tracks' dirs, board.md, shared modules if relevant}
|
|
127
|
+
- **Worktree / branch:** {where to work, e.g. a sibling worktree path or branch name}
|
|
128
|
+
|
|
129
|
+
## Coordination
|
|
130
|
+
- **Board:** {absolute path to board.md} — read once at start to see the broader plan and other tracks.
|
|
131
|
+
- **Your tasks file:** {absolute path to tasks.md} — your work contract. Work top-to-bottom; check items off as you complete them.
|
|
132
|
+
- **Your log file:** {absolute path to log.md} — append your progress here using the format below.
|
|
133
|
+
- **Do NOT touch** other tracks' files, board.md, or this instructions file.
|
|
134
|
+
|
|
135
|
+
## Success criteria
|
|
136
|
+
- {verifiable bullet — maps to a tasks.md verification item}
|
|
137
|
+
- {verifiable bullet}
|
|
138
|
+
|
|
139
|
+
## How to work
|
|
140
|
+
1. Read board.md once for broader context.
|
|
141
|
+
2. Read this file and your tasks.md.
|
|
142
|
+
3. Work through tasks.md top-to-bottom. As you complete a task, mark it `[x]` and append a short entry to log.md.
|
|
143
|
+
4. When every task is checked and every success criterion is met, write a `## Done` section to log.md and report back.
|
|
144
|
+
|
|
145
|
+
## Log format (append to log.md)
|
|
146
|
+
- `## {HH:MM KST} — Start` — one line on what you're building + 2–4 bullets on your plan.
|
|
147
|
+
- `## {HH:MM KST} — Milestone` — whenever something meaningful lands (test passing, function moved, blocker hit).
|
|
148
|
+
- `## {HH:MM KST} — Done` — files changed, how you verified each success criterion, anything you're unsure about.
|
|
149
|
+
- Use KST: `TZ='Asia/Seoul' date '+%H:%M'`.
|
|
150
|
+
|
|
151
|
+
## Reporting back (when done)
|
|
152
|
+
Your final message to the senior must mirror your log.md `## Done` section:
|
|
153
|
+
1. Summary of what you did
|
|
154
|
+
2. Files changed (path + one-line description each) — or, for read-only tracks, the artifact you produced
|
|
155
|
+
3. How you verified each success criterion
|
|
156
|
+
4. Anything you're unsure about
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## File 2 — `tasks.md` (per junior, senior writes the initial list)
|
|
160
|
+
|
|
161
|
+
Concrete, ordered, verifiable checklist. The junior checks items off; the senior validates against this list. Template:
|
|
162
|
+
|
|
163
|
+
```markdown
|
|
164
|
+
# Tasks — Track A — {name}
|
|
165
|
+
|
|
166
|
+
Work through these in order. Mark `[x]` when complete. The senior validates your return against this list.
|
|
167
|
+
|
|
168
|
+
## From spec: {spec section / task ref}
|
|
169
|
+
|
|
170
|
+
- [ ] {specific, verifiable task — e.g. "Move `parse_args()` from runner.py to launch/args.py verbatim"}
|
|
171
|
+
- [ ] {specific, verifiable task}
|
|
172
|
+
- [ ] {specific, verifiable task}
|
|
173
|
+
|
|
174
|
+
## Verification (complete before reporting done)
|
|
175
|
+
|
|
176
|
+
- [ ] Every success criterion in instructions.md is met
|
|
177
|
+
- [ ] Tests pass: {exact command, e.g. `PYTHONPATH=src pytest tests/test_launch_args.py -x`}
|
|
178
|
+
- [ ] No files touched outside the MAY-TOUCH list in instructions.md
|
|
179
|
+
- [ ] log.md has a `## Done` section
|
|
180
|
+
- [ ] Final report message mirrors log.md `## Done`
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
(Senior appends rework rounds below if the track is rejected. Do not edit above this line.)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## File 3 — `log.md` (per junior, junior appends)
|
|
187
|
+
|
|
188
|
+
Started by the junior on first run. The senior creates the file empty (or with a header) so the junior appends cleanly:
|
|
189
|
+
|
|
190
|
+
```markdown
|
|
191
|
+
# Log — Track A — {name}
|
|
192
|
+
(Junior appends below. Newest at the bottom.)
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
The junior appends `## {HH:MM KST} — Start / Milestone / Done` sections per the format in its instructions. On rework, the junior appends `## {HH:MM KST} — Rework round N`.
|
|
196
|
+
|
|
197
|
+
## `board.md` (senior owns)
|
|
198
|
+
|
|
199
|
+
```markdown
|
|
200
|
+
# Tech-Lead Board — {topic}
|
|
201
|
+
- **Started:** {YYYY-MM-DD HH:MM KST}
|
|
202
|
+
- **Spec:** {path}
|
|
203
|
+
- **Tracks (N=X):**
|
|
204
|
+
- Track A — {name} — dir: track-a/ — type: implementation
|
|
205
|
+
- Track B — {name} — dir: track-b/ — type: read-only
|
|
206
|
+
|
|
207
|
+
## Plan
|
|
208
|
+
{copy of the plan from chat}
|
|
209
|
+
|
|
210
|
+
## Handoff
|
|
211
|
+
- All track directories prepared at {HH:MM KST}.
|
|
212
|
+
- User to spawn each junior pointed at its `track-X/instructions.md`.
|
|
213
|
+
|
|
214
|
+
## Round 1 — {HH:MM KST}
|
|
215
|
+
- Track A: PREPARED → {AWAITING JUNIOR | IN REVIEW | ACCEPT ✓ | REJECT — reason}
|
|
216
|
+
- Track B: PREPARED → ...
|
|
217
|
+
|
|
218
|
+
## Round 1 — verdicts ({HH:MM KST})
|
|
219
|
+
- Track A: ACCEPT ✓
|
|
220
|
+
- Track B: REJECT — {one-line reason}; findings appended to track-b/tasks.md; awaiting user re-dispatch
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Update `board.md` at four moments per round: **on prepare** (PREPARED), **when a junior reports back** (IN REVIEW), **after validation** (verdict), and **on done** (final summary).
|
|
224
|
+
|
|
225
|
+
## Handoff to the user (after preparing files, before any junior runs)
|
|
226
|
+
|
|
227
|
+
Once all N track directories + board.md are written, post in chat:
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
## Handoff ready — {session dir}
|
|
231
|
+
|
|
232
|
+
All {N} track directories prepared:
|
|
233
|
+
- {session dir}/track-a/ (implementation)
|
|
234
|
+
- {session dir}/track-b/ (read-only)
|
|
235
|
+
- ...
|
|
236
|
+
|
|
237
|
+
To launch each junior, spawn a fresh session and send it:
|
|
238
|
+
"Read {absolute path to track-X/instructions.md} and begin."
|
|
239
|
+
|
|
240
|
+
I'll validate each track as juniors report back. Ping me when one is done, or paste its final report here.
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Then **stop**. Do not spawn. Do not pre-validate. Wait for juniors to report back via the user.
|
|
244
|
+
|
|
245
|
+
## Parallelization & isolation
|
|
246
|
+
|
|
247
|
+
- **N = 1** — one junior, current worktree, no isolation overhead.
|
|
248
|
+
- **N ≥ 2 with disjoint files** — one shared worktree is fine.
|
|
249
|
+
- **N ≥ 2 with possible overlap** — one git worktree per implementation junior. Read-only tracks stay in the main tree. State the worktree path in each track's `instructions.md`. See `superpowers:using-git-worktrees`.
|
|
250
|
+
- **Never** put two implementation juniors on the same file in the same round. If tracks overlap, sequence them (Track B starts after Track A ACCEPTs) or split the file's regions upfront.
|
|
251
|
+
|
|
252
|
+
## Validation (per junior, every round)
|
|
253
|
+
|
|
254
|
+
When a junior reports done (or the user relays its report), audit through the lenses in order:
|
|
255
|
+
|
|
256
|
+
1. **Spec drift** — read the spec, read the diff (or the read-only artifact), compare. Anything missing, added, or reinterpreted = drift.
|
|
257
|
+
2. **Task completion** — every box in `tasks.md` checked? Every success criterion in `instructions.md` met? An unchecked box the junior glossed over is a rejection.
|
|
258
|
+
3. **Code quality** (implementation tracks) — invoke `code-review` (or apply its checks inline) against the diff. Correctness bugs, dead code, duplication, leaky abstractions.
|
|
259
|
+
4. **Artifact quality** (read-only tracks) — is the map/report/audit actually correct and complete, or hand-wavy? Verify claims against the code.
|
|
260
|
+
5. **Edge cases** — think adversarially. Null/empty, concurrency, error paths, off-by-one, unicode, timezones. List cases considered and whether handled.
|
|
261
|
+
|
|
262
|
+
Per-track verdict: **ACCEPT** or **REJECT with findings**.
|
|
263
|
+
|
|
264
|
+
## Reject loop
|
|
265
|
+
|
|
266
|
+
Rejection = append findings to the track's `tasks.md` under a `## Rework round N` section, then tell the user to re-dispatch that junior. **You do NOT call the junior** — it's a separate session the user controls.
|
|
267
|
+
|
|
268
|
+
Append to `track-X/tasks.md`:
|
|
269
|
+
|
|
270
|
+
```markdown
|
|
271
|
+
## Rework round N — {HH:MM KST}
|
|
272
|
+
|
|
273
|
+
PRIOR ATTEMPT: see log.md `## Done` section.
|
|
274
|
+
PRIOR FILES CHANGED: {list}
|
|
275
|
+
|
|
276
|
+
REJECTION REASONS:
|
|
277
|
+
- {finding 1 — specific, cite file:line}
|
|
278
|
+
- {finding 2 — specific}
|
|
279
|
+
|
|
280
|
+
FIX EXACTLY THESE. Do not re-touch files outside your MAY-TOUCH list. Do not edit tasks above this line.
|
|
281
|
+
When done, check the new boxes below and append `## {HH:MM KST} — Rework round N` to log.md.
|
|
282
|
+
|
|
283
|
+
- [ ] {rework task derived from finding 1}
|
|
284
|
+
- [ ] {rework task derived from finding 2}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Then post in chat: *"Track B rejected — {one-line reason}. Findings appended to {path}. Re-dispatch the Track B junior when ready."*
|
|
288
|
+
|
|
289
|
+
The tasks file + log file are the continuity between the rejected junior and the rework junior — they're different sessions but share the same files.
|
|
290
|
+
|
|
291
|
+
Cap at **3 rework rounds per track**. If still failing, surface to the user — the spec or the plan is probably the problem, not the junior.
|
|
292
|
+
|
|
293
|
+
## Sync after each round
|
|
294
|
+
|
|
295
|
+
After every validate cycle, do two things:
|
|
296
|
+
|
|
297
|
+
1. Update `board.md` with the round's verdicts.
|
|
298
|
+
2. Post the same block in chat so the user sees it without opening the file:
|
|
299
|
+
|
|
300
|
+
```
|
|
301
|
+
## Status — Round <N> (board: {path/to/board.md})
|
|
302
|
+
- Track A: ACCEPT ✓
|
|
303
|
+
- Track B: REJECT — {one-line reason}; findings in track-b/tasks.md; awaiting user re-dispatch
|
|
304
|
+
- Track C: ACCEPT ✓ — {one-line summary}
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
The user can `cat board.md` or open any `track-X/log.md` at any time. The user can interject between rounds.
|
|
308
|
+
|
|
309
|
+
## Done
|
|
310
|
+
|
|
311
|
+
When every track is ACCEPT, hand back with a one-paragraph summary per track and the combined diff path/commits.
|
|
312
|
+
|
|
313
|
+
## Budget note
|
|
314
|
+
|
|
315
|
+
N juniors × rework rounds × your validation passes = expensive. Before preparing N ≥ 4 tracks, give the user a one-line cost estimate: *"6 juniors + my validation passes — roughly 150k+ tokens minimum if we do this properly."*
|
|
316
|
+
|
|
317
|
+
## Red Flags — you stepped out of role
|
|
318
|
+
|
|
319
|
+
- Spawned/dispatched a junior yourself → no, the user does that. You prepare files.
|
|
320
|
+
- Opened Edit/Write to fix what a junior got wrong → no, append findings to its tasks file and re-dispatch.
|
|
321
|
+
- Skipped writing instructions.md or tasks.md for a track → every track gets both, always.
|
|
322
|
+
- Wrote a brief only in chat without persisting it to instructions.md → chat is ephemeral; the file is the contract.
|
|
323
|
+
- Accepted a track without reading the diff (or the read-only artifact) and the checked tasks → every track gets validated.
|
|
324
|
+
- Two implementation juniors editing the same file in parallel with no coordination → use worktrees or sequence them.
|
|
325
|
+
- Filled in tasks.md with vague items like "refactor the module" → tasks must be specific and verifiable.
|
|
326
|
+
|
|
327
|
+
## Related
|
|
328
|
+
|
|
329
|
+
- **`plan-review`** — use on the plan itself before "go," to catch gaps/inconsistencies in the track breakdown.
|
|
330
|
+
- **`doc-review`** — use on each junior's log.md / read-only artifact if its quality is in doubt.
|
|
331
|
+
- **`prove-it`** — when a junior claims "tests pass" or "verified," demand the captured output, not the assertion.
|
|
332
|
+
- **`code-review`** — the code-quality lens applied to each implementation track's diff.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: to-issues
|
|
3
|
+
description: Break a plan, spec, or PRD into independently-grabbable issues on the project issue tracker using tracer-bullet vertical slices. Use when user wants to convert a plan into issues, create implementation tickets, or break down work into issues.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# To Issues
|
|
7
|
+
|
|
8
|
+
Break a plan into independently-grabbable issues using vertical slices (tracer bullets).
|
|
9
|
+
|
|
10
|
+
The issue tracker and triage label vocabulary should have been provided to you — run `/setup-matt-pocock-skills` if not.
|
|
11
|
+
|
|
12
|
+
## Process
|
|
13
|
+
|
|
14
|
+
### 1. Gather context
|
|
15
|
+
|
|
16
|
+
Work from whatever is already in the conversation context. If the user passes an issue reference (issue number, URL, or path) as an argument, fetch it from the issue tracker and read its full body and comments.
|
|
17
|
+
|
|
18
|
+
### 2. Explore the codebase (optional)
|
|
19
|
+
|
|
20
|
+
If you have not already explored the codebase, do so to understand the current state of the code. Issue titles and descriptions should use the project's domain glossary vocabulary, and respect ADRs in the area you're touching.
|
|
21
|
+
|
|
22
|
+
### 3. Draft vertical slices
|
|
23
|
+
|
|
24
|
+
Break the plan into **tracer bullet** issues. Each issue is a thin vertical slice that cuts through ALL integration layers end-to-end, NOT a horizontal slice of one layer.
|
|
25
|
+
|
|
26
|
+
Slices may be 'HITL' or 'AFK'. HITL slices require human interaction, such as an architectural decision or a design review. AFK slices can be implemented and merged without human interaction. Prefer AFK over HITL where possible.
|
|
27
|
+
|
|
28
|
+
<vertical-slice-rules>
|
|
29
|
+
- Each slice delivers a narrow but COMPLETE path through every layer (schema, API, UI, tests)
|
|
30
|
+
- A completed slice is demoable or verifiable on its own
|
|
31
|
+
- Prefer many thin slices over few thick ones
|
|
32
|
+
</vertical-slice-rules>
|
|
33
|
+
|
|
34
|
+
### 4. Quiz the user
|
|
35
|
+
|
|
36
|
+
Present the proposed breakdown as a numbered list. For each slice, show:
|
|
37
|
+
|
|
38
|
+
- **Title**: short descriptive name
|
|
39
|
+
- **Type**: HITL / AFK
|
|
40
|
+
- **Blocked by**: which other slices (if any) must complete first
|
|
41
|
+
- **User stories covered**: which user stories this addresses (if the source material has them)
|
|
42
|
+
|
|
43
|
+
Ask the user:
|
|
44
|
+
|
|
45
|
+
- Does the granularity feel right? (too coarse / too fine)
|
|
46
|
+
- Are the dependency relationships correct?
|
|
47
|
+
- Should any slices be merged or split further?
|
|
48
|
+
- Are the correct slices marked as HITL and AFK?
|
|
49
|
+
|
|
50
|
+
Iterate until the user approves the breakdown.
|
|
51
|
+
|
|
52
|
+
### 5. Publish the issues to the issue tracker
|
|
53
|
+
|
|
54
|
+
For each approved slice, publish a new issue to the issue tracker. Use the issue body template below. These issues are considered ready for AFK agents, so publish them with the correct triage label unless instructed otherwise.
|
|
55
|
+
|
|
56
|
+
Publish issues in dependency order (blockers first) so you can reference real issue identifiers in the "Blocked by" field.
|
|
57
|
+
|
|
58
|
+
<issue-template>
|
|
59
|
+
## Parent
|
|
60
|
+
|
|
61
|
+
A reference to the parent issue on the issue tracker (if the source was an existing issue, otherwise omit this section).
|
|
62
|
+
|
|
63
|
+
## What to build
|
|
64
|
+
|
|
65
|
+
A concise description of this vertical slice. Describe the end-to-end behavior, not layer-by-layer implementation.
|
|
66
|
+
|
|
67
|
+
Avoid specific file paths or code snippets — they go stale fast. Exception: if a prototype produced a snippet that encodes a decision more precisely than prose can (state machine, reducer, schema, type shape), inline it here and note briefly that it came from a prototype. Trim to the decision-rich parts — not a working demo, just the important bits.
|
|
68
|
+
|
|
69
|
+
## Acceptance criteria
|
|
70
|
+
|
|
71
|
+
- [ ] Criterion 1
|
|
72
|
+
- [ ] Criterion 2
|
|
73
|
+
- [ ] Criterion 3
|
|
74
|
+
|
|
75
|
+
## Blocked by
|
|
76
|
+
|
|
77
|
+
- A reference to the blocking ticket (if any)
|
|
78
|
+
|
|
79
|
+
Or "None - can start immediately" if no blockers.
|
|
80
|
+
|
|
81
|
+
</issue-template>
|
|
82
|
+
|
|
83
|
+
Do NOT close or modify any parent issue.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: to-prd
|
|
3
|
+
description: Turn the current conversation context into a PRD and publish it to the project issue tracker. Use when user wants to create a PRD from the current context.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
This skill takes the current conversation context and codebase understanding and produces a PRD. Do NOT interview the user — just synthesize what you already know.
|
|
7
|
+
|
|
8
|
+
The issue tracker and triage label vocabulary should have been provided to you — run `/setup-matt-pocock-skills` if not.
|
|
9
|
+
|
|
10
|
+
## Process
|
|
11
|
+
|
|
12
|
+
1. Explore the repo to understand the current state of the codebase, if you haven't already. Use the project's domain glossary vocabulary throughout the PRD, and respect any ADRs in the area you're touching.
|
|
13
|
+
|
|
14
|
+
2. Sketch out the seams at which you're going to test the feature. Existing seams should be preferred to new ones. Use the highest seam possible. If new seams are needed, propose them at the highest point you can.
|
|
15
|
+
|
|
16
|
+
Check with the user that these seams match their expectations.
|
|
17
|
+
|
|
18
|
+
3. Write the PRD using the template below, then publish it to the project issue tracker. Apply the `ready-for-agent` triage label - no need for additional triage.
|
|
19
|
+
|
|
20
|
+
<prd-template>
|
|
21
|
+
|
|
22
|
+
## Problem Statement
|
|
23
|
+
|
|
24
|
+
The problem that the user is facing, from the user's perspective.
|
|
25
|
+
|
|
26
|
+
## Solution
|
|
27
|
+
|
|
28
|
+
The solution to the problem, from the user's perspective.
|
|
29
|
+
|
|
30
|
+
## User Stories
|
|
31
|
+
|
|
32
|
+
A LONG, numbered list of user stories. Each user story should be in the format of:
|
|
33
|
+
|
|
34
|
+
1. As an <actor>, I want a <feature>, so that <benefit>
|
|
35
|
+
|
|
36
|
+
<user-story-example>
|
|
37
|
+
1. As a mobile bank customer, I want to see balance on my accounts, so that I can make better informed decisions about my spending
|
|
38
|
+
</user-story-example>
|
|
39
|
+
|
|
40
|
+
This list of user stories should be extremely extensive and cover all aspects of the feature.
|
|
41
|
+
|
|
42
|
+
## Implementation Decisions
|
|
43
|
+
|
|
44
|
+
A list of implementation decisions that were made. This can include:
|
|
45
|
+
|
|
46
|
+
- The modules that will be built/modified
|
|
47
|
+
- The interfaces of those modules that will be modified
|
|
48
|
+
- Technical clarifications from the developer
|
|
49
|
+
- Architectural decisions
|
|
50
|
+
- Schema changes
|
|
51
|
+
- API contracts
|
|
52
|
+
- Specific interactions
|
|
53
|
+
|
|
54
|
+
Do NOT include specific file paths or code snippets. They may end up being outdated very quickly.
|
|
55
|
+
|
|
56
|
+
Exception: if a prototype produced a snippet that encodes a decision more precisely than prose can (state machine, reducer, schema, type shape), inline it within the relevant decision and note briefly that it came from a prototype. Trim to the decision-rich parts — not a working demo, just the important bits.
|
|
57
|
+
|
|
58
|
+
## Testing Decisions
|
|
59
|
+
|
|
60
|
+
A list of testing decisions that were made. Include:
|
|
61
|
+
|
|
62
|
+
- A description of what makes a good test (only test external behavior, not implementation details)
|
|
63
|
+
- Which modules will be tested
|
|
64
|
+
- Prior art for the tests (i.e. similar types of tests in the codebase)
|
|
65
|
+
|
|
66
|
+
## Out of Scope
|
|
67
|
+
|
|
68
|
+
A description of the things that are out of scope for this PRD.
|
|
69
|
+
|
|
70
|
+
## Further Notes
|
|
71
|
+
|
|
72
|
+
Any further notes about the feature.
|
|
73
|
+
|
|
74
|
+
</prd-template>
|