implementation-uilisted
Install: claude install-skill changja88/dddjango
# web 구현 표기
## 언제 쓰나
`web/` 트리의 코드를 쓸 때 로드한다 — HTML 템플릿·삼총사 .py(view/view_model/state)·form·section·widget·design_system·client·urls. 시안(이미지·HTML)을 화면으로 재현할 때, HTMX 부분 재렌더·토큰·에셋을 배선할 때도 여기다. 전문을 읽지 말고 아래 라우팅 표로 필요한 절만 부분 적재한다. 경계:
- 무엇을 view/section/widget 어느 조각에 담나 — 판별·승격·계약 소비 절차 → `architecture-web`
- 파일을 어느 폴더에 어떤 이름으로 만드나 — 트리·명명 사실 → `discipline-web-houserules`
- UI JS 이벤트·DOM·브라우저 자원·수명·키보드 표기 → `implementation-javascript`
- 명명·함수 형태·캡슐화·중복 같은 보편 규율 → `discipline-cleancode`
- 호스트 배선(INSTALLED_APPS·TEMPLATES DIRS·STATICFILES_DIRS 프리픽스 튜플·ROOT_URLCONF include·ALLOWED_HOSTS·htmx vendored 설치) → Coordinator — 커맨드 Phase 0 전제조건 검사
- BC 안 서버렌더(driven_layer templates·Django admin)는 비관할 — dddjango 플러그인 소관
## 핵심 운영 원칙
- **외형 보존·내부 구��� 통합** — 원본 DOM 관계·CSS 선언/값/효과를 템플릿·토큰·CSS 소유 위치에 보존한다. 엔진 런타임 전체 직수입·Django 책임 우회 금지 (§2)
- 시안 빌드의 모든 coder 호출은 첫 변경 전 직접 inputs 입장을 거친다(코더 역할 계약). 데이터만 구현할 때도 inputs는 적용하며 visual 완료와 구별한다. 임시 검증은 scope의 사용자 실행 경계를 따른다 (§2)
- 시안이 애초에 없으면 기존 design_system 관례로 자체 설계한다. 수집 실패는 시안 없음이 아니다. 변경/근사는 구체적인 이탈 결정 후 적용하고 실제 렌더 증적을 남긴다 (§2)
- view는 함수 뷰 고정 — URL 바인딩·form 수신·세션 쿠키 추출·VM 호출·render·fragment 분기(HX-Request 헤더 또는 전용 라우트)만, 판단 금지. auth는 `@login_required` — 페이지·fragment 라우트 동일 적용 (§3)
- 입력 검증=form(`form/` 조건 생성·`<View>Form`)·표시 상태=VM 분담. VM이 client 호출→응답 모델→state 조립·계약 예외를 표시 상태로 번역·session_key 운반. state는 `@dataclass(frozen=True)` 프리미티브·중첩 dataclass — 예외로 Django Form 1종(검증 실패 재렌더 시 운반), 타입 힌트 전면 (§3)
- 템플릿: extends 첫 비주석 줄·load 알파벳순·태그 안 한 칸 공백·b