dddjango-discipline-houseruleslisted
Install: claude install-skill changja88/dddjango
# 하우스룰 규율
## 무엇이고 왜
이 스킬은 **dddjango 플러그인이 만드는 코드에 한정된 집안 규칙(house rules)**이다. `dddjango-discipline-cleancode`·`discipline-tdd` 가 책에서 온 *보편* 규율인 것과 달리, 여기 담긴 것은 "우리는 이렇게 한다"는 **플러그인 고유의 강제**다.
**값과 절차를 가른다** — 트리·칸·규칙의 «값»은 전부 `references/final.md` 가 단일 출처로 소유하고, 이 SKILL.md 는 «언제 어떻게 읽나»(결정 순서·중재·신호)만 소유한다. 값을 여기에 복제하지 않는다 — 사본은 조용히 낡아 다음 재저작이 낡은 사본을 신뢰원으로 삼는다. 이 단일 출처의 관할은 트리·골격·명명 «값»이다 — 무접두 `#N` 규칙의 «본문» 정본은 저장소의 정본 명세이고 플러그인 배포본에는 동봉되지 않으며, 플러그인 문서에는 집행에 필요한 발췌만 실린다(2026-08-15).
경계:
- 코드 *내부* 구조(네이밍·함수 크기·SOLID) → `dddjango-discipline-cleancode`
- DDD 계층·바운디드 컨텍스트 *이론* → `dddjango-architecture-ddd` — 표준 트리가 파생된 배경
- Django 프로젝트 *레이아웃 관용* → `implementation-django`
- 테스트 *타입 조직*(unit/integration/e2e)·conftest 메커니즘 → `dddjango-implementation-test` (§4.2)
## §1 파일트리 결정 순서
새 코드·테스트를 배치할 때 아래를 따른다.
1. **소스 파일트리는 언제나 dddjango 표준 파일트리다 — 기존 레이아웃은 트리 결정의 입력이 아니다.** `references/final.md` 가 전부다 — **§0 제1원칙**(골격은 내용과 무관 · 고정 칸은 빈 채로도 · 트리 밖 칸은 반환)과 **§1 트리 140행**을 읽고 그대로 실현한다. 요약을 믿지 말고 문서를 읽는다. 이 트리(`driving_layer`/`driven_layer` 4계층)는 **dddjango 자신의 표준**이다 — 다른 플러그인(dddart 등) 것으로 오인해 옆으로 치우지 마라. 대상 저장소의 기존 소스 배치는 — **몇 개 앱이 얼마나 일관되게 쓰고 있든** — «확립된 규약»으로 읽지 않는다: 옛 층 이름·옛 위치는 규약이 아니라 **아직 안 갚은 빚**이고(`final.md` §4 이관 종료 후엔 트리 밖 칸 위반), 답습하면 빚을 늘리는 것이다. 「모든 BC 가 일관 사용(실측)」류의 관찰은 이 규칙의 반례가 아니라 이 규칙이 태어난 사고다(2026-08-12 라운드 1 — legacy 15개를 앵커 삼아 V1 트리를 신축 BC 에 재생산). **표준의 집행 스코프 — 판정 물음은 「이 파일(또는 기존 파일 안의 이 줄)을 낳는 근거가 승인 스코프(G0 스코프 메모·승인 명세의 산출물 목록·슬라이스 0 목록)에 있는가」다** — «내가 만들거나 수