← ClaudeAtlas

architecture-generatorlisted

docs/PRD.md와 docs/TRD.md를 읽고 프로젝트 전체 아키텍처를 docs/ARCHITECTURE/ 아래에 작성한다. overview.md에 시스템 구성·경계·핵심 흐름을 담고, frontend.md·backend.md·database.md·auth.md·security.md 등 영역별 문서로 나눠 기록하며, 무엇보다 PRD·TRD와 충돌하는 설계가 있는지 검토해 봉합하지 않고 드러낸다. 사용자가 "아키텍처 설계해줘", "구조 잡아줘", "설계 문서 써줘", "테이블 설계해줘", "API 설계해줘", "폴더 구조 어떻게 나눌지 정해줘"라고 하거나, TRD 검토를 마치고 다음 단계로 넘어갈 때 반드시 이 스킬을 사용한다. 요구사항과 기술 스택은 정해졌는데 구조가 문서로 없는 상태에서 개발 계획을 세우거나 코드를 짜기 시작하려 할 때도 이 스킬로 먼저 설계를 고정한다.
GangJaeYu/harness_loop_full_korean · ★ 2 · Testing & QA · score 75
Install: claude install-skill GangJaeYu/harness_loop_full_korean
# 아키텍처 작성 (Layer 2) ## 이 스킬의 목적 아키텍처는 **"고른 기술 안에서 어떤 모양으로 만들 것인가"**에 대한 합의문이다. PRD가 사용자에게 한 약속이고 TRD가 그 약속을 지키려고 고른 수단이라면, 아키텍처는 그 수단을 실제 구조로 배치한 것이다. 여기서 정한 구조가 뒤에서 이렇게 흘러간다. ``` 아키텍처의 설계 단위 (database.md §3.2 인보이스 번호 채번) → 태스크의 Files·Architecture 항목이 이걸 가리킨다 (Layer 3) → 품질 게이트가 검증할 대상이 여기서 나온다 (Layer 4) → 루프의 한 태스크가 "무엇을 건드려도 되는가"의 경계가 된다 (Layer 5) ``` 그래서 이 문서의 품질은 "구조가 세련됐는가"가 아니라 두 가지로 판정된다. 1. **각 설계가 어느 요구사항·기술 결정 때문인지 적혀 있는가** 2. **PRD·TRD와 어긋나는 지점을 조용히 봉합하지 않고 드러냈는가** 두 번째가 이 레이어의 핵심이다. 요구사항과 기술 결정이 처음 **동시에** 한 사람 앞에 놓이는 곳이 여기다. PRD를 쓸 때는 기술이 없었고 TRD를 쓸 때는 구조가 없었으므로, 둘이 못 만나는 지점은 **아키텍처를 그려 봐야 비로소 보인다.** 그리고 그 지점을 여기서 못 보면, 다음에 보이는 곳은 Layer 5에서 태스크가 세 번 실패하고 멈추는 순간이다. ### 여기서 하는 일과 하지 않는 일 | 하지 않는 것 | 어디서 하는가 | |---|---| | 요구사항을 새로 만들거나 우선순위를 바꾸는 것 | PRD (`prd-generator`) — 돌아가서 고친다 | | 기술을 새로 고르거나 바꾸는 것 (라이브러리 교체 포함) | TRD (`trd-generator`) — 돌아가서 고친다 | | 개발 순서, 태스크 분할, phase 구성, 일정 | Layer 3 마스터 플랜 (`plan-generator`) | | 품질 게이트 4단계 구성, E2E가 덮을 흐름 목록, task validation 절차 | Layer 4 하네스 (`harness-setup`) | | 실제 코드, 마이그레이션 파일, 설정 파일 작성 | Layer 5 개발 루프 | **아키텍처는 요구사항도 기술도 만들지 않는다.** 설계하다 보면 둘 다 만들고 싶어진다 — "여기 관리자 화면이 있어야겠는데"(요구사항), "이건 큐가 있어야 되겠는데"(기술). 그렇게 문서에 슬쩍 들어간 것은 추적표에 근거가 없고, PRD·TRD 어느 쪽에서도 검토받지 않은 채 Layer 3에서 태스크가 된다. **둘 다 충돌로 처리해 되돌려 보낸다.** 2단계가 그 방법이다. ### TRD와 아키텍처의 경계 TRD가 이미 정해 둔 기준이 있다 — **후보 중 하나를 고르는가, 고른 것 안에서 모양을 정하는가?** | TRD (고른다) | 아키텍처 (모양을 정한다) | |---|---| | 관계형 DB를 쓴다. 후보 중 X를 고른다 | `invoices` 테이블에 어떤 컬럼