wayfinder
Skill5 starsChanged 11 days agoMITView on GitHub
Plan work too big for one agent session as a map of decision tickets in markdown under .scratch/, then resolve them one per session, or all in one run, until the route to the destination is clear.
194 other projects use a version of this, 149 of them edited.
Adopted by
Most recently taken up by
- therealtinhtute/mono-harnesstheir own version, first seen Nov 8, 2026
- domengabrovsek/agent-configedited, first seen Nov 8, 2026
- domengabrovsek/claudeedited, first seen Nov 8, 2026
- The-Vibe-Company/quivredited, first seen Nov 8, 2026
- 5thlayer/skillworksedited, first seen Nov 8, 2026
- zhikedan/mattpocock-skills-dshedited, first seen Nov 8, 2026
Used with
Projects with it also use setup-ts-deep-modules, loop-me and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
liufeng1976Skillsetup-ts-deep-modules
Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point files. User-invoked.
Also in 42 projects that use this
RoentekSkillloop-me
Grill me about specs for the workflows I want to build, within this workspace.
Also in 50 projects that use this
LesaniSkillwriting-beats
Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.
Also in 54 projects that use this
ryotaroh180105Skillclaude-handoff
Hand the current conversation off to a fresh background agent that picks up the work immediately.
Also in 40 projects that use this
LesaniSkillwriting-shape
Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.
Also in 53 projects that use this
simo97Skillmigrate-to-shoehorn
Migrate test files from `as` type assertions to @total-typescript/shoehorn. Use when user mentions shoehorn, wants to replace `as` in tests, or needs partial test data.
Also in 48 projects that use this
- +1 more from Lesani
Other versions194 projects use a version of this.
Word for word · 0
None found.
Edited · 149
- mattpocock/skills★ 309k15% same
- QuivrHQ/quivr★ 40k15% same
- The-Vibe-Company/quivr★ 40k15% same
- ArcReel/ArcReel★ 6.3k15% same
- withcoral/coral★ 4.9k15% same
- epicenter-md/epicenter★ 4.8k15% same
- EpicenterHQ/epicenter★ 4.8k15% same
- bestofjs/bestofjs★ 3.1k16% same
- CelestoAI/SmolVM★ 1.2k14% same
- moeru-ai/xsai★ 66715% same
139 more not listed
Wrote their own version · 45
- vinvcn/mattpocock-skills-zh-CN★ 5.5ksame name
- stevesolun/ctx★ 583same name
- devcxl/mattpocock-skills-zh★ 522same name
- PromptPartner/agentsmith★ 173same name
- GGGODLIN/gggodlin-cc-harness★ 73same name
- drvoss/everything-copilot-cli★ 48same name
- KrishP147/skills★ 37same name
- WenWuZhiDao/mattpocock-skills-zh★ 27same name
- gaia-research/gaia-skill-tree★ 22same name
- svyatov/supermatt★ 20same name
35 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository57 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- architecture-satisfactionSkill
- autopilotSkill
- browser-testSkill
- chatter-scoutSkill
- closeoutSkill
- codebase-designSkill
- code-reviewSkill
- code-smells-auditSkill
- commitSkill
- dependency-auditSkill
- diagnosing-bugsSkill
- domain-modelingSkill
- fix-ci-failuresSkill
- fix-github-issuesSkill
- fix-nightwatch-issuesSkill
- fix-posthog-issuesSkill
- grillingSkill
- grill-meSkill
- grill-with-docsSkill
- handoffSkill
- harness-toolsSkill
- housekeeperSkill
- implementSkill
- implement-specSkill
- improve-codebase-architectureSkill
- laravel-herd-worktreesSkill
- panelSkill
- prototypeSkill
- prSkill
- prune-testsSkill
- releaseSkill
- repository-cleanupSkill
- researchSkill
- resolve-review-commentsSkill
- resolving-merge-conflictsSkill
- retroSkill
- run-afterSkill
- scratch-cleanupSkill
- scratch-statusSkill
- setupSkill
- sweepSkill
- tddSkill
- teachSkill
- to-questionnaireSkill
- to-specSkill
- to-ticketsSkill
- triage-github-prSkill
- triageSkill
- ui-designSkill
- upgrade-planSkill
- verifySkill
- wait-whatSkill
- which-skillSkill
- wizardSkill
- writing-for-agentsSkill
The file
We split this skill into the rules it gives an agent
4 rules. 1 is common, 1 is distinctive, and 2 are very specific to this project.
1
Common
Most of the 179 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 28
Every map and ticket has a name: its title.
- Very specific: line 50
Name the destination: Run a grilling session (with domain-modeling) to pin down what this map is finding its way to.
- Very specific: line 54
Resolve eligible research tickets: Follow the research skill's Wayfinder integration to claim, dispatch, persist, and resolve them.
- Common: line 55
Stop: charting is one session's work.
“Common” is measured: kept by at least 6 in 10 of the 179 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Wayfinder
A loose idea has arrived: too big for one agent session, and wrapped in fog: the way from here to the destination isn't visible yet. Wayfinding finds that way instead of charging at the destination. Chart the way as a shared map of markdown files under .scratch/, then work its decision tickets (questions whose resolution is a decision, never work to build) one at a time until the route is clear.
One map produces one spec. When its decisions are clear, to-spec runs once and the map is finished. If the work is too big for a single spec, that is a sign the destination is drawn too wide: narrow it, and chart the rest as its own map later.
Naming the destination is the first act of charting; it shapes every ticket. It might be the spec to hand to to-spec, a decision to lock before planning starts, or the decisions behind a change made in place (a data-model migration, an expand–contract schema change): which still builds through the normal spec → tickets → build handoff.
Pipeline position: wayfinder (decide) → to-spec (write the spec) → to-tickets (break it into tickets) → implement (build one ticket per session).
Plan, don't do
Each ticket resolves a decision; the map is done when nothing is left to decide before someone goes and does the thing. The pull to just do the work is usually the signal you've reached the edge of the map and it's time to hand off. The one sanctioned do on a map is a task ticket: manual work that unblocks a decision (see ticket types); it resolves like any other ticket and leaves no build state behind. Absent that, produce decisions, not deliverables.
The test on every ticket: can it be answered, or must it be built? Work you would build is not a ticket, it belongs in the spec. Never number build work onto the map. The map holds no build state, so a map carrying build work will keep telling you it is unfinished long after the work ships.
Hand off: don't build. When the decisions are clear, run to-spec once on the map. That closes the map. implement builds the spec's work from a ticket to-tickets wrote, never from the map, the lone exception being a task ticket, which is unblocking work rather than the spec's build.
Refer by name
Every map and ticket has a name: its title. In everything the human reads, refer to it by that name with the path riding inside as a link, never a bare path alone. A wall of identifiers is illegible; names read at a glance.
The Map
The map is the canonical wayfinding artifact under .scratch/. Its tickets are children of the map. The map is an index, not a store: it lists decisions made and points at the tickets that hold their detail; a decision lives in exactly one place, its ticket. Build work never appears here; that is the spec's job.
Maps, tickets, and specs are markdown files under .scratch/. Read the layout once per session from .agents/issue-tracker.md (written by /setup). If it's missing, try docs/agents/issue-tracker.md (legacy), then the setup skill's seed; suggest running /setup once to make the paths durable. Its Wayfinding operations are the single source of truth for creating maps and children, recording types, wiring blockers, claiming, querying the frontier, resolving, and linking assets.
Map body template, ticket body, claim/block/resolve mechanics: references/map-and-tickets.md. Ticket types (research / prototype / grilling / task): references/ticket-types.md. Fog of war and out-of-scope rules: references/fog-and-scope.md. Load each when charting or resolving.
Structured questions
Decision points that arise outside a full grilling: confirming the destination phrasing, choosing between scope rulings, picking which frontier ticket to work, use the question shape from grilling (as a structured question (harness-tools), otherwise a plain question in chat): recommended option first, real trade-offs per option, wait for the answer. Don't reinvent the protocol here, including its Settle it yourself first ladder and What still earns a question bar, which gate every question this skill asks and every ticket it charts. When this skill invokes grilling or domain-modeling, the inner skill does not print an end-of-session block, only the outermost skill does.
Invocation
Two modes. Either way, never resolve more than one ticket per session: with the exception of research tickets, and of a map run.
Chart the map
User invokes with a loose idea.
- Name the destination. Run a
grillingsession (withdomain-modeling) to pin down what this map is finding its way to. The destination fixes the scope, so it's settled first. - Map the frontier. Grill again, breadth-first: fan out across the whole space rather than deep on any thread, surfacing the open decisions and the first steps takeable now. If this surfaces no unresolved decision tickets, the destination is already clear enough to hand off and you don't need a map. An empty Not yet specified section alone is not enough, sharp open decisions still become tickets. Stop and ask the user whether to go straight to
to-specorto-tickets. - Create the map through the tracker's Create map operation: Destination and Notes filled in, Decisions so far empty, the fog sketched into Not yet specified.
- Create the tickets you can specify now through the tracker's Create ticket operation, setting each ticket's
blocked-byas you create it and wiring any remaining cross-edges in a second pass, so no ticket sits on the frontier before its blockers are wired. Everything you can't yet specify stays in the fog. - Resolve eligible research tickets. Follow the
researchskill's Wayfinder integration to claim, dispatch, persist, and resolve them. If a research ticket cannot finish during this charting session, leave it open on the frontier for its own session. - Stop: charting is one session's work; beyond the research tickets step 5 resolves, it hand-resolves nothing.
Work through the map
User invokes with a map (its path or title). A ticket is optional, without one, you pick the next. With all after the map, this is a map run: read references/map-run.md first, it loops the steps below over the whole frontier.
- Load the map: the low-res view, not every ticket body.
- Choose the ticket. If the user named one, use it; otherwise take the first frontier ticket. Claim it through the tracker's Claim operation before any work.
- Resolve it per its type: zoom as needed: fetch full bodies of related or closed tickets on demand; consult the skills the map's Notes name. If in doubt, grill.
- Record the answer through the tracker's Resolve operation, which closes the ticket. The map's Decisions so far is derived from the closed, resolved tickets, don't hand-append it.
- Add newly surfaced tickets (create-then-wire); graduate any fog the answer made specifiable, clearing each graduated patch from Not yet specified. If the answer reveals a ticket sits beyond the destination, use the tracker's Close operation to rule it out of scope (not Resolve, so it stays out of Decisions so far). Update tickets that remain valid; Close invalidated tickets as superseded with a short reason so their history remains intact.
- Say whether the map is clear. It is clear when no ticket is open and nothing remains in Not yet specified. Say so plainly, because that is the signal to run
to-spec: once.
The user may run unblocked tickets in parallel, so expect other sessions to be editing the tracker concurrently.
When you're done
Print the end-of-session block using the frame in references/pipeline-end-block.md. Refer to the map and tickets by name, per Refer by name above. Query the markdown tracker for the current frontier before writing the block, don't guess at what's open.
---
Pipeline: **decide** → spec → tickets → build (1 of 4, multi-session map)
Done: <map name; tickets open, resolved, and still in the fog>
Next:
• <condition> → /<skill> <map or ticket name>Stage-specific Next conditions (only those that apply, most likely first):
After charting:
- Map charted with a frontier →
/wayfinder <map>to resolve the first frontier ticket; name it (research tickets already resolved point at their findings files). Offer/wayfinder <map> allbeside it to work the whole map in one run - Charting found no unresolved decision tickets → no map needed:
/to-spec, or/to-ticketsif the shape is already clear
After working a ticket:
- Map still has open tickets →
/wayfinder <map>for the next frontier ticket (or resume your own claimed ticket first if you stopped mid-ticket, see below); name it and say how many remain. Offer/wayfinder <map> allbeside it for the rest - Map is clear →
/to-spec <map>, run once; that writes the spec and closes the map - Map is clear and the effort turned out genuinely small →
/to-tickets <map>, skipping the spec - Ticket blocked on someone else's knowledge →
/to-questionnaire; on a fact worth reading for →/research - Stopped mid-ticket → say which ticket is claimed, what's decided so far, and that the claim remains active; resume that ticket next session before taking a fresh one, or Release it to hand it back to the frontier
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

