ask-matt is a router: one Skill that names all the others and when to reach for each. You don't remember every Skill, so you ask it which Skill or Flow fits your situation. It lays out:
the main flow, from idea to shipped: grill-with-docs, an optional prototype detour, to-spec, to-tickets, implement or implement-spec (building with tdd, reviewing with code-review, writing the pull request with pr), then retro;
the on-ramps that merge onto it: triage, diagnosing-bugs and wayfinder;
codebase health, the vocabulary Skills underneath, and the standalone Skills.
the on-ramps that merge onto it: triage, diagnosing-bugs and wayfinder
It also covers phase boundaries. A phase is a chunk of work inside a session, such as grilling or building. At the gap between two phases you have five options, and you check them top to bottom; the first yes wins: continue in this session, /clear, /handoff, send the work to a subagent, or /compact. /compact is the default, but the last one to reach for.
Its summaries are only for orientation. Before it says what a Skill does, or that a step can be skipped, it reads that Skill's own SKILL.md.
When to use it
You can't remember which Skill fits, or what comes next in a Flow.
You're at a phase boundary and unsure whether to continue, clear, hand off, use a subagent or compact.
It's user-invoked (disable-model-invocation: true): you type /ask-matt yourself.
When not to use it
An effort is so big and foggy that nobody can see the way yet, such as a whole new product. ask-matt can point you at the right Skill, but wayfinder is what charts the map, as decision tickets (questions to settle, not slices to build) on the Issue tracker.
You already know which Skill you need. Just run it.
What it needs to start
Your situation, described in your own words. Before it says what a Skill does, it reads that Skill's SKILL.md.
What it creates
An answer in the conversation: which Skill or Flow fits, and why. Nothing on disk, and no Issues, branches or pull requests. As a router it can only hint; you start the Skill it names yourself.
Going deeper
6 min read · Going deeper not read
Why it exists
In his end-to-end tutorial (2026-07-16), Matt introduces it in one line: "This ask Matt skill is essentially me as a skill." He adds that it "knows everything that is needed about the skills repo and what you should do first."
His page for the Skill (updated 2026-08-24) gives the problem behind it. People kept asking for a list of the Skills in the right order. "This skill is that list." A fixed list wouldn't work, he says: a static table would "be wrong for most situations". What matters are the branches: "is there a codebase, does the build span sessions, can talking settle this question."
Matt's ask-matt page (updated Aug 24, 2026): a router that names the skill that fits, then stops. From aihero.dev, 30 October 2026.
It shipped in version 1.0.0 of Matt's repo as "a user-invoked router that points you at the right skill or flow for your situation."
How it works underneath
Flows, not keywords. When you name your situation, "the router places you at a step on a flow." Matt contrasts that with "here is the skill that matches your keywords". That's why the answer comes back as prose with branches in it, not a list of names.
Why a router has to exist. Most of Matt's Skills are user-invoked, and that choice has a price. Claude Code's docs give the trade in one table. With , you can invoke the Skill, Claude can't invoke it on its own, and its "Description not in context". Matt's writing-for-agents names the cost on each side. A model-invoked Skill pays context load: its description stays loaded at all times. A user-invoked Skill pays cognitive load: "you are the index that must remember it exists". When user-invoked Skills pile up past what you can remember, a router Skill cures the piled-up cognitive load.
From snapshot/skills/ask-matt/SKILL.md, line 11: “Before stating what a skill does or recommending a step be skipped, read that skill's SKILL.md: the summaries here are for orientation only.”
Claude Code's Skills docs: frontmatter can control whether you or Claude invokes a skill. From code.claude.com, 30 October 2026.
A model-invoked Skill
A user-invoked Skill
pays
context load
cognitive load
its description stays loaded
yes
no
a router Skill cures the piled-up cognitive load.
Matt's writing-for-agents names the cost on each side.
A map kept by hand. It isn't a scan of what you installed. Matt calls it "a hand-written map of the skills in this repo", so "it will not route you over your own skills or another author's." The price: "the router is maintained by hand, so it lags behind the repo." Version 1.1.0 had to bring it up to date with five Skills it was missing, and added a rule to the repo's CLAUDE.md so that any Skill change "triggers an ask-matt re-check".
A secondary source. Matt's page closes on the rule for when they disagree: "Where the router and a SKILL.md disagree, the SKILL.md is right."
A real example
In the same tutorial, Matt asks it: "ask Matt, how do I get started?" He adds: "I want to make some code changes here." And: "What is the main flow I should use?"
The answer he reads out: "Since you have a code base, start at the top of the main flow and walk down in it in one unbroken context window." Matt's comment on the answer: "it's very um kind of really telling you how to use your sessions as well." Then: "It says you should start with grill with docs."
One detail has aged. In the video, the answer says grill-with-docs "records what it learns in context.md and ADRs". Version 1.3.0 renamed CONTEXT.md to GLOSSARY.md everywhere the Skills read and write it, ask-matt included. The current SKILL.md says GLOSSARY.md, and it's the newer source.
Where it goes wrong
It answered from its own summaries. Issue #614 (opened 2026-07-18) reported that it "repeatedly asserted how other skills behaved, or recommended skipping their documented steps" without checking. In one case it judged from to-spec's "one-line gloss in the router's own document", and /to-spec/SKILL.md "was never opened." The cost came later. The user skipped to-spec and cut 12 Tickets. One file behind a Ticket, 885 lines long, turned out to have at least "7 separate touch points" where the Ticket named two. The undercount began in the grilling, but to-spec's seam step "would very likely have" caught it.
Pull request #1194 fixed it and closed the issue on 2026-10-07. Version 1.3.2 shipped the fix on 2026-10-29. The changelog says ask-matt "now reads a skill's SKILL.md before stating what it does or recommending a step be skipped". Matt's page, last updated 2026-08-24, still calls this bug "not fixed". The page is older; the current SKILL.md decides, and it has the rule. The page's habit is still worth keeping: "ask it to open that SKILL.md first."
Issue #614, opened Jul 18, closed by pull request #1194 on 2026-10-07. From github.com, 30 October 2026.
It says half the Skills aren't installed. Issue #740 (opened 2026-08-04) explains why. The five Skills it routes you through in the main flow (grill-with-docs, to-spec, to-tickets, implement, wayfinder) set disable-model-invocation: true, "so the harness omits them from the skill list". The agent reads that list as complete, "concludes they are not installed", and in one session sent the user to bare /grilling and /tdd instead. Another user saw it on version 1.2.0: "Running /grill-with-docs myself loaded it fine." Matt's page calls it "a known bug, and it is not fixed". The issue was still open on 2026-10-30. Type the slash command anyway.
Its advice to edit a SKILL.md rarely lasts. Matt's page gives a case: someone asked it how to make implement close Tickets and "was told to add a line to the skill". But "npx skills update overwrites the file, and the plugin install is read-only." Matt's fix: "Put standing behaviour in your own CLAUDE.md or AGENTS.md".
It routes ahead of setup. Routes that need the Issue tracker assume setup-matt-pocock-skills has run. "The router recommends them even before that has happened."
Try it
In your practice project (set it up first with keeping-track's Try it step if you haven't), open a session at the repo root and type /ask-matt. Describe a real next step in your own words: for example, that you want to add an endpoint in api/ that lists a studio's classes, and where you should start.
Then check the answer against Matt's list of signs that it's working:
It ends by naming what to type, and stops there.
It says where to clear or compact context, not just which Skills.
Any claim it makes about another Skill shows up as it reading that Skill's SKILL.md.
If it says a Skill isn't installed, type that Skill's slash command yourself. Don't start the work it names yet; this step is only about reading the route.
From snapshot/web/aihero.dev/skills-ask-matt.md, line 88: “It is also a hand-written map of the skills in this repo rather than a scan of what you have installed, so it will not route you over your own skills or another author's.”
From snapshot/skills/ask-matt/SKILL.md, line 11: “Before stating what a skill does or recommending a step be skipped, read that skill's SKILL.md: the summaries here are for orientation only.”