Skip to content

Releases: mattpocock/skills

v1.2.3

Choose a tag to compare

@github-actions github-actions released this 06 Aug 14:05
6acc160

Patch Changes

  • #779 efce423 Thanks @mattpocock! - Make diagnosing-bugs redact secrets.

    • Add a Redact section to SKILL.md. The skill has the agent show commands, outputs and captured artifacts; the section makes redaction the first move on each — write <REDACTED>, build loops against env vars so the credential stays in the environment, and quote only the signal-carrying lines of a captured artifact.
    • The Phase 1 completion criterion said "paste the invocation and its output". It now says show it redacted, and Phase 1 asks the user for a redacted captured artifact.
    • Note in scripts/hitl-loop.template.sh that capture prints its value back to the terminal, so it takes observations while signing in stays a step.
  • #781 14bfbbd Thanks @mattpocock! - Drop Claude Code's tool and agent-type names from the subagent-dispatch instructions in code-review, codebase-design, and improve-codebase-architecture, so the step is followable on Codex and other harnesses.

  • #783 c0fd1e9 Thanks @mattpocock! - wizard: remove the time estimate. The template drops TOTAL_MINUTES and the time-remaining display, stage takes a name only, and progress is counted in stages.

v1.2.2

Choose a tag to compare

@github-actions github-actions released this 05 Aug 18:10
8b36d4f

Patch Changes

  • #766 4aaccb5 Thanks @mattpocock! - Make writing-for-agents model-invokable in Codex again.

    • Drop policy.allow_implicit_invocation: false from agents/openai.yaml. Codex filtered the skill out of the model-visible skills list, so its description could not trigger it — only an explicit $writing-for-agents mention worked.
    • Update the stale interface.display_name and interface.short_description, which still named the old writing-great-skills skill.
    • Move the skill from the User-invoked list to the Model-invoked list in README.md and skills/productivity/README.md.

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 12:37
2ffb184

Minor Changes

  • #551 697d4ce Thanks @mattpocock! - Add Codex metadata alongside each skill's Claude Code frontmatter so the set works in both harnesses without generated copies.

    • Add an agents/openai.yaml beside every SKILL.md with Codex UI metadata (interface.display_name, interface.short_description).
    • Mark every user-invoked skill with policy.allow_implicit_invocation: false, the Codex analog of disable-model-invocation: true, so Codex excludes it from implicit invocation while explicit $skill invocation still works.
    • Document the dual-harness invocation model in .agents/invocation.md, CLAUDE.md, and the promoted-bucket READMEs.
    • Add AGENTS.md as a symlink to CLAUDE.md so Codex reads the same repo instructions.
  • #593 0f2bdbd Thanks @mattpocock! - Graduate to-questionnaire out of in-progress/ into the Productivity bucket, so it ships in the plugin. It turns a decision you can't answer alone into a Markdown questionnaire for the one person who can — filled in async, or worked through together in a meeting.

    Its defining move is that it grills you about the send, not the subject: a normal grilling session interrogates the topic, which is exactly what you can't answer here, so the interview asks only who the questionnaire is going to and what you need back, then aims every question at the gap between the two.

    Now wired as a promoted skill — plugin entry, top-level + Productivity READMEs under User-invoked, a docs page at docs/productivity/to-questionnaire.md, and a Standalone route in ask-matt framing it as the inverse of /grill-me (mine someone else, not yourself).

  • #680 b3376f8 Thanks @mattpocock! - 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.

    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, which drops user-invoked skills from the listing on Claude's desktop and web surfaces.

  • #763 77d207e Thanks @mattpocock! - Reshape the prototype skill around two ideas: the demo is a single shareable HTML file, and the prototype is a primary source.

    The logic branch now produces one self-contained file (plain HTML/CSS/JS, no build, no server) instead of a terminal app — a non-developer can open it by double-click and drive it in their own domain language: a labelled state panel, always-available free-play buttons, and a set of tabbed guided walkthroughs, each a scenario with the ordered buttons to press underneath it. The portable pure-logic module still lifts into the real code; the HTML shell is the throwaway.

    Throwaway no longer means deleted. Rather than being removed once it has answered its question, the prototype is captured as runnable evidence on a throwaway branch (prototype/<name>) out of main, with a context pointer to it left on the implementation issue — so the main branch keeps only the validated decision while the exploration stays findable. The answer (verdict + question) is still captured durably in an issue/ADR/commit.

  • #536 42a5b70 Thanks @mattpocock! - Ship the skill set as a native Claude Code plugin, listed in Claude Code's official marketplace. You can now subscribe to the promoted skills as a managed, read-only bundle instead of copying editable files:

    claude plugins install mattpocock-skills

    Or, from inside a session:

    /plugin install mattpocock-skills
    

    There is no marketplace to add first — the official marketplace is configured by default.

    .claude-plugin/plugin.json carries the full plugin metadata (version, description, author, license, keywords) and the explicit list of promoted skills. skills.sh remains the universal installer (and the path for Codex and other harnesses today); a native Codex plugin is deferred — see .agents/adr/0002-ship-as-a-claude-code-plugin.md for why.

  • #751 355fa74 Thanks @mattpocock! - Add wait-what — a one-word corrective for model verbosity. Type it the moment a message doesn't land, and the agent re-pitches it: a little context, ASD-STE100 Simplified Technical English, and the ubiquitous language from your CONTEXT.md. User-invoked, three lines long.

    The mechanism is the name. Concision skills fail by growing — a 400-line skill still leaves the model verbose — so this one is a single precise leading word and nothing else. Names that describe the output (/tldr, /no-fluff) make the model clip words and lose you further; naming the listener's state asks for both halves at once, fewer words and the context you were missing. It also reuses the leading words already in your global CLAUDE.md, so the skill, CLAUDE.md and every CONTEXT.md reach for the same tokens.

    It repairs one message; it doesn't prevent the next one. The cure for jargon is a shared language built upfront with /grill-with-docs; this is what you reach for when you don't have one yet.

  • #763 77d207e Thanks @mattpocock! - Name the /wayfinder unit a decision ticket, and burn research tickets down with subagents.

    People kept reading a wayfinder ticket as an ordinary implementation ticket — a slice of a build to execute — when wayfinder uses them as decision tickets: questions whose resolution is a decision. The skill description and its opening line now introduce the term (and say what makes it one), with the ask-matt / engineering README blurbs and the docs page matching — while "ticket" stays the everyday word once the term is established. CONTEXT.md records Decision ticket as a domain term, so the "avoid: ticket" guidance no longer contradicts wayfinder's deliberate use of the word.

    Research tickets are no longer parked for a separately-launched session. Research stays a real ticket type — it's a genuine shared blocker that downstream decisions hang on, and that dependency is exactly what the frontier's blocking edges exist to render. What changes is how it's resolved: because research is AFK, charting doesn't stop and read it. After creating the tickets, the charting session fires a /research subagent for each research ticket to burn it down in parallel, capturing the findings on a throwaway research/<name> branch with a context pointer. Research tickets are the one exception to one ticket per session.

  • #763 77d207e Thanks @mattpocock! - Breaking: rename writing-great-skillswriting-for-agents, restructure it, and add a new leading ...

Read more

v1.1.0

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, **f...
Read more

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 17 Jun 22:07
2454c95

Patch Changes

  • d20ee26 Thanks @mattpocock! - Make the teach skill reuse-first. Lessons are now built from reusable components in ./assets/ — stylesheets, quiz widgets, simulators, diagram helpers. Reuse is the default: the agent reads ./assets/ before authoring a lesson, builds from what's there, and extracts anything new and reusable into a component rather than inlining it.

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 17 Jun 14:46

Major Changes

  • 47bde84 Thanks @mattpocock! - Add the ask-matt skill — a user-invoked router that points you at the right skill or flow for your situation.

    Breaking: ask-matt routes over the other user-invoked skills in this repo, so it expects them to be installed.

  • 47bde84 Thanks @mattpocock! - Add the shared design skills and rewire existing skills onto them.

    • New codebase-design skill — the deep-module vocabulary (module, interface, depth, seam, adapter) and the principles for putting a lot of behaviour behind a small interface. The language that previously lived in improve-codebase-architecture/LANGUAGE.md now lives here, generalized for reuse across skills.
    • New domain-modeling skill — actively build and sharpen a project's domain model, stress-testing terms against the glossary and keeping CONTEXT.md and ADRs current.
    • improve-codebase-architecture now draws its architecture vocabulary from /codebase-design and its domain model from /domain-modeling.
    • tdd now leans on /codebase-design for interface-design guidance — its inline deep-modules.md / interface-design.md notes were removed in favour of the shared skill.
    • grill-with-docs now builds the domain model inline via /domain-modeling.

    Breaking: these skills now depend on the new codebase-design / domain-modeling skills, so you must install them too.

  • 47bde84 Thanks @mattpocock! - Remove the caveman and zoom-out skills.

    • caveman was a duplicate of another skill I was testing and was never meant to be public.
    • zoom-out went unused in practice, so it's been removed from the repo.

    Breaking: both skills have been removed.

  • 47bde84 Thanks @mattpocock! - Rename the diagnose skill to diagnosing-bugs.

    Breaking: invoke it as /diagnosing-bugs — the old /diagnose name no longer exists.

  • 47bde84 Thanks @mattpocock! - Replace write-a-skill with writing-great-skills.

    • Removed write-a-skill.
    • Added writing-great-skills (plus its GLOSSARY.md) — a reference for writing and editing skills well: the vocabulary and principles that make a skill predictable, hunting no-ops down to the sentence level.
    • Exposed grilling as a model-invoked skill — the reusable interview loop behind grill-me and grill-with-docs.

    Breaking: write-a-skill has been removed; use writing-great-skills instead.

Minor Changes

  • 47bde84 Thanks @mattpocock! - Add the resolving-merge-conflicts skill — a loop for resolving an in-progress git merge or rebase conflict. Standalone, with no dependencies on other skills.

  • 47bde84 Thanks @mattpocock! - Rename the skill taxonomy from Commands / Skills to User-invoked / Model-invoked across the docs, and add docs/invocation.md defining the split: user-invoked skills are reachable only when you type them and exist to orchestrate; model-invoked skills can also be reached automatically when the task fits. A user-invoked skill may invoke model-invoked skills, but never another user-invoked one.

Patch Changes

  • 47bde84 Thanks @mattpocock! - Tighten the review skill: fail-fast ref check, single-sourced rules, and no-op cuts.

mattpocock-skills@1.0.0

Choose a tag to compare

@mattpocock mattpocock released this 17 Jun 14:45
00ff03c

Major Changes

  • 47bde84 Thanks @mattpocock! - Add the ask-matt skill — a user-invoked router that points you at the right skill or flow for your situation.

    Breaking: ask-matt routes over the other user-invoked skills in this repo, so it expects them to be installed.

  • 47bde84 Thanks @mattpocock! - Add the shared design skills and rewire existing skills onto them.

    • New codebase-design skill — the deep-module vocabulary (module, interface, depth, seam, adapter) and the principles for putting a lot of behaviour behind a small interface. The language that previously lived in improve-codebase-architecture/LANGUAGE.md now lives here, generalized for reuse across skills.
    • New domain-modeling skill — actively build and sharpen a project's domain model, stress-testing terms against the glossary and keeping CONTEXT.md and ADRs current.
    • improve-codebase-architecture now draws its architecture vocabulary from /codebase-design and its domain model from /domain-modeling.
    • tdd now leans on /codebase-design for interface-design guidance — its inline deep-modules.md / interface-design.md notes were removed in favour of the shared skill.
    • grill-with-docs now builds the domain model inline via /domain-modeling.

    Breaking: these skills now depend on the new codebase-design / domain-modeling skills, so you must install them too.

  • 47bde84 Thanks @mattpocock! - Remove the caveman and zoom-out skills.

    • caveman was a duplicate of another skill I was testing and was never meant to be public.
    • zoom-out went unused in practice, so it's been removed from the repo.

    Breaking: both skills have been removed.

  • 47bde84 Thanks @mattpocock! - Rename the diagnose skill to diagnosing-bugs.

    Breaking: invoke it as /diagnosing-bugs — the old /diagnose name no longer exists.

  • 47bde84 Thanks @mattpocock! - Replace write-a-skill with writing-great-skills.

    • Removed write-a-skill.
    • Added writing-great-skills (plus its GLOSSARY.md) — a reference for writing and editing skills well: the vocabulary and principles that make a skill predictable, hunting no-ops down to the sentence level.
    • Exposed grilling as a model-invoked skill — the reusable interview loop behind grill-me and grill-with-docs.

    Breaking: write-a-skill has been removed; use writing-great-skills instead.

Minor Changes

  • 47bde84 Thanks @mattpocock! - Add the resolving-merge-conflicts skill — a loop for resolving an in-progress git merge or rebase conflict. Standalone, with no dependencies on other skills.

  • 47bde84 Thanks @mattpocock! - Rename the skill taxonomy from Commands / Skills to User-invoked / Model-invoked across the docs, and add docs/invocation.md defining the split: user-invoked skills are reachable only when you type them and exist to orchestrate; model-invoked skills can also be reached automatically when the task fits. A user-invoked skill may invoke model-invoked skills, but never another user-invoked one.

Patch Changes

  • 47bde84 Thanks @mattpocock! - Tighten the review skill: fail-fast ref check, single-sourced rules, and no-op cuts.