Skip to content

v1.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Jul 13:20
d574778

Minor Changes

  • #406 930a450 Thanks @mattpocock! - Bring the ask-matt router up to date with the full skill set. It now maps five skills it was missing: tdd (woven into the main flow as the red-green engine implement drives), diagnosing-bugs (a new "Something's broken" on-ramp — there was previously no route for a bug), domain-modeling and codebase-design (a new "Vocabulary underneath" section), and grilling (the shared interview primitive). prototype is fleshed out as a standalone and the description broadens from "user-invoked skills" to "the skills". A maintenance rule is added to CLAUDE.md so any future skill add/rename/remove or flow change triggers an ask-matt re-check, beside the existing docs-page re-sync rule.

  • #464 639df6e Thanks @mattpocock! - Promote and harden code-review. The in-progress review skill is renamed to code-review and moved from in-progress/ into engineering/: it now ships in the plugin, is listed in the top-level and Engineering READMEs (Model-invoked), and has a docs page at docs/engineering/code-review.md. The /implement skill and docs point at /code-review.

    It also gains an always-on Fowler smell baseline on its Standards axis — a curated ~12 high-signal "Bad Smells in Code" (Mysterious Name, Duplicated Code, Feature Envy, Data Clumps, Primitive Obsession, Repeated Switches, Shotgun Surgery, Divergent Change, Speculative Generality, Message Chains, Middle Man, Refused Bequest) inlined into SKILL.md as a fixed baseline alongside whatever the repo documents, not a new third axis. Two binding rules keep it safe: a documented repo standard overrides the baseline, and every smell is reported as a judgement call, never a hard violation.

  • #464 639df6e Thanks @mattpocock! - Sharpen grilling on two fronts.

    A confirmation gate. The agent won't enact the plan until you confirm the shared understanding has been reached — turning the skill's existing "shared understanding" completion criterion into an explicit stop-gate. The description also recruits the pretrained grill leading word ("Grill the user relentlessly") to sharpen invocation, and the docs page is re-synced.

    Facts vs. decisions. Grilling now splits facts (look them up — explore the codebase) from decisions (put each one to the human and wait for their answer). The old blanket line — "if a question can be answered by exploring the codebase, explore the codebase instead" — was written for the live-human case, but once another skill runs grilling inside a resolve-the-ticket frame it read as license to answer decisions autonomously too. Separating the two keeps a grilling agent from racing ahead and answering its own questions.

  • #463 af6d692 Thanks @mattpocock! - Add two adjacent Steering failure modes to writing-great-skills, both about how language you think of as "off" still steers the agent. Negation — the elephant — is steering by prohibition: naming what not to do drags the forbidden behaviour into context and makes it more available, not less (don't think of an elephant), so the cure is to prompt the positive. Negative Space — the void — is blindness to the steering done by what you leave out: every decision a skill declines is delegated to the agent's priors rather than left neutral, so the cure is to read a draft for its silences and decide each omission deliberately (fill it, or leave it open as a real branch). Kept as two entries, not one — they carry different diagnostics and different cures — each a full GLOSSARY.md entry plus a SKILL.md failure-mode bullet, matching how every other failure mode is carried.

  • 850873c Thanks @mattpocock! - Make the prototype skill model-invoked, so the agent can reach for it autonomously (and other skills can too). Its description is rewritten around the leading word prototype — throwaway code that answers a design question — with one trigger per branch (state/logic sanity-check, or UI exploration).

  • #409 0d74d01 Thanks @mattpocock! - Add the research skill — a small, model-invoked skill that spins up a background agent to investigate a question against primary sources (official docs, source code, specs, first-party APIs), then leaves a single cited Markdown file wherever the repo keeps such notes. It's delegable reading legwork: you keep working while it reads, and get back a document to grill, plan, or design against. Listed in the top-level and Engineering READMEs (Model-invoked), added to .claude-plugin/plugin.json, given a docs page at docs/engineering/research.md, and routed as a Standalone in ask-matt.

  • #469 a0329ba Thanks @mattpocock! - Split the to-issues skill into a lean Process and a Reference section, and teach it to handle a wide refactor — a single mechanical change (like renaming a column) whose blast radius fans across the whole codebase, breaking thousands of call sites at once so no vertical slice can land green. The drafting step now points at two co-located reference blocks: the Vertical slice rules for ordinary tracer bullets, and Wide refactors, which slices the change by expand–contract (expand the new form beside the old, migrate call sites in batches sized by blast radius, then contract the old form away) so CI stays green batch to batch — or, when it can't, only at a final integrate-and-verify issue. The issue body template moves into Reference too.

  • #464 386d4ff Thanks @mattpocock! - Unify the planning skills. to-prd is renamed to to-spec — "spec" is now the single through-line term (it still opens with "you may know this document as a PRD" for discoverability). to-plan and to-issues are merged into one to-tickets skill, and to-issues is deleted.

    to-tickets breaks a plan, spec, or conversation into a set of tickets — tracer-bullet vertical slices, each declaring its blocking edges. That one artifact reads two ways depending on the tracker /setup-matt-pocock-skills configured: a local file (tickets.md) writes the edges as text and you work it top-to-bottom by hand; a real tracker writes them as native blocking links, so any ticket whose blockers are done is on the frontier and several agents can run at once. The edges live in the ticket either way — the medium only decides whether anything acts on them in parallel.

    Publishing prefers the tracker's native sub-issues for parent → slice and native blocking edges for Blocked by where the tracker supports them, keeping the ## Parent / ## Blocked by body sections as the fallback. The "What to build" template points at where a /prototype's code lives rather than inlining a snippet from it.

    ask-matt's main flow now routes idea → /to-spec → /to-tickets → /implement, and there are human-facing docs pages at docs/engineering/to-spec.md and docs/engineering/to-tickets.md.

  • #464 0557d57 Thanks @mattpocock! - Settle wayfinder's place in the docs as a situational on-ramp, not the new main entry flow — the grill-led idea → ship chain stays the front door (crowning wayfinder as the default spine is a v2-sized move, not a 1.1). The ask-matt router now names wayfinder's concrete triggers — a greenfield project or a huge feature build, too big for one session — and the two grill front doors (grill-me, grill-with-docs) signpost up to wayfinder for the effort that's too big to hold in one session, so the on-ramp is discoverable from where a reader actually starts.

  • #464 639df6e Thanks @mattpocock! - Graduate and reframe wayfinder — the skill for planning a huge chunk of work, more than one agent session can hold. It moves out of in-progress/ into engineering/ (plugin entry, top-level + Engineering READMEs under User-invoked, a docs page at docs/engineering/wayfinder.md, and a route in ask-matt), landing as a mature skill. The rename and reframe that got it there:

    • decision-mapping is renamed to wayfinder, invoked as /wayfinder. "Decision map" was jargony and inaccurate — only one ticket type is actually a decision. The reframe charts a route through a foggy problem instead, giving one coherent leading-word frame — fog of war, frontier, the map — rather than an invented term layered on top.
    • Destination as the leading word. Wayfinding finds the way to a destination; it doesn't charge at building it. Naming the destination is the first act of charting — it fixes the scope and shapes every ticket — so the map gains a ## Destination field every session orients to, and triage pins it before any ticket exists.
    • Plan, don't do. The map produces decisions, not deliverables; it's done when nothing is left to decide before someone builds the thing. An effort can override this in its Notes.
    • The map is an index, not a store. A decision lives in exactly one place — its ticket — so the map only gists and links, never restates; graduating fog into a ticket clears the graduated patch so nothing lingers in two places.
    • Collaborative by default. The map moves off a local Markdown file onto the repo's issue tracker: a single wayfinder:map issue whose tickets are its child issues — one shared URL the team can watch. Sessions load the map at low resolution and zoom into tickets on demand. Wayfinder stays tracker-agnostic (GitHub, GitLab, local-markdown) behind a pointer in docs/agents/issue-tracker.md, and setup-matt-pocock-skills seeds the "Wayfinding operations" section.
    • Claim by assignment, not a label. A session claims a ticket by assigning it to the driving dev — the assignee is the claim — freeing the label vocabulary to wayfinder:<type> alone.
    • Native blocking. Blocking prefers the tracker's native dependency relationship, which renders the frontier visually in the tracker's own UI so the human sees what's takeable without opening the map. GitHub and GitLab templates spell out the native recipe, with a body-convention fallback.
    • Fog vs. out of scope, split. Two plainly-named map sections — ## Not yet specified (in-scope fog that graduates as the frontier advances) and ## Out of scope (work ruled beyond the destination, closed, never graduating) — so beyond-destination work no longer reads as takeable frontier.
    • A fourth task ticket type. For literal manual work that blocks a decision (provisioning access, moving data, signing up for a service) — the one type that does rather than decides, earning its place by unblocking a decision.
    • HITL / AFK ticket classification. Every ticket type is HITL (human in the loop — grilling, prototype) or AFK (agent alone — research; task is either). A HITL ticket only resolves through the live exchange, so "wait for the human" falls out of the label — a grilling agent that answers its own questions has, by definition, broken HITL. (This fixes students' reports of /wayfinder grilling itself instead of the human.)
    • No-fog early exit restored. If the opening breadth-first grilling surfaces no fog, the journey is small enough for one session — so it stops and asks how you'd like to proceed rather than building a map nobody needs.

Patch Changes

  • #464 639df6e Thanks @mattpocock! - Reshape tdd into a reference-only skill and add a missing anti-pattern.

    Reference-only. The red → green → refactor loop is anchored by leading words the model already holds, so the step-by-step Workflow was largely restating the loop. Dropped the Workflow and per-cycle checklist; folded their one durable idea — vertical slices / tracer bullets — into the Anti-patterns section and a short Rules-of-the-loop list. Introduced seam as the leading word for where tests go: test only at pre-agreed seams, confirmed with the user before any test is written. Also dropped the refactor stage — TDD is now red → green; refactoring belongs to the review stage, so the refactor rule and refactoring.md moved out (its home is code-review).

    Tautological tests. Added the tautological-test anti-pattern: a test whose assertion is recomputed the way the code computes it passes by construction and gives zero confidence — distinct from the implementation-coupling anti-pattern already covered. Added as a peer at the same sites: a Philosophy principle (expected values must come from an independent source of truth), a checklist gate, and a BAD/GOOD example pair in tests.md.

  • e00eadb Thanks @mattpocock! - Extend the triage skill to triage external pull requests, treating a PR as an issue with attached code that runs through the same roles and state machine. PRs flow inline alongside issues (gated by a per-repo setup toggle), discovery surfaces only external PRs, the bug-only "reproduce" step is generalized into a single "verify the claim" step, and a redundancy check resolves already-implemented requests to wontfix without polluting the out-of-scope knowledge base. setup-matt-pocock-skills gains the PRs-as-a-request-surface toggle for GitHub/GitLab.

  • #472 d869d45 Thanks @mattpocock! - Fix wayfinder hardcoding the issue-tracker doc path, which broke the indirection the rest of the suite relies on.

    to-issues, to-prd, and triage never name a path — they resolve the tracker through the ### Issue tracker block that setup-matt-pocock-skills writes into CLAUDE.md / AGENTS.md, which points at the tracker doc wherever it lives. Wayfinder instead pinned the literal docs/agents/issue-tracker.md, so in a repo that keeps its agent docs elsewhere it silently fell back to the local-markdown tracker — even one whose CLAUDE.md clearly declares GitHub issues. It now resolves the doc via that same pointer and reads its "Wayfinding operations" section by name, keeping the indirection consistent across the suite.