Community코딩 & 개발github.com

mattpocock/wayfinder

하나의 에이전트 세션이 처리하기에는 너무 큰 작업 덩어리를 이슈 트래커 위의 공유 의사결정 티켓 맵으로 계획하고, 목적지까지 가는 길이 명확해질 때까지 티켓을 하나씩 해결합니다.

wayfinder란 무엇인가요?

Wayfinder는 너무 커서 한 번의 AI 에이전트 세션에 담을 수 없는 막연한 아이디어를 구조화된 의사 결정 맵으로 변환하는 스킬입니다. 목적지를 직접 돌진하는 대신, 리포지토리의 이슈 트래커에 'wayfinder:map'이라는 레이블이 붙은 단일 이슈로 맵을 만들고, 각 하위 이슈는 의사 결정 티켓 역할을 합니다. 각 티켓은 단순한 작업 단위가 아닌 해결해야 할 질문(결정 사항, 조사, 프로토타입 등)을 나타냅니다. 에이전트는 세션당 하나의 티켓만 해결하며, 티켓 유형(Research, Prototype, Grilling, Task)에 따라 자동으로 처리하거나(HITL) 사람의 개입이 필요합니다. 이 접근 방식은 복잡한 작업을 관리 가능한 의사 결정 단위로 분해하여, 마치 전쟁 게임의 안개(Fog of War)를 걷어내듯 점진적으로 목적지로 가는 명확한 경로를 발견하도록 돕습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mattpocock/skills/tree/main/skills/engineering/wayfinder

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

느슨한 아이디어가 도착했습니다. 하나의 에이전트 세션으로는 너무 크고, 안개에 싸여 있습니다. 여기서 목적지까지 가는 길이 아직 보이지 않습니다. Wayfinding은 목적지를 향해 돌진하는 것이 아니라 그 길을 찾는 것입니다. 이 스킬은 리포지토리의 이슈 트래커에 공유 맵으로 경로를 그리고, 경로가 명확해질 때까지 의사 결정 티켓(실행할 빌드 조각이 아닌, 해결이 곧 결정인 질문)을 하나씩 작업합니다.

목적지는 작업마다 다르며, 이름을 짓는 것이 첫 번째 차트 작성 행위입니다. 이는 모든 티켓의 형태를 결정합니다. 목적지는 인계하여 반복할 명세일 수도 있고, 계획을 시작하기 전에 확정할 결정일 수도 있으며, 데이터 구조 마이그레이션처럼 제자리에서 변경하는 작업일 수도 있습니다. 맵은 도메인에 구애받지 않습니다. 엔지니어링 작업, 코스 콘텐츠 등 그 형태에 맞는 모든 것이 가능합니다.

계획, 실행 아님

Wayfinder는 기본적으로 계획입니다. 각 티켓은 결정을 해결하며, 누군가 가서 실제 작업을 수행하기 전에 결정할 사항이 하나도 남지 않아 길이 명확해지면 맵이 완료됩니다. 작업을 그냥 실행하려는 충동은 일반적으로 맵의 끝에 도달하여 인계할 때가 되었음을 알리는 신호입니다. 작업은 노트에서 이 기본값을 재정의하여 실행을 맵 자체로 가져올 수 있지만, 그렇지 않은 경우에는 결정을 생성하고 결과물을 생성하지 마십시오.

이름으로 참조

모든 맵과 티켓은 이슈이므로 이름(제목)이 있습니다. 사람이 읽는 모든 것(서술, 맵의 '지금까지의 결정 사항')에서, 순수한 ID, 번호 또는 슬러그가 아닌 그 이름으로 참조하십시오. #42, #43, #44의 벽은 읽을 수 없습니다. 이름은 한눈에 읽힙니다. ID와 URL이 사라지는 것은 아닙니다. 이름이 링크를 감싸지만, 이름 안에 포함되어 있을 뿐 이름을 대신하지는 않습니다.

맵

맵은 이 리포지토리의 이슈 트래커에 있는 단일 이슈로, wayfinder:map 레이블이 붙어 있으며 표준 아티팩트입니다. 티켓은 맵의 하위 이슈입니다.

맵은 색인이지 저장소가 아닙니다. 내려진 결정 사항을 나열하고 세부 정보를 보유한 티켓을 가리킵니다. 결정은 정확히 한 곳, 즉 해당 티켓에 존재하므로 맵은 이를 다시 기술하지 않고 요약과 링크만 제공합니다.

맵, 하위 티켓, 차단, 프론티어 쿼리가 물리적으로 존재하는 위치는 트래커에 따라 다릅니다. 이슈 트래커가 제공되어 있어야 합니다. 그렇지 않은 경우 사용자에게 /setup-matt-pocock-skills를 실행하라고 알리십시오. 이 리포지토리가 이러한 것을 어떻게 표현하는지 트래커 문서의 'Wayfinding 작업' 섹션을 참조하십시오. 트래커가 제공되지 않은 경우 기본적으로 로컬 마크다운 트래커를 사용하십시오.

맵 본문

전체 맵은 저해상도로, 세션당 한 번 로드됩니다. 열린 티켓은 나열되지 않습니다. 열린 하위 이슈이며 쿼리로 찾습니다.

## 목적지

<이 맵의 끝에 도달했을 때의 모습: 이 작업이 가고자 하는 명세, 결정 또는 변경 사항. 한두 줄; 모든 세션이 티켓을 선택하기 전에 이를 기준으로 방향을 정합니다.>

## 노트

<도메인; 모든 세션이 참조해야 하는 스킬; 이 작업에 대한 고정 선호도>

## 지금까지의 결정 사항

<!-- 색인: 닫힌 티켓당 한 줄, 관련성을 판단하기에 충분하며, 세부 정보를 위해 링크를 확대합니다 -->

- [<닫힌 티켓 제목>](link): <한 줄 요약 답변>

## 아직 지정되지 않음

<!-- '전쟁의 안개' 참조: 아직 티켓으로 만들 수는 없지만 범위 내에 있는 안개; 프론티어가 전진함에 따라 업그레이드됨 -->

## 범위 외

<!-- '범위 외' 참조: 목적지를 넘어선 작업으로 판단됨; 종료되었으며 업그레이드되지 않음 -->

티켓

각 티켓은 맵의 하위 이슈입니다. 트래커의 이슈 ID가 해당 티켓의 정체성입니다. 본문은 질문이며, 하나의 100K 토큰 에이전트 세션에 맞게 크기가 조정됩니다:

## 질문

<이 티켓이 해결하는 결정 또는 조사>

각 티켓은 wayfinder:<type> 레이블 중 하나(research, prototype, grilling, task)를 가집니다(티켓 유형 참조).

세션은 맵을 진행하는 개발자에게 티켓을 할당하여 티켓을 클레임합니다. 먼저 작업 전에 수행하므로 동시 세션이 이를 건너뜁니다. 그 할당자가 곧 클레임입니다. 할당되지 않은 열린 티켓은 클레임되지 않은 것입니다.

차단은 트래커의 기본 종속성 관계를 사용합니다. 이는 트래커 자체 UI에서 프론티어를 시각적으로 렌더링하기 때문에 필수적입니다. 따라서 사람이 맵을 열지 않고도 가져갈 수 있는 것을 볼 수 있습니다. 기본 차단 기능이 없는 트래커만 본문 규칙으로 대체합니다. 티켓을 차단하는 모든 티켓이 닫히면 티켓의 차단이 해제됩니다. 프론티어는 열려 있고, 차단되지 않았으며, 클레임되지 않은 하위 항목, 즉 알려진 영역의 가장자리입니다.

답변은 본문의 일부가 아닙니다. 해결 시 기록됩니다(맵을 통해 작업 참조). 티켓을 해결하는 동안 생성된 자산은 본문에 붙여넣지 않고 이슈에서 링크됩니다.

티켓 유형

모든 티켓은 HITL(인간이 루프에 있음, 스스로 말하는 인간과 함께 작업) 또는 AFK(에이전트 단독으로 진행)입니다. HITL 티켓은 해당 실시간 교환을 통해서만 해결됩니다. 에이전트는 절대 인간의 역할을 대신할 수 없습니다(자신의 질문에 스스로 답하는 grill 에이전트는 이를 위반한 것입니다).

  • Research (AFK): 문서, 타사 API 또는 지식 기반과 같은 로컬 리소스를 읽어 결정이 기다리는 사실을 표면화합니다. Skill 도구를 "research"와 함께 호출하는 하위 에이전트에 의해 해결됩니다. 현재 작업 디렉토리 외부의 지식이 필요한 경우 사용합니다.
  • Prototype (HITL): Skill 도구를 "prototype"과 함께 호출하여 저렴하고 대략적이며 구체적인 아티팩트(개요, 초안, 스텁 또는 UI/로직 코드)를 만들어 토론의 충실도를 높입니다. 프로토타입을 자산으로 링크합니다. "어떻게 보여야 하는가" 또는 "어떻게 동작해야 하는가"가 핵심 질문인 경우 사용합니다.
  • Grilling (HITL): 대화. 기본 케이스입니다. 항상 Skill 도구를 두 번 호출하십시오. 한 번은 "grilling" 용, 한 번은 "domain-modeling" 용입니다.
  • Task (HITL 또는 AFK): _결정_을 내리기 전에 수행되어야 하는 수동 작업입니다. 결정할 것, 프로토타입할 것, 조사할 것은 없지만 논의가 완료될 때까지 차단됩니다. 서비스에 가입하여 API를 평가할 수 있도록 하기, 액세스 권한 프로비저닝, 데이터 이동하여 형태를 볼 수 있도록 하기. 이것은 _결정_보다는 _수행_하는 유일한 유형이며, 결정을 차단 해제하여 그 자리를 얻지 목적지를 제공하지는 않습니다. 에이전트는 가능한 경우(AFK) 단독으로 처리합니다. 그렇지 않으면 인간에게 정확한 체크리스트(HITL)를 전달합니다. 작업이 완료되면 해결됩니다. 답변에는 수행된 작업과 이후 티켓이 의존하는 결과 사실(자격 증명 위치, 새 URL, 행 수)이 기록됩니다.

전쟁의 안개

맵은 의도적으로 불완전합니다. 아직 보이지 않는 것을 차트로 작성하지 마십시오. 라이브 티켓 너머에는 전쟁의 안개가 있습니다. 다가오고 있지만 아직 확정할 수 없는 결정 및 조사에 대한 흐릿한 전망이며, 이는 아직 열려 있는 질문에 달려 있기 때문입니다. 티켓을 해결하면 그 앞의 안개가 걷히고, 이제 지정 가능해진 것은 새로운 티켓으로 하나씩 업그레이드되어 최종적으로 목적지까지 가는 길이 명확해지고 티켓이 남지 않을 때까지 진행됩니다.

맵의 아직 지정되지 않음 섹션은 그 흐릿한 전망이 기록되는 곳입니다. 의심되는 질문, 나중에 다시 방문할 영역입니다. 목적지 방향으로 발견되지 않은 프론티어입니다. 여기의 모든 것은 범위 내에 있지만 티켓으로 만들기에는 충분히 선명하지 않습니다. 전망이 허용하는 대로 느슨하게 또는 완전하게 작성하십시오. 이는 작업이 향하는 방향을 읽는 협력자를 위한 이정표 역할을 합니다.

안개인가 티켓인가? 테스트는 지금 질문을 정확하게 진술할 수 있는지 여부이지, 지금 답변할 수 있는지 여부가 아닙니다.

  • 티켓인 경우: 질문이 이미 명확할 때, 차단되어 아직 조치를 취할 수 없더라도 마찬가지입니다.
  • 아직 지정되지 않음인 경우: 아직 그렇게 명확하게 표현할 수 없을 때입니다. 안개를 미리 티켓 크기로 자르지 마십시오. 안개는 티켓보다 거칠며, 하나의 패치가 프론티어에 도달하면 여러 티켓으로 업그레이드되거나 전혀 업그레이드되지 않을 수 있습니다.

아직 지정되지 않음은 이미 결정된 사항(지금까지의 결정 사항), 이미 라이브 티켓인 사항, 그리고 범위를 벗어난 사항(다음 섹션)을 제외합니다.

범위 외

안개는 목적지 방향으로만 모입니다. 목적지가 범위를 고정하므로 그 너머의 작업은 범위 외입니다. 이는 안개가 아니며 아직 지정되지 않음에 속하지 않습니다. 맵에 자체 범위 외 섹션이 있습니다. 이 작업에서 의식적으로 제외된 작업입니다. 선명도가 아닌 범위가 여기에 속하게 합니다.

범위를 벗어난 작업은 절대 업그레이드되지 않습니다(프론티어는 목적지에서 멈춥니다). 따라서 목적지가 다시 그려지는 경우에만 반환되며, 그때도 재개가 아닌 새로운 작업으로 반환됩니다.

무언가를 범위 외로 판단하는 것은 범위 지정 행위이지 경로의 단계가 아닙니다. 이미 존재하는 티켓이 목적지를 넘어선 것으로 판명된 경우(차트 작성 중 잘못 범위가 지정되었거나 해결로 인해 드러난 경우), 닫고(닫힌 티켓은 프론티어에 없음이 명확함) 범위 외 섹션에 한 줄(요약 및 범위 외인 이유, 닫힌 티켓 링크)을 남깁니다. 이는 실제로 걸어온 경로를 기록하는 지금까지의 결정 사항에는 남지 않습니다. 범위 경계는 그 위의 단계가 아닙니다.

호출

두 가지 모드입니다. 어느 쪽이든, 리서치 티켓을 제외하고 세션당 둘 이상의 티켓을 절대 해결하지 마십시오.

맵 차트 작성

사용자가 느슨한 아이디어로 호출합니다.

  1. 목적지 이름 지정. Skill 도구를 두 번 호출하십시오. 한 번은 "grilling" 용, 한 번은 "domain-modeling" 용입니다. 이 맵이 찾아가는 대상(명세, 결정 또는 변경 사항)을 확정합니다. 목적지가 범위를 고정하므로 먼저 결정됩니다.
  2. 프론티어 매핑. 다시 Grilling을 수행하되, 이번에는 너비 우선으로 합니다. 즉, 특정 스레드에 깊이 들어가지 않고 전체 공간에 걸쳐 확장하여 열린 결정과 지금 취할 수 있는 첫 번째 단계를 표면화합니다. 안개가 전혀 나타나지 않으면(목적지까지 가는 길이 이미 명확하고 전체 여정이 한 세션에 충분히 작은 경우) 맵이 필요하지 않습니다. 중단하고 사용자에게 어떻게 진행할지 물어보십시오.
  3. 맵 생성(레이블 wayfinder:map): 목적지와 노트가 채워지고, 지금까지의 결정 사항은 비어 있으며, 안개는 아직 지정되지 않음에 스케치됩니다.
  4. 지금 지정할 수 있는 티켓을 생성하여 맵의 하위 이슈로 만든 다음, 두 번째 패스에서 차단 가장자리를 연결합니다(이슈는 서로 참조하려면 ID가 필요함). 연결하면 티켓이 프론티어와 차단된 것으로 정렬됩니다. 아직 지정할 수 없는 모든 것은 안개( 아직 지정되지 않음 섹션)에 남아 있습니다.
  5. 리서치 하위 에이전트 실행. 방금 생성한 각 research 티켓에 대해 Skill 도구를 "research"와 함께 호출하는 하위 에이전트를 시작하여 티켓의 컨텍스트 포인터와 함께 임시 research/<name> 브랜치에서 그 결과를 캡처하여 병렬로 해결합니다.
  6. 중지: 차트 작성은 한 세션의 작업입니다. 아무것도 직접 해결하지 않습니다.

맵을 통해 작업

사용자가 맵(URL 또는 번호)으로 호출합니다. 티켓은 선택 사항입니다. 티켓 없이 사용자가 아닌 다음 결정을 선택합니다.

  1. 맵 로드: 저해상도 보기, 모든 티켓 본문은 아닙니다.
  2. 티켓 선택. 사용자가 지정한 경우 사용합니다. 그렇지 않으면 순서대로 첫 번째 프론티어 티켓을 가져옵니다. 클레임: 작업 전에 자신에게 할당하십시오.
  3. 해결. 필요에 따라 확대: 관련되거나 닫힌 티켓의 전체 본문을 요청 시 가져오고, ## 노트 블록에 명명된 스킬에 대해 Skill 도구를 호출합니다. 확실하지 않은 경우 Skill 도구를 두 번 호출하십시오. "grilling" 및 "domain-modeling" 용입니다.
  4. 해결 기록: 해결 댓글로 답변을 게시하고, 이슈를 닫고, 맵의 '지금까지의 결정 사항'에 컨텍스트 포인터를 추가합니다.
  5. 새로 표면화된 티켓 추가(생성 후 연결); 답변이 지정 가능하게 만든 모든 안개를 업그레이드하고, 업그레이드된 각 패치를 아직 지정되지 않음에서 제거하여 새로운 티켓으로만 존재하도록 합니다. 답변이 티켓(현재 또는 다른 것)이 목적지 너머에 있음을 드러내는 경우, 경로에서 해결하는 대신 범위 외로 판단합니다. 결정이 맵의 다른 부분을 무효화하는 경우 해당 티켓을 업데이트하거나 삭제합니다.

사용자는 차단 해제된 티켓을 병렬로 실행할 수 있으므로 다른 세션이 동시에 트래커를 편집할 수 있습니다.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

mattpocock/ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

mattpocock/caveman

Ultra-compressed communication mode. Cuts token usage ~75% by dropping filler, articles, and pleasantries while keeping full technical accuracy. Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief", or invokes /caveman.

mattpocock/claude-handoff

Hand the current conversation off to a fresh background agent that picks up the work immediately.

mattpocock/codebase-design

Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.

mattpocock/design-an-interface

Generate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions "design it twice".

mattpocock/diagnose

Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says "diagnose this" / "debug this", reports a bug, says something is broken/throwing/failing, or describes a performance regression.

mattpocock/diagnosing-bugs

Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.

mattpocock/domain-modeling

Build and sharpen a project's domain model. Use when the user wants to pin down domain terminology or a ubiquitous language, record an architectural decision, or when another skill needs to maintain the domain model.

mattpocock/edit-article

Edit and improve articles by restructuring sections, improving clarity, and tightening prose. Use when user wants to edit, revise, or improve an article draft.

mattpocock/git-guardrails-claude-code

Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.

mattpocock/grilling

Grill the user relentlessly about a plan or design. Use when the user wants to stress-test a plan before building, or uses any 'grill' trigger phrases.

mattpocock/grill-me

Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".

mattpocock/grill-with-docs

Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.

mattpocock/handoff

Compact the current conversation into a handoff document for another agent to pick up.

mattpocock/implement

Implement a piece of work based on a PRD or set of issues.

mattpocock/implement-spec

Implement a specification in code.

mattpocock/improve-codebase-architecture

Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.

mattpocock/loop-me

Grill me about specs for the workflows I want to build, within this workspace.

mattpocock/migrate-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.

mattpocock/obsidian-vault

Search, create, and manage notes in the Obsidian vault with wikilinks and index notes. Use when user wants to find, create, or organize notes in Obsidian.

관련 스킬