Communitygithub.com

레고 플랜

확정된 변경 사항을 작은 블록들의 순서 있는 DAG(방향성 비순환 그래프)로 변환합니다. 아직 확정되지 않은 의도, 오타, 주석, 포매팅, 문서 전용 작업 또는 구현 자체 작성에는 사용하지 마세요.

레고 플랜란 무엇인가요?

이 스킬은 확정된 변경 사항을 받아 단순한 기본 요소에서 완전한 기능에 이르는 계층적 DAG(방향성 비순환 그래프)로 분할합니다. 계획만 생성하고 이후 작업은 중단합니다. 그래프는 피라미드 구조로, 하위 레이어는 독립적인 블록들이고 상위 레이어는 이를 조합한 블록들이며, 마지막 레이어는 하나의 완료 노드입니다. 후속 드라이버가 동일 레이어 노드를 병렬로 실행하고 `status`를 변경하며 이 그래프를 다시 그릴 수 있습니다. 이 스킬은 서브 에이전트를 파견하거나 다른 스킬을 로드하지 않습니다. Claude Code, Cursor, Codex 등 AI 에이전트 환경에서 사용할 수 있으며, `.agent/scratch/lego-plan.json` 파일을 통해 라이브 보드를 관리합니다. 핵심 규칙은 계획만 작성하고 구현하지 않으며, 사이클을 허용하지 않고, 실행 후 중단하는 것입니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AlemTuzlak/skills/tree/HEAD/skills/lego-plan

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

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

문서

레고 플랜은(는) 무엇을 하나요?

확정된 변경 사항을 계층적 DAG로 변환합니다: 단순 기본 요소에서 시작하여 완전한 기능에 이릅니다. 계획만 세우고 중단합니다.

그래프는 피라미드입니다: 하단에는 독립적인 블록들, 그 위에는 조합된 블록들, 맨 위에는 하나의 완료 노드가 있습니다. 후속 드라이버는 동일 레이어의 노드를 병렬로 실행하고, status를 변경하며, 이 그래프를 다시 그릴 수 있습니다. 이 스킬은 서브 에이전트를 파견하지 않습니다. 다른 스킬을 로드하지 않습니다.

사용 시기

확정된 변경 사항을 드라이버가 따라갈 수 있는 구현 맵으로 전환해야 할 때 로드합니다.

  • 필요: 무엇을 구축할지 이미 결정된 경우. 이 대화에 작업할 파일 목록이나 경로 선택이 이미 있다면 이를 사용합니다. 없다면, 확정된 의도와 코드로부터 파생합니다. 두 번째 시스템 맵을 발명하지 마십시오.
  • 건너뜀: 오타, 주석, 포매팅, 코드 없는 문서.
  • 의도가 아직 열려 있는 경우: 중단합니다. 변경 사항이 확정될 때까지 질문합니다. 선택되지 않은 기능에 대해 블록을 쌓지 마십시오.

노드 하나도 DAG입니다. 전체 계약을 출력합니다.

하드 게이트

  1. 계획만. 프로덕션 코드를 작성하지 마십시오. 테스트를 작성하지 마십시오. done when에 검사를 이름만 적고 여기서 구현하지 마십시오.
  2. 출력 후 중단. 채팅 DAG와 스크래치 파일만 표시합니다. 파견하지 마십시오. 다음 스킬을 로드하지 마십시오.
  3. 사이클 없음. 블록이 이후 블록에 의존한다면 분할이 잘못된 것입니다. 다시 분할하십시오.
  4. 승인을 기다리지 마십시오. DAG를 보여주고 중단합니다. 사용자가 잘못된 경우 인터럽트합니다.
  5. 사용자를 위해 스크래치 파일을 열지 마십시오. docs/ 아래에 계획을 작성하지 마십시오.

노드 세분화

그래프 노드 (병렬 단위): 서브 에이전트가 다른 진행 중인 노드를 기다리지 않고 소유할 수 있는 독립적으로 제공 가능한 기본 요소.

예시: write fetchOrder, write OrderCard, wire fetchOrder into the loader.

너무 큼: implement auth. 분할합니다. 너무 작음: rename a variable. 그것이 필요한 노드에 통합합니다.

파트 (노드 내부): 해당 노드가 컴파일되기 위해 함께 배치되어야 하는 함수들. 하나의 서브 에이전트가 순서대로 파트를 수행합니다. 파트를 분기하지 마십시오.

예시 노드 fetch-order:

  • files: src/fetchOrder.ts, src/fetchOrder.test.ts
  • parts: Order 타입, 그 다음 fetchOrder, 그 다음 src/fetchOrder.test.ts 작성 또는 확장
  • 이러한 파트는 별도의 그래프 노드가 아닙니다.

그래프 형태

  • 레이어 0: depends on: none인 노드. 드라이버가 모두 병렬로 실행할 수 있습니다.
  • 레이어 N: 모든 의존성이 이전 레이어에 있는 노드.
  • 마지막 레이어: 기능이 종단 간 작동함을 의미하는 하나의 노드(또는 밀접한 집합).
  • 서로 의존하지 않는 두 노드는 반드시 동일한 레이어를 공유해야 합니다(또는 서로 기다리지 않는 레이어에 위치해야 함).
  • depends on은 노드 id를 나열하며, 파일 이름을 나열하지 않습니다.

동일 파일: 두 노드가 동일한 경로를 생성하거나 편집하는 경우, 동일한 레이어를 공유해서는 안 됩니다. 병합하거나 depends on 엣지를 추가하여 하나가 기다리게 하십시오. 병렬 실행을 위해 파일을 분할하지 마십시오. 경로를 읽기만 하는 두 노드는 동일한 레이어를 공유할 수 있습니다. files는 생성 또는 편집 경로만 나열합니다. 동일 파일 규칙에는 테스트 파일도 포함됩니다.

노드 필드

모든 노드는 다음 일곱 가지 필드를 갖습니다:

  1. id: 케밥 케이스, 이 계획 내에서 고유하며 안정적입니다(후속 드라이버가 이 id를 완료로 표시합니다).
  2. name: 짧은 영어 이름.
  3. depends on: 다른 id 또는 none.
  4. files: 생성 또는 편집할 경로입니다. done when의 테스트 경로를 포함합니다.
  5. parts: 순서 있는 C 목록. 마지막 파트는 해당 테스트를 작성하거나 확장하는 것입니다. done when이 수동 검사이고 테스트 파일이 없는 경우, 마지막 파트는 해당 검사이며 files에는 테스트 경로가 없습니다.
  6. done when: 드라이버가 의존성을 시작하기 전에 실행할 수 있는 테스트 파일 또는 명령어.
  7. status: 이 스킬은 항상 pending을 작성합니다. 후속 드라이버가 in-progress 또는 done을 설정할 수 있습니다. 이 스킬은 결코 이 두 값을 작성하지 않습니다.

계획에 전체 소스 코드를 넣지 마십시오.

라이브 보드

경로: <repo>/.agent/scratch/lego-plan.json

채팅 펜스와 동일한 JSON입니다. 에이전트는 이 파일을 따릅니다. 사용자 대상 제품은 채팅 그림입니다.

  • 필요한 경우 .agent/scratch/를 생성합니다.
  • 항상 덮어씁니다. 기존 노드가 in-progress 또는 done이더라도 묻지 마십시오.
  • 저장소에 git이 있는 경우, .gitignore에 .agent/scratch/가 포함되어 있는지 확인합니다. .gitignore가 존재하고 해당 줄이 없으면 추가합니다. .gitignore가 없으면 해당 한 줄로 생성합니다.
  • 파일을 열지 마십시오. 채팅에 두 번째 사본으로 덤프하지 마십시오. JSON 펜스가 사용자가 보는 사본입니다.

절차

절차 1: 확정된 변경 사항 확인

  1. 변경 사항이 명확하면 계속합니다.
  2. 사용자가 여전히 원하는 것을 선택하고 있다면 중단합니다. 질문합니다. 확정된 후 여기로 돌아옵니다.

절차 2: 세션에 이미 있는 입력 수집

  1. 이 대화에 이미 완료 기준 파일 목록, 파트 또는 경로 선택이 있다면, 이를 시작 집합으로 사용합니다.
  2. 그렇지 않으면, 확정된 의도와 파일 이름을 지정하기 위해 읽어야 하는 코드로부터 블록을 파생합니다. 전체 저장소를 둘러보지 마십시오.

절차 3: 노드와 파트로 분할

  1. 후보 기본 요소(B 세분화)를 나열합니다.
  2. 각 기본 요소에 대해 함께 컴파일되어야 하는 C-파트를 나열합니다. 테스트(또는 수동 검사)를 작성하거나 확장하는 것으로 끝냅니다.
  3. depends on을 그립니다: 노드는 다른 노드의 결과를 호출하거나 포함하는 경우에만 그 노드에 의존합니다.
  4. 의존성으로부터 레이어를 할당합니다. 독립적인 노드는 동일한 레이어에 배치합니다.
  5. 두 노드가 동일한 경로를 생성하거나 편집하고 동일한 레이어를 공유하는 경우, 병합하거나 엣지를 추가합니다. 그런 다음 레이어를 재할당합니다.
  6. 사이클이 나타나면, 잘못된 노드를 분할하고 이 절차를 반복합니다.

절차 4: 각 노드 채우기

일곱 개의 필드를 채웁니다. 모든 노드의 status는 pending입니다.

절차 5: 채팅에 DAG 표시

다음 순서로 표시합니다:

  1. 레이어: 레이어 0부터 마지막까지. 각 레이어 아래에 해당 레이어의 노드들.
  2. 노드: 각 id에 대한 일곱 개의 필드.
  3. Mermaid: 항상. 하나의 flowchart(또는 graph TD). 다이어그램의 노드 id는 계획 id와 일치해야 합니다. classDef 없음. 상태 색상 없음. 모든 노드는 pending입니다.
  4. JSON 펜스: 라이브 보드 객체가 포함된 json 블록. id, 의존성, 파일, 파트, doneWhen 및 status의 진실 공급원. 레이어는 depends에서 파생됩니다. layer 필드를 저장하지 마십시오.

그런 다음 절차 6을 수행합니다.

Mermaid 형식:

flowchart TD
  fetch-order[fetch-order]
  order-card[order-card]
  wire-loader[wire-loader]
  fetch-order --> wire-loader
  order-card --> wire-loader

동일 레이어 노드 사이에는 엣지가 없습니다.

JSON 형식:

{
  "version": 1,
  "nodes": [
    {
      "id": "fetch-order",
      "name": "fetch order",
      "depends": [],
      "files": ["src/fetchOrder.ts", "src/fetchOrder.test.ts"],
      "parts": ["Order type", "fetchOrder", "write or extend src/fetchOrder.test.ts"],
      "doneWhen": "pnpm test src/fetchOrder.test.ts",
      "status": "pending"
    }
  ]
}

depends는 id의 배열입니다. 빈 배열은 없음을 의미합니다.

절차 6: 라이브 보드 작성

  1. 동일한 JSON을 .agent/scratch/lego-plan.json에 씁니다(덮어쓰기).
  2. 라이브 보드에서 설명한 대로 .gitignore가 .agent/scratch/를 무시하는지 확인합니다.
  3. 파일을 열지 마십시오.

절차 7: 중단

절차 6 이후 중단합니다. 코드를 작성하지 마십시오. 파견하지 마십시오. 다른 스킬을 로드하지 마십시오.

의사 결정 트리

  • 의도가 확정되지 않음 → 절차 1.
  • 확정된 변경 사항, 구현 맵 필요 → 절차 2 → 3 → 4 → 5 → 6 → 7.
  • 노드 하나 → 여전히 절차 2 → 7 (전체 계약).
  • 오타 / 포맷 / 문서 전용 → 이 스킬이 적용되지 않습니다.
  • 의존성에 사이클 → 절차 3 단계 6.
  • 동일 레이어의 두 노드가 동일한 경로를 편집함 → 절차 3 단계 5.
  • 노드가 "전체 기능 구현"임 → 분할 (절차 3).

레드 플래그

신호의미대신 할 것
이 스킬에서 fetch 함수 작성계획이 구현이 됨절차 7. 중단.
레이어가 없는 하나의 선형 목록분기 불가능독립 노드를 동일한 레이어에 배치.
여기서 서브 에이전트 파견잎이 드라이버가 됨절차 7. 중단.
Mermaid id가 노드 id와 다름드라이버가 완료 표시 불가능두 곳 모두 동일한 케밥 케이스 id 사용.
JSON 펜스가 스크래치 파일과 다름두 개의 진실 공급원하나의 객체를 작성. 두 곳 모두에 복사.
사이클 (a → b → a)분할이 잘못됨분할 및 레이어 재할당.
동일 레이어의 두 노드가 order.ts 편집병렬 쓰기 충돌병합하거나 depends on 엣지 추가.
두 노드가 병렬 실행될 수 있도록 파일 분할요청되지 않은 설계파일 유지. 노드 순서 지정.
files / 마지막 파트에 테스트 경로 누락노드 제공 불가능절차 3 단계 2.
계획 Mermaid에 classDef 또는 상태 색상이 스킬이 진행 상황을 그림스타일 없음. 모두 pending.
하나의 노드 파트가 독립적으로 컴파일될 수 없는 병렬 노드로 분할됨C가 B로 취급됨해당 파트를 하나의 노드 내에 유지.
"Implement auth"가 단일 노드너무 큼기본 요소로 분할.
"괜찮아 보이나요?" 대기게이트는 보여주고 중단출력하고 중단.
스크래치 파일 덮어쓰기 전 질문라이브 보드는 하나의 슬롯절차 6. 덮어쓰기.
.agent/scratch/lego-plan.json 열기사용자 대상 추가채팅만. 파일은 에이전트용.
docs/lego-plan.md 작성추가 산출물채팅 + 스크래치. docs 계획 파일 없음.

오류 처리

  • 세션에 작업할 파일 목록 없음: 의도와 대상 읽기에서 파생. 파일 이름을 지정할 수 없으면 중단하고 무엇이 누락되었는지 말합니다. 경로를 발명하지 마십시오.
  • 사이클: id로 사이클을 보고합니다. 분할합니다. 절차 3을 다시 실행합니다. 사이클릭 Mermaid를 계획으로 표시하지 마십시오.
  • 마지막 레이어가 기능이 작동함을 의미하지 않음: 구성된 조각(와이어 업)에 의존하는 완료 노드를 추가하거나, 현재 마지막 레이어가 이미 종단 간 경로인 이유를 설명합니다.
  • 사용자가 노드가 잘못되었다고 인터럽트: 해당 노드와 이를 가리키는 모든 depends on을 편집합니다. 노드가 여전히 존재하면 id를 안정적으로 유지합니다. 노드를 삭제하면 Mermaid와 JSON에서도 제거합니다. 스크래치 파일을 덮어씁니다. DAG를 다시 표시합니다. 중단합니다.
  • done when이 모호함 ("it works"): 명령어 또는 테스트 경로로 대체합니다. 프로젝트에 아직 테스트 명령어가 없으면 한 줄로 수동 검사를 이름만 지정합니다. 마지막 파트는 해당 검사입니다.
  • git 저장소가 아님: 작업 공간이 쓰기 가능한 경우에도 .agent/scratch/lego-plan.json을 작성합니다. gitignore 단계는 건너뜁니다. 채팅에서 한 줄로 말합니다.
  • 스크래치 쓰기 실패 (권한, 디스크): 여전히 채팅 DAG와 JSON 펜스를 표시합니다. 라이브 보드가 작성되지 않았다고 말합니다. 파일이 존재하는 척하지 마십시오.
  • 기존 스크래치 JSON이 유효하지 않거나 실행 중: 덮어씁니다. 병합하지 마십시오. 묻지 마십시오.

Individual skills in this repo

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

AlemTuzlak/skills

Use when the user wants to write a blog post about a feature, product change, PR, git diff, or any technical topic - accepts marketing briefs, PRs, git refs, codebase paths, or freeform descriptions as input

AlemTuzlak/skills

Use when the user wants to generate a changelog, release notes, or document what changed between versions, tags, or PRs

AlemTuzlak/skills

Use when writing, editing, or organizing documentation, when planning what docs a feature needs, and whenever planning or implementing a new feature or change in a repo (docs ship with the code). Also use when tempted to write docs without showing the discovered readers to the user, without asking for tone, or without loading simple-english and i-have-adhd. Triggers on "write docs for X", "document this feature", "add a guide", "update the docs", "reorganize the docs", "plan feature X", "implement X", or /docs.

AlemTuzlak/skills

Use when a bug is in play: a test fails, CI is red, an API returns the wrong result, a stack trace appears, or the user says it is broken or fix this. Don't use for a new feature with no failure, for types-only work, or for docs.

AlemTuzlak/skills

Use when the user invokes /i-have-adhd, says they have ADHD, or asks for ADHD-friendly output. Also used as a required writing filter by the docs skill. Don't use for marketing copy or after the user says "stop adhd mode" or "normal mode".

AlemTuzlak/skills

Use when the user wants to write a product update email, feature announcement newsletter, or digest email for users or subscribers

AlemTuzlak/skills

Use when the user wants to turn a raw talking-head / screen-share recording into a finished, edited, annotated video plus a full content package. Removes silences, flags mistakes for the user to cut, transcribes, adds transcript-synced overlays (code, on-screen code highlights, word highlights, lists, comparisons, diagrams, section labels, punch-in zooms), renders with original audio, then generates blog/socials/YouTube content. Triggers on "produce a video", "edit my video", "annotate my recording", "/produce-video".

AlemTuzlak/skills

Use when the user runs /prove-it or says prove it, prove the changes, show me in the browser, or asks to prove a UI or API change. Don't use only because the agent is about to say done, for types-only work, or for docs with no behavior to prove.

AlemTuzlak/skills

Use when the user wants to write, draft, or author an RFC (Request for Comments) / technical design doc for a feature, change, or architectural decision. Interactively interviews the user, grounds the proposal in the actual codebase, presents 2-3 concrete API/code-snippet approaches to choose from, then writes a review-ready RFC. Triggers on "write an RFC", "draft an RFC", "RFC for X", "design doc for X", or /rfc.

AlemTuzlak/skills

Use when the user wants to deeply learn a new topic from scratch. Runs a pre-interview (current knowledge, end-goal proficiency, depth, practice load, background, scope), researches online (articles, niche-influencer blogs, canonical docs, subtopic landscape), then produces a structured markdown course with mandatory visual diagrams, evidence-based learning-science features (retrieval practice, spaced callbacks, worked-example fading, concept ledger, jargon gate, analogy hygiene), and a self-contained interactive HTML mini-course. Triggers on /teach-me, "teach me about X", "I want to learn X", "deep dive on X", "create a course on X", "study X with me".

AlemTuzlak/skills

Use when the change intent is already settled and the agent must map what a behavior change touches before an implementation plan or any code. Use for new features, bug fixes, and refactors that move a boundary. Don't use for typos, comments, formatting, lockfile-only diffs, docs with no code, or while the user is still deciding what they want.

AlemTuzlak/skills

Use when the user wants to transcribe a video or audio file to text with word-level timestamps — spins up a self-contained local Whisper (whisper.cpp) Docker service bundled in this skill and returns transcript.txt, transcript.srt, and word-level transcript.words.json. Also used as a building block by /produce-video. Triggers on "transcribe this video", "get a transcript", "transcribe-video".

AlemTuzlak/skills

Use when the user wants to write a video script for a product demo, feature walkthrough, launch video, or social media video about a feature or product change

AlemTuzlak/skills

Use when the user wants YouTube metadata for a video — a click-worthy title, an SEO/above-the-fold description, tags, and timestamped chapters. Accepts a transcript (ideally timestamped SRT), a topic, a PR, or a freeform description. Used standalone and by /produce-video. Triggers on "youtube title", "youtube description", "youtube chapters", "youtube tags", "youtube metadata", "youtube-copy".

관련 스킬