119 lines
7.3 KiB
Markdown
119 lines
7.3 KiB
Markdown
---
|
|
name: setup-matt-pocock-skills
|
|
description: Configure or update a repository's issue tracker, triage labels, and domain-documentation pointers for the engineering skills.
|
|
---
|
|
|
|
# Setup Matt Pocock's Skills
|
|
|
|
Scaffold the per-repo configuration that the engineering skills assume:
|
|
|
|
- **Issue tracker** — where this repository actually tracks work
|
|
- **Triage labels** — the strings used for the five canonical triage roles
|
|
- **Domain docs** — where `CONTEXT.md` and ADRs live, and the consumer rules for reading them
|
|
|
|
Inspect existing configuration, preserve settled choices, and make only the requested setup changes. Ask about unresolved choices that matter, not every section of a working setup.
|
|
|
|
## Process
|
|
|
|
### 1. Explore
|
|
|
|
Look at the current repo to understand its starting state. Read whatever exists; don't assume:
|
|
|
|
- `git remote -v` and existing tracker documentation — which project and tracker are selected?
|
|
- `AGENTS.md` and `CLAUDE.md` at the repo root — does either exist? Is there already an `## Agent skills` section in either?
|
|
- `CONTEXT.md` and `CONTEXT-MAP.md` at the repo root
|
|
- `docs/adr/` and any `src/*/docs/adr/` directories
|
|
- `docs/agents/` — does this skill's prior output already exist?
|
|
- `.scratch/` — sign that a local-markdown issue tracker convention is already in use
|
|
- 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.
|
|
- 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.
|
|
|
|
### 2. Present findings and ask
|
|
|
|
Summarise what is present and what needs changing. Skip questions already answered by the request or existing configuration; use the sections below only for unresolved setup choices.
|
|
|
|
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).
|
|
|
|
**Section A — Issue tracker.**
|
|
|
|
> 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.
|
|
|
|
Preserve the configured tracker. For a new setup, infer a likely tracker from the remote and the user's request; ask when genuinely ambiguous. Available templates include:
|
|
|
|
- **GitHub** — issues live in the repo's GitHub Issues (uses the `gh` CLI)
|
|
- **GitLab** — issues live in the repo's GitLab Issues (uses the [`glab`](https://gitlab.com/gitlab-org/cli) CLI)
|
|
- **Gitea** — issues live in the repo's Gitea Issues (uses `tea-cli`, or `tea` where that is the installed binary; inspect its help for supported commands)
|
|
- **Local markdown** — issues live as files under `.scratch/<feature>/` in this repo (good for solo projects or repos without a remote)
|
|
- **Other** (Jira, Linear, etc.) — ask the user to describe the workflow in one paragraph; the skill will record it as freeform prose
|
|
|
|
Record the choice in `docs/agents/issue-tracker.md`. The GitHub, GitLab, and Gitea 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.
|
|
|
|
**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.
|
|
|
|
If installed and no label vocabulary is already selected, ask only when the default cannot be reasonably inferred:
|
|
|
|
> Do you want to keep the default triage labels? (recommended: **yes**)
|
|
|
|
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.
|
|
|
|
**Section C — Domain docs.** Preserve the existing layout. For a new setup, default to **single-context** — one `CONTEXT.md` + `docs/adr/` at the repo root.
|
|
|
|
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.
|
|
|
|
### 3. Prepare the scoped edits
|
|
|
|
Update only requested or missing configuration among:
|
|
|
|
- The `## Agent skills` block to add to whichever of `CLAUDE.md` / `AGENTS.md` is being edited (see step 4 for selection rules)
|
|
- 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)
|
|
|
|
Show a draft first when requested or when a consequential choice remains unsettled; otherwise proceed with the known choices.
|
|
|
|
### 4. Write
|
|
|
|
**Pick the file to edit:**
|
|
|
|
- Honor the user-selected instruction file and agent product first.
|
|
- Otherwise edit the existing applicable file; if only `CLAUDE.md` exists, edit it.
|
|
- Else if `AGENTS.md` exists, edit it.
|
|
- If neither exists, ask the user which one to create — don't pick for them.
|
|
|
|
Never create `AGENTS.md` when `CLAUDE.md` already exists (or vice versa) — always edit the one that's already there.
|
|
|
|
If an `## Agent skills` block already exists in the chosen file, update its contents in-place rather than appending a duplicate. Don't overwrite user edits to the surrounding sections.
|
|
|
|
The block:
|
|
|
|
```markdown
|
|
## Agent skills
|
|
|
|
### Issue tracker
|
|
|
|
[one-line summary of where issues are tracked]. See `docs/agents/issue-tracker.md`.
|
|
|
|
### Triage labels
|
|
|
|
[one-line summary of the label vocabulary]. See `docs/agents/triage-labels.md`.
|
|
|
|
### Domain docs
|
|
|
|
[one-line summary of layout — "single-context" or "multi-context"]. See `docs/agents/domain.md`.
|
|
```
|
|
|
|
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.
|
|
|
|
Then write the docs files using the seed templates in this skill folder as a starting point:
|
|
|
|
- [issue-tracker-github.md](./issue-tracker-github.md) — GitHub issue tracker
|
|
- [issue-tracker-gitlab.md](./issue-tracker-gitlab.md) — GitLab issue tracker
|
|
- [issue-tracker-gitea.md](./issue-tracker-gitea.md) — Gitea issue tracker
|
|
- [issue-tracker-local.md](./issue-tracker-local.md) — local-markdown issue tracker
|
|
- [triage-labels.md](./triage-labels.md) — label mapping (only if `triage` is installed)
|
|
- [domain.md](./domain.md) — domain doc consumer rules + layout
|
|
|
|
For "other" issue trackers, write `docs/agents/issue-tracker.md` from scratch using the user's description.
|
|
|
|
### 5. Done
|
|
|
|
Tell the user the setup is complete and which engineering skills will now read from these files. Mention they can edit `docs/agents/*.md` directly later — re-running this skill is only necessary if they want to switch issue trackers or restart from scratch.
|