You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make `/setup-matt-pocock-skills` friendlier and align the local-markdown tracker with the current spec.
6
+
7
+
-**Triage labels** are now asked about only when the `triage` skill is installed, and then as a single recommended-yes question ("keep the default triage labels?") instead of an override interrogation. When `triage` isn't installed, the section — and `docs/agents/triage-labels.md` — are skipped.
8
+
-**External PRs as a request surface** is no longer a setup question. The GitHub/GitLab templates still carry the flag, defaulted off; a user can flip it in `docs/agents/issue-tracker.md` later.
9
+
-**Domain docs** default to single-context without asking; multi-context is only offered when the repo shows monorepo signals.
10
+
-**Local-markdown tickets** are now one file per ticket under `.scratch/<feature>/issues/<NN>-<slug>.md` — never a single combined `tickets.md`. `/to-tickets` and the local issue-tracker template now agree, and the spec file is `spec.md` (not `PRD.md`) to match `/to-spec`.
11
+
12
+
Docs pages for `setup-matt-pocock-skills` and `to-tickets` re-synced.
Copy file name to clipboardExpand all lines: docs/engineering/setup-matt-pocock-skills.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,17 +24,17 @@ Reach for it **once per repo, before the first use of any other engineering skil
24
24
25
25
## The three decisions
26
26
27
-
It walks you through three choices, one at a time, each with a plain-language explainer (it assumes you don't already know the terms):
27
+
It leads each with a recommended answer you can accept in a word, and skips whatever it can already infer — so most runs are a couple of quick confirmations:
28
28
29
-
-**Issue tracker** — where work is tracked, so `triage`/`to-spec`/`to-tickets` know whether to call `gh`, `glab`, write markdown under `.scratch/`, or follow a workflow you describe. GitHub, GitLab, local markdown, or other.
30
-
-**Triage labels** — the strings behind the five canonical roles (`needs-triage`, `needs-info`, `ready-for-agent`, `ready-for-human`, `wontfix`), mapped to labels you've actually configured so `triage` applies real ones instead of creating duplicates.
31
-
-**Domain docs** — whether the repo has one `CONTEXT.md`or a multi-context map, so skills that read domain language look in the right place.
29
+
-**Issue tracker** — where work is tracked, so `triage`/`to-spec`/`to-tickets` know whether to call `gh`, `glab`, write markdown under `.scratch/`, or follow a workflow you describe. GitHub, GitLab, local markdown, or other. (It proposes the one that matches your `git remote`.)
30
+
-**Triage labels** — asked only if the `triage` skill is installed, and then just: keep the default labels (`needs-triage`, `needs-info`, `ready-for-agent`, `ready-for-human`, `wontfix`)? Say no only if your tracker already uses other names, so `triage` applies real ones instead of creating duplicates.
31
+
-**Domain docs** — assumed single-context (one `CONTEXT.md`+ `docs/adr/` at the root), which fits almost every repo; it only raises a multi-context map when it spots monorepo signals.
32
32
33
-
The output is three files —`docs/agents/issue-tracker.md`, `docs/agents/triage-labels.md`, `docs/agents/domain.md` — plus an `## Agent skills` block pointing to them in whichever of `CLAUDE.md` / `AGENTS.md` the repo already uses. Those files are the shared substrate the rest of the toolkit stands on.
33
+
The output is a set of files under`docs/agents/` — `issue-tracker.md`, `domain.md`, and `triage-labels.md` when `triage` is installed — plus an `## Agent skills` block pointing to them in whichever of `CLAUDE.md` / `AGENTS.md` the repo already uses. Those files are the shared substrate the rest of the toolkit stands on.
34
34
35
35
## It's working if
36
36
37
-
-Three files land under `docs/agents/`, and an `## Agent skills` section appears in your `CLAUDE.md` or `AGENTS.md`.
37
+
-`issue-tracker.md` and `domain.md`land under `docs/agents/` (plus `triage-labels.md` when `triage` is installed), and an `## Agent skills` section appears in your `CLAUDE.md` or `AGENTS.md`.
38
38
- The tracker it proposes matches your real `git remote`, and the labels match strings that already exist in your repo.
39
39
- Afterwards, `triage` and `to-tickets` act on the right place with the right labels instead of asking or guessing.
Copy file name to clipboardExpand all lines: docs/engineering/to-tickets.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,7 @@ Reach for it once you have an agreed plan or a written spec and you want it spli
30
30
31
31
The blocking edges are the whole point. They make one set of tickets read two ways, depending on the tracker:
32
32
33
-
-**Local files** → a single `tickets.md` in the repo root, the edges written as text. You work it top-to-bottom, by hand, staying in the loop.
33
+
-**Local files** → one file per ticket under `.scratch/<feature>/issues/`, numbered blockers-first, the edges written as text. You work them top-to-bottom, by hand, staying in the loop.
34
34
-**A real tracker (GitHub, Linear)** → one issue per ticket, the edges as native blocking links (or sub-issues). Any ticket whose blockers are all done is on the **frontier** and can be grabbed — so several agents can run at once.
35
35
36
36
The edges live in the ticket regardless of medium; the medium only decides whether anything acts on them in parallel. `to-tickets` produces the artifact — how you run it (sequential by hand, or a parallel fleet) is up to you.
Copy file name to clipboardExpand all lines: skills/engineering/ask-matt/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ The route most work travels. You have an idea and want it built.
20
20
-**`/prototype`** to answer the question with throwaway code,
21
21
-**`/handoff`** back what you learned, and reference it from the original idea thread.
22
22
3.**Branch — is this a multi-session build?**
23
-
-**Yes** → **`/to-spec`** (turn the thread into a spec), then **`/to-tickets`** to split it into tracer-bullet tickets, each declaring its **blocking edges**. On a local tracker that's an ordered `tickets.md` you work by hand; on a real tracker the edges become native blocking links, so any ticket whose blockers are done can be grabbed — kick off **`/implement`** per ticket, **clearing context between each one**.
23
+
-**Yes** → **`/to-spec`** (turn the thread into a spec), then **`/to-tickets`** to split it into tracer-bullet tickets, each declaring its **blocking edges**. On a local tracker that's one file per ticket under `.scratch/<feature>/issues/`, worked blockers-first by hand; on a real tracker the edges become native blocking links, so any ticket whose blockers are done can be grabbed — kick off **`/implement`** per ticket, **clearing context between each one**.
24
24
-**No** → **`/implement`** right here, in the same context window.
25
25
26
26
Either way, **`/implement`** builds each issue by driving **`/tdd`** internally — one red-green slice at a time — then closes out by running **`/code-review`**, a two-axis review (Standards + Spec) of the diff, before committing. Reach for **`/tdd`** on its own when you just want to build a concrete behaviour test-first without a full spec, and **`/code-review`** on its own whenever you want to review a branch or PR against a fixed point.
Copy file name to clipboardExpand all lines: skills/engineering/setup-matt-pocock-skills/SKILL.md
+17-28Lines changed: 17 additions & 28 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,12 +26,14 @@ Look at the current repo to understand its starting state. Read whatever exists;
26
26
-`docs/adr/` and any `src/*/docs/adr/` directories
27
27
-`docs/agents/` — does this skill's prior output already exist?
28
28
-`.scratch/` — sign that a local-markdown issue tracker convention is already in use
29
+
- Is the `triage` skill installed? (a `triage` skill folder alongside this one, or `triage` in your available skills.) This decides whether Section B runs at all.
30
+
- Monorepo signals — a `pnpm-workspace.yaml`, a `workspaces` field in `package.json`, or a populated `packages/*` with its own `src/`. Present only in a genuinely large multi-package repo; their absence means single-context, which is almost every repo.
29
31
30
32
### 2. Present findings and ask
31
33
32
-
Summarise what's present and what's missing. Then walk the user through the three decisions **one at a time** — present a section, get the user's answer, then move to the next. Don't dump all three at once.
34
+
Summarise what's present and what's missing. Then take the sections in order — one section, one answer, then the next.
33
35
34
-
Assume the user does not know what these terms mean. Each section starts with a short explainer (what it is, why these skills need it, what changes if they pick differently). Then show the choices and the default.
36
+
Lead each section with the recommended answer so the user can accept it in a word. Give a one-line explainer only when the choice genuinely branches; skip the section entirely when exploration already settled it (Section B when `triage` isn't installed, Section C when there's no monorepo).
35
37
36
38
**Section A — Issue tracker.**
37
39
@@ -44,41 +46,26 @@ Default posture: these skills were designed for GitHub. If a `git remote` points
44
46
-**Local markdown** — issues live as files under `.scratch/<feature>/` in this repo (good for solo projects or repos without a remote)
45
47
-**Other** (Jira, Linear, etc.) — ask the user to describe the workflow in one paragraph; the skill will record it as freeform prose
46
48
47
-
If — and only if — the user picked **GitHub** or **GitLab**, ask one follow-up:
49
+
Record the choice in `docs/agents/issue-tracker.md`. The GitHub and GitLab templates carry a "PRs as a request surface" flag, defaulted **off** — leave it off and don't raise it; a user who wants external PRs in the triage queue can flip the flag in the file later.
48
50
49
-
> Explainer: Open-source repos often receive feature requests as pull requests, not just issues — a PR is an issue with attached code. If you turn this on, `/triage` pulls *external* PRs into the same queue and runs them through the same labels and states as issues (collaborators' in-flight PRs are left alone). Leave it off if PRs aren't a request surface for you.
51
+
**Section B — Triage label vocabulary.** Skip this section entirely if the `triage` skill isn't installed (exploration told you) — an uninstalled skill needs no labels.
50
52
51
-
-**PRs as a request surface** — yes / no (default: no). Record the answer in `docs/agents/issue-tracker.md`. For local-markdown and other trackers, skip this question — there are no PRs.
53
+
If it is installed, ask exactly one question:
52
54
53
-
**Section B — Triage label vocabulary.**
55
+
> Do you want to keep the default triage labels? (recommended: **yes**)
54
56
55
-
> Explainer: When the `triage` skill processes an incoming issue, it moves it through a state machine — needs evaluation, waiting on reporter, readyfor an AFK agent to pick up, readyfor a human, or won't fix. To do that, it needs to apply labels (or the equivalent in your issue tracker) that match strings *you've actually configured*. If your repo already uses different label names (e.g. `bug:triage`instead of `needs-triage`), map them here so the skill applies the right ones instead of creating duplicates.
57
+
The defaults are the five canonical roles, each label string equal to its name: `needs-triage`, `needs-info`, `ready-for-agent`, `ready-for-human`, `wontfix`. On **yes**, write them as-is. Only if the user says no — usually because their tracker already uses other names (e.g. `bug:triage`for `needs-triage`) — collect the overrides so `triage`applies existing labels instead of creating duplicates.
56
58
57
-
The five canonical roles:
59
+
**Section C — Domain docs.** Default to **single-context** — one `CONTEXT.md` + `docs/adr/` at the repo root. This fits almost every repo; write it without asking.
58
60
59
-
-`needs-triage` — maintainer needs to evaluate
60
-
-`needs-info` — waiting on reporter
61
-
-`ready-for-agent` — fully specified, AFK-ready (an agent can pick it up with no human context)
62
-
-`ready-for-human` — needs human implementation
63
-
-`wontfix` — will not be actioned
64
-
65
-
Default: each role's string equals its name. Ask the user if they want to override any. If their issue tracker has no existing labels, the defaults are fine.
66
-
67
-
**Section C — Domain docs.**
68
-
69
-
> Explainer: Some skills (`improve-codebase-architecture`, `diagnosing-bugs`, `tdd`) read a `CONTEXT.md` file to learn the project's domain language, and `docs/adr/` for past architectural decisions. They need to know whether the repo has one global context or multiple (e.g. a monorepo with separate frontend/backend contexts) so they look in the right place.
70
-
71
-
Confirm the layout:
72
-
73
-
-**Single-context** — one `CONTEXT.md` + `docs/adr/` at the repo root. Most repos are this.
74
-
-**Multi-context** — `CONTEXT-MAP.md` at the root pointing to per-context `CONTEXT.md` files (typically a monorepo).
61
+
Offer **multi-context** — a root `CONTEXT-MAP.md` pointing to per-context `CONTEXT.md` files — only when exploration found monorepo signals. Then confirm which layout they want.
75
62
76
63
### 3. Confirm and edit
77
64
78
65
Show the user a draft of:
79
66
80
67
- The `## Agent skills` block to add to whichever of `CLAUDE.md` / `AGENTS.md` is being edited (see step 4 for selection rules)
81
-
- The contents of `docs/agents/issue-tracker.md`, `docs/agents/triage-labels.md`, `docs/agents/domain.md`
68
+
- The contents of `docs/agents/issue-tracker.md`, `docs/agents/domain.md`, and `docs/agents/triage-labels.md` (the last only when `triage` is installed)
82
69
83
70
Let them edit before writing.
84
71
@@ -101,7 +88,7 @@ The block:
101
88
102
89
### Issue tracker
103
90
104
-
[one-line summary of where issues are tracked, plus whether external PRs are a triage surface]. See `docs/agents/issue-tracker.md`.
91
+
[one-line summary of where issues are tracked]. See `docs/agents/issue-tracker.md`.
105
92
106
93
### Triage labels
107
94
@@ -112,12 +99,14 @@ The block:
112
99
[one-line summary of layout — "single-context" or "multi-context"]. See `docs/agents/domain.md`.
113
100
```
114
101
115
-
Then write the three docs files using the seed templates in this skill folder as a starting point:
102
+
Include the `### Triage labels` sub-block, and write `docs/agents/triage-labels.md`, only when `triage` is installed and Section B ran. When it isn't, both are omitted.
103
+
104
+
Then write the docs files using the seed templates in this skill folder as a starting point:
Copy file name to clipboardExpand all lines: skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,12 @@
1
1
# Issue tracker: Local Markdown
2
2
3
-
Issues and PRDs for this repo live as markdown files in `.scratch/`.
3
+
Issues and specs (you may know a spec as a PRD) for this repo live as markdown files in `.scratch/`.
4
4
5
5
## Conventions
6
6
7
7
- One feature per directory: `.scratch/<feature-slug>/`
8
-
- The PRD is `.scratch/<feature-slug>/PRD.md`
9
-
- Implementation issues are `.scratch/<feature-slug>/issues/<NN>-<slug>.md`, numbered from `01`
8
+
- The spec is `.scratch/<feature-slug>/spec.md`
9
+
- Implementation issues are one file per ticket at `.scratch/<feature-slug>/issues/<NN>-<slug>.md`, numbered from `01` — never a single combined tickets file
10
10
- Triage state is recorded as a `Status:` line near the top of each issue file (see `triage-labels.md` for the role strings)
11
11
- Comments and conversation history append to the bottom of the file under a `## Comments` heading
Copy file name to clipboardExpand all lines: skills/engineering/to-tickets/SKILL.md
+10-16Lines changed: 10 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
name: to-tickets
3
-
description: Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker — edges as text in a local file, or native blocking links on a real tracker.
3
+
description: Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker — edges as text in one file per ticket locally, or native blocking links on a real tracker.
4
4
disable-model-invocation: true
5
5
---
6
6
@@ -59,33 +59,27 @@ Iterate until the user approves the breakdown.
59
59
60
60
Publish the approved tickets. **How** depends on the tracker `/setup-matt-pocock-skills` configured — the tickets are the same either way, only the shape of the blocking edges changes:
61
61
62
-
-**Local files** → write one `tickets.md` in the repo root, all tickets in dependency order (blockers first), each with its "Blocked by" listing the titles it depends on. Use the file template below.
62
+
-**Local files** → write one file per ticket under `.scratch/<feature-slug>/issues/<NN>-<slug>.md`, numbered from `01`in dependency order (blockers first). Each file's "Blocked by" lists the numbers/titles it depends on. Use the per-ticket file template below — one ticket per file, never a single combined file.
63
63
-**A real issue tracker (GitHub, Linear, …)** → publish one issue per ticket in dependency order (blockers first) so each ticket's blocking edges can reference real identifiers. Use the platform's native blocking / sub-issue relationship where it has one; otherwise set each ticket's "Blocked by" to the blocking issues. Apply the `ready-for-agent` triage label unless instructed otherwise — the tickets are agent-grabbable by construction.
64
64
65
-
Do NOT close or modify any parent issue.
66
-
67
-
<tickets-file-template>
65
+
Work the **frontier**: any ticket whose blockers are all done. For a purely linear chain that means top to bottom.
68
66
69
-
# Tickets: <shortnameofthework>
67
+
Do NOT close or modify any parent issue.
70
68
71
-
A one-line summary of what these tickets build. Reference the source spec if there is one.
69
+
<local-ticket-template>
72
70
73
-
Work the **frontier**: any ticket whose blockers are all done. For a purely linear chain that means top to bottom.
74
-
75
-
## <Tickettitle>
71
+
# <NN> — <Tickettitle>
76
72
77
73
**What to build:** the end-to-end behaviour this ticket makes work, from the user's perspective — not a layer-by-layer implementation list.
78
74
79
-
**Blocked by:** the titles of the tickets that gate this one, or "None — can start immediately".
75
+
**Blocked by:** the numbers/titles of the tickets that gate this one, or "None — can start immediately".
0 commit comments