Agent Skills /plan 쓰는 법 — 일을 한 번에 끝낼 크기로 자르기 [3/6]

사양까지는 만들었는데, 「이제 만들어」라고 하면 Claude Code 가 DB 손대다가 화면 만들다가 다시 DB 로 돌아오는 식으로 뒤섞이지 않나요?
Agent Skills 의 /plan 은 코드를 한 줄도 쓰지 않고 사양을 「한 번에 끝낼 수 있는 작업」 목록으로 자르는 명령이에요. 결과는 tasks/plan.md 와 tasks/todo.md 두 파일이고, 작업마다 「다 됐다」의 조건과 확인 방법, 다른 작업과의 의존이 붙어요. 뒤의 /build 는 이 파일에서 다음 작업을 골라요. 이 글은 그 자르는 규칙과, 실제로 돌려 본 결과를 다뤄요.
이 시리즈 — ① 설치와 첫 확인 · ② /spec — 만들 것을 먼저 문서로 · ③ /plan — 일을 한 번에 끝낼 크기로(이 글) · ④ /build 와 /test · ⑤ /review 와 /ship · ⑥ 알아서 켜지는 스킬과 한계
/plan 이 하는 일 — 다섯 단계
/plan 은 planning-and-task-breakdown 스킬을 불러요. 스킬 원문의 순서는 이래요.
- 읽기만 하는 모드로 들어간다. 사양과 관련 코드를 읽고, 기존 패턴과 위험을 적어요. 여기서 코드를 쓰면 안 돼요.
- 무엇이 무엇에 기대는지 그린다. DB 스키마 → 타입 → API → 화면처럼 의존 그래프를 만들고, 바닥부터 위로 올라가는 순서를 잡아요.
- 세로로 자른다. 「DB 전부 → API 전부 → 화면 전부」가 아니라 「회원가입 한 줄을 DB·API·화면까지」, 다음 「로그인 한 줄을 끝까지」 식이에요. 작업 하나가 끝나면 실제로 되는 기능이 하나 생겨요.
- 작업을 정해진 틀로 쓴다. 설명 한 문단, 수용 기준(검사할 수 있는 조건), 검증 방법(테스트·빌드·수동 확인 명령), 의존하는 작업, 건드릴 파일, 크기.
- 순서를 잡고 검문소를 둔다. 위험한 작업은 앞에(빨리 실패하려고), 작업 2~3개마다 「전체 테스트 통과·빌드 성공·사람 확인」 검문소를 넣어요.
크기표가 따로 있어요.
| 크기 | 파일 수 | 예 |
|---|---|---|
| XS | 1 | 검증 규칙 하나 추가 |
| S | 1~2 | 엔드포인트 하나 |
| M | 3~5 | 회원가입 흐름 하나 |
| L | 5~8 | 필터·페이지네이션 있는 검색 |
| XL | 8+ | 너무 크다 — 더 쪼갠다 |
「에이전트는 S 와 M 에서 가장 잘한다」고 적혀 있어요. 더 쪼갤 신호도 셋이에요. 한 번에 두 시간 넘게 걸릴 것 같을 때, 수용 기준을 세 줄 안에 못 쓸 때, 인증과 결제처럼 독립된 두 하위 시스템을 함께 건드릴 때예요.
시작하기 전에
- 2편에서 만든
SPEC.md가 저장소 루트에 있어야 해요. 명령 정의(commands/planning.toml)가 「기존 사양(SPEC.md 또는 그에 준하는 것)을 읽어라」로 시작해요. - 결과 파일 위치는
tasks/plan.md와tasks/todo.md로 정해져 있어요. 뒤의/build가 이 경로를 봐요.
절차
- 사양이 있는 폴더에서 명령을 쳐요.
/agent-skills:plan
- 계획이 나오면 사람이 읽어요. 이 단계가 이 명령의 존재 이유예요. 특히 「Architecture Decisions」 절과 「Open Questions」 절을 봐요. 사양이 정하지 않은 것을 계획이 대신 정한 자리가 거기예요.
- 고칠 것이 있으면 대화로 고쳐 달라고 하거나 파일을 직접 고쳐요.
- 승인하면 /build 로 넘어가요.
실제로 돌려 본 결과 — 6분 26초, 두 파일 25KB
2편에서 만든 여행 경비 정산 앱 사양 위에 그대로 돌렸어요. 조건은 같아요. Sonnet, 사람이 답할 수 없는 환경이라 「묻지 말고 진행하라」를 덧붙임.
- 걸린 시간 6분 26초.
/spec의 네 배예요 tasks/plan.md약 12KB,tasks/todo.md약 13KB- 실행이 「최대 턴 12회 도달」로 끝났어요. 파일 두 개는 다 만들어진 뒤였지만, 마무리 정리를 할 턴이 남지 않았어요. 이게 뒤에서 이야기할 어긋남의 원인으로 보여요
plan.md 의 구성은 이랬어요. 개요 → 구조 결정 → 의존 그래프(문자 그림) → 5단계로 나눈 작업 목록과 단계마다 검문소 → 병렬로 할 수 있는 것 → 위험과 대응(표) → 미해결 질문 4개.
「구조 결정」 절에는 사양이 정하지 않은 것을 계획이 정하면서 「⚠️ 인간 리뷰 필요」 표시를 두 군데 달아 놓았어요. 하나를 옮기면 이래요.
- 나머지(원 단위 반올림) 처리 규칙 — SPEC.md 에 방법이 명시되어 있지 않아 아래로 결정:
총 지출을 참가자 수로 나눈 몫(내림)을 기본 분담액으로 하고, 나머지는 참가자 ID 를
정렬한 순서에서 앞에서부터 1원씩 추가로 부담시킨다. …
⚠️ 인간 리뷰 필요: 이 배분 규칙은 자의적 선택이다.
사양에 없는 것을 조용히 정하지 않고 「내가 정했고 확인이 필요하다」고 표시한 거예요. 2편에서 본 「가정을 드러낸다」 규칙이 여기까지 이어져요.
todo.md 는 작업마다 정해진 틀을 지켰어요. 정산 계산 함수 작업의 수용 기준은 이랬어요.
**Acceptance criteria:**
- [ ] 참가자 1명: 송금 목록 없음(빈 배열)
- [ ] 지출 0건: 송금 목록 없음
- [ ] 총액이 인원수로 나누어떨어지지 않는 경우: 나머지가 정확히 규칙대로 배분되고
sum(각자 순잔액) === 0
- [ ] 한 사람이 전액 부담: 나머지 인원 전원이 그 사람에게 송금
- [ ] 이미 낸 돈이 정확히 같은 경우: 송금 목록 0건
이 다섯 줄이 뒤의 /build 에서 그대로 「먼저 쓸 실패하는 테스트」가 돼요. 계획을 잘 쓰면 테스트가 이미 반은 써진 셈이에요.
실측에서 드러난 어긋남 — 그래서 사람이 읽어야 한다
두 파일을 나란히 읽으니 서로 안 맞는 곳이 셋 있었어요.
plan.md는 작업이 9개인데todo.md는 10개예요. 정산 함수가 한쪽에서는 Task 6, 다른 쪽에서는 Task 7 이에요.plan.md는 「저장 모듈에 지출 필드까지 처음부터 넣으니 별도의 확장 작업은 두지 않는다」고 결정했는데,todo.md에는 그 확장 작업(Task 5)이 들어 있어요.- 참가자 삭제 규칙이 정반대예요.
plan.md는 「그 사람이 낸 지출도 함께 지운다(확인창 포함)」로 정했고,todo.md의 Task 4 는 「이미 지출의 결제자로 등록된 참가자는 삭제를 막는다」로 적혀 있어요.
턴 한도에 걸려 두 파일을 맞춰 볼 여유가 없었던 것으로 보여요. 사람이 있었다면 계획을 보여 주는 단계에서 물었을 것이고, 사람이 없어도 턴을 더 줬으면 맞췄을 수 있어요. 어느 쪽이든 결론은 같아요. 계획은 나온 그대로 /build 에 넘기는 것이 아니라 읽고 고치는 문서예요. 이 어긋남을 안 고치고 /build auto 를 돌리면 Task 4 와 Task 5 가 서로 다른 규칙으로 만들어져요.
안 되는 경우
- 사양이 없으면 계획도 없어요. 명령이
SPEC.md를 읽는 것으로 시작해요. 없으면 「무엇을 계획하나」부터 되물어요. - 비대화형으로 돌리면 턴이 모자랄 수 있어요. 위 실측처럼
claude -p로 돌릴 때--max-turns를 12 로 두면 마무리를 못 해요. 사람이 있는 대화에서는 이 제한이 없어요. - 계획 파일이 커요. 두 파일 합쳐 25KB 면 매 작업마다 전부 읽히면 토큰이 들어요. 6편에서 볼 context-engineering 스킬이 「필요한 절만 넣어라」고 하는 이유예요. 다행히
/build는 「다음 대기 작업 하나」만 골라 읽는 구조예요. - 경로가 고정이에요.
tasks/가 아닌 곳에 계획을 두면/build가 못 찾아요.
이럴 땐 쓰지 마세요
파일 하나짜리 변경, 범위가 뻔한 일에는 계획이 낭비예요. 스킬 원문도 「사양에 이미 작업이 잘 나뉘어 있으면 쓰지 마라」고 적어요. 그런 경우는 사양의 작업 목록을 tasks/todo.md 로 옮겨 두고 바로 /build 로 가면 돼요.
✔ 요약
/agent-skills:plan→tasks/plan.md+tasks/todo.md, 코드는 안 쓴다- 의존 그래프 → 세로 자르기 → 작업 틀(수용 기준·검증·의존·파일·크기) → 검문소
- 크기는 S·M 이 적당, XL 은 더 쪼갠다
- 실측: Sonnet, 6분 26초, 25KB, 턴 한도에 걸림
- 사양이 안 정한 것을 계획이 정하고 「인간 리뷰 필요」로 표시한다
- 두 파일이 서로 어긋날 수 있다 — 읽고 고친 뒤에
/build로 - 2026년 9월 기준, 플러그인 버전 0.6.6
확인할 곳: planning-and-task-breakdown 스킬 원문 · /plan 명령 정의 · /build 명령 정의 · Definition of Done 참고 문서 · Claude Code — Skills