$npx -y skills add tt-a1i/matt-skills-with-to-goal --skill setup-matt-pocock-skillsConfigure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
| 1 | # Setup Matt Pocock's Skills |
| 2 | |
| 3 | Scaffold the per-repo configuration that the engineering skills assume: |
| 4 | |
| 5 | - **Issue tracker** — where issues live (GitHub by default; local markdown is also supported out of the box) |
| 6 | - **Triage labels** — the strings used for the five canonical triage roles |
| 7 | - **Domain docs** — where `CONTEXT.md` and ADRs live, and the consumer rules for reading them |
| 8 | |
| 9 | This is a prompt-driven skill, not a deterministic script. Explore, present what you found, confirm with the user, then write. |
| 10 | |
| 11 | ## Process |
| 12 | |
| 13 | ### 1. Explore |
| 14 | |
| 15 | Look at the current repo to understand its starting state. Read whatever exists; don't assume: |
| 16 | |
| 17 | - `git remote -v` and `.git/config` — is this a GitHub repo? Which one? |
| 18 | - `AGENTS.md` and `CLAUDE.md` at the repo root — does either exist? Is there already an `## Agent skills` section in either? |
| 19 | - `CONTEXT.md` and `CONTEXT-MAP.md` at the repo root |
| 20 | - `docs/adr/` and any `src/*/docs/adr/` directories |
| 21 | - `docs/agents/` — does this skill's prior output already exist? |
| 22 | - `.scratch/` — sign that a local-markdown issue tracker convention is already in use |
| 23 | - 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. |
| 24 | - 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. |
| 25 | |
| 26 | ### 2. Present findings and ask |
| 27 | |
| 28 | Summarise what's present and what's missing. Then take the sections in order — one section, one answer, then the next. |
| 29 | |
| 30 | 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). |
| 31 | |
| 32 | **Section A — Issue tracker.** |
| 33 | |
| 34 | > Explainer: The "issue tracker" is where issues live for this repo. Skills like `to-tickets`, `triage`, `to-spec`, and `qa` read from and write to it — they need to know whether to call `gh issue create`, write a markdown file under `.scratch/`, or follow some other workflow you describe. Pick the place you actually track work for this repo. |
| 35 | |
| 36 | Default posture: these skills were designed for GitHub. If a `git remote` points at GitHub, propose that. If a `git remote` points at GitLab (`gitlab.com` or a self-hosted host), propose GitLab. Otherwise (or if the user prefers), offer: |
| 37 | |
| 38 | - **GitHub** — issues live in the repo's GitHub Issues (uses the `gh` CLI) |
| 39 | - **GitLab** — issues live in the repo's GitLab Issues (uses the [`glab`](https://gitlab.com/gitlab-org/cli) CLI) |
| 40 | - **Local markdown** — issues live as files under `.scratch/<feature>/` in this repo (good for solo projects or repos without a remote) |
| 41 | - **Other** (Jira, Linear, etc.) — ask the user to describe the workflow in one paragraph; the skill will record it as freeform prose |
| 42 | |
| 43 | 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. |
| 44 | |
| 45 | **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. |
| 46 | |
| 47 | If it is installed, ask exactly one question: |
| 48 | |
| 49 | > Do you want to keep the default triage labels? (recommended: **yes**) |
| 50 | |
| 51 | 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. |
| 52 | |
| 53 | **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. |
| 54 | |
| 55 | 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. |
| 56 | |
| 57 | ### 3. Confirm and edit |
| 58 | |
| 59 | Show the user a draft of: |
| 60 | |
| 61 | - The `## Agent skills` block to add to whichever of `CLAUDE.md` / `AGENTS.md` is being edited (see step 4 for selection rules) |
| 62 | - 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) |
| 63 | |
| 64 | Let them edit before writing. |
| 65 | |
| 66 | ### 4. Write |
| 67 | |
| 68 | **Pick the file to edit:* |