출력 스타일 (평이한 단어, 대시나 하이픈 없음)
이 스킬이 생성하는 모든 파일과 메시지는 평이하고 간단한 언어로 작성하세요. 독자를 당신으로 부르며, 따뜻하고 직접적인 동료처럼 대하고, 모든 단계를 권장 사항으로 제시하여 실행하거나 건너뛸 수 있도록 하고 명령하지 마세요. 실제 의미를 지닌 기술 용어는 그대로 사용하되, 평이한 단어로 설명하세요. 구두점으로 대시나 하이픈을 절대 사용하지 마세요: 줄표(en dash), 대시(em dash), 하이픈으로 연결된 복합어도 금지입니다. read-only가 아닌 read only로 작성하세요. 간단한 단어로 표현하거나 문장을 다시 작성하세요. 코드, 파일 경로, 명령 플래그, 다른 스킬이 일치하는 값은 하이픈을 유지합니다. 짧은 문장, 쉼표, 또는 괄호를 사용하세요. 명확함이 재치보다 중요합니다.
이 스킬이 하는 일
컨텍스트 부트스트래퍼: 이후의 모든 스킬과 AI 도구가 읽는 AGENTS.md 파일을 작성합니다.
- 그린필드 (아직 코드 없음): 코딩 표준을 질문하고, 답변과
/scope가 설정한 경우 범위 헤더의 빌드 접근 방식(이름과 한 줄 원칙)을 기반으로 루트AGENTS.md를 시드합니다. 프로젝트가 선택한 스택으로 스캐폴딩된 후에 실행됩니다(/scope→/architect가 스택 결정 → 스캐폴드 →/audit); 그 전에는 시기상조입니다. - 브라운필드, 문서화되지 않음 (코드는 있지만
AGENTS.md없음): 전체 프로젝트를 스캔하고, 루트AGENTS.md와 중첩된<area>/AGENTS.md파일을 작성하여, 전역(루트)인 것과 영역별(중첩)인 것을 판단합니다. - 브라운필드, 부분 문서화됨: 기존 루트 및 중첩 문서를 전체 코드베이스와 비교하여 검사하고, 누락된 부분(새로운 전역 사실, 문서화되지 않은 영역에 대한 중첩 문서)만 추가합니다. 큐레이팅된 내용을 절대 덮어쓰지 않습니다.
사양을 생성하지 않으며(/architect가 담당), 변경 후 파일을 유지 관리하지 않고(/sync가 담당), 기능 범위를 작성하지 않습니다(/scope가 docs/scope/를 담당).
컨텍스트 파일 규칙 (AGENTS.md가 표준)
지속적인 컨텍스트는 도구에 구애받지 않는 AGENTS.md(루트 및 중첩)에 저장됩니다. 모든 에이전트(Codex, Cursor, Claude Code 등)가 이를 읽습니다. CLAUDE.md는 단 한 줄의 포인터일 뿐이며, 전체 본문이 Claude Code의 @ 임포트를 통해 형제 AGENTS.md를 가져옵니다(정확한 포인터 본문은 agent-prompt.md에 있음). 두 파일 간에 내용이 중복되지 않습니다.
- 지식은
AGENTS.md에 작성하세요. 없으면 생성하세요. 기존AGENTS.md를 절대 덮어쓰지 마십시오(사용자나 도구가 작성했을 수 있음). 허가를 받아 보수적으로 빈틈을 메우세요. - 레거시 콘텐츠 마이그레이션: 내용이 있지만
AGENTS.md가 없는CLAUDE.md→ 허가를 요청하고, 내용을 새로운AGENTS.md로 옮기고,CLAUDE.md를 포인터로 교체하세요. 큐레이팅된 콘텐츠를 조용히 폐기하지 마십시오. - 루트는 짧고 전역적으로 유지하며, 중첩된
AGENTS.md는 실제 규칙이 있는 의미 있는 영역에만 사용하세요(이전에CLAUDE.md에 적용된 것과 동일한 루트/중첩 규칙).
범위
영역 경로 인수(예: auth, src/payments)는 3단계를 트리거합니다. 인수가 없으면 아래의 사전 점검 신호가 0단계(모호함: 신규 vs 기존 질문), 1단계(그린필드: 표준 질문, 루트 시드), 2단계(설립됨, 루트 AGENTS.md 없음: 전체 리포지토리 스캔), 또는 4단계(루트 AGENTS.md 있음: 빈틈 메우기)로 라우팅합니다. 내용이 있지만 AGENTS.md가 없는 레거시 CLAUDE.md는 마이그레이션된 후 4단계로 처리됩니다.
행동 vs 질문
1단계는 루트 AGENTS.md를 생성하기 전에 MCQ를 통해 코딩 표준을 질문합니다. 2단계는 즉시 행동하며 질문하지 않습니다. 루트와 필요하다고 판단되는 중첩 문서를 작성합니다. 3단계와 4단계는 탐색을 위해 행동하지만, 기존 루트 AGENTS.md를 수정하거나 레거시 CLAUDE.md를 마이그레이션하기 전에 허가를 요청합니다. 4단계는 먼저 문서화되지 않은 영역에 대한 중첩 문서 생성을 보고한 후 확인 시 적용합니다.
산출물 소유권
AGENTS.md 파일이 내용을 보유합니다: 없으면 루트 생성(1, 2단계) 및 필요하다고 판단되는 <area>/AGENTS.md 생성(2, 3, 4단계); 존재하면 허가를 받아 빈틈을 메우거나 추가를 제안하고, 절대 덮어쓰지 않습니다. CLAUDE.md 파일은 포인터 전용입니다(루트 및 영역). 없으면 생성합니다. 내용이 있는 레거시 파일은 허가를 받아 AGENTS.md로 마이그레이션됩니다. 중첩된 AGENTS.md를 생성할 때 루트 AGENTS.md의 ## Context files 아래에 정확히 한 줄의 포인터를 추가하세요: - [<area>/AGENTS.md](<area>/AGENTS.md) (<한 줄 설명>). 모든 하위 폴더에 하나씩이 아니라, 별개의 규칙이 있는 곳에만 추가하세요.
이식성 (모든 OS, 모든 에이전트)
- 명령:
git은 모든 OS에서 동일한 유일한 필수 CLI입니다. 다른 셸 스니펫(파일 개수,find,[ -f ])은 POSIX 참조용이며, 문자 그대로의 스크립트가 아닙니다. 에이전트의 교차 플랫폼 파일 도구(검색/글로브, 읽기, 쓰기)를 사용하여 존재 여부를 나열, 계산, 확인하세요. - 번들 파일은 이 스킬의 폴더에 있습니다:
agent-prompt.md, 단계 모드 파일(modes/*.md), 패턴 프리셋(patterns/*.md). 폴더를 절대 경로로 확인하세요. 라우팅 시 일치하는 단계 모드 파일을 읽은 다음, 쓰기 시점에agent-prompt.md와 선택된 패턴 프리셋을 읽으세요. 대문자로 된 플레이스홀더(PHASE, AREA, ADDITIONAL_STANDARDS, MONOREPO_OR_NO, INSTALLED_SKILLS, DECLINED_TOOLS 등)는 사전 점검 및 질문 라운드에서 수집한 입력값입니다. 읽을 때 각각 적용하세요. - 대화형 질문을 지원하지 않습니까? 모든 객관식 질문을 동일한 옵션으로 일반 텍스트로 질문하세요.
실행
메인 스레드는 모든 단계에서 쓰기를 수행합니다. AGENTS.md 쓰기를 하위 에이전트에 넘기지 않습니다. 유일한 하위 에이전트는 읽기 전용 정찰병(가장 저렴한 모델, Claude Code: haiku, 세션 모델 절대 사용 안 함)이며, 대규모 스캔에만 생성됩니다. 메인 스레드가 쓰는 데 사용할 간결한 맵을 반환합니다. 작은 스캐폴드 또는 단일 영역에는 정찰병이 필요 없습니다. 직접 읽으세요. 쓰기 직전에 agent-prompt.md(페르소나, 단계별 지침, 템플릿)와 1단계의 경우 선택한 패턴 프리셋을 읽은 다음, 그에 따라 작성하세요. agent-prompt.md는 사전 점검 중이 아닌 쓰기 시점에만 읽으세요.
사전 점검 (메인 스레드가 다른 모든 작업 전에 수행)
여러 신호를 수집합니다(파일 수만으로는 오해의 소지가 있습니다: 스캐폴드는 부풀리고, 익숙하지 않은 언어는 0으로 만듭니다):
- 컨텍스트 파일: 루트 AGENTS.md 존재 →
ROOT_EXISTS; 내용만 있는 CLAUDE.md →ROOT_LEGACY; 둘 다 없음 →ROOT_MISSING. - 일반적인 에코시스템 전반의 소스 개수(확장자:
.ts/.tsx/.js/.jsx/.py/.go/.rs/.java/.rb/.swift/.kt/.php/.cs/.dart/.ex/.exs/.scala/.c/.cpp/.h/.lua/.clj), 공급업체/생성 디렉토리(node_modules,.git,dist,build) 및 설정 파일(*.config.*) 제외. - 설정 신호:
git log --oneline커밋 기록 깊이; 실제 매니페스트(package.json,pyproject.toml,go.mod,Cargo.toml,composer.json,*.csproj,pubspec.yaml,mix.exs,Gemfile). - 모노레포 신호: 워크스페이스 마커(
pnpm-workspace.yaml,turbo.json,package.json의"workspaces"필드) 또는 루트 근처의apps/*/package.json/packages/*/package.json. - 워크플로우 설정 신호 (
WORKFLOW_SETUP): 루트 AGENTS.md가 없는데 워크플로우가 이미 스택을 결정한 경우, 즉docs/specs/아키텍처 사양(## Proposed stack섹션)이 존재하거나,docs/scope/에 "Stack and architecture"(또는 유사한 기본 스캐폴드) 기능이 있는 경우. 이것은 의도된 그린필드 순서(/scope→/architect가 스택 결정 →/develop이 스캐폴딩 →/audit)입니다: 방금 스캐폴딩되어 아직 코딩 표준을 캡처해야 합니다. 이 신호가 발생하면 현재 존재하는 매니페스트와 스캐폴드 소스는 기존 코드베이스가 아닌 스캐폴드입니다.
단계를 선택하십시오. 확인 순서가 중요합니다: 워크플로우 설정 신호는 원시 코드 수보다 우선합니다. 새 스캐폴드에는 매니페스트와 소스 파일이 있지만 여전히 그린필드이기 때문입니다.
| 조건 | 단계 |
|---|---|
| 인수로 영역 경로 제공됨 | 3단계 |
ROOT_EXISTS (또는 마이그레이션 후 ROOT_LEGACY) | 4단계 |
ROOT_MISSING 및 WORKFLOW_SETUP (스택 사양 및/또는 범위 스택 기능) | 1단계, 매니페스트와 스캐폴드 소스가 존재하더라도 마찬가지입니다. 코딩 표준을 질문하고 사양의 스택에서 루트를 시드하세요. 방금 스캐폴딩된 워크플로우 프로젝트를 브라운필드로 취급하지 마십시오. |
ROOT_MISSING, WORKFLOW_SETUP 없음, 소스 파일 없음 및 매니페스트 없음 | 1단계 |
ROOT_MISSING, WORKFLOW_SETUP 없음, 코드 있음(소스 ≥ 10 또는 매니페스트), 커밋 ≥ 2개 및 명백히 실제 기능 코드(스캐폴드 전용 아님) | 2단계, 모든 언어 |
ROOT_MISSING, WORKFLOW_SETUP 없음, 코드가 있지만 건드리지 않은 스캐폴드처럼 보이거나, 커밋 ≤ 1개, 또는 그린필드와 브라운필드를 구분할 수 없음 | 0단계, 질문 |
이 순서가 중요한 이유: 새 스캐폴드에는 매니페스트와 시작 파일이 있지만 여전히 그린필드이므로, 원시 코드 수만으로는 브라운필드로 오해하여 표준 질문을 건너뛸 수 있습니다. 워크플로우 설정 신호가 이를 포착하여 그린필드로 라우팅합니다. 진정한 브라운필드(2단계)는 실제 기능 코드, 실제 기록, 그리고 진행 중인 워크플로우 설정이 없음을 의미합니다. 모호한 것은 모두 0단계로 넘어갑니다. 그린필드일 수도 있는 프로젝트를 브라운필드로 기본 설정하지 마십시오.
모노레포 (MONOREPO=yes): 루트와 워크스페이스당 가벼운 스텁, 필요 시 심화. 각 워크스페이스(apps/*, packages/*)는 일급 영역입니다. 기본 문서는 워크스페이스 루트(packages/api/AGENTS.md)에 있으며, 더 깊이 묻히지 않습니다. 전체 리포지토리 실행은 모든 워크스페이스를 심층 스캔하지 않습니다. 리포지토리 루트 AGENTS.md(모노레포 전체 도구, 공유 규칙)와 매니페스트에서 각 워크스페이스의 가벼운 스텁(코드 스캔 없음, 루트 포인터 포함)을 작성하세요. 전체 규칙/주의점/키 파일 스캔은 엔지니어가 /audit packages/api(3단계)를 실행하거나 처음 그곳에서 빌드할 때 발생합니다. 워크스페이스 내에서 자체 문서가 필요한 지점(packages/ui/src/mdx/)은 워크스페이스 루트 문서 외에 추가로 하나를 얻고, 루트에서 연결됩니다. 워크스페이스 루트 문서 없이 워크스페이스 내에 이미 문서가 묻혀 있는 경우: 질문: "packages/ui에 src/mdx/에 컨텍스트 파일이 있지만 루트에는 없습니다. packages/ui/AGENTS.md로 올리시겠습니까, 아니면 새 packages/ui/AGENTS.md 아래에 중첩 문서로 유지하시겠습니까?" 이동 시: 워크스페이스 루트로 재배치합니다. 중첩 유지 시: 워크스페이스 루트 AGENTS.md를 생성하고 깊은 곳의 문서를 유지하며 루트에서 연결합니다. 위 규칙에 따라 레거시 CLAUDE.md 콘텐츠를 마이그레이션합니다. MONOREPO=yes와 워크스페이스 목록을 작성 시 적용하세요.
레거시 마이그레이션 (모든 단계): ROOT_LEGACY에서 진행하기 전에 허가를 요청: "프로젝트 컨텍스트가 있는 CLAUDE.md를 찾았지만 AGENTS.md는 없습니다. 내용을 새 AGENTS.md로 이동(모든 도구가 읽도록)하고 CLAUDE.md를 포인터로 교체하겠습니다. 진행할까요?" 예: 내용을 그대로 AGENTS.md에 복사한 다음 CLAUDE.md를 포인터로 교체; 이제 AGENTS.md가 존재하므로 4단계(빈틈 메우기)로 계속합니다. 아니요: 둘 다 그대로 두고 마이그레이션 없이 계속합니다. 중첩된 <area>/CLAUDE.md에도 동일하게 적용됩니다.
선택한 단계로 라우팅
0단계(모호함)는 아래에서 인라인으로 처리됩니다. 1단계에서 4단계까지는 일치하는 모드 파일만 읽고 그 다음 따르세요:
- 1단계 (그린필드 설정) →
modes/greenfield.md - 2단계 (전체 리포지토리 스캔) →
modes/whole-repo.md - 3단계 (영역 스캔) →
modes/area.md - 4단계 (빈틈 메우기) →
modes/gapfill.md
다른 모드 파일은 읽지 마십시오. 그린필드 및 전체 리포지토리 모드는 에이전트 스킬 / MCP 스위프를 위해 modes/tool-skills.md를 추가로 읽습니다(영역 및 빈틈 메우기 실행의 경우 건너뜁니다).
0단계: 분류 (사전 점검이 모호한 경우에만)
추측하지 마십시오. 에이전트의 대화형 옵션 선택기(Claude Code의 AskUserQuestion)를 통해 한 번 질문하거나, 동일한 옵션으로 일반 텍스트로 질문하세요. 더 강력한 신호에 따라 하나의 옵션을 (권장)으로 표시하고(매니페스트가 있는 스캐폴드 같은 트리지만 기록이 거의 없으면 새 프로젝트 쪽으로, 실제 기능 코드와 깊은 기록이 있으면 기존 쪽으로), 선택기는 마지막에 자유 텍스트 사용자 정의 슬롯을 추가합니다:
- 질문: "이것이 새 프로젝트인지 기존 코드베이스인지 확인할 수 없습니다(<이유: 예: '매니페스트는 있지만 인식하는 언어의 소스가 보이지 않습니다' 또는 '파일이 건드리지 않은 스캐폴드처럼 보입니다'>). 어떤 것입니까?"
- 헤더: "프로젝트 상태"
- 옵션: 1.
새 프로젝트, "코딩 표준을 물어보고 컨텍스트를 시드하겠습니다." → 1단계 (스택에 대해 매니페스트/스캐폴드를 읽습니다. 여전히 표준을 질문합니다.) 2.기존 코드베이스, "여기에 있는 것을 스캔하고 문서화하겠습니다." → 2단계.
모든 단계 후
AGENTS.md가 작성되어야 했는데 작성되지 않은 경우(파일이 없거나 비어 있음), 실패를 보고하고 다시 수행하세요. 성공을 알리지 마십시오. 그렇지 않으면 발견된 사항(2~4개 글머리 기호), 작성된 내용(파일 경로), 제안되거나 건너뛴 내용(기존 파일이 발견된 경우)에 대한 보고서를 전달하세요.
패턴 프리셋
1단계(그린필드 모드)에 사용되는 네 가지 코딩 스타일 프리셋은 patterns/를 참조하세요.
작성 가이드
agent-prompt.md를 참조하세요(메인 스레드는 쓰기 시점에 읽습니다. 단계별 지침 및 AGENTS.md 템플릿이 포함되어 있습니다).