diff --git a/.changeset/ask-matt-phase-boundaries.md b/.changeset/ask-matt-phase-boundaries.md deleted file mode 100644 index 3b7249e..0000000 --- a/.changeset/ask-matt-phase-boundaries.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"mattpocock-skills": patch ---- - -Give `/ask-matt` the **phase boundary** decision tree, replacing the two-bullet `Crossing sessions` section. - -A **phase** is a chunk of work inside a session — the grilling, the implementation, the QA — and the boundary between two of them is where you decide what to do with the context you've built. The router now carries all five options in order (**continue**, `/clear`, `/handoff`, **subagent**, `/compact`), with the ordered tree and its reasoning disclosed in a new `PHASE-BOUNDARIES.md`. Three fixes come with it: - -- **`/handoff` was oversold.** It read as the general bridge between context windows. It's narrow: you need it only when something has to *travel* — a new harness, a new directory, a colleague, or a side task forked mid-phase. What it buys is portability. -- **`/compact` is the default, not the first reach.** It sits at the bottom of the tree, after the four cheaper or more precise questions above it. Starting there produces a session that's confidently wrong about whatever the summary flattened. -- **Two branches were missing entirely.** **Continue** is the one to rule out first — it's the only move that keeps the conversation as a primary source rather than a summary of one — and a **subagent** handles anything scoped tightly enough to run AFK. - -Context hygiene's escape hatch now says `/compact` rather than `/handoff` (same harness, same directory, at a boundary — the handoff clause doesn't apply), and the smart zone figure is updated from ~120k to ~150k tokens. diff --git a/.changeset/ask-matt-router.md b/.changeset/ask-matt-router.md new file mode 100644 index 0000000..0b3c8b3 --- /dev/null +++ b/.changeset/ask-matt-router.md @@ -0,0 +1,20 @@ +--- +"mattpocock-skills": patch +--- + +Sharpen `/ask-matt` — the router now covers phase boundaries, the two wayfinder mistakes, and two skills it never mentioned. + +**Phase boundaries.** A **phase** is a chunk of work inside a session — the grilling, the implementation, the QA — and the boundary between two of them is where you decide what to do with the context you've built. The two-bullet `Crossing sessions` section is replaced by a decision tree carrying all five options in order (**continue**, `/clear`, `/handoff`, **subagent**, `/compact`), with the reasoning disclosed in a new `PHASE-BOUNDARIES.md`. Three fixes come with it: + +- **`/handoff` was oversold.** It read as the general bridge between context windows. It's narrow: you need it only when something has to *travel* — a new harness, a new directory, a colleague, or a side task forked mid-phase. What it buys is portability. +- **`/compact` is the default, not the first reach.** It sits at the bottom of the tree, after the four cheaper or more precise questions above it. Starting there produces a session that's confidently wrong about whatever the summary flattened. +- **Two branches were missing entirely.** **Continue** is the one to rule out first — it's the only move that keeps the conversation as a primary source rather than a summary of one — and a **subagent** handles anything scoped tightly enough to run AFK. + +Context hygiene's escape hatch now says `/compact` rather than `/handoff` (same harness, same directory, at a boundary — the handoff clause doesn't apply), and the smart zone figure is updated from ~120k to ~150k tokens. + +**Wayfinder routing.** The two mistakes people most often make with the heaviest, most cognitively demanding flow: + +- **Over-reaching for it.** It's slower and denser than a single grill, so it's flagged as the heaviest flow and reserved for the idea that genuinely won't fit one session — a well-scoped feature belongs on `/grill-with-docs`, not here. +- **Losing the way at the handoff.** When the map clears, wayfinder hands off, it doesn't build: merge onto the main flow at `/to-spec` (which collapses the map's linked decisions into a buildable plan) rather than looping the map straight into `/implement`. Straight-to-`/implement` is only for efforts that turned out genuinely small. + +**Missing routes.** `/grilling` and `/resolving-merge-conflicts` were absent from the router altogether and are now in it, and `grill-me` splits from `grill-with-docs` on whether you are in a working directory. diff --git a/.changeset/ask-matt-wayfinder-guidance.md b/.changeset/ask-matt-wayfinder-guidance.md deleted file mode 100644 index 2a6b124..0000000 --- a/.changeset/ask-matt-wayfinder-guidance.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"mattpocock-skills": patch ---- - -Make `/ask-matt` clued-up about `/wayfinder` — the heaviest, most cognitively demanding flow. - -The router now sharpens the two routing mistakes people most often make with wayfinder: - -- **Over-reaching for it.** It's slower and denser than a single grill, so it's flagged as the heaviest flow and reserved for the idea that genuinely won't fit one session — a well-scoped feature belongs on `/grill-with-docs`, not here. -- **Losing the way at the handoff.** When the map clears, wayfinder hands off, it doesn't build: merge onto the main flow at `/to-spec` (which collapses the map's linked decisions into a buildable plan) rather than looping the map straight into `/implement`. Straight-to-`/implement` is only for efforts that turned out genuinely small. diff --git a/.changeset/docs-drop-quickstart.md b/.changeset/docs-drop-quickstart.md deleted file mode 100644 index cbb1404..0000000 --- a/.changeset/docs-drop-quickstart.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"mattpocock-skills": patch ---- - -Drop the hand-written Quickstart block from all 25 docs pages. - -aihero.dev already renders an install widget above every skill page — a copy button, the single-skill command, the whole-set command, and the update line. Each page then wrote the same two commands out again immediately below it. The reader saw the install command twice. - -The two copies had also drifted apart. The widget renders the current `npx skills@latest …` wording; the hand-written blocks still carried the older bare `npx skills …`, so most pages showed the correct command and a stale one, one after the other. - -Deleting the block removes those stale copies and leaves the site's own. `.agents/writing-docs.md` now states the rule directly — install wording is a property of the site, not of the page — and its template no longer carries a Quickstart to copy. diff --git a/.changeset/docs-grill-me-pass.md b/.changeset/docs-grill-me-pass.md deleted file mode 100644 index 57def85..0000000 --- a/.changeset/docs-grill-me-pass.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -"mattpocock-skills": patch ---- - -Rewrite the `grill-me` docs page around what people actually get wrong. - -The old page explained the mechanism — rounds, the frontier, the decision tree — and stopped there. Every recurring question from the last few months went unanswered on it: which of the three grilling skills to reach for, how many questions is normal, what to do when a question can't be answered by talking, and whether to start a fresh session before writing the spec. - -The rewrite keeps the mechanism short and spends the page on the judgement calls instead: - -- **Sibling routing** is now a three-way list keyed on what you have in front of you — no codebase, a codebase, or too big for one session — rather than a paragraph. -- **"It's a conversation, not an interview"** names passivity as the main failure mode. A session where you answer "agreed" forty times produces a plan you didn't write and can't defend. -- **"Grillable and ungrillable"** gives readers the move for a question that talking cannot settle: stop, prototype, come back. This is where long sessions come from. -- **A "Common questions" section** answers the six highest-volume ones directly, including how to restore one-question-at-a-time and why you should not clear context before `to-spec`. -- **"It's working if"** added, led by the sharpest signal: if you never disagreed, you didn't need the session. - -Also drops the "plan mode" ambiguity by saying plainly to leave it off. diff --git a/.changeset/docs-page-four-section-spine.md b/.changeset/docs-page-four-section-spine.md deleted file mode 100644 index d300772..0000000 --- a/.changeset/docs-page-four-section-spine.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"mattpocock-skills": patch ---- - -Make `Common questions` and `It's working if` part of the docs-page standard, and say where the questions come from. - -An audit of all 25 docs pages found the two sections that carry the most weight are the two the standard treated as optional. Only `grill-me` has a `Common questions` section; `writing-for-agents` gains one in #758. Twelve pages have no `It's working if` at all, and several that do use it for compliance checks on the skill's internals rather than for signals the reader can see. - -`.agents/writing-docs.md` now: - -- **Names the four-section spine** — `What it does`, `When to reach for it`, `Common questions`, `It's working if`. A page missing the last two is unfinished, not finished-and-short. The template's order is now the page's order. -- **Gates `Common questions` on evidence.** Every question has to be one someone asked, and three observed questions beat eight plausible ones. The hunt runs over three sources: the personal wiki at `~/repos/matt/personal-wiki` where it exists on the machine (its `wiki/audience/` area is organised around what the audience is confused by, with `sources:` linkbacks to the original threads), this repo's issues, and `CHANGELOG.md` for anything renamed or moved. -- **Raises the bar on `It's working if`** — each bullet must be checkable without opening `SKILL.md`. - -`CLAUDE.md` names the four sections in the pointer, so the spine is visible without reading `writing-docs.md` first. diff --git a/.changeset/docs-rewrite-to-standard.md b/.changeset/docs-rewrite-to-standard.md deleted file mode 100644 index 0523b6a..0000000 --- a/.changeset/docs-rewrite-to-standard.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"mattpocock-skills": patch ---- - -Rewrite every human-facing docs page to the four-section standard. Each page now states the skill's defining constraint, says when to reach for it and when to reach for something else, answers the questions people actually ask, and names what you see when it is working. The questions were found rather than invented — in the issue tracker, in the community threads, and in the changesets — so a well-discussed skill like `wayfinder` carries ten and a quiet one like `resolving-merge-conflicts` carries three. - -Writing them surfaced claims elsewhere that were no longer true. `tdd` now points at `/codebase-design` for interface vocabulary, which the v1.0 changelog said had already happened but which was never wired up. `ask-matt` gains `/grilling` and `/resolving-merge-conflicts`, both previously missing from the router altogether, and splits `grill-me` from `grill-with-docs` on whether you are in a working directory. The READMEs stop calling wayfinder's map one of investigation tickets, stop dropping the first phase from the `diagnosing-bugs` loop, and stop promising that `improve-codebase-architecture` will rescue a ball of mud when what it does is survey one. diff --git a/.changeset/docs-writing-for-agents-pass.md b/.changeset/docs-writing-for-agents-pass.md deleted file mode 100644 index d598a7a..0000000 --- a/.changeset/docs-writing-for-agents-pass.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"mattpocock-skills": patch ---- - -Rewrite the `writing-for-agents` docs page around what people actually get wrong. - -The old page was a table of contents for the skill: the two loads, then a bullet per lever. It answered none of the questions the rename and the AMA threads have been generating for months — where `writing-great-skills` went, whether the agent or the human is doing the writing, why you shouldn't just ask Claude to write the skill for you, and how you know when a document is done. - -The rewrite keeps the levers to one compact list and spends the page on the judgement calls instead: - -- **The defining constraint is now stated up front** — the default move is deletion, not explanation, because the reader has already read everything. This is also the answer to "why not let the model write it", so it leads. -- **The scope is stated as a test**, not a list: does an agent read this document and act? Skills, `AGENTS.md`, specs, tickets and runtime prompts all pass it. -- **A "Common questions" section** answers the nine highest-volume ones directly, including the rename, the "streamline" failure where an agent trims for length and cuts behaviour, whether to rewrite documents per model, the skill that only works on the one task it was built from, and the leading-word question from non-native English speakers. -- **"It's working if"** added, led by the sharpest signal: the document gets shorter as it gets better, and duplication is the most reliable sign it was never tested. -- **`Where it fits`** says plainly that it has no chain neighbour: it sits underneath the set rather than beside one skill, and the documents the other skills leave behind are the text it governs. diff --git a/.changeset/graduate-wizard.md b/.changeset/graduate-wizard.md index c51bd3b..111203f 100644 --- a/.changeset/graduate-wizard.md +++ b/.changeset/graduate-wizard.md @@ -2,10 +2,12 @@ "mattpocock-skills": minor --- -Graduate **`wizard`** out of `in-progress/` into the **Engineering** bucket, so it ships in the plugin. It generates an interactive bash script that walks a human through a manual procedure — third-party setup, a one-off migration, an A→B state transition — opening each URL, saying what to click, capturing the values, and writing them into `.env` files and GitHub Actions secrets. +Graduate **`wizard`** out of `in-progress/` into the **Engineering** bucket, so it ships in the plugin — and make it model-invoked. It generates an interactive bash script that walks a human through a manual procedure — third-party setup, a one-off migration, an A→B state transition — opening each URL, saying what to click, capturing the values, and writing them into `.env` files and GitHub Actions secrets. The delightful UX is pre-solved by the bundled `template.sh` (progress with time-remaining, confirmation gates, cross-platform URL opening including WSL, hidden secret entry, idempotent `.env` upserts, `gh secret`/`gh variable` writes with graceful degradation, closing skip summary). Everything above the `STAGES` marker is a fixed library that's never hand-edited — the skill's job is only to scope the procedure and author its **stages**. Engineering rather than Productivity: it reads `.env*`, `docker-compose*`, framework config and every `secrets.*`/`vars.*` reference in `.github/workflows/` to scope itself, writes CI secrets, and verifies its output with `bash -n` and `shellcheck`. -Now wired as a promoted skill — plugin entry, top-level + Engineering READMEs under **Model-invoked**, a docs page at `docs/engineering/wizard.md`, and a Standalone route in `ask-matt` for the steps only a human can take. +Because it is model-invoked, the agent can reach for it the moment it hits a step only a human can perform, instead of dumping numbered instructions into the chat and hoping you follow them. Typing `/wizard` works exactly as before — model-invocation only ever *adds* the agent's reach. The description is written as the pointer that decides when it fires: what it produces, four trigger branches (provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, a one-off migration or cutover), and an explicit non-trigger — don't invoke it for steps the agent can perform itself. Work an agent can do, an agent should do; the wizard is for the clicks, approvals and dashboard trips you would not hand to one. The stage-list confirmation before a line is written now doubles as the proposal when the agent fires it mid-build. + +Now wired as a promoted skill — plugin entry, top-level + Engineering READMEs under **Model-invoked**, a docs page at `docs/engineering/wizard.md`, and a Standalone route in `ask-matt` for the steps only a human can take. Model-invocation also puts it out of the reach of [#693](https://github.com/mattpocock/skills/issues/693), which drops user-invoked skills from the listing on Claude's desktop and web surfaces. diff --git a/.changeset/grilling-question-format.md b/.changeset/grilling-question-format.md deleted file mode 100644 index 6101ce9..0000000 --- a/.changeset/grilling-question-format.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"mattpocock-skills": patch ---- - -Pin the question format in **`grilling`**. Every question in a round is now emitted in one fixed shape — `❓ **Q1** - **