From mattpocock-skills
Breaks down large, foggy goals into a shared map of investigation tickets on your issue tracker, resolved one session at a time.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mattpocock-skills:wayfinderThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A loose idea has arrived — too big for one agent session, and wrapped in fog: the route from here to a plan isn't visible yet. This skill charts it as a **shared map** on the repo's issue tracker, then works its tickets one at a time. The map is domain-agnostic — engineering work, course content, whatever fits the shape.
A loose idea has arrived — too big for one agent session, and wrapped in fog: the route from here to a plan isn't visible yet. This skill charts it as a shared map on the repo's issue tracker, then works its tickets one at a time. The map is domain-agnostic — engineering work, course content, whatever fits the shape.
Every map and ticket is an issue, so it has a name — its title. In everything the human reads — narration, the map's Decisions-so-far — refer to it by that name, never by a bare id, number, or slug. A wall of #42, #43, #44 is illegible; names read at a glance. The id and URL don't vanish — a name wraps its link — but they ride inside the name, never stand in for it.
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, not a store. It lists the decisions made and points at the tickets that hold their detail; a decision lives in exactly one place — its ticket — so the map never restates it, only gists it and links.
Where the map, its child tickets, blocking, and frontier queries physically live is tracker-specific. Consult docs/agents/issue-tracker.md (the "Wayfinding operations" section) for how this repo expresses them. If that doc is absent, default to the local-markdown tracker.
The whole map at low resolution, loaded once per session. Open tickets are not listed — they are open child issues, found by query.
## Notes
<domain; skills every session should consult; standing preferences for this effort>
## Decisions so far
<!-- the index — one line per closed ticket: enough to judge relevance, then zoom the link for the detail the ticket holds -->
- [<closed ticket title>](link) — <one-line gist of the answer>
## Fog
<!-- see "Fog of war" for what belongs here -->
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 100K token agent session:
## 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 by assigning it to the dev driving the map, first, before any work, so concurrent sessions skip it. That assignee is the claim: an open, unassigned ticket is unclaimed.
Blocking uses the tracker's native dependency relationship — essential because it renders the frontier visually in the tracker's own UI, so the human sees what's takeable without opening the map. Only a tracker that lacks native blocking falls back to a body convention. A ticket is unblocked when every ticket blocking it is closed; 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.
The map is deliberately incomplete: don't chart what you can't yet see. Beyond the tickets lies fog — the dim view of decisions and investigations you can tell are coming but can't yet pin down, because they hang on questions still open. Resolving a ticket clears the fog ahead of it, graduating whatever's now specifiable into fresh tickets — one at a time, until the way to the goal is clear and no tickets remain.
The map's Fog section is where that dim view is written down: the suspected question, the area to revisit later, the risk you're deferring. Write as loosely or as fully as the view allows; it doubles as a signpost for collaborators reading where the effort is headed.
Fog or ticket? The test is whether you can state the question precisely now — not whether you can answer it now.
Fog excludes only what's already decided (that's Decisions so far) and what's already a ticket.
Two modes. Either way, never resolve more than one ticket per session.
User invokes with a loose idea.
/grilling and /domain-modeling session to surface the open decisions.wayfinder:map): Notes filled in, Decisions-so-far empty, Fog sketched.User invokes with a map (URL or number). A ticket is optional — without one, you pick the next decision, not the user.
## Notes block names. If in doubt, use /grilling and /domain-modeling.The user may run unblocked tickets in parallel, so expect other sessions to be editing the tracker concurrently.
npx claudepluginhub esonhugh/marketplace --plugin mattpocock-skillsPlans large, multi-session work by creating a shared map of investigation tickets in the issue tracker, then resolves them one by one to clarify the path forward.
Turns a loose idea into a git-tracked map of typed investigation tickets (research, prototype, grilling) and resolves them one per session. For work too fuzzy for a campaign, too big for a single intake item.
Breaks down a loose idea into a sequenced map of investigation tickets (research, prototype, grilling) and drives them to resolution one session at a time.