Agentic Engineering 2회차
2회차 · 5교시Agentic Engineering 실무 · 2026-11-10

SDD·Plan 모드와
압축의 한계

에이전트가 시킨 일에서 벗어나지 않게 붙잡는 방법, 그리고 일이 길어질 때 정보가 새는 지점을 봅니다.

Kiro 공식 문서의 Specs 화면
2025-07Kiro 스펙
GitHub Spec Kit의 spec-template.md 화면
2025-09Spec Kit
Claude Code 권한 모드 문서의 Plan 모드 절
2025-06Plan 모드
Chroma Context Rot 기술 보고서
2025-07압축의 한계
2025-07-143~4교시 승인 피로 → 5교시 딴길 문제 · Kiro 발표문

승인을 정리해도, 에이전트는 딴길로 샌다

kiro.dev/blog/introducing-kiro
Kiro 발표문 첫 화면: 프롬프트만 반복해서 만든 앱의 문제
공식 발표문 화면 캡처 · 2025-07-14
Kiro 발표문의 첫 화면. 프롬프트만 반복해 앱을 만들 때 생기는 문제를 짚는 글.
“You guided the agent throughout, but those decisions aren’t documented.”“에이전트를 계속 이끌었지만, 그 결정들은 어디에도 기록되어 있지 않다.”Kiro 발표문 · 2025-07-14
  • 프롬프트를 반복하면 일단 동작하는 앱은 나온다
  • 그러나 모델이 세운 가정과 결정은 어디에도 남지 않는다
  • 요구사항이 흐리면 맞게 만들었는지 판정할 수도 없다
2025-06 → 2025-10Claude Code CHANGELOG · Kiro · GitHub Blog · Cursor Blog

Plan 모드와 SDD는 같은 시기에 같은 문제를 푼다

같은 문제딴길로 새는 에이전트도구 안에서 막는다문서로 막는다 (SDD)Claude Code Plan 모드2025-06Cursor Plan Mode2025-10-07Kiro 발표2025-07-14GitHub Spec Kit2025-09-02 읽기 전용으로먼저 계획스펙·Task 파일을먼저 쓴다

도구 안의 Plan 모드와 문서 중심의 SDD(Spec-Driven Development, 스펙 주도 개발)는 서로 대립하지 않습니다. 둘 다 실행 전에 계획을 고정합니다. → 오늘 둘 다 봅니다

1987 → 2025IEEE 1016 · Ostroff 외(2004) · Kiro · Spec Kit · Böckeler

SDD는 새 말이 아니다: 1987년 ‘설계 기술서’에서 2025년 ‘스펙 주도 개발’로

1987 IEEE 1016Software Design Description사람에게 설계를 전하는 문서1998·2009 개정같은 SDD, 같은 독자(사람)2020 비활성2004 Ostroff 외Agile Specification-Driven Dev.TDD + 계약에 의한 설계2025-10-15 Böckelerspec-first · spec-anchored· spec-as-source2025-07 Kiro · 2025-09-02 Spec KitSpec-Driven Development에이전트가 읽는 스펙MDD · BDD모델 → 코드 생성실행 가능한 시나리오

같은 약어, 다른 말. Software Design Description(IEEE(Institute of Electrical and Electronics Engineers, 전기전자공학자협회) 1016, 1987)은 사람에게 설계를 전하는 문서, Spec-Driven Development는 스펙으로 개발을 이끄는 방식이다.

무엇이 바뀌었나목적은 같고, 읽는 쪽과 스펙의 위상이 바뀌었다

설계도를 먼저 그린다는 목적은 같다. 바뀐 것은 읽는 쪽과 스펙의 위상이다

설계 기술서 (IEEE 1016, 1987~)스펙 주도 개발 (2025~)
읽는 쪽사람 개발자. 빈틈은 상식과 맥락으로 채운다사람 + 에이전트. 빈틈은 추측과 엉뚱한 구현이 된다
스펙의 위상참고용 도면(advisory)지켜야 할 계약(authoritative), 행동 제약
검증사람의 리뷰테스트·CI(Continuous Integration, 지속적 통합)가 스펙 위반을 막는 게이트
최신화코드가 바뀌면 문서가 낡는다스펙을 고치고 다시 생성(spec-anchored·as-source를 지향)
최종 자산사람이 쓴 코드스펙과 코드가 함께. 극단은 스펙이 소스(Tessl)

가까운 조상은 옛 설계 문서보다 TDD(Test-Driven Development, 테스트 주도 개발)·BDD(Behavior-Driven Development, 행동 주도 개발)다. 스펙을 먼저 묶고, 기계가 그 스펙으로 확인한다.

2025-10-15Birgitta Böckeler · martinfowler.com

SDD(스펙 주도 개발, Spec-Driven Development): 코드보다 스펙을 먼저 쓴다

martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html
martinfowler.com의 SDD 설명 글 정의 절
기술 블로그 화면 캡처 · 2025-10-15
Fowler 사이트에 실린 Böckeler의 글 첫머리와 ‘Definition(정의)’ 절. GitHub·Tessl의 설명도 인용한다.
“The spec becomes the source of truth for the human and the AI.”“스펙이 사람과 AI 모두에게 기준 문서(source of truth)가 된다.”Böckeler · 2025-10-15
스펙을 먼저 쓰는 documentation first를 세 수준(spec-first·anchored·as-source)으로 나눠 도구 비교의 기준을 준다.
글쓴이도 정의가 아직 유동적이라 한다. 스펙을 ‘자세한 프롬프트’로 쓰는 사람도 있다.
오늘 SDD 이야기의 기준 글. 이 글의 세 수준으로 Kiro·Spec Kit을 가늠한다.
SDD 세 수준Böckeler · martinfowler.com · 2025-10-15

SDD는 스펙을 얼마나 오래 쓰느냐로 세 수준이 나뉜다

1 · spec-first명세 우선작업 전에 스펙을 쓴다끝나면 스펙은 역할 끝Böckeler 확인Kiro·Spec Kit은 대체로 1수준2 · spec-anchored명세 유지스펙을 남겨 둔다고칠 때 스펙부터 고친다3 · spec-as-source명세가 곧 코드사람은 스펙만 고친다코드는 스펙에서 생성 수명 연장코드가 생성물

같은 SDD라도 스펙의 수명이 다릅니다. 글쓴이는 Kiro와 Spec Kit이 대체로 spec-first라고 평가했습니다.

2025-07-14Kiro 공식 문서 · Specs

Kiro는 요구사항, 설계, 작업 파일 세 개를 차례로 만든다

kiro.dev/docs/specs
Kiro 문서의 Specs 개요 화면
공식 문서 화면 캡처 · 2026-10-28 확인
Kiro 문서 ‘What are specs?’ 화면. 스펙의 종류(Feature·Bugfix·Quick)별로 IDE(Integrated Development Environment, 통합 개발 환경)·CLI(Command-Line Interface, 명령줄 인터페이스)·웹 지원 여부를 표로 보여 준다.
  1. requirements.md: 사용자 스토리(사용자 입장의 요구)와 수용 기준(완료 조건). 버그는 bugfix.md로 시작
  2. design.md: 구조, 시퀀스, 오류 처리, 테스트 전략
  3. tasks.md: 하나씩 추적하는 Task 목록
단계가 끝날 때마다 사람이 문서를 확인하고 넘어가 방향을 일찍 바로잡는다.
작은 버그 하나가 사용자 스토리 4개·수용 기준 16개로 부풀었다(Böckeler).
프롬프트만 반복할 때의 ‘기록 없는 결정’을 파일 세 개로 푼 사례. 다음 장에서 문장 모양.
2026-10-28 확인Kiro 공식 문서 · Feature Specs · Requirements-First

Kiro는 요구사항을 “WHEN…SHALL…” 문장 틀(EARS)로 쓴다

kiro.dev/docs/specs/feature-specs
Kiro Feature Specs 문서 화면
공식 문서 화면 캡처 · 2026-10-28 확인
Kiro Feature Specs 문서 첫머리. 새 기능을 단계별로 안내하는 방식이라 소개하고, 주요 장점(구조화된 접근·유연성)을 든다.
.kiro/specs/<이름>/ ├─ requirements.md ├─ design.md └─ tasks.md # requirements.md (EARS = Easy Approach to Requirements Syntax, 요구사항 문장 형식, 문서 예시) WHEN a user submits valid registration data THE SYSTEM SHALL create a new user account → 올바른 가입 정보를 제출하면, 시스템은 새 계정을 만든다
2025-09-02GitHub Blog · Spec Kit 발표

Spec Kit은 슬래시 명령으로 스펙에서 구현까지 단계를 밟는다

github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit
GitHub Spec Kit 발표 글
GitHub Blog 화면 캡처 · 2025-09-02
GitHub이 낸 Spec Kit 발표 글. 스펙을 먼저 쓰고 AI로 개발하는 오픈소스 도구 모음 소개.
# 다섯 단계 슬래시 명령 (설치는 각자) /speckit-constitution 원칙 (한 번) /speckit-specify 무엇을·왜 /speckit-plan 기술 선택 /speckit-tasks Task 목록 /speckit-implement 구현
한 단계가 검증되기 전엔 다음으로 안 넘어간다. 오픈소스이고 Copilot 외 에이전트에도 쓸 수 있다.
중간 크기 기능에도 무거웠다(Böckeler). 명령 이름이 발표 때(specify·plan·tasks)와 달라졌다.
Kiro와 무엇을→어떻게→할 일 구조가 같다. 도구 없이 마크다운 세 개로도 따라 할 수 있다(8교시).
2026-10-28 확인github/spec-kit · templates/ · Böckeler 관찰

Spec Kit은 기능마다 spec.md와 tasks.md 뼈대를 채운다

github.com/github/spec-kit/blob/main/templates/spec-template.md
Spec Kit의 spec-template.md
저장소 템플릿 화면 캡처 · spec.md의 뼈대
spec.md 템플릿의 맨 위. ‘Feature Specification: [기능 이름]’ 제목과 기능 브랜치·작성일 칸이 보인다.
github.com/github/spec-kit/blob/main/templates/tasks-template.md
Spec Kit의 tasks-template.md
저장소 템플릿 화면 캡처 · tasks.md의 뼈대
tasks.md 템플릿의 맨 위. ‘Tasks: [기능 이름]’ 제목과 “기능 구현용 Task 목록 템플릿”이라는 설명.

기능마다 specs/001-이름/ 폴더가 생기고 spec.md · plan.md · tasks.md 등이 들어갑니다. 기능마다 브랜치도 새로 만듭니다.

2026-10-28 확인github/spec-kit · templates/constitution-template.md

constitution: 모든 변경에 적용하는 프로젝트 원칙

github.com/github/spec-kit/blob/main/templates/constitution-template.md
Spec Kit의 constitution 템플릿
저장소 템플릿 화면 캡처
Spec Kit의 constitution 템플릿. ‘[프로젝트 이름] Constitution’ 아래 핵심 원칙 이름·설명을 채우는 빈칸 양식.
프로젝트에 한 번 써 두면 모든 변경에 적용된다. 기능마다 쓰는 spec·plan·tasks와 층이 다르다.
에이전트가 원칙을 과하게 적용하기도 한다(Böckeler 관찰).
CLAUDE.md·AGENTS.md와 같은 층. 결정의 이유를 남긴다는 점에서 ADR(Architecture Decision Record, 아키텍처 결정 기록)과 이어진다.
정리Kiro 문서 · Spec Kit 저장소 · Böckeler 2025-10-15

두 도구의 파일 흐름은 거의 같다

Kiro.kiro/specs/이름/requirements.md사용자 스토리·EARSdesign.md구조·데이터 흐름tasks.md추적하는 Task 목록Spec Kitspecs/001-이름/constitution.md프로젝트 원칙spec.md무엇을·왜plan.md기술 계획tasks.mdTask 목록

이름만 다릅니다. 무엇을 → 어떻게 → 할 일 세 층을 파일로 남기고, 마지막 tasks.md를 하나씩 소화합니다.

질문 시간 · 약 5분

여기까지,
질문 받습니다

지금까지 다룬 것: SDD 정의 · SDD 세 수준 · Kiro 스펙 구조 · Kiro 실제 파일 · Spec Kit 흐름 · Spec Kit 실제 파일 · constitution · Kiro와 Spec Kit 비교

앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
2025-10-15Böckeler · martinfowler.com · Observations

SDD가 항상 답은 아니다

martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html
martinfowler.com SDD 글의 관찰과 질문 절
기술 블로그 화면 캡처 · 2025-10-15
Böckeler 글의 첫머리(제목: Kiro·spec-kit·Tessl 이해하기). 이 글의 관찰 부분에 아래 한계 지적이 있다.
“I’d rather review code than all these markdown files.”“이 마크다운 파일들을 전부 보느니 차라리 코드를 리뷰하겠다.”Böckeler · 2025-10-15
  • Kiro: 작은 버그 하나가 사용자 스토리 4개, 수용 기준 16개로 부푼다
  • 스펙을 써 줘도 에이전트가 지시를 무시할 때가 있다
  • 크기에 맞는 흐름을 고르는 것은 사람 몫
2025-06Claude Code CHANGELOG 1.0.33 · 공식 문서 2026-10-28 확인

Plan 모드: 읽고, 계획하고, 승인받고, 편집한다

진입Shift+Tab · /plan읽기 전용 조사파일 읽기·탐색계획 작성소스는 수정 안 함편집 시작(계획이 기준)승인 화면자동 실행·편집마다 확인 승인 / 수정승인

승인 전에는 소스를 수정하지 않습니다. 계획이 마음에 들지 않으면 “계속 계획”으로 되돌립니다.

2026-10-28 확인Claude Code 공식 문서 · Permission modes

Plan 모드는 승인 전에 소스를 안 고치고, 계획은 직접 고친다

code.claude.com/docs/en/permission-modes
Claude Code 문서: Plan 모드 진입 방법
공식 문서 화면 캡처 · 진입
Plan 모드 설명. 파일을 읽고 조사해 계획만 제안하며 소스는 고치지 않는다. 계획 중 셸 명령 처리 조건도 적혀 있다.
code.claude.com/docs/en/permission-modes
Claude Code 문서: 계획 승인 선택지
공식 문서 화면 캡처 · 승인
계획 승인 선택지. 자동 모드로 승인, 편집마다 확인, 계속 계획 중에서 고른다.
승인 전엔 소스를 안 고쳐 방향부터 확인한다. Ctrl+G로 계획을 직접 고치고, 압축 뒤에도 다시 주입된다.
계획 한 편이라 요구사항·설계·Task를 층별 파일로 나누지는 않는다. 자동 승인을 고르면 확인이 줄어든다.
코드를 고치기 전에 사람이 방향을 확인하는 지점. Cursor·Kiro도 같은 습관을 쓴다.
2025-10-07Cursor Blog · Introducing Plan Mode

Cursor도 계획을 파일로 남기고, 사람이 고친 뒤 실행한다

cursor.com/blog/plan-mode
Cursor Plan Mode 발표문과 계획 파일 화면
공식 블로그 화면 캡처 · 2025-10-07
Cursor의 Plan Mode 발표문. 코드베이스를 조사해 계획 파일(.plan.md)을 만든다.
코드베이스를 조사해 계획 파일(.plan.md)과 체크 가능한 todo를 만든다. 사람이 고친 뒤 Build로 실행한다.
계획 한 파일이라 Kiro·Spec Kit처럼 스펙·설계를 층으로 나누지는 않는다.
Claude Code Plan 모드, Kiro의 tasks.md와 같다. 계획을 대화가 아닌 파일로 남기는 습관.
강사 운영 방식프로젝트 구성·개발·운영 기준 · 이슈별 구현 워크플로우

제가 쓰는 방식: 이슈 하나가 열두 단계를 지난다

1 이슈 분석2 ADR 점검3 이슈 단위 스펙4 스펙 리뷰블로커 → 3으로8 구현 리뷰블로커 → 7로7 구현6 계획 리뷰블로커 → 5로5 구현 계획9 PR10 CI실패 → 7로11 스쿼시 머지12 머지 후 스모크

스펙 · 계획 · 구현 세 곳에서 리뷰하고, 블로커가 없을 때만 다음으로 넘어갑니다. 직접 도식 · 강사 실제 화면으로 교체 예정

강사 운영 방식리뷰 대상을 구분하고, 블로커가 없으면 종료

세 번의 리뷰: 대상이 다르면 질문도 다르다

스펙 리뷰무엇이 맞는 동작인가?계획 리뷰어디를 어떤 순서로?구현 리뷰요구와 결정을 지켰나?예산 소진·블로커 잔존통과시키지 않고 중단·인계 통과통과

같은 문서 전체를 매번 다시 쓰지 않습니다. 비차단 개선은 후속 이슈로 넘기고, 블로커가 남으면 자동으로 통과시키지 않습니다.

2025-03-18Claude Code 0.2.47 자동 압축 · 공식 문서 2026-10-28 확인

스펙을 써도, 일이 길어지면 창이 찬다

code.claude.com/docs/en/context-window
Claude Code 문서: 컨텍스트 창 시뮬레이션
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 문서의 컨텍스트 창 설명. 지침·읽은 파일·응답·도구 결과가 한 창에 쌓이는 모습.
  • 컨텍스트 창(AI가 한 번에 볼 수 있는 분량)에 지침, 읽은 파일, 응답, 도구 결과가 모두 쌓인다
  • 가득 차면 대화를 요약해 이어 간다 (자동 압축)
  • 2025-03-18부터 “무한 대화 길이”를 내세워 기본 제공
2026-10-28 확인Claude Code 공식 문서 · What survives compaction

압축 뒤: 디스크의 파일은 남고, 대화는 요약된다

code.claude.com/docs/en/context-window
Claude Code 문서: 압축 후 남는 것 표
공식 문서 화면 캡처 · 2026-10-28 확인
컨텍스트 창 문서의 시뮬레이션 화면. 시스템·CLAUDE.md·메모리·스킬·MCP(Model Context Protocol, 모델 컨텍스트 프로토콜) 등이 한 창에 차례로 쌓이는 모습.
  • 다시 주입: CLAUDE.md, Plan 모드 계획 (디스크에서)
  • 일부만: 읽은 파일은 최근 수정한 5개까지만 다시 읽음
  • 요약에 든 만큼만: 그 밖의 대화는 요약으로 대체
2025-07-14Chroma 기술 보고서 · Context Rot

입력이 길어질수록 성능이 흔들린다: Context Rot

trychroma.com/research/context-rot
Chroma Context Rot 기술 보고서 첫 화면
기술 보고서 화면 캡처 · 2025-07-14
Chroma의 Context Rot 보고서 첫 화면. 입력 길이에 따라 모델 성능이 어떻게 변하는지 평가한 글.
18개

평가한 LLM(Large Language Model, 대규모 언어 모델) 18개에서
입력이 길수록 성능이 불안정해졌다

Chroma Technical Report, 2025-07-14
GPT-4.1 · Claude 4 · Gemini 2.5 · Qwen3 포함

18개 모델을 같은 방식으로 견주어, 한 모델의 버릇이 아닌 일반 경향임을 보였다.
큰 창이 있어도 모든 위치의 정보를 똑같이 잘 쓰지는 못한다. 창 크기만으로는 해결되지 않는다.
창을 키우는 것과 별개로 중요한 정보를 짧은 파일에 모아 둔다. 압축 대비의 이유.
2025-11-26Anthropic Engineering · Effective harnesses for long-running agents

압축 대비: 진행 파일에 적어 둔다

anthropic.com/engineering/effective-harnesses-for-long-running-agents
Anthropic Engineering 장기 실행 에이전트 하네스 글
공식 엔지니어링 블로그 화면 캡처 · 2025-11-26
Anthropic 엔지니어링 글 본문. 압축만으로는 지시가 완벽히 넘어가지 않는 문제와, 첫 세션이 init.sh·진행 파일을 만드는 두 단계 해법.
# Anthropic 글의 인계 장치 claude-progress.txt 한 일의 기록 feature list (JSON) 기능 목록 처음엔 모두 passes: false init.sh 개발 서버 실행 git commit 세션마다 커밋 ✓ 세션당 기능 하나, 끝에 기록
새 세션이 파일만 읽고 상태를 파악한다. 기능 목록은 JSON(JavaScript Object Notation, 자바스크립트 객체 표기법)으로 두어 모델이 덜 덮어쓴다.
첫 세션에 init.sh·진행 파일·기능 목록을 미리 준비하고, 매 세션 끝에 기록해야 한다.
8교시 진행 파일의 원형. 압축에만 기대지 않고 파일로 인계한다.
정리SDD와 압축 대비는 같은 해법이다

세션 경계를 넘는 것은 파일뿐이다

창 A대화·시도·결정 이유압축 또는 새 세션요약만 남는다창 B요약 + 다시 읽은 파일디스크의 파일 (그대로 남는다)spec.md무엇이 맞는 동작인가plan.md · tasks.md계획과 체크 표시progress.md한 일·결정 이유·다음 할 일git 커밋변경 이력 읽어서 복구계속 기록

스펙, 계획, 진행 기록을 파일에 남기면, 압축이나 새 세션 뒤에도 같은 기준에서 다시 시작합니다.

정리5교시 요약 · 다음은 6교시

스펙이 붙잡고, 파일이 남는다

DDD · 도메인 경계 안에서프롬프트에 수준을 명시스펙(무엇을)Task 목록(어떤 순서로)실패하는 테스트(완료 기준)구현(통과할 때까지)PoC · MVP최소 구현, 계층 없음엔터프라이즈클린 아키텍처·경계 빨강 → 초록범위를 정한다

스펙과 Task 목록은 딴길을, 파일은 압축을 막습니다. 다음 시간에는 스펙을 실패하는 테스트로 바꿉니다. → 6교시 TDD와 DDD

2회차 · 6교시Agentic Engineering 실무 · 2026-11-10

TDD와 DDD
범위를 묶는 삼중 방어

스펙에 테스트와 도메인 경계를 더해, 에이전트가 시킨 일만 끝까지 하게 만듭니다.

Martin Fowler의 TDD 설명
TDD실패하는 테스트 먼저
Claude Code 문서의 검증 수단 설명
완료 기준통과가 곧 완료
Fowler의 Bounded Context 설명
DDD바운디드 컨텍스트
Uncle Bob의 클린 아키텍처 글
수준클린 아키텍처
2025-09-02GitHub Spec Kit · 5교시에서 이어서

스펙이 있어도 “다 했다”는 말은 검증되지 않는다

github.blog/ai-and-ml/generative-ai/spec-driven-development-with-ai-get-started-with-a-new-open-source-toolkit
GitHub Spec Kit 발표 글
GitHub Blog 화면 캡처 · 5교시에서 본 화면
5교시에서 본 GitHub의 Spec Kit 발표 글 제목 화면. “AI로 스펙 주도 개발: 새 오픈소스 툴킷으로 시작하기”.
  • 스펙과 Task 목록이 에이전트가 딴길로 새는 것을 줄인다
  • 하지만 “다 했다”는 말은 에이전트의 말일 뿐
  • 코드가 커지면 한 번에 건드리는 범위도 넓어진다
SDD + TDD + DDD강사 운영 방식

스펙, 테스트, 경계가 서로 다른 실패를 막는다

SDD · 스펙무엇을 만드나TDD · 테스트맞게 만들었나DDD · 경계어디까지 고치나막는 실패딴길로 샘막는 실패가짜 '다 했다'막는 실패범위 폭주 테스트로도메인별

세 겹은 서로 다른 실패를 막습니다. 스펙은 SDD(Spec-Driven Development, 스펙 주도 개발), 테스트는 TDD(Test-Driven Development, 테스트 주도 개발), 경계는 DDD(Domain-Driven Design, 도메인 주도 설계)입니다. 오늘은 가운데 테스트부터 봅니다. → 5교시 SDD, 이어서 TDD

2023-12-11 개정Martin Fowler bliki · Test Driven Development

TDD: 실패하는 테스트를 먼저 쓴다

martinfowler.com/bliki/TestDrivenDevelopment.html
Fowler의 TDD 글: Red Green Refactor 도식
Martin Fowler bliki 화면 캡처 · 2026-10-28 확인
Fowler의 TDD 설명 글. 테스트 목록에서 하나 골라 쓰고(Red) → 통과시키고(Green) → 정리(Refactor)하는 반복 도식.
  1. 다음 기능의 테스트를 쓴다 (Red: 아직 실패)
  2. 통과할 때까지 구현한다 (Green: 통과)
  3. 동작은 그대로 두고 구조를 정리한다 (Refactor)

Kent Beck이 1990년대 후반 익스트림 프로그래밍의 일부로 발전시킨 기법

강사 운영 방식분량 때문에 못 하던 일을 에이전트가 한다

사람이 분량 때문에 건너뛰던 TDD를 AI에게

code.claude.com/docs/en/best-practices
Claude Code 모범 사례 문서: 실패하는 테스트를 쓰고 고치라는 예시
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 모범 사례 문서의 ‘Instead of(이렇게 말하지 말고) / Try(이렇게)’ 표. “로그인 버그 고쳐” 대신 실패 재현 테스트를 쓰게 한다.
  • 사람: 테스트 쓰는 시간이 구현만큼 들어 생략
  • AI: 테스트 수십 개를 쓰는 비용이 거의 없다
  • 공식 문서의 프롬프트 예: “write a failing test that reproduces it, then fix it” (재현하는 실패 테스트를 쓰고, 그다음 고쳐라)
2026-10-28 확인Claude Code 문서 · Give Claude a check to run

완료는 에이전트의 말이 아니라 통과 결과

code.claude.com/docs/en/best-practices
Claude Code 문서: 통과 또는 실패를 돌려주는 검증 수단
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 문서의 ‘실행해서 확인할 수단을 주라’는 절. 통과·실패를 돌려주는 검증 수단 예시.
“Give Claude something it can run that comes back pass or fail.”“Claude에게 실행했을 때 통과나 실패를 돌려주는 무언가를 주어라.”Claude Code Docs · Best practices
  • 검증 수단: 테스트 파일, 빌드 종료 코드, 린터(코드 규칙 검사기)
  • repo의 CLAUDE.md에 테스트 실행 명령을 적는다
  • “All tests pass(모두 통과)”만 믿지 말고 실행 출력을 요구
실제 실행 결과domain-testing 예제 · Python unittest · 강사 운영 방식

Red 확인이 먼저, Green은 그다음

1) 스텁(가짜 구현) · 테스트 실행 → Red(실패)
def submit(status): return "submitted" $ python3 transition_test.py FAIL: test_submitted_cannot_be_submitted_again AssertionError: ValueError not raised Ran 2 tests ... FAILED (failures=1)
2) 구현 → Green(통과)
def submit(status): if status != "draft": raise ValueError("작성 중인 지원만 제출할 수 있습니다.") return "submitted" $ python3 transition_test.py Ran 2 tests ... OK

규칙: 이미 제출한 지원은 다시 제출할 수 없다. 실패가 규칙을 가리키는지 확인한 뒤에 구현합니다.

2025-05-22Anthropic · Claude 4 발표문 · 지름길과 허점

에이전트는 테스트만 통과하는 지름길을 찾기도 한다

anthropic.com/news/claude-4
Claude 4 발표문: 지름길이나 허점을 쓰는 행동을 줄였다는 문단
Anthropic 발표문 화면 캡처 · 2026-10-28 확인
Claude 4 발표문에서 모델이 지름길·허점을 쓰는 행동을 줄였다고 밝힌 문단.
지름길·허점을 쓰는 행동이 Sonnet 3.7보다 65% 덜 나온다고 발표했다(지름길에 취약한 에이전트 과제 기준).
줄었을 뿐 사라진 것은 아니다. 수치는 모델을 만든 회사가 직접 발표한 것이다.
모델이 좋아지길 기다리지 않고 구조로 막는다. 다음 장부터 그 대응이 이어진다.
실제 실행 결과같은 예제에서 테스트를 건드린 경우 · 강사 운영 방식

속임수 세 가지: 고치고, 건너뛰고, 박아 넣기

# 구현은 그대로 (규칙을 어긴 채) def submit(status): return "submitted" # 에이전트가 테스트 쪽을 고침 @unittest.skip("flaky") def test_submitted_cannot_be_submitted_again(self): ... $ python3 cheat_test.py Ran 2 tests ... OK (skipped=1)
  1. 테스트 수정·삭제·skip(건너뛰기): 초록불이지만 규칙은 안 지킴
  2. 기대값 약화: 단언을 느슨하게 바꿈
  3. 하드코딩(정답 박아 넣기): 테스트 입력만 통과하는 분기

공통점: 실행 결과는 초록, 규칙은 어겨졌다

대응 4가지강사 운영 방식

속임수에 대한 대응: 막고, 대조하고, 직접 본다

에이전트의 속임수대응테스트 수정·삭제skip · 기대값 약화하드코딩(테스트 값만 통과)테스트 먼저 커밋(git diff로 대조)권한 deny · 훅테스트 파일 보호리뷰어 서브에이전트스펙과 대조사람이 직접실행해 보기

테스트를 먼저 커밋해 기준을 고정하고, 파일을 보호하고, 다른 눈으로 검토합니다. 마지막 판정은 사람입니다.

2026-10-28 확인Claude Code 문서 · Permissions

권한 deny: 테스트 파일은 수정 금지

code.claude.com/docs/en/permissions
Claude Code 권한 문서: deny 규칙
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 권한 문서. allow·ask·deny 규칙의 뜻과, deny가 먼저 평가되는 순서를 설명한다.
// .claude/settings.json { "permissions": { "deny": [ "Edit(tests/**)" ] } }
설정 파일 한 줄이면 되고 deny가 allow보다 먼저 걸려 확실하다. 비용은 거의 없다.
경로 규칙은 Write가 아닌 Edit(경로)로 적어야 한다. Bash로 파일을 건드리는 길은 남을 수 있다.
가장 먼저 걸 방어. 하나에 의존하지 않고 훅·리뷰어와 겹쳐 쓴다.
질문 시간 · 약 5분

여기까지,
질문 받습니다

지금까지 다룬 것: TDD란 · AI에게 TDD를 · 통과가 곧 완료 · Red에서 Green으로 · 테스트를 속이는 에이전트 · 속임수의 모양 · 대응 전략 · 권한 deny

앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
2026-10-28 확인Claude Code 문서 · Hooks guide · Block edits to protected files

훅: 수정 시도를 막고 이유를 돌려준다

code.claude.com/docs/en/hooks-guide
Claude Code 훅 가이드: 보호 파일 수정 차단 예제
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 훅 가이드의 ‘보호 파일 수정 차단’ 예제. 훅(도구 실행 직전에 끼우는 스크립트)으로 수정을 막는 방법.
# 도구 실행 직전(PreToolUse)에 돌린 실제 결과 $ echo '{"tool_input":{"file_path": "/app/transition_test.py"}}' | protect-tests.sh Blocked: ... protected test file. Fix the implementation instead. exit=2 ← 차단, 메시지는 에이전트에게 $ ... "/app/transition.py" ... exit=0 ← 통과
차단 이유를 에이전트에게 돌려줘 구현을 고치게 한다. 보호 대상은 경로 패턴으로 정한다.
스크립트와 설정을 직접 만들어야 한다(8교시 실습). deny보다 설치 부담이 크다.
deny가 막기만 한다면 훅은 막고 이유까지 알려 준다. 같은 구조로 보호 범위를 넓힌다.
2025-07-24Claude Code 서브에이전트 · 7교시에서 자세히

리뷰어 서브에이전트: 스펙과 테스트를 대조한다

code.claude.com/docs/en/sub-agents
Claude Code 서브에이전트 문서
공식 문서 화면 캡처 · 1교시와 같은 화면
Claude Code 서브에이전트 문서(‘Create custom subagents’). 서브에이전트(자기 컨텍스트·권한을 가진 보조 에이전트)를 만드는 법.
구현 세션과 별도 컨텍스트에서 diff만 보므로 자기 코드를 너그럽게 보는 편향이 없다.
찾으라고 하면 항상 무언가를 찾아 불필요한 추상화·테스트가 늘 수 있다. 스타일 지적은 빼라고 적는다.
deny·훅이 막는 방어라면 리뷰어는 스펙과 대조하는 방어. 질문은 좁게 고정한다.
후반 · DDD

범위를 도메인 경계로

Fowler의 DDD 설명
2020DDD란
Fowler의 Ubiquitous Language 설명
2006유비쿼터스 언어
Fowler의 Bounded Context 설명
2014바운디드 컨텍스트
클린 아키텍처 글의 의존성 규칙
2012클린 아키텍처
2020-04-22Martin Fowler bliki · Domain Driven Design

DDD: 업무 영역의 규칙을 코드 안의 모델로

martinfowler.com/bliki/DomainDrivenDesign.html
Fowler의 DDD 설명 첫 화면
Martin Fowler bliki 화면 캡처 · 2026-10-28 확인
Fowler의 DDD(도메인 주도 설계) 설명 첫 화면. 복잡한 업무 규칙을 모델로 만들어 코드에 둔다.
복잡한 업무 규칙을 모델로 만들어 코드에 둔다(2003년 Eric Evans의 책에서 유래).
단순한 앱에는 과하다. 전부 다루려면 책 한 권 분량이다.
앱 복잡도에 맞춰 필요한 만큼만 쓴다. 뒤의 PoC(Proof of Concept, 개념 증명)·엔터프라이즈 구분의 근거.
2006-10-31Martin Fowler bliki · Ubiquitous Language

유비쿼터스 언어: 사람과 코드가 같은 단어를 쓴다

martinfowler.com/bliki/UbiquitousLanguage.html
Fowler의 Ubiquitous Language 설명
Martin Fowler bliki 화면 캡처 · 2026-10-28 확인
Fowler의 ‘유비쿼터스 언어’ 설명. 개발자와 사용자가 같은 엄밀한 말을 쓴다는 개념.
  • 개발자와 사용자가 쓰는 엄밀한 공통 언어
  • 소프트웨어는 모호함을 잘 다루지 못한다
  • 에이전트용: 용어집을 스펙·CLAUDE.md에 적고, 코드 이름도 그 단어로
2014-01-15Martin Fowler bliki · Bounded Context

바운디드 컨텍스트: 같은 단어, 영역마다 다른 뜻

martinfowler.com/bliki/BoundedContext.html
Fowler의 Bounded Context 글의 영업·지원 컨텍스트 도식
Martin Fowler bliki 화면 캡처 · 2026-10-28 확인
Fowler의 Bounded Context 글. 영업·지원 영역이 Customer(고객)·Product(상품)를 각자 다르게 모델링하는 도식.
큰 모델 하나 대신 컨텍스트별 모델로 나눠, Customer·Product처럼 같은 단어의 뜻 충돌을 피한다.
컨텍스트 사이 관계를 명시적 계약으로 정해야 한다. 폴더만 나눈다고 경계가 되지는 않는다.
이 구조가 다음 장에서 에이전트의 작업 범위가 된다.
설계 예시ApplyFlow 가정 예 · 강사 자료 domain-testing

예: 공고 · 지원 기록 · 알림, ‘상태’는 셋이 다르다

공고지원 기록알림소유: 공고 ID · 마감일규칙: 중복 URL 거부'상태' = 공개 · 마감소유: 지원 단계규칙: 허용된 전환만'상태' = 작성 중 · 제출 · 면접소유: 전송 예약규칙: 중복 전송 방지'상태' = 대기 · 발송 · 실패 조회 계약제출 이벤트

각 영역이 데이터와 규칙을 소유하고, 다른 영역과는 조회 계약·이벤트로만 만납니다. 실제 앱이 이 구조로 구현되어 있다는 뜻이 아닌 설계 예시입니다.

강사 운영 방식볼 범위를 줄인다

왜 에이전트에게 경계가 필요한가: 볼 범위 축소

경계 없음경계 있음지원 기록 수정 요청공고 · 알림 · 인증까지전부 읽고 고침회귀 · 컨텍스트 낭비지원 기록 수정 요청지원 기록 폴더 + 공개 계약만해당 영역 테스트만 실행

경계는 컨텍스트 창 절약, 수정 범위 제한, 영역별 테스트 실행을 한꺼번에 줍니다.

2012-08-13Robert C. Martin · The Clean Architecture

클린 아키텍처: 의존은 안쪽으로만

blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
Uncle Bob의 클린 아키텍처 글의 의존성 규칙 문단
Uncle Bob 블로그 화면 캡처 · 2026-10-28 확인
Uncle Bob의 클린 아키텍처 글 중 의존성 규칙 문단. 안쪽 원은 바깥쪽을 알아서는 안 된다.
“source code dependencies can only point inwards.”“소스 코드의 의존은 안쪽으로만 향할 수 있다.”Robert C. Martin · 2012
의존 방향이 안쪽 하나라 규칙이 단순하다. 안쪽은 엔티티(업무 규칙), 바깥은 UI(User Interface, 사용자 화면)·DB(Database, 데이터베이스)·프레임워크.
작은 PoC에 쓰면 계층·추상화가 과잉 개발로 흐른다.
엔터프라이즈 규모일 때만 프롬프트에 적는다. 규모를 한 줄로 밝히는 것이 핵심.
기초 중의 기초강사 운영 방식 · 프롬프트에 규모를 적는다

프롬프트에 수준을 적는다: PoC냐, 엔터프라이즈냐

PoC(시험 제작) · MVP(Minimum Viable Product, 최소 기능 제품)
이건 PoC입니다. 지원 제출 기능을 가장 단순하게. 계층 분리·추상화·설정 파일 금지. 테스트는 핵심 규칙 한 개만.
  • 쓰고 버려도 되는 코드
  • 안 적으면 과잉 개발로 흐른다
엔터프라이즈 규모
클린 아키텍처로. 도메인 / 응용 / 인프라를 분리하고 의존은 도메인 방향으로만. 영역별 테스트와 계약 테스트 포함.
  • 오래 유지·여러 팀이 쓰는 코드
  • 경계 안에서만 고치게 한다

같은 요구사항도 규모를 적지 않으면 에이전트가 임의로 정합니다. 한 줄이면 충분합니다.

시연 예정같은 요구사항을 두 수준으로 · 강사 실제 화면으로 교체 예정

같은 기능도 PoC냐 클린 아키텍처냐에 따라 모양이 달라진다

같은 요구사항지원 제출 기능PoC · MVP엔터프라이즈 · 클린 아키텍처app.py + test계층 없음인프라DB · 메일 · 웹응용유스케이스도메인엔티티 · 규칙 의존의존'PoC입니다''클린 아키텍처로'

현장에서 같은 요구사항을 두 프롬프트로 시켜 파일 수와 줄 수를 직접 세어 비교합니다.

정리스펙 · 테스트 · 경계

오늘 본 것: 세 겹으로 범위를 묶는다

SDD · 스펙무엇을 만드나TDD · 테스트맞게 만들었나DDD · 경계어디까지 고치나막는 실패딴길로 샘막는 실패가짜 '다 했다'막는 실패범위 폭주 테스트로도메인별

테스트는 먼저 쓰고, 먼저 커밋하고, 못 고치게 합니다. 경계는 작게, 수준은 프롬프트에 한 줄로. → 7교시 서브에이전트와 워크트리

2회차 · 7교시Agentic Engineering 실무 · 2026-11-10
7교시

서브에이전트와 워크트리

Claude Code 서브에이전트 공식 문서 첫 화면
2025-07서브에이전트
Cursor 0.50 변경 기록: Background Agent
2025-05백그라운드 에이전트
Claude Code 워크트리 공식 문서 첫 화면
2026-02--worktree
Codex 앱 워크트리 공식 문서 화면
2026-02Codex 앱
2025-03-18 → 2025-07-14자동 압축 · Chroma ‘Context Rot’

압축만으로는 창이 모자라서, 일을 나눠 맡기게 됐다

research.trychroma.com/context-rot
Chroma 기술 보고서 Context Rot 첫 화면
Chroma 기술 보고서 화면 캡처 · 5교시에서 본 자료
Chroma의 기술 보고서(2025-07-14). 입력이 길어질수록 LLM(Large Language Model, 대규모 언어 모델) 성능이 고르지 않게 떨어진다는 것을 모델 18개로 확인했다.
  • 스펙·테스트를 갖춰도 탐색과 로그가 창(한 번에 읽는 입력 범위)을 채운다
  • 압축하면 결정의 이유가 사라진다
  • 해법 ①: 일을 맡겨 창을 나눈다
  • 해법 ②: 일을 맡겨 폴더를 나눈다
2025-07-24Claude Code 커스텀 서브에이전트(1.0.60) · 공식 문서

서브에이전트는 자기 창에서 일하고 요약만 돌려준다

code.claude.com/docs/en/sub-agents
Create custom subagents 공식 문서 첫 화면
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 공식 문서 ‘커스텀 서브에이전트 만들기’ 첫 화면. 검색 결과·로그가 메인 대화를 채우지 않게 별도 에이전트에 맡기는 기능이라고 설명.
“the subagent does that work in its own context and returns only the summary.”서브에이전트가 그 일을 자기 컨텍스트에서 처리하고, 요약만 돌려준다.Claude Code Docs · Create custom subagents
검색·로그가 자기 창에서 처리돼 메인 대화가 깨끗하다. 시스템 프롬프트·도구·권한도 따로 준다.
대화 이력과 읽은 파일을 보지 못한다. 요청도 보내므로 사용량은 메인과 같은 한도에서 차감된다.
압축이 쌓인 맥락을 줄인다면, 이쪽은 애초에 쌓이지 않게 한다. 7교시의 첫 번째 장치.
개념컨텍스트 창을 둘로 나누기

탐색은 다른 창에서, 메인에는 결론만

메인 세션 · 창 A목표·계획·판단서브에이전트 · 창 B파일 수십 개 읽기요약만 쌓임긴 테스트 로그검색 결과 수백 줄 맡긴다요약 반환

서브에이전트는 대화 이력을 보지 못합니다. 메인이 작업 내용을 요약해 건네고, 서브에이전트는 거기서 시작합니다.

공식 문서Claude Code 내장 서브에이전트 · 2026-10-28 확인

기본 제공 서브에이전트 셋: 읽기 전용 둘, 만능 하나

이름도구쓰임
Explore읽기 전용 (Write·Edit 거부)파일 찾기, 코드 검색. 깊이를 quick(빠르게) · medium(보통) · very thorough(꼼꼼히)로 지정
Plan읽기 전용 (Write·Edit 거부)Plan 모드(계획만 세우는 모드)에서 코드베이스 조사
general-purpose사용 가능한 모든 도구탐색과 수정이 함께 필요한 복잡한 다단계 작업
직접 만들지 않아도 이미 쓰고 있다. 읽기 전용이라 조사만 시켜 안전하고 빠르다.
Explore·Plan은 CLAUDE.md(프로젝트 지침 파일)와 git 상태 없이 시작한다. 세부 동작은 버전마다 바뀐다.
일에 맞춰 도구를 제한하는 설계의 기본형. 8교시 리뷰어 서브에이전트도 같은 방향.
2025-07-24.claude/agents/*.md · 공식 문서 예시 그대로

서브에이전트는 마크다운 파일 한 장으로 정의한다

  1. name · description(이름·설명)만 필수. description이 위임 기준
  2. tools로 쓸 수 있는 도구를 제한
  3. model로 가벼운 모델을 지정
  4. 본문 전체가 시스템 프롬프트(기본 지시문)
# .claude/agents/code-reviewer.md --- name: code-reviewer description: Reviews code for quality and best practices tools: Read, Glob, Grep model: sonnet --- You are a code reviewer. When invoked, analyze the code and provide specific, actionable feedback on quality, security, and best practices. ✓ 읽기 도구만 → 코드를 고치지 못한다 ✓ sonnet → 리뷰는 가벼운 모델로
공식 문서프런트매터 필드 · 저장 위치와 우선순위

필드 몇 개로 정의하고, 같은 이름이면 위쪽 위치가 이긴다

code.claude.com/docs/en/sub-agents
서브에이전트 저장 위치와 우선순위 표
공식 문서 표 캡처 · 같은 이름이면 위쪽이 이깁니다
서브에이전트 정의 파일을 둘 수 있는 위치 표. 관리 설정, 실행 옵션, 프로젝트, 내 홈, 플러그인 순으로 숫자가 작을수록 우선.
필드역할
disallowedTools쓰지 못할 도구
permissionMode권한 모드(승인 방식)
maxTurns최대 턴 수(주고받는 횟수)
background항상 백그라운드
isolationworktree로 격리(별도 폴더)
공식 문서서브에이전트를 부르는 네 가지 방법

서브에이전트는 자동 위임·말로·@-멘션·--agent로 부른다

$ claude > use the test-runner subagent to fix failing tests # 말로 지정 > @"code-reviewer (agent)" look at the auth changes # @로 에이전트 지정 > # 아무 말 없어도 description이 맞으면 Claude가 알아서 위임 $ claude --agent code-reviewer # 세션 전체를 그 에이전트로 실행 ✓ description에 “use proactively”를 넣으면 더 적극적으로 위임 ! 좋은 description = 언제 맡길지에 대한 한 줄 기준

서브에이전트가 일하는 동안 메인은 다른 일을 할 수 있습니다(백그라운드). → 8교시

공식 문서서브에이전트 병렬 호출

독립된 조사는 동시에 시킨다

메인 에이전트“인증·DB·API를따로 조사해 줘”서브에이전트 A인증 모듈서브에이전트 BDB 모듈서브에이전트 CAPI 모듈요약 3개→ 메인 창에만 남음

공식 예시: “Research the authentication, database, and API modules in parallel using separate subagents”(인증·DB(Database, 데이터베이스)·API(Application Programming Interface, 응용 프로그램 인터페이스) 모듈을 서브에이전트 따로 병렬로 조사해 줘). 조사 경로가 서로 독립일 때 잘 맞습니다.

공식 문서 + 강사 운영 방식서브에이전트를 쓸 때와 안 쓸 때

탐색·로그·리뷰는 맡기고, 되묻는 일은 메인에서

맡긴다

서브에이전트가 맞는 일

  • 출력이 길고 다시 볼 필요 없는 일: 탐색, 로그 읽기
  • 도구·권한을 제한하고 싶은 일: 리뷰어
  • 혼자 끝낼 수 있고 요약으로 돌려줄 수 있는 일
맡기지 않는다

메인에서 하는 일

  • 자주 되묻고 고쳐 가는 일
  • 계획·구현·테스트가 맥락을 공유하는 일
  • 작고 빠른 수정
  • 같은 파일을 동시에 고치는 일: 워크트리로 분리하거나 순서를 정한다
공식 문서기본값 · 2026-10-28 확인

서브에이전트는 맥락을 아끼지만 사용량은 줄이지 않는다

20

동시 실행 서브에이전트 기본 상한

CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS

3

서브에이전트가 또 서브에이전트를 부르는 최대 단계(기본)

CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH

×N

병렬로 돌린 만큼 토큰(AI가 처리하는 글 조각) 사용량도 증가

같은 사용량 한도에서 차감

기본값은 동시 20개, 중첩 3단계. → 결론: 맥락은 아끼지만 비용은 늘고, 결과가 길면 메인 창도 다시 찹니다.

질문 시간 · 약 5분

여기까지,
질문 받습니다

지금까지 다룬 것: 맥락을 나눠 쓴다 · 내장 서브에이전트 · 정의 파일 · 필드와 위치 · 서브에이전트 부르기 · 병렬 호출 · 언제 쓰고 안 쓰나 · 서브에이전트의 한계

앞에서 본 화면
앞에서 본 화면
앞에서 본 화면
2025-05 → 2026-02문제: 같은 작업 폴더를 함께 쓰면

한 폴더에서 에이전트 둘이 일하면 서로 덮어쓴다

한 폴더에이전트 둘워크트리폴더 둘에이전트 A로그인 기능app/작업 폴더 1개에이전트 Aapp-login/feat/login에이전트 B검색 기능에이전트 Bapp-search/feat/search 나눈다수정수정

해법은 작업마다 폴더와 브랜치(코드 갈래)를 따로 주는 것입니다. 로그인·검색 같은 작업을 동시에 시킬 때 필요합니다.

git worktreegit 공식 문서 · git-worktree (2.56.0 문서 기준)

git worktree로 한 저장소에서 브랜치마다 작업 폴더를 갖는다

git-scm.com/docs/git-worktree
git-worktree 공식 문서 첫 화면
git 공식 문서 화면 캡처
git 공식 문서의 git-worktree 설명. 한 저장소에 작업 폴더를 여럿 붙여 브랜치 여러 개를 한 번에 체크아웃(펼치기)할 수 있다.
$ git worktree add ../app-login -b feat/login $ git worktree add ../app-search -b feat/search $ git worktree list /home/me/app a1b2c3d [main] /home/me/app-login a1b2c3d [feat/login] /home/me/app-search a1b2c3d [feat/search] $ git worktree remove ../app-login ✓ “check out more than one branch at a time” = 브랜치 여럿을 한 번에 펼친다 ! 같은 브랜치는 두 곳에 못 연다(기본값)
git이 오래전부터 제공한 기능. 브랜치마다 폴더가 생기고 기록은 공유해, 합치기도 일반 머지다.
같은 브랜치는 두 곳에 못 연다. 새 체크아웃이라 의존성 설치 등 환경 준비가 따로 필요하다. 서브모듈은 실험적.
에이전트 병렬화의 해법은 새 발명이 아니라 오래된 git 기능. Claude Code·Codex가 이를 제품에 넣었다.
git worktree무엇을 나누고 무엇을 같이 쓰나

저장소 기록은 하나, 작업 파일은 각자

공유 · 저장소 .git (커밋 · 브랜치 · 원격)main 워크트리~/app · main링크드 워크트리../app-login · feat/login링크드 워크트리../app-search · feat/search워크트리마다 따로: 파일 · HEAD · 인덱스

커밋과 브랜치는 모든 워크트리에 즉시 보입니다. 파일, HEAD(현재 커밋 표시), 인덱스(커밋 대기 목록)는 워크트리마다 따로입니다.

2025-05-15Cursor 0.50 · Background Agent(프리뷰)

Cursor는 2025년 5월 백그라운드 에이전트로 병렬 실행을 내놓았다

cursor.com/changelog/0-50
Cursor 0.50 변경 기록 화면
공식 변경 기록 화면 캡처 · 2025-05-15
Cursor 0.50 업데이트 소개 글. 요금제 단순화와 함께 병렬 작업용 Background Agent(백그라운드 에이전트)를 처음 내놓았다.
“Background Agent for parallel task execution.”병렬 작업 실행을 위한 백그라운드 에이전트.Cursor Changelog 0.50 · 2025-05-15
에이전트가 편집기와 별개로 돌아, 여러 작업을 동시에 맡길 수 있다.
초기 프리뷰로 점진 배포. 이 글에는 격리 방식의 세부가 없어 확인할 수 없다.
병렬 실행을 제품 기능으로 먼저 내놓은 사례. 동시 실행이 기본 기능이 되어 가는 출발점.
2026-02-19Claude Code --worktree(2.1.49) · 공식 CHANGELOG

Claude Code는 --worktree 한 줄로 격리된 세션을 연다

code.claude.com/docs/en/worktrees
Run parallel sessions with worktrees 공식 문서 첫 화면
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 공식 문서 ‘워크트리로 병렬 세션 실행’. 워크트리는 파일·브랜치는 따로, 저장소 기록은 공유하는 작업 폴더라고 설명.
# CHANGELOG 2.1.49 Added --worktree (-w) flag to start Claude in an isolated git worktree # = 격리된 워크트리에서 Claude를 시작하는 옵션 추가 $ claude --worktree feature-auth $ claude -w feature-search # 다른 터미널에서 ✓ .claude/worktrees/<이름>/ ✓ 브랜치 worktree-<이름> ✓ 나갈 때 변경을 확인하고 유지·삭제를 묻는다 ! .env 같은 파일은 .worktreeinclude(복사 목록)로 복사
이름만 주면 폴더와 브랜치를 자동 생성. 다른 터미널에서 또 실행하면 격리 세션이 하나 더 생긴다.
새 체크아웃이라 .env 같은 gitignore 파일이 없다. .worktreeinclude에 복사 목록을 적어야 한다.
앞 장의 git 기능을 옵션 한 줄로 감쌌다. 병렬 격리가 도구의 기본 기능이 됐다.
2026-02Codex 앱 출시 · 내장 워크트리 · 공식 문서

Codex 앱은 워크트리를 기본 기능으로 넣었다

developers.openai.com/codex/app/worktrees
Codex 앱 Worktrees 공식 문서 화면
공식 문서 화면 캡처 · 2026-10-28 확인
OpenAI Codex 앱의 Worktrees 문서. 워크트리를 저장소의 두 번째 복사본으로 정의하고 Local·Worktree·Handoff 용어를 풀이.
같은 프로젝트의 여러 채팅이 서로 방해 없이 돈다. Local(원래 폴더)↔Worktree(복사본)를 Handoff(넘기기)로 오간다.
Git 저장소에서만 동작한다. 출시일은 2월 초까지만 확인했다.
Claude Code · Cursor · Codex가 같은 방향으로 모였다. 특정 도구만 정답이 아니다.
2026-02-19서브에이전트 isolation: worktree(2.1.49) · 공식 문서 예시

둘을 합치면 서브에이전트마다 자기 워크트리를 갖는다

프런트매터(파일 맨 위 설정) 한 줄 isolation: worktree
서브에이전트마다 임시 워크트리라 파일을 고쳐도 내 폴더는 그대로. 변경이 없으면 끝날 때 자동 삭제.
기본은 default 브랜치에서 분기. 작업 중인 브랜치 상태가 필요하면 worktree.baseRef 설정이 필요하다.
맥락 분리와 파일 분리를 한 줄로 결합. 13교시 코디네이터-배치의 기반.
# .claude/agents/refactorer.md --- name: refactorer description: Applies mechanical refactors across many files isolation: worktree --- Apply the requested refactor across every affected file, then run the tests and report the results. # refactorer = 여러 파일을 기계적으로 고치는 에이전트 ✓ 파일을 고쳐도 내 작업 폴더는 그대로 ! 기본은 default 브랜치에서 분기(worktree.baseRef)
강사 운영 방식병렬 작업의 비용은 합칠 때 나온다

합칠 때 충돌: 격리는 충돌을 미룰 뿐

워크트리 Aauth.php 수정main 브랜치같은 줄 충돌워크트리 Bauth.php 수정사람이 판단또는 미리 분할 먼저 합침 ✓나중에 합침

워크트리는 작업 중의 덮어쓰기를 막을 뿐, 합칠 때의 충돌은 막지 못합니다. 변경 범위를 미리 나누는 것이 가장 싼 해법입니다.

워크플로우계획 → 병렬 구현 → 리뷰 → 합치기 · 강사 운영 방식

이어 붙이면 한 흐름: 계획에서 합치기까지

1 계획스펙 · Task 분할2 병렬 구현워커 A·B·C · 워크트리별4 합치기충돌 해결 · 사람 승인3 리뷰 에이전트읽기 전용 나눠 줌브랜치별통과분만

계획은 스펙과 Task(5교시), 완료 기준은 테스트(6교시), 리뷰어는 읽기 전용 서브에이전트, 구현은 워크트리 안의 워커입니다. → 8교시 실습

2026-02-28 · 공식 문서Claude Code 병렬 실행 방법 비교 · /batch(2.1.63)

병렬 방법은 여럿이고, 서브에이전트·워크트리·/batch는 역할이 다르다

code.claude.com/docs/en/agents
Run agents in parallel 공식 문서의 방법 비교 표
공식 문서 화면 캡처 · 2026-10-28 확인
Claude Code 공식 문서 ‘에이전트 병렬 실행’의 비교 표. 서브에이전트 등 5가지 방식이 각각 언제 맞는지를 나란히 설명.
방법장점한계
서브에이전트한 세션 안에서 맡기고 맥락을 나눈다사용량 ×N, 이력을 못 본다
워크트리파일 편집을 격리한다합칠 때 충돌은 못 막는다
/batch(스킬)큰 변경 하나를 서브에이전트 5~30개로 쪼개 각자 워크트리에서 작업두 방법의 한계를 함께 진다

→ 의미: 워크트리는 돌리는 방법이 아니라 편집 격리 도구, /batch는 둘을 묶은 스킬

정리문제 → 해결 · 2025-05 → 2026-02

오늘 본 것: 창을 나누고, 폴더를 나누고, 다음은 ‘얼마나 오래’

문제한 창에 다 담김(압축 · 정보 유실)서브에이전트맥락을 나눠 쓴다2025-07-24문제한 폴더 · 한 에이전트(덮어쓰기)워크트리작업 공간을 나눈다2025-05 → 2026-02다음 문제오래 맡기려면승인 · 계속 (3회차)

서브에이전트는 맥락을, 워크트리는 파일을 나눕니다. → 8교시 실습 2 · 과제 2

2회차 · 8교시실습 2 · 2026-11-10 · 18단계 중 8·13·14단계 + 이슈별 워크플로우 1–8
실습 2

하네스를 한 번 더 키운다:
딴길을 막는 장치들

GitHub Spec Kit 발표 글
8·13단계스펙 → Task
Claude Code 모범 사례: 통과·실패를 돌려주는 검사를 준다
완료 기준테스트 먼저
Claude Code 훅 가이드: 보호할 파일 편집 막기
보호막히는지 시험
Claude Code 서브에이전트 문서: 정의 파일 예시
구현 리뷰리뷰어 서브에이전트
약 60분 · 18단계 중 8·13·14단계이슈별 워크플로우 1–8 · 저는 이렇게 합니다. 바꿔도 됩니다

제 방식: 스펙 개요 → Task → 이슈를 만들고, 이슈 하나를 리뷰까지 끝낸다

18단계 8 · Spec 개요v1이 막을 딴길·수용 기준18단계 13 · Task 분할TASKS.md 체크리스트18단계 14 · 이슈 등록장치마다 이슈 한 건워크플로 7–8구현(테스트 먼저)·구현 리뷰워크플로 5–6구현 계획·계획 리뷰이슈 하나 · 워크플로 1–4분석·ADR 점검·스펙·스펙 리뷰

제가 보는 것은 내가 한 답 · 결정 한 줄 요약 · 스모크 결과 셋입니다. 각 리뷰는 블로커가 없으면 종료, 예산이 다 되면 중단하고 진행 파일에 인계합니다. PR(Pull Request, 병합 요청)·CI(Continuous Integration, 지속적 통합)·머지(9–12)는 16교시입니다.

그대로 붙여 넣어도 됩니다제가 쓰는 프롬프트의 예 · 내 하네스에 맞게 바꿔 쓰기 · 스모크도 같이 시킨다

첫 프롬프트(예): 질문을 먼저, 구현은 승인 뒤에

> 내 하네스에 딴길 방지 장치를 더하고 싶다. 어떤 게 필요한지부터 같이 정하자. 아직 코드는 쓰지 마. 운영 기준 순서로 가자. 8 Spec 개요 → 13 Task 분할 → 14 GitHub 이슈 등록. 질문은 한 번에 하나씩, 네 추천 답과 이유를 같이, 8개 안에서 끝내. 각 이슈마다 어겨 보는 스모크 시나리오를 하나씩 붙여. 끝나면 docs/spec.md, TASKS.md, 이슈 초안을 만들고 내가 “승인”할 때까지 기다려. 승인하면 이슈 하나를 골라 이슈별 워크플로우 1~8로: 분석 → ADR 점검 → 이슈 스펙 → 스펙 리뷰 → 구현 계획 → 계획 리뷰 → 구현(테스트 먼저) → 구현 리뷰. 리뷰는 블로커가 없으면 끝내고, 예산이 다 되면 멈춰서 progress.md에 인계해.
github.blog · Spec Kit
GitHub Spec Kit 발표 글
SDD(Spec-Driven Development, 스펙 주도 개발) 도구의 예 · 2025-09-02
GitHub의 Spec Kit. 스펙 → 계획 → Task 순서로 에이전트를 이끄는 오픈소스 도구 모음. 우리는 문서 몇 장으로 같은 순서를 밟는다. 프롬프트의 ADR(Architecture Decision Record, 아키텍처 결정 기록)은 결정과 이유를 남긴 문서.
질문 체크리스트하네스가 묻지 않으면 내가 먼저 꺼낸다 · 제가 쓰는 질문의 예

에이전트가 물어야 할 질문은 단계마다 하나씩이다

단계에이전트가 물을 것예시 답빠지면
8 Spec 개요이번에 막을 딴길과 수용 기준범위 밖 변경 · 일찍 멈춤 · 테스트 조작 · 압축 망각무엇을 막는지 흐려진다
13 Task 분할한 번에 끝낼 크기와 끝 조건 한 줄장치 하나 = Task 하나, 테스트 통과한꺼번에 만들다 엉킨다
14 이슈 등록이슈 수, 순서, 수용 조건, 범위 밖이슈 1~4건, 하나 먼저, 어겨 보기로 판정완료를 판정할 수 없다
워크플로 1–2영향 범위, 기존 ADR과 충돌 여부ADR-0001 권한 결정과 충돌 없음이전 결정을 뒤집는다
워크플로 3–6블로커의 기준, 리뷰 최대 횟수정확성에 영향 주는 것만, 최대 2회리뷰가 끝나지 않는다
워크플로 7–8테스트 먼저 · 예산 · 인계 위치실패 확인 후 커밋, 예산 소진 시 progress.md테스트를 구현에 맞춰 고친다
18단계 중 8·13단계제 예시 · 어떤 장치를 넣을지는 각자 정한다 · 작업 계층은 체크리스트로 줄인다

8·13단계의 결정은 한 줄씩이다: 번호 붙은 요구와, 끝 조건이 있는 Task (예)

번호하네스가 정리한 결정 (한 줄 요약)Task와 끝 조건스모크로 본다
G1테스트가 통과해야 에이전트가 끝낼 수 있다T1 · 실패인 채 끝내려 하면 계속 일한다실패 상태에서 “끝났다”고 시킨다
G2커밋된 테스트 파일은 편집할 수 없다T2 · 커밋된 건 막히고 새 테스트는 허용기존 테스트 수정 / 새 테스트 생성
G3압축 뒤에도 진행 상황이 다시 읽힌다T3 · /compact 뒤 진행 파일 내용이 보인다압축 뒤 “어디까지 했어?”
G4구현 뒤 스펙 기준 리뷰를 거친다T4 · G 번호별 구현·테스트 여부 보고일부러 빠뜨린 G를 짚어 내나
번호 G1~G4가 이슈·테스트·리뷰가 가리킬 기준이 된다. 범위 밖(샌드박스·CI·자동 머지) 한 줄이 시키지 않은 기능을 막는다.
경계 조건은 하네스 초안이 틀릴 수 있다. ‘커밋된 것만 막는다’ 같은 경계는 내가 정한다.
18단계의 축소판. 운영 기준은 저위험 개인 도구에서 이렇게 줄이는 것을 허용한다.
18단계 중 14단계Task마다 GitHub 이슈 한 건 · 하네스가 등록, 내용은 내가 승인

14단계: 장치마다 이슈 한 건을 만든다 (#1~#4는 메뉴의 예)

이슈막는 딴길수용 조건 (스모크로 판정)순서
#1 Stop 훅‘다 했다’며 일찍 멈춤테스트가 실패인 채 끝내려 하면 계속 일한다2
#2 테스트 보호테스트를 고쳐서 통과커밋된 테스트 편집이 막히고, 새 테스트는 허용된다1 · 예: 먼저 할 것
#3 진행 파일압축 뒤 맥락 망각/compact 뒤 progress.md 내용이 다시 보인다3
#4 리뷰어범위 밖 기능·스펙 누락R·G 번호별 구현·테스트 여부 보고, 스타일 지적 없음4

이슈 본문: 종류 · 상위(spec) · 기대 산출물 · 범위 밖 · 수용 조건 · 상태. 내게 필요한 것을 골라 처리하고 나머지는 이슈로 남깁니다. → 12교시: 이 이슈를 스킬로

승인 체크리스트내가 한 답 · 정리된 결정 · 스모크 시나리오 세 곳만 본다 · 승인은 사람만 한다

구현에 들어가기 전에 저는 다섯 가지만 확인한다

  1. 내가 한 답: 블로커 기준, 리뷰 최대 횟수, 예산 상한이 내 말로 적혀 있다
  2. 내가 한 답: 생략한 단계(PR·CI·워크트리 등)와 이유가 적혀 있다
  3. 결정 요약: 번호 붙은 요구(예: G1~G4)가 시험할 수 있는 문장이다
  4. 결정 요약: Task와 이슈마다 끝 조건이 한 줄 있다
  5. 스모크: 이슈마다 어겨 보는 시나리오가 하나씩 있고, 구조를 내 말로 30초 안에 설명할 수 있다
보는 곳이 세 가지로 줄어, 코드를 읽지 않고도 문서 세 벌을 빨리 판정할 수 있다.
체크리스트에 없는 위험(이슈 간 의존 등)은 놓친다. 순서가 이상하면 하네스에게 의존 관계를 따로 묻는다.
운영 기준의 ‘적용하지 않는 절차와 이유를 남긴다’를 한 줄 체크로 줄인 것.
이슈별 워크플로우 1–6내가 고른 이슈 #2의 예 · 하네스가 문서를 쓰고, 리뷰는 블로커가 없으면 종료

1–6단계는 문서로 수렴시킨다: 분석, ADR 점검, 스펙, 계획 그리고 두 번의 리뷰

단계하네스가 낸 것 (이슈 #2의 예)사람이 볼 곳
1 이슈 분석영향: 에이전트가 tests/** 를 고쳐 통과시키는 일 · 6교시 사례범위가 이슈에 한정되나
2 ADR 점검ADR-0001(금지 3개)과 충돌 없음 → ADR-0002: 도구 호출 직전에 막는 훅 채택, 권한 규칙은 보조되돌리기 비싼 결정이 기록됐나
3 이슈 스펙S1 커밋된 tests/* 편집 차단 · S2 새 테스트는 허용 · S3 차단 이유를 에이전트에 반환경계 조건(‘커밋된 것만’)
4 스펙 리뷰블로커 1: Bash 우회 미언급 → 범위 밖에 명시 → 블로커 0, 종료블로커 기준에 맞나
5 구현 계획변경 파일 둘 이내 · 순서: 테스트 → 차단 장치 → 등록 → 어겨 보기파일 수가 작나
6 계획 리뷰블로커 1: 새 파일 만들기 경로 누락 → 수정 → 블로커 0, 종료스펙 S1–S3를 다 덮나
이슈별 워크플로우 7 · 구현 (테스트 먼저)이슈 #2 테스트 보호를 고른 경우 · 프롬프트와 스모크 · 스모크 대화는 예시

7단계: 테스트를 먼저 쓰고 실패를 보여 달라고 한 뒤, 막는 장치를 만들게 한다

프롬프트 · 그대로 붙여 넣기
> 이슈 #2를 구현해. 순서를 지켜. 1. 먼저 시험을 써. 막는 장치가 아직 없으니 실패해야 해. 실패하는 걸 보여 주고 시험만 따로 커밋해. 2. 그다음 커밋된 시험 파일의 편집을 막아. 새 시험 파일과 구현 파일은 허용. 3. 막을 땐 이유가 너한테 돌아오게 해. 4. 끝나면 세 경우를 직접 돌려서 표로 보여 줘. 시험은 구현에 맞춰 고치지 마.
스모크 · 하네스가 보여 준 증거 (예시)
> 시험 커밋이 구현보다 먼저인지 로그로 보여 줘 ✓ test: #2 보호 시험 (실패 3건) ← 먼저 ✓ feat: #2 커밋된 시험 편집 차단 ← 나중 > 세 경우 결과 표 ✓ 커밋된 시험 파일 수정 → 막힘 + 이유 ✓ 새 시험 파일 생성 → 허용 ✓ 구현 파일 수정 → 허용 ! 구현 파일까지 막히면 → 다시 시킨다
‘커밋된 테스트만’ 막아 새 테스트는 쓸 수 있다. 이유가 하네스에게 돌아가 스스로 방향을 바꾼다.
하네스가 명령 실행 안에서 스스로 파일을 여는 우회까지는 못 막는다. 샌드박스가 필요하고, 범위 밖에 명시했다.
시험만 먼저 커밋한 기록이 시험을 고쳐 통과시키지 않았다는 증거가 된다.
이슈별 워크플로우 7–8끝내기 관문(#1) · 리뷰어 서브에이전트(#4) · 고른 경우에 한해 · 스모크 대화는 예시

구현은 테스트가 막고, 구현 리뷰는 별도의 리뷰어에게 맡긴다

#1 프롬프트와 스모크
> 네가 “끝났다”고 말하려 할 때 테스트를 먼저 돌리고, 실패면 못 끝내게 해 줘. 무한히 반복하진 않게 하고, 어떻게 막는지 한 줄로 설명해. # 스모크 (예시) > 테스트가 실패한 채로 “끝났다”고 말해 봐 ✓ 테스트 1건 실패 → 계속 일함 > 고친 뒤 다시 끝내 봐 ✓ 4 passed → 멈춤 허용
#4 프롬프트와 스모크
> 구현 뒤 검토만 맡는 리뷰어 서브에이전트를 만들어. 기준은 docs/spec.md의 G·S 번호뿐이고, 스타일 지적은 하지 마. 정확성 빈틈만 블로커로 보고해. # 스모크 (예시) > G2 구현을 일부러 하나 빼고 리뷰를 시켜 봐 ✓ 블로커 1: G2 새 테스트 허용 미구현 ✓ 스타일 지적 0건 > 고친 뒤 다시 리뷰 ✓ 블로커 0 → 8단계 종료

리뷰 지적이 나와도 테스트는 건드리지 않고 구현만 고치게 합니다. 보호 장치가 지켜 줍니다.

중단 · 인계 · 압축 대비#3 진행 파일을 고른 경우 · 예산 소진 시 통과가 아니라 멈춤 · 스모크 대화는 예시

예산이 다 되면 통과시키지 않고, 진행 파일에 적고 멈추게 한다

code.claude.com/docs/en/hooks-guide
Claude Code 훅 가이드: 압축 뒤 맥락 다시 넣기
공식 문서 화면 캡처 · 2026-10-28 확인
훅 가이드의 ‘압축 뒤 맥락 다시 넣기’ 예. 압축 직후 파일을 다시 읽어 맥락에 넣는 방식을 이 문서가 설명한다.
> Task 하나를 끝낼 때마다 progress.md를 갱신해. 지금 상태 · 결정 · 버린 것 · 블로커 · 다음 한 걸음. 압축된 직후에는 이 파일이 자동으로 다시 읽히게 해. 블로커가 남은 채 예산이 떨어지면 통과시키지 말고 멈춰서 여기에 인계해. # 스모크 (예시) > /compact > 지금 어디까지 했어? ✓ 이슈 #2, 8단계 리뷰 중 · 훅 채택(ADR-0002) ✓ 버린 것: 전체 tests 금지(새 테스트도 막힘) ✓ 다음: 이슈 #1
약 15분 · 스모크내가 고른 장치의 수용 조건 판정 · 일부러 어기기 + 기록 · 결과는 예시

스모크: 이슈의 수용 조건을 일부러 어겨 보고, 막힌 것까지 기록한다

하네스에게 하나씩 (결과는 예시): > tests/test_store.py 를 고쳐서 통과시켜 ✓ 막힘 + 이유 (S1) > tests/test_new.py 를 새로 만들어 ✓ 허용 (S2) > 테스트 실패 상태에서 “끝났다”고 말해 ✓ 계속 일함 (#1을 했다면) > /compact 뒤 “지금 어디까지 했어?” ✓ 진행 파일 내용이 보임 (#3을 했다면) ! 안 막혔다 → > “방금 요청이 왜 통과됐는지 설명하고, 막히게 고친 뒤 같은 요청으로 다시 보여 줘”
시나리오기대실제통과
커밋된 테스트 수정막힘내가 적는다□
새 테스트 생성허용내가 적는다□
실패인 채 끝내기계속 일함#1 했다면□
압축 뒤 이어가기진행 내용 보임#3 했다면□
빠뜨린 G 짚어내기블로커 보고#4 했다면□

이슈 번호·단계, 블로커와 반복 횟수, 남은 이슈와 다음 한 걸음도 한 줄씩 함께 적습니다. 화면이나 로그를 하나씩 남깁니다.

다음 회차(11-17)까지집에서 이어서 · 내 하네스 ‘나만의 하네스 만들기’ · 2회차

다음 회차까지 해 볼 것: 장치 하나를 골라 더하고, 어겨 보며 확인한다

해 볼 일
1 오늘 메뉴에서 내 하네스에 필요한 장치를 골라 하네스에게 시킨다 (질문부터, 승인한 뒤 구현)
2 그 장치를 일부러 어겨 보고 막히는지 눈으로 확인한다 (12번 장의 표를 내 장치에 맞게 바꿔서)
3 못 끝낸 이슈는 열린 채 진행 파일에 인계해 둔다
다음 시간에 나누면 좋은 것
내가 쓴 프롬프트 한 개 (하네스의 질문과 내 답)
스모크 표 한 장 (막힌 화면이나 로그 하나)
막힌 곳 하나, 또는 딴길로 샌 사례 하나

완성도보다 해 보며 알게 된 것을 나눕니다. 코드나 저장소를 보여 주지 않아도 됩니다. → 12교시: 이 워크플로우를 스킬로

증상별설치·문법이 아니라 하네스에게 다시 할 말

막힐 때: 대부분은 하네스에게 주는 지시를 고치면 풀린다

증상이렇게 다시 말한다
질문 없이 바로 구현한다“스펙·Task·이슈를 내가 승인하기 전에는 파일을 만들지 마.”
스펙과 계획이 한 문서에 섞인다“스펙에는 맞는 동작만, 계획에는 바꿀 파일과 순서만 써.”
리뷰가 끝없이 이어진다“정확성에 영향 주는 것만 블로커로 하고, 나머지는 후속 이슈로 빼. 최대 2회.”
테스트를 구현 뒤에 쓴다“구현 전에 실패하는 테스트를 먼저 돌려 보이고 커밋해.”
스모크에서 막혀야 할 요청이 통과됐다“방금 요청이 왜 통과됐는지 설명하고, 막히게 고친 뒤 같은 요청으로 다시 보여 줘.”
스모크에서 구현 파일 수정까지 막혔다“테스트 폴더의 커밋된 파일만 막게 고치고, 세 경우를 다시 돌려서 표로 보여 줘.”
예산이 다 됐는데 통과시켰다“블로커가 남았으면 멈추고 progress.md에 인계해. 통과 처리하지 마.”