wayfinder
Skill0 starsChanged 55 days agoMITView on GitHub
Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.
194 other projects use a version of this, 155 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, to-questionnaire and 9 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
AWSSkillto-questionnaire
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
Also in 87 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
- +1 more from Lesani
Other versions194 projects use a version of this.
Word for word · 0
None found.
Edited · 155
- mattpocock/skills★ 309k43% same
- QuivrHQ/quivr★ 40k45% same
- The-Vibe-Company/quivr★ 40k45% same
- ArcReel/ArcReel★ 6.3k43% same
- withcoral/coral★ 4.9k43% same
- epicenter-md/epicenter★ 4.8k43% same
- EpicenterHQ/epicenter★ 4.8k43% same
- bestofjs/bestofjs★ 3.1k45% same
- CelestoAI/SmolVM★ 1.2k44% same
- moeru-ai/xsai★ 66745% same
145 more not listed
Wrote their own version · 39
- vinvcn/mattpocock-skills-zh-CN★ 5.5ksame name
- stevesolun/ctx★ 583same name
- devcxl/mattpocock-skills-zh★ 522same name
- PromptPartner/agentsmith★ 173same name
- drvoss/everything-copilot-cli★ 48same name
- KrishP147/skills★ 37same name
- WenWuZhiDao/mattpocock-skills-zh★ 27same name
- gaia-research/gaia-skill-tree★ 22same name
- imMamdouhaboammar/matts-skills-into-chatgpt★ 8same name
- Boom-Vitt/skills-thai★ 5same name
29 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 repository50 other files it gives its agents.
- AGENTS.mdAGENTS.md
- instructions/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- instructions/CLAUDE.mdCLAUDE.md
- author-skillSkill
- architectSkill
- arenaSkill
- astack-helpSkill
- astack-updateSkill
- brag-slimSkill
- bug-fixSkill
- claude-background-jobsSkill
- claude-routerSkill
- codex-background-jobsSkill
- create-verification-skillSkill
- diagnosing-bugsSkill
- domain-modelingSkill
- full-sendSkill
- grillingSkill
- handoffSkill
- harden-prSkill
- hillclimbSkill
- howSkill
- implementSkill
- improve-codebase-architectureSkill
- investigationSkill
- multi-phase-planSkill
- no-commentsSkill
- open-prSkill
- orchestrateSkill
- perf-issueSkill
- principlesSkill
- prototypeSkill
- refactoringSkill
- reflectSkill
- review-prSkill
- run-jobSkill
- ship-prSkill
- show-me-your-workSkill
- t3-previewSkill
- tddSkill
- teachSkill
- technical-writingSkill
- to-specSkill
- typescript-best-practicesSkill
- unslopSkill
- whySkill
- wizardSkill
- worktree-cleanupSkill
- writing-for-agentsSkill
The file
We split this skill into the rules it gives an agent
4 rules. 1 is common, 3 are distinctive, and 0 are very specific to this project.
1
Common
Most of the 179 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 110
When an existing ticket proves out of scope, close it with that status.
- Common: line 120
Name the destination: Use grilling and domain-modeling to pin down what this map is finding its way to: the spec, decision, or change.
- Distinctive: line 125
Stop after charting and research.
- Distinctive: line 139
When passing unfinished work to another session, read handoff.
“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
A large effort has unresolved decisions that span several sessions. This skill records them as a shared map and decision tickets on the repo's issue tracker. Each ticket resolves a question. The map is complete when the decisions needed to reach the destination are settled.
Name the destination before creating tickets. It fixes the scope and may be a specification, a design decision, or an authorized change such as a data-structure migration. The map can support engineering work, course content, or other domains.
Plan, don't do
Wayfinder is planning by default: each ticket resolves a decision, and the map is done when the way is clear, with nothing left to decide before someone goes and does the thing. When the remaining work is execution, hand off to the appropriate execution skill. When the user authorizes execution, record that override in Notes, carrying execution into the map itself, but absent that, produce decisions, not deliverables.
Refer by name
Refer to each map or ticket by its title, linked to its URL or local path. Use the title in status messages and Decisions so far. Keep IDs for tracker operations.
The map
The map is a single issue on this repo's issue tracker, labelled wayfinder:map, the canonical artifact. Its tickets are child issues of the map.
The map is an index. Summarize each decision in one line and link its ticket. Keep the full answer in the ticket.
Where the map, its child tickets, blocking, and frontier queries physically live is tracker-specific. Use the tracker already chosen for the effort and its documented operations. If none is configured, use the local Markdown tracker. Keep local artifacts until publishing to a shared tracker is authorized.
The map body
The whole map at low resolution, loaded once per session. Open tickets are not listed: they are open child issues, found by query.
## Destination
<what reaching the end of this map looks like: the spec, decision, or change this effort is finding its way to. One or two lines; every session orients to it before choosing a ticket.>
## Notes
<domain; skills every session should consult; standing preferences for this effort>
## Decisions so far
<One line per resolved ticket, enough to judge relevance. Follow its link for the detail.>
- [<closed ticket title>](https://example.com/ticket): <one-line gist of the answer>
## Not yet specified
<In-scope fog you cannot ticket yet. See "Fog of war" below.>
## Out of scope
<Work ruled beyond the destination. See "Out of scope" below.>Tickets
Each ticket is a child issue of the map; the tracker's issue id is its identity. Its body is the question, sized to one agent session within the available context budget:
## Question
<the decision or investigation this ticket resolves>Each ticket carries a wayfinder:<type> label, one of research, prototype, grilling, task (see Ticket types).
A session claims a ticket before any work, using the tracker's atomic claim or assignment operation. Record the session owner as well as the developer so concurrent sessions for the same person can distinguish their claims. If the tracker cannot claim atomically, one coordinator serializes claims and shared-map updates. An open ticket with no active claim is unclaimed.
Use the tracker's native dependency relationships so its interface shows which tickets are available. Only a tracker that lacks native blocking falls back to a body convention. A ticket is unblocked when every ticket blocking it is resolved with the required decision; the frontier is the open, unblocked, unclaimed children, the edge of the known.
The answer isn't part of the body; it's recorded on resolution (see Work through the map). Assets created while resolving a ticket are linked from the issue, not pasted in.
Ticket types
Mark each ticket HITL when it requires a live exchange with the human, or AFK when the agent can resolve it alone. Resolve HITL tickets through that exchange. The agent cannot supply the human's answers.
- Research (AFK): Reading documentation, third-party APIs, or local resources like knowledge bases to establish a fact needed for a decision. Resolve through primary documentation and available search tools, using a focused research subagent when available and permitted. Record sources and separate findings from inference. Use when knowledge outside the current working directory is required.
- Prototype (HITL): Create a rough artifact for the human to assess (an outline, a rough take, a stub, or UI/logic code) through prototype. Link the prototype as an asset. Use when "how should it look" or "how should it behave" is the key question.
- Grilling (HITL): Conversation. The default case. Read grilling and domain-modeling.
- Task (HITL or AFK): Manual work that must happen before a decision can be made: nothing to decide, prototype, or research, but the discussion is blocked until it's done. Signing up for a service so its API can be judged, provisioning access, moving data so its shape can be seen. This is the one type that does rather than decides, and it earns its place by unblocking a decision, not by delivering the destination. The agent drives authorized work alone where it can (AFK); otherwise it hands the human a precise checklist (HITL). Resolved when the work is done; the answer records what was done and any resulting facts (credentials location, new URLs, row counts) later tickets depend on.
Fog of war
The fog of war is the set of in-scope decisions you cannot yet phrase as specific questions. Resolving a ticket can make some of those questions clear enough to become new tickets.
Record this uncertainty under Not yet specified, with the suspected question or area to revisit. Give collaborators enough context to understand what remains unknown without inventing ticket boundaries prematurely.
Fog or ticket? The test is whether you can state the question precisely now, not whether you can answer it now.
- Ticket when the question is already sharp, even if it's blocked and you can't act on it yet.
- Not yet specified when you can't yet phrase it that sharply. Revisit it as related decisions resolve. It may produce several tickets or none.
Not yet specified excludes what's already decided (Decisions so far), what's already a live ticket, and what's out of scope (the next section).
Out of scope
Record work beyond the destination under Out of scope. Keep it separate from in-scope questions that are not yet specified.
Reconsider out-of-scope work only when the destination changes. Treat that change as a new effort.
When an existing ticket proves out of scope, close it with that status. Add its title, reason, and link under Out of scope. Keep it out of Decisions so far, which indexes decisions made toward the destination.
Invocation
Two modes. Either way, resolve one decision ticket per session by default, with the exception of research tickets. Continue further when the user explicitly requests it.
Chart the map
User invokes with a loose idea.
- Name the destination. Use grilling and domain-modeling to pin down what this map is finding its way to: the spec, decision, or change. The destination fixes the scope, so it's settled first.
- Map the frontier. Grill again, breadth-first this time: fan out across the whole space rather than deep on any one thread, surfacing the open decisions and the first steps takeable now. If this surfaces no fog (the way to the destination is already clear, the whole journey small enough for one session), you don't need a map. Report that the route is clear. Hand off to multi-phase-plan for several PRs, to-spec for a durable spec, or implement for a settled task, within the user's authorization.
- Create the map (label
wayfinder:map): Destination and Notes filled in, Decisions-so-far empty, the fog sketched into Not yet specified. - Create the tickets you can specify now as child issues of the map, then wire blocking edges in a second pass (issues need ids before they can reference each other). Wiring sorts them into the frontier and the blocked; everything you can't yet specify stays in the fog: the Not yet specified section.
- Resolve the research tickets. Claim each one before dispatch. Use independent subagents when available and permitted, bounded by available capacity, or work sequentially. Record findings and source links in the ticket's resolution, with links to any durable artifacts. The coordinator integrates resolutions into the shared map.
- Stop after charting and research. Leave human decisions open for the next exchange.
Work through the map
User invokes with a map (URL, number, or local path). A ticket is optional: without one, you pick the next decision, not the user.
- 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 in order. Claim it: record your session ownership before any work. If the named ticket is blocked or already claimed, report that state instead of taking it over. If no frontier ticket exists, report the unresolved blockers or claims; declare the route clear only when no unresolved in-scope tickets or fog remain.
- Resolve it. Zoom as needed: fetch the full body of any related or closed ticket on demand; read whichever skills the
## Notesblock names. If in doubt, read grilling and domain-modeling. - Record the resolution: post the answer as a resolution comment, close the issue, and append a context pointer to the map's Decisions-so-far.
- Add newly-surfaced tickets (create-then-wire); graduate any fog the answer has made specifiable, clearing each graduated patch from Not yet specified so it lives only as its new ticket. If the answer reveals that a ticket (this one or another) sits beyond the destination, rule it out of scope rather than resolving it on the route. If the decision invalidates other parts of the map, update them or close them as superseded, retaining their history and links. A canceled blocker does not count as a resolved prerequisite; update its dependents before admitting them to the frontier.
The user may run unblocked tickets in parallel, so expect other sessions to be editing the tracker concurrently. Re-read current state before updating the shared map; preserve other sessions' decisions and use the tracker's concurrency controls.
When passing unfinished work to another session, read handoff. Keep decision findings in the map and ticket records, and follow the chosen tracker's claim-release procedure when the owning session stops.
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.

