TRENDSHIFT · 2026.06.15

architect-loop 딥다이브
— 코드 한 줄 없이 "설계자/시공자"를 분업시키는 두 개의 Claude Code 스킬

architect-loop"AI 한 명이 다 하지 말고, 역할을 쪼개라"는 발상을 실제로 돌아가게 만든 두 개의 Claude Code 스킬 모음이다. Claude Fable 5설계·심사(판단만)를 맡고, GPT-5.5 Codex실제 구현·리서치를 맡는다. 스펙과 합격 기준(gate)을 먼저 얼리고, Codex 빌더들을 격리된 git worktree에서 병렬로 돌린 뒤, Claude가 증거를 직접 검증한 다음에만 통합한다. API 키가 필요 없다 — 이미 결제 중인 Claude 플랜과 ChatGPT 플랜으로 돌아간다. (저장소: DanMcInerney/architect-loop · 100% 마크다운 스킬 + bash/PowerShell 인스톨러 + Python 검증 스크립트 · MIT 라이선스)

이 문서는 "멀티 에이전트 오케스트레이션을 어떻게 운영 규율로 설계하는가"에 초점을 둔 해설이다. architect-loop는 무거운 프레임워크가 아니라 "잘 쓴 프롬프트와 운영 규칙의 묶음"이라는 점이 핵심 — 그래서 코드보다 설계 결정과 그 근거를 읽는 것이 배울 점이다.
목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트 (기술별)
  7. 시스템 / 환경 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

이 레포가 무엇을 하는 물건인가.

핵심 메시지

"설계자(Claude)는 도면과 합격 기준만 그리고,
시공팀(Codex)은 각자 격리된 현장에서 짓는다.
설계자가 직접 검사를 통과시킨 것만 본 건물에 합친다."

보통 우리는 AI 코딩 에이전트 하나에게 "이거 만들어 줘"라고 통째로 맡긴다. 그러면 그 한 명이 계획·구현·검증·커밋을 다 하는데, 자기가 짠 코드를 자기가 채점하니 객관성이 무너진다. architect-loop는 이걸 "판단하는 자(architect)"와 "만드는 자(builder)"로 분리한다.

핵심 통찰은 두 가지다. 첫째 "약한 설계자가 약한 시공자보다 더 해롭다" — 그래서 더 똑똑한 모델에게 설계를 맡긴다. 둘째 "에이전트는 자기가 보이는 테스트를 게임(gaming)한다" — 그래서 합격 기준을 시작 전에 얼려 두고(frozen gate), 설계자가 빌더의 말이 아니라 diff를 직접 읽는다.

architect-loop/architect(빌드 루프)와 /architect-research(리서치 루프) 단 두 개의 Claude Code 슬래시 명령을 제공한다. /architect는 "지난 실행을 판정 → 다음 한 조각(slice)을 스펙으로 작성 → 빌더 디스패치"라는 한 번의 작업 블록(work block)을 돌린다. /architect-research는 "무엇을 만들지" 아직 정하지 못했을 때, 인용이 달린 리서치 보고서를 만들어 빌드 루프의 PRD로 먹인다.

용어
Claude Code 스킬 (Skill)
Claude Code(앤트로픽의 터미널 코딩 에이전트)에서 SKILL.md라는 마크다운 파일에 "이 역할을 맡을 때 따라야 할 규칙·절차"를 적어두면, 슬래시 명령(/architect)으로 그 페르소나를 불러올 수 있다. architect-loop는 실행 코드가 거의 없고, 잘 설계된 SKILL.md 텍스트가 본체인 "프롬프트 패키지"다.
용어
Fable
Claude Fable 5는 Anthropic이 2026년 6월에 출시한 Claude 모델 버전으로, 이 프로젝트에서 설계자(architect) 역할을 맡는다. README·DESIGN.md 표기는 'Claude Fable 5'이며, 저자(@DanMcInerney)가 @jumperz 아이디어를 구현하면서 이 모델을 선택했다. 원래 아이디어는 @jumperz의 X 게시물에서 "Fable + Codex 서브에이전트" 패턴으로 제안됐다.

2왜 주목받는가

트렌딩 이유 · "AI 하나에게 다 맡기기" 대비 장점.

2026년의 코딩 에이전트들은 충분히 똑똑해졌지만, 장시간 무인 작업(unattended)에서 신뢰성이 무너진다는 공통의 약점이 있다. architect-loop가 트렌딩하는 이유는, 이 신뢰성 붕괴를 새 모델이 아니라 "운영 규율"로 막는다는 데 있다. 그리고 그 규율 하나하나에 출처가 달려 있다(DESIGN.md). 즉 "감으로 만든 프롬프트"가 아니라 근거 기반 설계라는 점이 개발자들에게 신뢰를 준다.

비교 항목AI 하나에게 통째로 맡기기architect-loop
역할 분리한 모델이 설계·구현·검증·커밋 전부설계/심사 = Claude, 구현 = Codex로 분리
채점 주체자기가 짠 코드를 자기가 채점(편향)아무도 자기 일을 채점하지 않음 — 빌더 주장은 전언, 설계자가 직접 게이트 실행
합격 기준작업 중 즉흥적으로 조정 가능시작 전 얼리고 커밋(frozen gate) — 빌더가 게이트 파일 수정 시 자동 실패
병렬화대개 단일 스레드1~4개 격리 worktree에서 빌더 병렬, 파일셋 겹침 사전 검사
메모리긴 대화 컨텍스트(점점 썩음)레포 자체가 메모리 — 짧은 HANDOFF.md + 게이트/레인 파일 + git 히스토리
비용 모델API 키 종량제API 키 불필요 — Claude 구독 + ChatGPT 구독 quota 사용
설치 무게프레임워크·런타임 설치마크다운 파일 복사가 전부(install.sh 30초)
기존 방식의 한계
"단일 에이전트 통짜 위임"의 세 가지 함정

① 자가 채점 편향. 에이전트가 직접 짠 코드를 직접 "통과했습니다"라고 보고하면, 통과한 테스트가 실제로 병합 가능한지(mergeable)는 별개다. 연구상 에이전트가 통과시킨 PR은 자주 병합 불가다. ② 테스트 게이밍. 보이는 테스트를 향해 반복 수정하면, 에이전트는 의도가 아니라 테스트를 만족시키는 꼼수를 학습한다. ③ 메모리 부패. 모든 맥락을 한 메모리 파일/긴 대화에 쌓으면, 그 파일이 비대해지며 정작 중요한 작업을 밀어낸다.

architect-loop의 해결
"얼린 게이트 + 외부 심판 + 레포=메모리 + worktree 격리"

합격 기준을 시작 전에 docs/gates/에 커밋해 동결(① 게이밍 차단)하고, 설계자가 빌더와 다른 세션에서 게이트를 직접 돌리고 diff를 읽어(② 자가채점 차단) 판정한다. 메모리는 짧은 목차(HANDOFF.md ~150줄)로 유지하고 상세는 게이트/레인 파일로 분산(③ 부패 차단). 빌더는 각자 git worktree에 격리돼 충돌이 구조적으로 불가능하다. "레포에 없으면 일어나지 않은 일"이 원칙이다.

3기술 스택 전체 지도

놀랍게도 "런타임"은 거의 없다 — 본체는 마크다운 프롬프트다.

① 본체 (백엔드라기보다 "역할 정의") — 마크다운 스킬

architect-loop의 가장 충격적인 사실은 실행되는 애플리케이션 코드가 거의 없다는 점이다. 레포의 핵심 자산은 잘 설계된 마크다운 문서 7개다. 이들은 Claude Code와 Codex CLI라는 이미 존재하는 두 에이전트를 지휘하는 "운영 매뉴얼"이다. 즉 architect-loop는 "엔진"이 아니라 "두 엔진을 협업시키는 악보(score)"다.

요소역할
skills/architect/SKILL.md설계자 페르소나의 본체 — 8개 하드 룰 + 절차(Ground→Arbitrate→Judge→Spec→Dispatch). effort: high 프론트매터.
dispatch.md검증된 codex exec 명령·빌더 블록 템플릿·worktree 팬아웃·스톨 분류. 실제 CLI 동작에 맞춘 "현장 매뉴얼".
research.md슬라이스 규모의 인라인 팩트체크 팬아웃(빌드 루프 안의 작은 리서치).
HANDOFF.template.md레포-메모리 파일 골격. 매 세션 짧게 유지(목차+포인터).
architect-research/SKILL.md리서치 오케스트레이션: scout→design→fan out→verify→write.
lanes.mdscout 블록 + 소스 클래스별 전술 라이브러리(검증된 엔드포인트 포함).
DESIGN.md34KB짜리 설계 문서 — 12개 강제 규칙·실패 모드 표·인용 출처. 이 레포의 진짜 본체.

② 외부 실행 엔진 (이 레포가 "지휘"하는 대상)

요소역할
Claude Code앤트로픽 터미널 코딩 에이전트. 여기서 설계자(Claude Fable 5) 역할로 동작. SKILL.md를 로드해 페르소나가 됨.
Codex CLI (≥0.133)OpenAI의 코딩 CLI. 빌더(시공자) 역할. codex exec 헤드리스 모드로 비대화식 실행.
모델: gpt-5.5빌더가 쓰는 모델 슬러그. -codex 접미사 라인은 deprecated(흔한 오해). model_reasoning_effort="xhigh" 기본.
git worktree레인별 격리 작업 디렉토리. 빌더는 자기 worktree에서만 파일 수정, .git은 sandbox 보호로 read-only.
웹 검색 (Codex)리서치 루프의 scout/researcher가 사용. codex exec--search 플래그를 거부(TUI 전용)하므로 설정으로 제어.

③ 인프라 · 설치 · 검증 도구

요소역할
install.sh / install.ps1스킬 디렉토리를 ~/.claude/skills/(전역) 또는 ./.claude/skills/(--project)로 복사. Codex 버전도 체크.
tests/validate_skills.pystdlib만 쓰는 레포 무결성 검사 — 프론트매터 길이(≤1024자)·깨진 링크·불균형 코드펜스 등 실제로 겪은 실패 모드를 잡음.
샌드박스: --sandbox workspace-write빌더의 유일한 권한 통제. .git을 read-only로 강제 → 빌더는 커밋 불가(설계자만 커밋).
quotaAPI 키 대신 ChatGPT 플랜의 5시간/주간 quota를 소모. 멀티시간 런은 주간 윈도우의 의미 있는 비중.
.gitignore/docs/ /.architect/ /research/ 무시 — 런타임 산출물은 레포에서 분리.
용어
codex exec (헤드리스 모드)
Codex CLI를 대화창 없이 한 번 실행하고 끝내는 비대화식(non-interactive) 모드. 설계자가 빌더를 "발사"하는 방식이다. 프롬프트(빌더 블록)는 셸 인자가 아니라 stdin(-)으로 넘긴다 — 큰 프롬프트의 따옴표를 셸(특히 PowerShell)이 망가뜨려 무한 대기에 빠지는 사고를 막기 위해서다.
용어
git worktree
하나의 git 저장소에서 여러 작업 디렉토리를 동시에 체크아웃하는 기능. architect-loop는 레인(병렬 작업 갈래)마다 worktree를 하나씩 만들어, 빌더들이 같은 파일을 동시에 만지는 충돌을 원천 차단한다. worktree의 .git은 포인터 파일이고 그 실제 git 디렉토리도 샌드박스 보호를 받아 빌더는 공유 히스토리를 건드릴 수 없다.

4아키텍처 심화 분석

설계자-빌더 분업 + 얼린 게이트 + worktree 격리, 그리고 두 개의 루프.

전체 흐름 한눈에 — /architect 빌드 루프

한 번의 호출 = 한 번의 작업 블록(work block)이다. 설계자(Claude)는 판단만 하고 구현 코드는 한 줄도 쓰지 않는다. 지난 실행을 판정 → 다음 한 PR 분량의 슬라이스(slice)를 스펙으로 작성 → 1~4개 레인(lane)으로 쪼개 파일셋 겹침 검사 → 합격 기준(gate)을 먼저 커밋해 얼림 → 각 레인을 격리 worktree에서 Codex 빌더로 병렬 발사. 빌더가 끝나면 다른(fresh) 세션에서 설계자가 게이트를 직접 돌리고 diff를 읽어 통과 레인만 병합한다.

사람: /architect (작업 블록 1회) │ ┌───────────────▼────────────────────┐ │ 0. GROUND: CLAUDE.md/README/문서 읽기 │ │ docs/HANDOFF.md 정독 (레포=메모리) │ │ codex --version 확인 (>= 0.133) │ └───────────────┬────────────────────┘ │ ┌───────────────▼────────────────────┐ │ 1~2. 지난 슬라이스 판정 (다른 세션) │ │ 게이트 명령을 "직접" 실행 (빌더 말 X) │ │ diff를 의도와 대조 → PASS/FAIL/KILL │ └───────────────┬────────────────────┘ │ ┌───────────────▼────────────────────┐ │ 4. 다음 슬라이스 스펙 작성 │ │ 1 PR 분량 → 1~4 레인으로 분할 │ │ 레인별 file-touch 세트 겹침 검사 │ │ 합격 기준을 docs/gates/<slice>.md에 │ │ 커밋 (★FREEZE — 이후 수정 금지★) │ └───────────────┬────────────────────┘ │ freeze-sha 기준으로 팬아웃 ═══════════ 병렬 격리 빌더 (Codex exec, xhigh) ═══════════ 레인01 worktree 레인02 worktree 레인03 worktree … codex exec -C … codex exec -C … codex exec -C … (각자 .git read-only — 커밋 권한 없음) ═════════════════════╤══════════════════════════════════ │ 각 빌더의 의무: ┌────────────┼──────────────┬──────────────┐ ▼ ▼ ▼ ▼ PHASE 0: 선언한 파일만 raw 결과만 게이트 파일 스펙에 반론 수정 (경계 준수) 보고(채점 X) 수정=자동 FAIL (침묵=결함) │ docs/lanes/<slice>-<NN>.md 기록 ┌───────────▼────────────────────────┐ │ 설계자(fresh 세션)가 통합 │ │ ① 게이트 명령 직접 실행 (재검증) │ │ ② git diff로 게이트 변조 검사 │ │ ③ diff를 스펙 의도와 대조 │ │ ④ 통과 레인만 commit + merge --no-ff│ │ ⑤ worktree 정리, HANDOFF.md 갱신 │ └─────────────────────────────────────┘ │ (다음 작업 블록 반복)
비유 — 왜 "다른 세션"에서 판정하나

같은 시험을 출제한 선생님이 답안도 채점하면, 무의식적으로 "내가 의도한 답"에 후하게 점수를 준다. architect-loop는 발사한 그 세션에서는 절대 판정하지 않는다. 판정은 "이 코드가 어떻게 만들어졌는지 모르는" 새 세션이 맡는다. 출제와 채점을 다른 사람이 하는 셈 — 인용된 연구가 "fresh-context 리뷰가 더 정확하다"고 뒷받침하기 때문이다.

핵심 설계 패턴 (DESIGN.md의 강제 규칙들)

패턴architect-loop에서의 구현
설계/구현 분리설계자는 구현 코드 작성 금지(하드룰 1). "약한 설계자가 약한 시공자보다 해롭다"는 근거.
얼린 외부 게이트합격 기준을 결과가 생기기 전에 커밋. 빌더가 게이트 파일을 만지면 git diff로 잡혀 자동 FAIL(하드룰 3).
아무도 자기 채점 안 함빌더 보고는 전언(hearsay). 설계자가 게이트를 직접 실행하고, 발사한 세션과 다른 세션에서 판정(하드룰 4).
강제된 이견빌더는 PHASE 0에서 실제 파일을 인용해 스펙에 반론해야 함. 침묵 순응 = 결함(하드룰 5).
매니저+격리 워커설계자=매니저, 빌더=worktree 격리 워커. 공유 파일 직접 조율은 throughput을 붕괴시킨다는 근거.
레포가 메모리HANDOFF.md(짧은 목차)+gates/+lanes/+git history. 대화·빌더 출력에만 있는 결과는 판정 거부(하드룰 2).
스톨 감지·구제liveness 체크, 자식 프로세스 트리 진단, "가장 좁은 것"만 kill, 모든 긴 명령에 명시적 타임아웃.
스케일 매칭사소한 수정은 루프 쓰지 말 것 — 루프는 슬라이스 규모 작업용. 도구를 작업에 맞춤.
용어
슬라이스(slice) / 레인(lane) / 게이트(gate)
슬라이스 = 한 PR 분량의 작업 단위. 레인 = 그 슬라이스를 병렬로 나눈 갈래(1~4개), 각자 만질 파일셋이 서로 겹치지 않게 분할된다. 게이트 = 합격 판정 기준(테스트/린트/타입체크/빌드 명령), 작업 시작 전에 docs/gates/에 커밋해 "동결"한다. 레인 간 파일이 겹쳐 merge 충돌이 나면, 그것은 "레인 계획이 disjoint하지 않았다 = 스펙 결함"으로 보고 충돌 레인을 죽이고 재스펙한다(손으로 충돌 해결 안 함).

/architect-research — 또 다른 루프 (scout-first 딥리서치)

"무엇을 만들지" 아직 결정 못 했을 때 쓰는 리서치 루프다. 고정된 레인 분류(taxonomy)를 쓰지 않고, 프로덕션 딥리서치 시스템처럼 scout가 먼저 지형을 그린 뒤 설계자가 토픽별 레인을 즉석 설계한다.

/architect-research <고민 중인 주제> │ ┌────────▼─────────────────────────────────┐ │ 1. 값싼 Codex SCOUT가 토픽 지도화(~10검색) │ │ - 표준 용어 / 핵심 시스템·논문 │ │ - 거명된 인물 / 토픽의 자연스러운 단층선 │ │ (비교·사실확인 질의는 scout 생략) │ └────────┬─────────────────────────────────┘ │ ┌────────▼─────────────────────────────────┐ │ 2. 설계자가 scout 지도로 3~6 토픽별 레인 설계│ │ 소스 클래스별 전술 라이브러리에서 차용: │ │ - 학술 인용 스노볼링 │ │ - "스타 말고 dependents" 레포 증거 │ │ - emerging-vs-hype 게이팅 │ │ - 프로덕션 패턴 마이닝 / 전문가 추적 │ │ (레인 간 겹침·구멍 검사 후 디스패치) │ └────────┬─────────────────────────────────┘ │ 병렬 Codex 연구원 (하드 예산) ┌────────▼─────────────────────────────────┐ │ 3. 검색 캡 / 레인당 <=5 주제 / saturation 정지│ │ findings 규율: URL + 날짜 + 인용 + 신뢰태그│ │ NOT FOUND > 추론, 추천(권고) 금지 │ │ 전문가 의견은 2차 웨이브(1차가 명단 시드) │ └────────┬─────────────────────────────────┘ │ ┌────────▼─────────────────────────────────┐ │ 4. 설계자가 검증 + 집필 │ │ 핵심 주장당 독립 출처 >=2개 │ │ adversarial 반증(falsification) 검색 │ │ 실제 fetch한 URL만 인용 │ │ → 한 명의 저자가 의사결정형 보고서 1편 작성 │ │ (수집은 병렬, 종합은 절대 병렬 X) │ └──────────────────────────────────────────┘
왜 두 루프를 나눴나
"리서치급 팬아웃은 채팅의 약 15배 토큰을 쓴다"

리서치 루프는 의도적으로 분리됐다. 깊은 병렬 리서치는 토큰을 엄청 먹기 때문에, 빌드 루프의 부작용으로 슬쩍 일어나면 안 되고 "의도적 행위"여야 한다는 것이 저자의 설명이다. 그래서 무엇을 만들지 정하는 단계(/architect-research)와 만드는 단계(/architect)를 명령부터 갈라 놓았다.

5디렉토리 구조 해부

코드가 아니라 마크다운이 본체 — 그래서 구조가 곧 "역할 명세서".

architect-loop/ ├── README.md 설치·사용·설계 요약(30초 설치 가이드) ├── DESIGN.md ★★ 진짜 본체 (34KB) — 12개 강제 규칙· │ 실패모드 표·모든 결정의 인용 출처 ├── install.sh / install.ps1 스킬을 ~/.claude/skills/로 복사 │ (--project = 현재 레포에만 설치) ├── LICENSE MIT ├── .gitignore /docs/ /.architect/ /research/ 무시 │ ├── skills/ ★ 두 개의 Claude Code 스킬 │ ├── architect/ /architect (빌드 루프) │ │ ├── SKILL.md ★ 설계자 페르소나 — 8 하드룰 + 절차 │ │ ├── dispatch.md ★ codex exec 명령·빌더 블록·worktree │ │ │ 팬아웃·스톨 분류 (CLI 0.139 검증) │ │ ├── research.md 슬라이스 규모 인라인 팩트체크 팬아웃 │ │ └── HANDOFF.template.md 레포-메모리 파일 골격 │ │ │ └── architect-research/ /architect-research (리서치 루프) │ ├── SKILL.md 리서치 오케스트레이션 (scout→…→write) │ └── lanes.md scout 블록 + 소스클래스별 전술 라이브러리 │ ├── assets/ README용 다이어그램 │ ├── architect-flow.png / .html 빌드 루프 흐름도 │ ├── research-flow.png / .html 리서치 루프 흐름도 │ └── loop-diagram.png / .html │ └── tests/ └── validate_skills.py ★ stdlib만 쓰는 무결성 검사 (프론트매터 ≤1024자·링크·코드펜스) [런타임에 생성, .gitignore됨] ├── docs/HANDOFF.md ★ 레포-메모리 목차 (~150줄, 매 세션 가지치기) ├── docs/gates/<slice>.md 얼린 합격 기준 (FREEZE 후 수정 금지) ├── docs/lanes/<slice>-<NN>.md 각 레인의 raw 결과 └── .architect/ 디스패치 블록·last-run.md·worktree(wt/)
읽는 순서 추천

README.md로 "두 명령이 뭘 하나" 큰 그림 → ② skills/architect/SKILL.mdHard rules 8개로 "절대 규칙" 파악 → ③ dispatch.md로 빌더를 실제로 어떻게 발사하는지(codex exec·worktree) → ④ DESIGN.md각 규칙의 근거(인용)까지. 코드 한 줄 없이도 "멀티 에이전트 운영 규율"의 정수가 이 네 파일에 다 들어 있다.

6학습 포인트 (기술별)

"프레임워크 없이 프롬프트·규율만으로 멀티에이전트를 운영하는 법".

A. 역할 분리 — "약한 설계자 > 약한 시공자"의 함의

가장 큰 교훈은 "한 에이전트에게 다 시키지 말라"는 것이다. 계획·구현·검증·커밋을 한 모델이 다 하면 자가 채점 편향이 생긴다. architect-loop는 설계와 구현을 분리하고, 설계에 더 강한 모델을 배치한다 — 약한 부분을 시공이 아니라 설계에 두면 더 크게 망가진다는 근거에 따른 것이다. 모델·도구가 무엇이든 옮길 수 있는 원칙이다.

실습: 당신이 쓰는 AI 코딩 도구로 작은 기능을 만들되, 한 세션에서 "스펙만" 작성하고(코드 금지), 다른 새 세션에 그 스펙만 주고 구현시켜 보라. 한 세션에 통째로 시킨 것과 결과물의 명확성·검증 가능성을 비교.

B. 얼린 게이트 — "보이는 테스트는 게임당한다"

에이전트는 보이는 테스트를 향해 반복 수정하며 의도가 아니라 테스트를 만족시키는 꼼수를 배운다. architect-loop의 답은 ① 합격 기준을 작업 전에 커밋해 동결하고, ② 빌더가 그 게이트 파일을 만지면 git diff로 잡아 자동 실패시키며, ③ 게이트 통과는 필요조건일 뿐 — 설계자가 diff를 의도와 직접 대조한다는 것. "테스트 통과 ≠ 병합 가능"을 코드/절차로 강제한다.

실습: 작은 작업의 "합격 기준"(예: 특정 명령이 exit 0, 특정 출력 포함)을 텍스트로 먼저 적어 별도 파일에 저장하고, 구현이 끝난 뒤 그 파일을 절대 수정하지 않고 기준을 그대로 실행해 채점해 보라.

C. 레포가 메모리 — 메모리 파일은 썩는다

긴 대화나 비대한 메모리 파일에 모든 맥락을 쌓으면 점점 부패해 정작 중요한 일을 밀어낸다. architect-loop는 HANDOFF.md를 짧은 "목차"로만 유지하고(매 세션 가지치기), 상세는 게이트·레인 파일로 분산시킨다. "레포에 없으면 일어나지 않은 일"이라는 규칙은 대화에만 있는 진행상황을 신뢰하지 말라는 강력한 규율이다. 이는 모든 장기 에이전트 작업에 적용된다.

실습: 진행 중인 프로젝트의 "메모리"를 ① 짧은 목차(TL;DR + 링크)와 ② 세부 파일들로 분리하고, 매 세션 끝에 끝난 작업의 세부를 목차에서 빼 별도 파일로 archive하는 습관을 들여 보라.

D. 운영 견고성 — 스톨 감지·타임아웃·격리

무인 멀티시간 런에서 진짜 적은 "버그"가 아니라 조용히 멈춘 프로세스다. architect-loop는 ① --json 출력 파일이 15분+ 안 자라고 마지막 이벤트가 in_progress면 스톨로 판정, ② 자식 프로세스 트리를 진단(hot-spin vs blocked), ③ 전체가 아니라 "가장 좁은 멈춘 자식"만 kill해 빌더의 컨텍스트를 살린다. 모든 긴 명령엔 명시적 타임아웃을 건다. 운영(ops) 사고방식을 코드로 옮긴 좋은 예다.

실습: 장시간 백그라운드 작업에 "N분간 출력 파일이 안 커지면 알림/종료"하는 워치독을 직접 짜 보라. 그리고 asyncio.wait_for나 셸 timeout으로 개별 단계에 타임아웃을 거는 패턴을 익혀라.

E. 근거 기반 설계 문서 — DESIGN.md라는 모범

architect-loop가 신뢰받는 또 다른 이유는 모든 설계 결정에 출처를 붙였다는 점이다(DESIGN.md). "이렇게 하면 좋더라"가 아니라 "이 연구·이 시스템이 이렇게 한다"로 정당화한다. validate_skills.py도 추상적 베스트프랙티스가 아니라 "우리가 실제로 겪은 실패 모드"(프론트매터 1024자 초과로 Codex가 스킬 로드 거부 등)를 잡는다. "근거와 실제 실패에서 출발하라"가 핵심.

실습: 당신의 프로젝트 규칙(린트 룰·아키텍처 결정) 3개를 골라, 각각 "왜 이렇게 했는가"의 근거(겪은 버그·읽은 글·측정값)를 한 줄씩 적어 DESIGN 노트를 만들어 보라.

7시스템 / 환경 요구사항

설치는 30초 — 진짜 요구사항은 "두 구독"이다.

항목요구사항
설계자Claude Code — 유료 Claude 플랜 아무거나. SKILL.md를 ~/.claude/skills/에 설치.
빌더Codex CLI ≥ 0.133(npm i -g @openai/codex@latest). ChatGPT 플랜에 로그인.
API 키불필요(기본). Claude는 Claude 플랜, Codex는 ChatGPT 플랜 quota로 동작.
OSbash(install.sh) 또는 Windows PowerShell(install.ps1). git 필요(worktree).
비용 체감빌더/연구원 런은 ChatGPT의 5시간/주간 quota를 소모 — 멀티시간 런 1회 = 주간 윈도우의 의미 있는 비중. 설계자 세션은 "시간"이 아니라 "분" 단위.
검증(선택)python tests/validate_skills.py — stdlib만 필요(추가 의존성 없음).
적용 범위슬라이스 규모 작업에 맞는 도구. 사소한 1줄 수정엔 루프를 쓰지 말 것(SKILL.md가 명시).

8직접 해볼 수 있는 실습 과제

난이도별 5단계 — 두 구독이 있으면 실제로, 없으면 "패턴 이식"으로.

과제 1 난이도 ★☆☆☆☆

설치하고 두 명령 띄워 보기

레포를 클론하고 ./install.sh --project로 현재 테스트 레포에만 설치한 뒤, Claude Code에서 /architect/architect-research가 슬래시 명령으로 뜨는지 확인한다. codex --version이 0.133+ 인지도 체크. 아직 발사하지 말고 페르소나가 로드되는 것만 확인.

과제 2 난이도 ★★☆☆☆

하드 룰 8개를 내 말로 요약하기

skills/architect/SKILL.md의 Hard rules를 읽고, 각 규칙이 "어떤 실패를 막는가"를 한 줄씩 적는다(예: 룰 4 = 자가 채점 편향 방지). 그다음 DESIGN.md에서 그 규칙의 인용 출처를 찾아 짝지어 본다. "규칙 ↔ 근거" 매핑 표를 직접 완성.

과제 3 난이도 ★★★☆☆

"얼린 게이트" 패턴을 내 워크플로에 이식

architect-loop가 없어도 패턴은 쓸 수 있다. 작은 기능 하나에 대해 ① 합격 기준을 텍스트 파일로 먼저 작성·git commit(동결) → ② AI에게 구현 시킴 → ③ 기준 파일을 수정하지 않고 그대로 채점 → ④ git diff로 기준 파일이 안 바뀌었는지 확인. 게이트가 변경되면 "FAIL"로 간주.

과제 4 난이도 ★★★★☆

git worktree로 병렬 레인 흉내 내기

git worktree add로 같은 레포에 디렉토리 2개를 따로 체크아웃하고, 서로 겹치지 않는 파일셋을 각각 수정해 본다. 그다음 merge --no-ff로 합쳐 충돌이 없는지 확인. 일부러 같은 파일을 양쪽에서 고쳐 충돌을 내 본 뒤, "충돌 = 레인 분할 실패"라는 architect-loop의 판단을 체감하라.

과제 5 난이도 ★★★★★

실제 한 슬라이스를 루프로 돌리기 + 스톨 관찰

두 구독이 있다면, 작은 실험 레포에서 /architect로 한 슬라이스를 실제로 발사한다. .architect/last-run.md(--json 출력)가 자라는 것을 지켜보고, 의도적으로 느린 작업을 시켜 15분+ 무성장 = 스톨 판정 로직을 관찰한다. 끝나면 설계자를 새 세션으로 띄워 게이트를 직접 돌리고 diff를 읽어 판정해 보라.

9관련 기술 심화 학습 로드맵

6주 코스 — 코딩 에이전트 기초부터 멀티에이전트 오케스트레이션 설계까지.

주차주제실습 · 참고
1주차코딩 에이전트 CLI 기초 — Claude Code / Codex CLI 사용법, 헤드리스 실행두 CLI 설치·기본 명령 · codex exec의 stdin 패턴 이해
2주차에이전트 스킬 작성 — SKILL.md 프론트매터·페르소나·절차 설계skills/architect/SKILL.md 정독 · 내 도메인의 미니 스킬 작성
3주차역할 분리 토폴로지 — 매니저+워커, 설계/구현 분리DESIGN.md의 토폴로지 근거 · 한 작업을 스펙/구현 두 세션으로 분리 실험
4주차검증 게이팅 — 얼린 게이트·반증·"테스트 통과 ≠ 병합 가능"게이트 동결 워크플로 직접 구축 · diff 리뷰 습관화
5주차병렬 격리 — git worktree·파일셋 disjoint 검사·통합 전략dispatch.md의 worktree 팬아웃 · merge --no-ff 실습(과제 4)
6주차운영 견고성 + 딥리서치 오케스트레이션 — 스톨/타임아웃, scout-first 리서치dispatch.md 스톨 분류 · architect-research/lanes.md 전술 라이브러리

10핵심 키워드 사전

본문·소스에 나온 용어 빠른 참조.

용어의미
architect / builder설계자(판단·심사만, Claude) / 시공자(구현, Codex). 핵심 역할 분리.
FableClaude를 설계자 역할로 운용할 때의 별칭(원 아이디어 출처에서 유래).
SKILL.mdClaude Code 스킬 정의 파일. 프론트매터(name·description·effort)+절차. 슬래시 명령으로 로드.
slice (슬라이스)한 PR 분량의 작업 단위. 한 작업 블록이 한 슬라이스를 다룸.
lane (레인)슬라이스를 병렬로 나눈 갈래(1~4). 파일셋이 서로 겹치지 않게 분할.
gate (게이트)합격 판정 기준(테스트/린트/빌드). 작업 전 docs/gates/에 커밋해 동결.
frozen / freeze게이트를 결과 생성 전에 커밋해 잠금. 이후 수정(빌더든 누구든) = 자동 FAIL.
HANDOFF.md레포-메모리 파일. 짧은 목차(~150줄)로 유지, 매 세션 가지치기.
레포가 메모리대화·빌더 출력이 아니라 레포(파일·git)에 있는 것만 진실로 취급.
codex execCodex CLI 비대화식 헤드리스 실행. 프롬프트는 stdin(-)으로 전달.
gpt-5.5빌더 모델 슬러그. -codex 접미사 라인은 deprecated.
xhighmodel_reasoning_effort 값. 무인 작업 기본값(리뷰 생존 데이터 근거).
git worktree한 레포의 다중 작업 디렉토리. 레인 격리에 사용. .git은 sandbox로 read-only.
sandbox workspace-write빌더 권한 통제. .git read-only → 빌더는 커밋 불가(설계자만 커밋).
PHASE 0 (이견)빌더가 빌드 전 실제 파일을 인용해 스펙에 반론하는 단계. 침묵 순응=결함.
stall (스톨)--json 출력이 15분+ 무성장 + 마지막이 in_progress인 멈춤 상태.
scout리서치 루프에서 값싸게 토픽 지형을 먼저 그리는 1차 패스(~10검색).
saturation stop새 정보가 더 안 나오면 검색을 멈추는 리서치 종료 조건.

11참고 링크