CLAUDE CODE ADAPTER · VERSION 1.7 · APRIL 2026

AI-Driven Java Application
Development Methodology

A-ADM Core 방법론의 Claude Code + Java 21 구현 어댑터.
Spring Boot 3.x · 헥사고날 아키텍처 · 14개 슬래시 커맨드로 SDLC 전 단계를 자동화.

5
SDLC 단계
9
SKILL.md 파일
4
계약 파일
55
정합성 게이트
2
확장 문서
A-ADM 시리즈
● A-JADM Java · A-GADM Go Backend · A-FADM Frontend · React/TypeScript
A-JADM 확장 문서
Extension · 대규모 시스템 · 레거시 DB · v0.1 · Agents · Subagent · Agent Teams · v0.2

A-JADM이란

A-JADM은 A-ADM Core의 Claude Code 구현 어댑터입니다.
Java 21 + Spring Boot + 아키텍처 (헥사고널 | 레이어드) 스택으로,
SKILL.md 9개 정규 + 1개 위성과 슬래시 커맨드 14개로 SDLC 전 단계를 자동화합니다.

A-ADM CORE 참조

이 문서는 A-ADM CoreClaude Code + Java 21 구현 어댑터입니다.
설계 원칙 · 계약 파일 스키마 · 추적성 규칙 · Wave 토폴로지 등 방법론 본질은 Core 문서를 참조하세요.

A-ADM Core 보기 → 이 어댑터 고유 내용: SKILL.md 구현 · 14개 슬래시 커맨드 · Java 21 고정 스택 · 테스트 피라미드
Lean
필요한 것만 정확하게
추적
UC → 코드 → 테스트 1:1
계약
파일 기반 스킬 연결
반복
BC 단위 점진적 구현

A-FADM과의 연결 구조

A-FADM 문서 보기 →

A-JADM은 백엔드 파이프라인을 담당하고, A-FADM은 프론트엔드(React/TypeScript) 파이프라인을 담당합니다.
두 방법론의 연결 지점은 /gen-openapi 커맨드가 생성하는 openapi.yaml입니다.

[ A-JADM — 백엔드 파이프라인 ]
/usecase → /domain-modeling → /arch-design → /implement-bc → /gen-test → /run-local
                                                                           │
                                                          /gen-openapi → openapi.yaml   ← 연결 지점
                                                                           │
[ A-FADM — 프론트엔드 파이프라인 시작 ]
openapi.yaml → /fe-spec → /fe-scaffold → /fe-implement → /fe-test
백엔드 API 명세 확정 전에도 openapi.yaml 초안을 기반으로 프론트엔드 파이프라인을 병렬로 진행할 수 있습니다.

세 가지 핵심 축

스킬 (Skill)
재사용 가능한 프롬프트 모듈
SKILL.md 오케스트레이터 + 참조 파일 구조.
세션마다 재작성하지 않고 커맨드 한 줄로 일관된 산출물 생성.
계약 파일 (Contract)
스킬 간 인터페이스
domain-context.md · arch-decisions.md · bc-plan.md.
스킬이 서로를 직접 호출하지 않고 파일로 소통.
슬래시 커맨드
자동화 실행 단위
CLAUDE.md에 정의된 /implement-bc, /gen-test 등.
계약 파일을 읽어 추론 없이 결정적으로 실행.

전통 개발 → AI-Driven 개발

A-ADM의 핵심 패러다임 전환과 계약 파일이 필요한 이유는 A-ADM Core 문서에 상세히 설명되어 있습니다.
이 섹션에서는 Claude Code 환경에서의 실제 적용 포인트를 정리합니다.

🎯

SKILL.md 오케스트레이터

각 스킬은 SKILL.md 파일 하나로 완결됩니다.
Claude Code가 파일을 읽고 실행 — 세션마다 프롬프트 재작성 불필요.

📄

계약 파일 자동 검증

domain-context.md가 없으면 스킬이 즉시 중단합니다.
계약 없는 추론 실행은 허용되지 않습니다.

슬래시 커맨드 자동화

CLAUDE.md에 정의된 14개 커맨드로 SDLC 전 단계를 한 줄로 실행.
BC 단위 점진적 구현이 기본 전략입니다.

5대 설계 원칙

5대 원칙의 전체 정의는 A-ADM Core → 설계 원칙을 참조하세요.
Claude Code 어댑터 관점에서의 적용 방식을 정리합니다.

① Lean
CLAUDE.md 4개 값 변경으로 배포

company, domain, base-package, java-version만 바꾸면 새 프로젝트에 즉시 적용됩니다.

② Traceability
@Test 메서드명 = Gherkin 제목

gen-test 스킬이 시나리오 ID 주석과 1:1 @Test를 자동 생성합니다.

③ Contract-File
파일 없으면 스킬 중단

arch-decisions.md 없이 /implement-bc를 실행하면 즉시 에러. 추론 모드 폴백 없음.

④⑤ Convergence + Scale
병렬 스킬 + Wave 분해

usecase-by-example ∥ domain-modeling 수렴 후 bc-plan.md Wave 순서로 구현.

FIXED STACK Java 21 Spring Boot 3.x Hexagonal | Layered JPA (Command) + jOOQ (Query) JUnit 5 + AssertJ Mockito + Testcontainers Lombok 금지

5단계 워크플로

요구사항 분석부터 실행까지, 각 단계는 명확한 입력·산출물·게이트를 가집니다.

위성 스킬 (선택적): Phase 2 모델링 산출물 검토를 위한 시각화 도구로 gen-class-diagram(v1, v1.6.1 신규)을 제공합니다.
domain-context.md → PlantUML 클래스 다이어그램 3종(docs/class-diagrams/) 생성.
55 게이트 무관, 빠져도 파이프라인 정상 동작.
자세한 내용은 스킬 파이프라인 § 위성 스킬 카드 참조.
1
요구사항 분석
/usecase → /usecase-by-example 순차 파이프라인
도메인 설명 (자연어)
       │
       ▼
/usecase [--level casual|fully-dressed]    ← Step 1
       │
       ▼
usecases/                                ← UC별 분할 저장 (검토·수정)
  ├── UC001-주문생성.md
  ├── UC002-주문취소.md
  └── ...
       │
       ▼
/usecase-by-example                   ← Step 2 (디렉토리 순회 또는 파일 지정)
       │
       ▼
features/                                ← UC별 1:1 .feature (domain-modeling 입력)
1
/usecase — UC 명세서 작성 (Usecase 2.0)
도메인 설명을 입력받아 구조화된 UC 명세서를 생성한다.
--level 분량 용도
brief2~5줄파이프라인 사용 금지
casual~1페이지기본값 — 내부 팀용
fully-dressed3~5페이지외부 이해관계자·복잡 예외
산출 항목: UC별 개별 파일로 usecases/ 디렉토리에 분할 저장.
기본 흐름(번호별 스텝) + 대안 흐름 + 예외 흐름 + 비기능 요구사항 포함.
2
/usecase-by-example — Gherkin 시나리오 변환
usecases/ 디렉토리의 UC 파일을 읽어 features/ 디렉토리에 .feature 파일로 변환한다.
파일 지정 시 해당 UC만 변환, 생략 시 디렉토리 전체 순회.
usecases/ 디렉토리가 없으면 중단하고 /usecase 실행을 안내한다.
UC 명세서 항목 Gherkin 변환
사전조건Given
기본 흐름 행위 (액터)When
기본 흐름 응답 (시스템)Then
대안 흐름Scenario 추가
예외 흐름에러 케이스 Scenario
산출물
📁 usecases/ (UC별 개별 .md 파일 — 검토 대상)
📁 features/ (UC별 1:1 .feature 파일)
→ Phase 2 domain-modeling + usecase-by-example 입력
파이프라인 연결 규칙
기본 흐름 Step N → When 절 행위 N으로 1:1 매핑
예외 흐름 E1, E2 → 에러 Scenario로 변환
usecases/UC001-주문생성.mdfeatures/UC001-주문생성.feature 1:1 대응
brief 수준은 파이프라인 사용 금지 — 정보 부족으로 Gherkin 변환 불가
2
설계
domain-modeling · arch-design · uc-to-skeleton (병렬 → 수렴 → 직렬)
1
도메인 모델링 (병렬 실행)
domain-modeling: BC 식별 → Aggregate → Command/Event → UL. usecase-by-example과 수렴 체크.
2
아키텍처 구조화 (arch-design)
모듈(single/multi) · web(mvc/webflux) · persistence(jpa / jpa+jdbc / jpa+jooq / jdbc) · messaging 확정.
jpa+jdbc: Command Side = JPA, Query Side = JdbcTemplate (경량 CQRS — SQL 직접 제어).
jpa+jooq: Command Side = JPA, Query Side = jOOQ (타입 안전 CQRS).
Lombok 금지 규칙 적용.
3
스켈레톤 생성 (uc-to-skeleton)
domain-context.md + arch-decisions.md → 클래스/패키지 스켈레톤 + PlantUML 시퀀스 다이어그램.
추론 없는 1:1 매핑.
수렴 조건 (게이트)
UL ↔ Gherkin 용어 일치
Aggregate 상태 ↔ Given/When/Then 일치
미통과 시 domain-modeling 재실행
계약 파일 산출
📋 domain-context.md
📋 arch-decisions.md
3
구현
/implement-bc · CLAUDE.md · BC 단위 반복
1
구현 전략 수립
bc-plan.md Wave 위상 정렬.
Core Domain BC 우선.
도메인 → 애플리케이션 → 어댑터 레이어 순서.
2
BC 단위 구현 (/implement-bc)
Wave 0 (shared) → Wave 1 → Wave 2(병렬 가능) → Wave 3.
각 Wave Gate 통과 후 진행.
3
고정 코딩 규칙 (Java 21 + Spring Boot 3)
Lombok 금지.
DTO·VO·Event → Record. Entity → 정적 팩토리.
DI → 명시적 생성자.
레이어 구현 순서 (arch-decisions.md 선택)
Hexagonal (권장)
domain — Aggregate, VO(record), Event(record), Port
application — UseCase, Command(record), Service
adapter — Controller, JpaEntity/JdbcRow, Adapter
Layered
domain — Entity, VO, Repository 인터페이스
service — 비즈니스 로직, 트랜잭션 경계
web — Controller, DTO
infrastructure — JpaRepository, 외부 연동
Wave Gate
mvn compile → mvn test
4
테스트
/gen-test · Gherkin 1:1 추적 · 테스트 피라미드 전략
테스트 피라미드 — 레이어별 비중 및 커버리지 목표
50%
domain
목표 ≥ 90%
JUnit 5 + AssertJ
25%
application
목표 ≥ 80%
JUnit 5 + Mockito
20%
adapter
목표 ≥ 70%
@WebMvcTest · @DataJpaTest
5%
E2E
시나리오 100%
Testcontainers
domain
JUnit 5 + AssertJ
Aggregate 불변식
VO 동등성 · 상태 전이
application
JUnit 5 + Mockito
Port → Mock 대체
이벤트 발행 verify
adapter
@WebMvcTest (web)
@DataJpaTest (jpa)
Testcontainers (jdbc)
PBT
Property-Based Testing
/gen-test --pbt
Aggregate 불변식이 임의 입력에 대해서도 성립하는지 Jqwik으로 자동 탐색.
도메인 레이어에만 적용.
@Property — 불변식 위반 경계값 자동 탐색
@ForAll @Positive — 수치 범위 제약 자동 적용
Arbitrary<T> — 복합 도메인 객체 생성기
계약
BC 간 계약 테스트
/gen-test --contract
arch-decisions.md의 messaging 파라미터를 읽어 도구를 자동 선택.
동기 ACL
Spring Cloud Contract
서버 측 스텁 자동 생성
비동기 Kafka
Pact
Consumer-Driven 계약
피드백 루프: 테스트 실패 원인이 요구사항이면 Phase 1, 도메인 모델이면 Phase 2, 구현이면 Phase 3으로 역추적합니다.
PBT 반례(counterexample)는 발견된 불변식 위반 입력값을 Jqwik이 자동으로 최소화(shrinking)하여 리포트합니다.
5
실행
/run-local · /run-check · Docker Compose · 프로파일 분리
1
/run-local — 로컬 실행 환경 기동
arch-decisions.md를 읽어 필요한 인프라(DB, Kafka, Redis 등)를 Docker Compose로 기동한 뒤 Spring Boot 애플리케이션을 시작한다.
--profile local 자동 적용.
2
/run-check — 실행 상태 검증
기동된 애플리케이션의 헬스 엔드포인트, DB 커넥션, BC 간 포트 연결, 메시지 브로커 토픽 존재 여부를 순서대로 확인하고 결과를 보고한다.
3
application.yml 프로파일 체계
local — Docker Compose 인프라, 디버그 로그.
test — Testcontainers 자동 기동, 격리 DB.
prod — 외부 인프라 연결, 최소 로그.
프로파일별 인프라 구성
프로파일 DB Kafka 기동 방법
localDockerDockerdocker compose up
testTCTCmvn verify 시 자동
prod외부외부환경 변수 주입
TC = Testcontainers 자동 기동
Run Gate (실행 완료 조건)
GET /actuator/health → 200 OK
✅ DB 커넥션 풀 정상
✅ BC 간 OutputPort 구현체 주입 확인
✅ messaging ≠ none → 토픽 존재 확인

Docker Compose 구성 — arch-decisions.md 기반 자동 생성

persistence=jpa
services:
  postgres:
    image: postgres:16-alpine
    ports: ["5432:5432"]
    environment:
      POSTGRES_DB: appdb
messaging=kafka
services:
  kafka:
    image: bitnami/kafka:3.7
    ports: ["9092:9092"]
    environment:
      KAFKA_CFG_NODE_ID: 0
application.yml
spring:
  profiles:
    active: local
  datasource:
    url: jdbc:postgresql://
      localhost:5432/appdb
jOOQ (persistence=jpa+jooq) 사용 시 추가 사항
jOOQ는 별도 인프라 불필요 — postgres 컨테이너는 동일하게 사용.
빌드 타임에 /gen-schema 산출물(schema.sql)을 jOOQ codegen이 읽어 Java 클래스 자동 생성.
pom.xml에 jOOQ codegen 플러그인 추가 필요 (arch-decisions.md 기반 자동 구성).
피드백 루프: Run Gate 실패 시 —
DB 연결 오류이면 Phase 3 adapter 수정, 포트 주입 실패이면 Phase 3 서비스/application 레이어, 토픽 미생성이면 /run-local 재실행.

각 스킬은 프로젝트 루트의 .claude/skills/ 디렉토리에 SKILL.md 파일로 저장됩니다.
슬래시 커맨드 실행 시 Claude Code가 해당 파일을 읽고 계약 파일을 참조하여 산출물을 생성합니다.
세션 간 상태 유지는 계약 파일이 담당하므로 스킬 자체는 무상태(stateless)입니다.

9개 스킬 파이프라인 + 1 위성 (v1.7 — 흐름 완전성 / v1.6.1 — gen-class-diagram 위성)

각 스킬은 독립적인 SKILL.md 오케스트레이터 + 참조 파일로 구성됩니다.
Phase 1은 순차 파이프라인, Phase 2 이후는 계약 파일로만 소통합니다.
check-spec은 파이프라인 외부에서 수시로 독립 실행하는 진단 스킬이며,
gen-class-diagram은 Phase 2 모델링 검토 보조 위성 스킬입니다.

usecase v1.3 usecase-by-example ⇅ 수렴 domain-modeling v2.1 arch-design v2 nfr-spec v2 gen-schema v2 uc-to-skeleton v5 implement-bc v3 ⇅ 세션분리 gen-test v3
+ 위성 스킬: domain-modeling v2.1 직후 (선택적) gen-class-diagramdocs/class-diagrams/*.puml. 55 게이트 무관, 빠져도 정상 동작.
v1.7 변경 요약:
UC(v1.3) Section 3 흐름 컬럼 · domain-modeling(v2.1) alt-flows[]/compensation-flows[]/flow-type/promoted-from 필드 신설.
uc-to-skeleton(v5) 가 alt-primary 메소드 · if-else 분기 · try-catch 보상 뼈대를 자동 전개.
implement-bc(v3) 는 compensation-flows[] 를 직접 소비하여 try-catch 본문을 결정론 구현 (catch 타입 = trigger-error 의 exception-class 역참조).
gen-test(v3) 는 보상 호출 검증 @Test 를 자동 생성. check-spec(v4) 는 55개 정합성 게이트 (C9/C10/K9/S9/V7/T7 신규 6개 + C2·K5·S1·V1·T1 확장 3개) 를 검증.
v1.6 변경 요약 (참고): nfr-spec 이 arch-decisions.md nfr: YAML 블록으로 병합. gen-schema 는 schemas-decisions.md 계약 파일 생성. 49개 게이트 자동화.
v1.6.1 변경 요약 (참고): 위성 스킬 gen-class-diagram(v1) 추가. 자체 D1~D6 검증(55 게이트와 별개).
usecase v1.3

UC 명세서 작성 스킬 (v1.7 Section 3 `흐름` 컬럼)

도메인 설명을 Usecase 2.0 형식의 구조화된 명세서로 작성.
수준(--level)에 따라 Brief / Casual / Fully-dressed 산출.
v1.7 핵심: Section 3 협력 인터페이스 테이블에 흐름 컬럼 신설 — 모든 인터페이스 호출을 main · alt:A{n} · exc:E{n} 중 하나로 태깅.
/usecase --migrate-to 1.3 으로 v1.2 UC 자동 마이그레이션.

입력: 도메인 설명 (자연어)
산출: usecases/UC{nnn}-{name}.md (N개, spec-version 1.3)
brief는 파이프라인 사용 금지 — Gherkin 변환에 정보 부족
기본값: --level casual
usecase-by-example

SBE 시나리오 스킬

usecases/ 디렉토리의 UC 파일을 읽어 features/에 Gherkin .feature 파일로 변환.
domain-modeling과 병렬 실행 후 수렴 체크.

입력: usecases/*.md
산출: features/*.feature
domain-modeling v2.1

DDD 도메인 모델링 스킬 (v1.7 Schema 3.1 — Flow-Complete)

Step 1 BC 식별 → Step 2 Aggregate 설계 → Step 3 Command/Event 매핑 → Step 4 interfaces[] · error-values[] · service-methods[] 도출 (main / alt / exc 3종 흐름 전부) → Step 5 UL 사전 + 수렴 검증 (K1~K9).
--bc 옵션으로 특정 BC만 증분 갱신 가능. UC Section 3 협력 인터페이스를 흐름 컬럼과 함께 interfaces[].uc-mapping[{uc, step, flow}] 에 1:1 매핑.

Schema 3.1 신규/확장 필드 (v1.7)
interfaces[].uc-mapping[]{uc, step, flow} 객체 배열로 확장 (v3.1 필수)
service-methods[].flow-typemain | alt-primary
service-methods[].alt-flows[] — 비승격 alt (entry-condition + uses-interfaces, if-else 분기)
service-methods[].compensation-flows[] — exc 보상 (trigger-error + uses-interfaces + raises-events, try-catch)
service-methods[].promoted-from — alt-primary 승격 추적 (uc / alt-flow / promotion-criteria)
alt 흐름 승격 기준 (4개 중 1개라도 만족 시 alt-primary)
transaction-boundary-independent · authorization-boundary-independent · time-boundary-independent · api-entry-independent
실행 모드
(옵션 없음): 전체 분석 — usecases/ 전체 순회
--bc {name}: 해당 BC만 증분 갱신 — source-uc로 관련 UC 자동 식별
--bc {name} --uc UC005,UC024: 명시한 UC만 해당 BC에 반영
--bc new: 미할당 UC 분석 → 신규 BC 후보 제안
입력: usecases/*.md (v1.3) + features/*.feature
산출: domain-context.md (schema 3.1)
arch-design v2

아키텍처 설계 스킬 (v1.6 YAML Schema 1.0)

Step 1 모듈 구조 → Step 2 BC 간 통신 → Step 3 adapter-classes[] 자동 도출 → Step 4 공유 커널 위치.
v1.6부터 Markdown → YAML 전환. domain-context.md의 interfaces[].name 패턴 매칭으로 어댑터 클래스 자동 생성.

핵심 파라미터
architecture: hexagonal | layered — 레이어 구조 결정
module: single | multi — Maven 모듈 분리 여부
persistence: jpa | jpa+jdbc | jpa+jooq | jdbc
exception-style: unchecked | checked — Exception 템플릿 선택 (v1.6 신규)
입력: domain-context.md (schema 3.1)
산출: arch-decisions.md (schema 1.0 YAML)
nfr-spec v2

비기능 요구사항 명세 스킬 (v1.6 YAML 병합)

성능·보안·가용성·운영성 4개 카테고리를 대화로 도출하고 arch-decisions.md의 nfr: YAML 블록으로 병합.
코드 생성 지시를 AUTO(자동 생성)와 TODO(태그 주석)로 분류.
NFR 신규 Err*(CircuitOpen·RetryExhausted·Timeout·AuthInvalid·Forbidden)을 domain-context.md error-values[]에 자동 제안.

입력: arch-decisions.md
산출: arch-decisions.md의 nfr: 블록 + content-version MINOR 증가
AUTO: JWT·BCrypt·MDC·Actuator·Pageable TODO: Redis·Circuit Breaker·Retry
gen-schema v2

DB 스키마 생성 스킬 (v1.6 신규 편입)

domain-context.md의 aggregates[]와 arch-decisions.md의 persistence 파라미터를 읽어 DDL 및 ERD 생성.
schemas-decisions.md(schema 1.0)에 테이블 메타 YAML을 저장해 uc-to-skeleton/implement-bc가 참조.

핵심 원칙
BC 간 REFERENCES 금지 (UUID-only, 런타임 ACL)
Aggregate Root 만 PK 생성, 내부 엔터티는 FK + cascade
Cross-BC 참조는 cross-bc-ref 메타로 추적성만 확보
입력: domain-context.md + arch-decisions.md
산출: schemas-decisions.md + erd.mmd + schema.sql
uc-to-skeleton v5

스켈레톤 생성 스킬 (v1.7 S1~S9 게이트)

4개 계약 파일을 입력으로 클래스/패키지 스켈레톤과 PlantUML 시퀀스 다이어그램 생성.
NFR AUTO 항목 클래스 포함. 추론 없는 1:1 매핑.
v1.7 부터 alt-primary 메소드 · 비승격 alt 흐름의 if-else 분기 · 예외 흐름의 try-catch 보상 블록까지 자동 전개.
S7 게이트: Service 생성자 파라미터 순서 = flatten(uses-interfaces + alt-flows[] + compensation-flows[]) (중복 제거 1회).

S 게이트 (9개, v1.7 +S9)
· S1 Port 완전성
· S2 signature 일치
· S3 Exception 완전성
· S4 ERROR_ID 일치
· S5 Service 존재
· S6 method signature
· S7 생성자 flatten 순서
· S8 shared VO 위치
· S9 🆕 alt/exc 흐름 Port + 생성자 주입 (v1.7 신규)
입력: 4개 계약 파일 (domain-context 3.1)
산출: src/main/java/**/*.java (스켈레톤 + try-catch/if-else 뼈대)
implement-bc v3

BC 구현 스킬 (v1.7 V1~V7 게이트)

UC Step 순서 → Service 본문 호출 순서 1:1 매핑.
v1.7 부터 compensation-flows[] 를 직접 소비하여 try-catch 본문을 결정론 구현하며, catch 타입은 trigger-errorexception-class 역참조로 결정.
중첩 보상 · 보상의 보상(manual queue) 패턴 자동 적용.

V 게이트 (7개, v1.7 V2 확장 + V7 신규)
· V1 Err* 6-레이어 일치
· V2 🆕 전 흐름 uses-interfaces 본문 호출 (확장)
· V3 Lombok 부재
· V4 persistence 규칙
· V5 UnsupportedOp 잔존 0
· V6 이벤트 publish (전 흐름)
· V7 🆕 보상 try-catch 위치 + catch 타입 일치 (AST, v1.7 신규)
입력: 4개 계약 파일 (domain-context 3.1) + 스켈레톤 (v5)
산출: Service 본문 (try-catch 보상 · if-else 분기 · alt-primary 메소드 포함)
gen-test v3

테스트 생성 스킬 (v1.7 T0~T7 게이트)

반드시 별도 세션에서 실행 (T0 게이트).
Gherkin 성공(@UC-S) · 대안(@UC-A) · 예외(@UC-E) 전 Scenario ↔ @Test 1:1 변환.
@Mock 순서 = flatten(uses-interfaces 전 흐름).
InOrder.verify 로 호출 순서 검증.
ArgumentCaptor 로 main + alt + compensation 이벤트 필드 검증.
compensation-flows 트리거별 보상 호출 검증 @Test 자동 생성 (T7 신규).

T 게이트 (8개, v1.7 T1 확장 + T7 신규)
· T0 순환논리 방지 (별도 세션)
· T1 🆕 전 Scenario ↔ @Test (확장)
· T2 getErrorId 일치
· T3 error-cases 전체 커버 (보상의 보상 포함)
· T4 @Mock flatten 순서
· T5 ArgumentCaptor (main+alt+comp)
· T6 Lombok 부재
· T7 🆕 compensation-flows 보상 호출 @Test (thenThrow + isInstanceOf + verify, v1.7 신규)
입력: 4개 계약 파일 (domain-context 3.1) + features/*.feature
산출: src/test/java/**/*Test.java
check-spec v4

55개 정합성 게이트 통합 감사 스킬 (v1.7 — 흐름 완전성)

v1.7에서 55개 정합성 게이트를 자동화.
Phase 1 (C1~C10) + Phase 2 (K1~K9, S1~S9, N1~N6, D1~D6) + Phase 3 (V1~V7, T0~T7) 전체 재검증.
bash + grep + sed + Python(AST 기반 V7 만) 로 정적 검증 가능.
CI 통합 시 PR 단위 드리프트 감지.
--gates flow-completeness 옵션으로 흐름 완전성 9개만 집중 검증 가능.

· 55개 게이트 카테고리 (v1.7)
· C UC↔Gherkin (8 → 10 +C9/C10)
· K modeling (8 → 9 +K9)
· S skeleton (8 → 9 +S9)
· N nfr (6)
· D schema (6)
· V implement (6 → 7 +V7)
· T test (7 → 8 +T7)
신규 게이트 6개 요약 (v1.7)
· C9 Section 3 `흐름` 필수값
· C10 Section 3 ↔ 본문 쌍방향
· K9 recovery-strategy ↔ compensation-flows
· S9 alt/exc Port + 주입
· V7 보상 try-catch AST
· T7 보상 @Test
입력: 4개 계약 파일 (domain-context 3.1) + 코드
산출: 드리프트 리포트 (PASS/FAIL/WARN/SKIP)
호환 모드: schema 3.0 입력 시 C9/C10/K9/S9/V7/T7 SKIP
✅ PASS ⚠️ WARN ❌ FAIL ⏭️ SKIP
★ 위성 스킬 gen-class-diagram v1 v1.6.1 신규

도메인 모델 시각화 — PlantUML 클래스 다이어그램 3종

Phase 2 모델링 산출물 검토를 보조하는 위성 스킬.
domain-context.md (schema 3.0/3.1) 단일 입력으로 PlantUML 클래스 다이어그램 3종을 결정론적으로 생성.
/domain-modeling 직후 즉시 실행 가능, arch-decisions.md · 코드 산출물 의존 0.

📊 산출 다이어그램 3종
  • class-overview.puml — BC × Aggregate Root 조감도 + cross-bc 점선
  • class-bc-{name}.puml (N개) — BC별 상세 (Aggregate · Entity · VO · Command · Event + invariants)
  • class-interfaces.puml — Hexagonal Port 의존도 + «uses» [n] 순서 보존
📁 산출 위치 — uc-to-skeleton 시퀀스와 정렬
docs/
├── class-diagrams/   ← gen-class-diagram
│   ├── class-overview.puml
│   ├── class-bc-{name}.puml
│   └── class-interfaces.puml
└── diagrams/         ← uc-to-skeleton
    └── UC{nnn}-skeleton.puml
✓ D 게이트 6개 (55 게이트와 별개)
  • D1 BC 노드 완전성
  • D2 BC별 Aggregate Root 수
  • D3 interfaces 완전성
  • D4 ★ uses-interfaces 순서 = «uses» [n] (S7 정렬)
  • D5 식별자 보존 (R1·R3·R4)
  • D6 PlantUML 문법
위성 스킬 원칙 — 정규 스킬과의 의도적 차별
항목 정규 스킬 위성 (본 스킬)
계약 파일 산출신규 계약 생성.puml
consumers 등록domain-context.md 등록❌ 미등록 (의존 그래프 미오염)
55 게이트 편입check-spec 통합❌ 자체 D1~D6 분리
하류 스킬 의존다른 스킬 입력❌ 사용자만 소비 (검토용)
★ uses-interfaces 순서 시각 정렬 (S7) --bc {name} 증분 모드 단일 입력 (domain-context.md) 추론 0% (R1~R5) 선택적 — 빠져도 정상 동작
계약 파일의 YAML 스키마 정의A-ADM Core → 스키마를 참조하세요.
이 섹션은 Claude Code 환경에서의 파일 간 흐름과 소비자 커맨드를 설명합니다.

계약 파일 체계 (v1.6 — 4개 파일 + YAML Schema 3.0)

스킬 간 인터페이스를 파일로 명문화합니다.
소비자 커맨드는 파일 없이는 추론 모드로 실행하지 않습니다.
v1.6에서 schemas-decisions.md가 추가되어 계약 파일이 4개로 확장되었습니다.

domain-context.md
schema 3.0
domain-modeling 2.0 산출
BC · Aggregate · Value Object → 기본 도메인 구성 (v1.0)
Command · Event · Ubiquitous Language → v1.0
interfaces[] → UC Section 3 1:1 매핑 (v1.6 신규)
error-values[] → Err* ID · Exception · HTTP (v1.6 신규)
service-methods[] → uses-interfaces 순서 보존 (v1.6 신규)
source-uc → BC↔UC 추적 (v1.3 추가)
Wave 분할 모드 → schema 3.1 (--split-waves) (v1.5 추가)
소비자 (정규): arch-design · nfr-spec · gen-schema · uc-to-skeleton · implement-bc · gen-test · check-spec
위성 소비자 (consumers 블록 미등록, 의존 그래프 미오염): gen-class-diagram (v1.6.1, 시각화 검토용)
arch-decisions.md
schema 1.0 YAML
arch-design v2 + nfr-spec v2 병합
parameters → architecture · module · web · persistence · exception-style (v1.6)
fixed-stack → Java 21 · Spring Boot 3.x · JUnit 5
adapter-classes[] → interfaces[].name 자동 매칭 (v1.6 신규)
shared-kernel → VO 위치 결정
lombok-rules → 금지 패턴 + detection-regex
nfr: → performance · security · availability · operability (YAML 블록) (v1.6 YAML 병합)
exception-style → ERROR_ID · HTTP_STATUS 템플릿 자동 적용
소비자: uc-to-skeleton · implement-bc · gen-test · check-spec · gen-schema
schemas-decisions.md
schema 1.0 · v1.6 신규
gen-schema v2 산출
tables[] → aggregate → 테이블 매핑
saver-interface → interfaces[*Saver] 매칭
cross-bc-references → fk-constraint: false
CHECK constraint → aggregates[].states 일치
invariant-source → aggregate invariants 추적
소비자: uc-to-skeleton · implement-bc · check-spec
bc-plan.md
개발자 작성 (멀티 BC)
Wave 정의 → 구현 순서
depends-on → 순환 의존 검사
output-ports → ACL/Event 결정
communications → 통신 매핑표
shared-kernel → VO 위치 확정
소비자: implement-bc · gen-test

파일 간 흐름 (v1.6)

도메인 설명 (자연어)
       ↓
/usecase [--level]  → usecases/            ← UC별 분할 저장 + Section 3 협력 인터페이스
                        ├── UC001-주문생성.md
                        ├── UC002-주문취소.md
                        └── ...
       ↓
/usecase-by-example → features/            ← Scenario UC{NNN}-S/E{nn} 1:1 변환
                        ├── UC001-주문생성.feature
                        └── ...
       ↓
domain-context.md   ← domain-modeling v2.1 (schema 3.1)
                       BC · Aggregate · VO · Command · Event · UL
                       + interfaces[] (uc-mapping[{uc, step, flow}])            ◀ v1.7 흐름 보존
                       + error-values[] + service-methods[]                     ◀ v1.6 신규
                         · flow-type · alt-flows[] · compensation-flows[]       ◀ v1.7 신규
                         · promoted-from                                        ◀ v1.7 신규
       │
       ├┄┄┄┄ (선택, 위성) → docs/class-diagrams/   ← gen-class-diagram v1   ◀ v1.6.1 위성
       │                       class-overview.puml + class-bc-{name}.puml(N) + class-interfaces.puml
       │                       (D1~D6 게이트, 55 게이트 무관, 검토 보조)
       ↓
arch-decisions.md   ← arch-design v2 (schema 1.0 YAML)
                       parameters · adapter-classes[] 자동 도출 · shared-kernel
       ↓
arch-decisions.md   ← nfr-spec v2 병합
                       nfr: { performance · security · availability · operability }
       ↓
schemas-decisions.md + erd.mmd + schema.sql   ← gen-schema v2
                       tables[] · saver-interface · cross-bc-references
       ↓
bc-plan.md          ← 개발자 작성       (Wave · 통신 · 순환검사)
       ↓
Java 스켈레톤       ← uc-to-skeleton v5  (S1~S9 게이트: + alt-primary · if-else · try-catch 뼈대)
       ↓
BC별 구현           ← /implement-bc v3   (V1~V7 게이트: 전 흐름 호출 · 보상 try-catch AST)   ◀ 세션 A
       ↓
테스트 스위트       ← /gen-test v3       (T0~T7 게이트: 전 Scenario · 보상 @Test 자동 생성)  ◀ 세션 B
       ↓
55-gate 감사        ← /check-spec v4     전체 정합성 재검증 (흐름 완전성 포함)
v1.7 확장 섹션 — check-spec v4 가 자동화하는 55개 정합성 게이트의 카탈로그입니다 (v1.6 의 49개 + 흐름 완전성 6개 신규).
bash + grep + sed + Python (AST 기반 V7 만) 로 정적 검증 가능하며, CI 파이프라인에 통합하여 PR 단위 드리프트를 감지합니다.
D 게이트 명명 충돌 해소.
본 장의 D 게이트(아래 schema 카드)는 gen-schema의 Database 게이트로 55 게이트의 일부입니다.
위성 스킬 gen-class-diagram의 D1~D6 은 Diagram 게이트로 의미가 다르며, 55 게이트와 별개의 자체 검증 카탈로그입니다.
두 카탈로그는 교집합 없이 독립적으로 운영되며 check-spec은 위성 스킬의 D를 읽지 않습니다.

55개 정합성 게이트 카탈로그 (v1.7 — 흐름 완전성)

7개 카테고리 55개 게이트가 UC ↔ Gherkin ↔ domain-context ↔ 코드 ↔ 테스트 전 구간 정합성 + 전 흐름(main + alt + exc) 커버리지 + 보상 트랜잭션 구조를 보장합니다.
모든 게이트는 추론 없이 정적 매칭으로 통과 여부가 결정됩니다.
v1.7 신규 6개: C9, C10, K9, S9, V7, T7. v1.7 확장 3개: C2, K5, T1.

C 게이트 — UC ↔ Gherkin (10개, v1.7 +C9/C10)

Phase 1 매칭

C1 UC ↔ feature 1:1
C2 feature 헤더 # UC: 주석
C3 Section 3 행 수 = # Interfaces 주석 수
C4 @UC-S 태그 ≥ 정상 시나리오
C5 @UC-E 태그 수 = E 흐름 수
C6 feature Err* ⊆ UC Error Values
C7 BR 주석 보유
C8 Actor/System 태그 일관성
C9 🆕 Section 3 `흐름` 컬럼 필수값 (main|alt:A{n}|exc:E{n})
C10 🆕 Section 3 alt/exc 라벨 ↔ 본문 블록 쌍방향
K 게이트 — modeling (9개, v1.7 +K9)

domain-modeling v2.1

K1 UC → service-methods.source-uc 등록
K2 UC package ⊂ BC package
K3 Section 3 행 수 = uc-mapping 카운트
K4 aggregates.states 가 feature 에 등장
K5 🔄 전 흐름 uses-interfaces = [System] 호출 (확장)
K6 feature Err* ⊆ error-values[].name
K7 command.error-cases ⊆ service.error-cases
K8 forbidden-synonyms 미사용
K9 🆕 recovery-strategy ↔ compensation-flows[trigger-error]
S 게이트 — skeleton (9개, v1.7 +S9)

uc-to-skeleton v5

S1 interfaces[].name → Java 파일 존재
S2 method signature 일치
S3 error-values[].exception-class → Java 파일
S4 ERROR_ID = error-values[].name 정확 일치
S5 Service 파일 존재
S6 service-methods.signature 일치
S7 Service 생성자 순서 = flatten(전 흐름) 순서
S8 shared VO → com.example.shared.domain
S9 🆕 alt/exc 흐름 Port 파일 + 생성자 주입
N 게이트 — nfr (6개)

nfr-spec v2

N1 nfr 4 섹션 (performance/security/availability/operability)
N2 target-interfaces ⊆ interfaces[]
N3 auto-generates → adapter-classes 등록
N4 NFR 신규 Err* → error-values[] 반영
N5 AUTO 클래스 Lombok 부재
N6 consumers 에 nfr-spec 등록
D 게이트 — schema (6개)

gen-schema v2

D1 aggregates[] → tables[] 매핑
D2 interfaces[*Saver] → saver-interface
D3 schema.sql REFERENCES 0개 (BC 자율성)
D4 shared-kernel ↔ 인라인 복제
D5 CHECK constraint = aggregates.states
D6 Meta source/consumers 완비
V 게이트 — implement (7개, v1.7 +V7, V2 확장)

implement-bc v3

V1 Err* 6-레이어 완전 일치 ★
V2 🔄 전 흐름 uses-interfaces 본문 호출 (확장)
V3 Lombok 0개
V4 persistence 규칙 준수
V5 UnsupportedOperationException 잔존 0
V6 이벤트 publish 호출 (전 흐름)
V7 🆕 보상 try-catch 위치 + catch 타입 일치 (AST)
T 게이트 — test (8개, v1.7 +T7, T1 확장)

gen-test v3 — 반드시 별도 세션 (T0)

T0 순환논리 방지 (별도 세션 실행) ★
T1 🔄 전 Scenario(@UC-S + @UC-A + @UC-E) ↔ @Test 1:1 (확장)
T2 getErrorId() 검증값 ⊆ error-values[].name
T3 error-cases 전수 커버 (보상의 보상 포함)
T4 @Mock 순서 = flatten(전 흐름) 순서
T5 ArgumentCaptor (main + alt + compensation)
T6 테스트 Lombok/InjectMocks 부재
T7 🆕 compensation-flows 보상 호출 @Test (thenThrow+verify)
★ LATEST v1.7 End-to-End 시뮬레이션 — 흐름 완전성 집중 검증 (2026-04-22)

도메인: 주문 생성 (UC-001 placeOrder) · 시뮬레이션 범위: 흐름 완전성 핵심 9개 게이트 (v1.7 신규 6 + 확장 3)

📊 시뮬레이션 구성
  • UC 1개 (Section 3 13행 — main 5 / alt 3 / exc 5)
  • interfaces 11개, error-values 6개
  • service-methods 2개 (placeOrder main + applyCouponToOrder alt-primary)
  • alt-flows 1 (A2 기본 배송지 — 비승격 if-else)
  • compensation-flows 2 (E3/E4 중첩 + 보상의 보상)
  • Java 33 파일 + Test 9개 @Test (@Nested 2 클래스)
🎯 검증 결과
9 PASS / 0 FAIL
0 WARN · 0 SKIP
C9 🆕 C10 🆕 K5 🔄 K9 🆕 S9 🆕 V2 🔄 V7 🆕 T1 🔄 T7 🆕
🔒 v1.7 원천 차단 입증

v1.6 까지는 ErrPersistence 발생 시 paymentCanceller.cancel() 호출이 구현에서 누락되어도 49개 게이트 모두 PASS 가 가능했습니다 (보상 트랜잭션 구현 손실).
v1.7 은 이를 4단계로 정적 차단:

  1. K9 — recovery-strategy 보상 동사 감지 → compensation-flows[ErrPersistence] 강제
  2. S9 — PaymentCanceller Port + OrderService 생성자 주입 강제
  3. V7catch (PersistenceException e) { paymentCanceller.cancel(...); } AST 강제
  4. T7verify(paymentCanceller).cancel(...) 보상 @Test 강제
🏗 중첩 보상 + 보상의 보상 구조 검증

OrderService.placeOrder() 본문은 outer try-catch(PersistenceException)inner try-catch(StockDeductFailedException) 을 감싸고, outer 내부에 추가 try-catch(PaymentCancelFailedException) 이 보상의 보상(manualPaymentCancelQueue escalation) 을 처리.
이 구조가 compensation-flows[].trigger-error.error-cases 필드만으로 결정론적으로 생성됨을 확인.

범위 한정 사유:
v1.7 신규/확장 부분의 유효성 검증에 초점 — N/D 게이트 및 기존 C1~C8, V1, T2~T6 등은 v1.6 에서 검증된 스펙(변경 없음).
전체 55 게이트 회귀는 CI 통합 단계에서 수행.
산출물: e2e-sim-v1.7/ 38 파일 (UC · Feature · domain-context · Java · Test · SIMULATION-REPORT.md)
이력 v1.6 — 전체 49 게이트 검증 (2026-04-17)
회의실 예약 도메인(UC 2개, interfaces 10개, Err* 15개)에서 49개 게이트 중 47 PASS / 0 FAIL / 1 WARN / 1 SKIP 달성.
조치 전 검출된 3건 드리프트(V1 FAIL, T3/N4/N6 WARN)를 파이프라인이 자동 발견했고, 조치 후 모두 PASS 회복.
남은 1 WARN(K4, PENDING 상태 미등장)은 도메인 특성상 정당(동기 결제 모델), 1 SKIP(N5, NFR AUTO 클래스)은 시뮬 한계로 정상.
v1.6 핵심 기능 — 오류 식별자(Err*)가 명세부터 테스트까지 6개 레이어에서 문자열 수준으로 정확히 일치하도록 보장하는 추적 체인입니다.

Err* ID 6-레이어 추적 체인

오류가 UC 명세에서 정의되면 Gherkin · domain-context · Java Exception · DomainExceptionHandler · 테스트까지
문자열 수준에서 완벽히 동일한 ID로 전파됩니다.
중간에 이름이 변경되면 check-spec V1/S4 게이트가 즉시 포착합니다.

L1. UC 명세 (Section 4 Error Values)
    ├── Err ID:        "ErrPaymentFailed"
    ├── HTTP:          402
    └── 사용자 메시지:  "결제에 실패했습니다"
         ↓                                          [C6 게이트]
L2. Gherkin feature (Scenario UC001-E03)
    └── 에러 "ErrPaymentFailed"가 반환된다
         ↓                                          [K6 게이트]
L3. domain-context.md error-values[]
    └── { name: ErrPaymentFailed,
          exception-class: PaymentFailedException,
          http-status: 402,
          raised-by-interfaces: [PaymentRequester] }
         ↓                                          [S3, S4 게이트]
L4. Java Exception 클래스
    └── public class PaymentFailedException extends RuntimeException {
          public static final String ERROR_ID   = "ErrPaymentFailed";
          public static final int HTTP_STATUS   = 402;
          private final String errorId;
          public String getErrorId() { return errorId; }
        }
         ↓                                          [V1 게이트]
L5. DomainExceptionHandler (@RestControllerAdvice)
    └── @ExceptionHandler({..., PaymentFailedException.class, ...})
        → errorId = exception.getErrorId()     // "ErrPaymentFailed"
        → HTTP   = Exception.HTTP_STATUS       // 402
         ↓                                          [T2 게이트]
L6. 단위 테스트 (@Test UC001-E03)
    └── assertThat(ex.getErrorId()).isEqualTo("ErrPaymentFailed");
        assertThat(PaymentFailedException.HTTP_STATUS).isEqualTo(402);

✅ 드리프트 방지 효과

  • LLM이 "InsufficientStockException" 대신 "OutOfStockException" 같은 유사어를 쓰는 사고를 원천 차단
  • 명세 Err ID 하나가 바뀌면 모든 레이어가 깨지므로 즉시 발견
  • UC를 수정하면 전체 파이프라인을 재실행해서 정합성 회복
  • check-spec V1 / S4 / K6 / T2 게이트가 각 전환 지점을 정적 검증

🔧 실전 운영 팁

  • Err ID 네이밍 컨벤션: Err{PascalCase명사} (예: ErrRoomNotFound)
  • NFR에서 도입되는 인프라 Err*(CircuitOpen 등)도 동일 체인을 따름
  • 보상 트랜잭션의 보상(BR-07)은 별도 Err ID 할당 (ErrPaymentCancelFailed 등)
  • 국제화(i18n)가 필요하면 사용자 메시지만 별도 관리, Err ID는 유지
Wave 토폴로지 원칙과 통신 패턴(동기 ACL / 비동기 Event)은 A-ADM Core → 멀티 BC를 참조하세요.
이 섹션은 Java/Spring 환경에서의 구체적 구현 예시를 다룹니다.

멀티 BC 오케스트레이션

여러 Bounded Context를 가진 프로젝트의 구현 순서, BC 간 통신, 공유 커널을 체계적으로 관리합니다.

Wave 위상 정렬 — 쇼핑몰 5 BC 예시

WAVE 0
shared
Money · Address
WAVE 1
inventory
재고 관리
WAVE 2 — 병렬
order
Core Domain
payment
결제 처리
WAVE 3
notification
알림 발송

동기 ACL 패턴

즉각 응답이 필요한 BC 간 호출.
포트 인터페이스는 호출 BC의 application 레이어에 선언, 구현체는 구현 BC의 adapter 레이어에 위치. (Hexagonal 아키텍처 기준)
pom.xml에서 상호 직접 참조 없음.

// order/application/port/output/
public interface InventoryPort {
    void checkStock(ProductId id, int qty);
}

// inventory/adapter/outbound/
public class InventoryPortAdapter
    implements InventoryPort { ... }

비동기 Event 패턴

결과적 일관성으로 충분한 BC 간 통신.
Domain Event를 Kafka/RabbitMQ/Spring Events로 발행.
수신 BC는 ACL Translator로 자신의 도메인 모델로 변환.

// order → OrderPlaced → Kafka
// notification이 order.placed 구독

@KafkaListener(topics = "order.placed")
public void onOrderPlaced(
    OrderPlacedMessage msg) { ... }

Wave Gate — 전환 조건

컴파일 통과
mvn compile
🔌
포트 연결
구현체 존재 확인
🧪
도메인 테스트
mvn test -pl domain
🚫
순환 없음
DFS 사이클 검사
버전 번호 체계(MAJOR/MINOR/PATCH)와 영향 매트릭스는 A-ADM Core → 버저닝을 참조하세요.
이 섹션은 Claude Code 환경에서의 /check-domain-version 커맨드 동작을 설명합니다.

계약 파일 버저닝 (v1.6 — 3개 계약 파일 독립 버저닝)

v1.6부터 domain-context.md (schema 3.0) · arch-decisions.md (schema 1.0) · schemas-decisions.md (schema 1.0) 세 계약 파일이 각자 schema-version 과 content-version 을 독립 관리합니다.
소비자는 source.{file}-version 으로 의존 버전을 추적하며, /check-domain-version 이 동기화 필요 여부를 자동 계산합니다.

버전 번호 체계

M
MAJOR — 전면 재생성
BC 추가/삭제, Aggregate Root/Command/interface 이름 변경, Err* ID 변경.
영향 BC 스켈레톤 전체 재생성 + check-spec 55개 게이트 재실행 필요.
m
MINOR — 부분 재생성
새 Command/Event/VO/interface/error-value/service-method/alt-flows/compensation-flows 항목 추가.
NFR Err* 추가도 MINOR. affected-bcs 의 특정 레이어만 재생성.
p
PATCH — 재생성 불필요
불변식 설명 수정, UL 문구 보완, Gherkin 매핑 수정, user-message 수정.
@DisplayName 자동 패치만 적용.

Meta 헤더 (schema 3.1)

## Meta

```yaml
schema-version: "3.1"
content-version: "1.2.0"
generated-at: 2026-04-22T13:30:00+09:00
generated-by: domain-modeling
change-summary: "1.1.0: 보상의 보상 추가
                 (ManualPaymentCancelQueue, ErrPaymentCancelFailed).
                 1.2.0: NFR 신규 Err* 5개 반영 +
                        alt-flows/compensation-flows 신설 (v1.7)."

source:                                      # v1.6 신규
  ucs:                                       # 소비자가 의존하는 입력 (v1.3 형식)
    - { id: UC-001, file: usecases/UC001.md }
    - { id: UC-002, file: usecases/UC002.md }

consumers:                                   # 6개 소비자 (v1.7 버전 상승)
  arch-design:    "2.0.0"
  nfr-spec:       "2.0.0"
  gen-schema:     "2.0.0"
  uc-to-skeleton: "5.0.0"   # ◀ v1.7
  implement-bc:   "3.0.0"   # ◀ v1.7
  gen-test:       "3.0.0"   # ◀ v1.7
  check-spec:     "4.0.0"   # ◀ v1.7
```
v1.7 변경: consumer 버전 상승 (uc-to-skeleton 4→5, implement-bc 2→3, gen-test 2→3, check-spec 2→4). schema-version 3.0 → 3.1.

변경 유형 × 소비자 영향 매트릭스 (v1.7)

변경 유형change-typearch-design v2nfr-spec v2gen-schema v2uc-to-skeleton v5implement-bc v3gen-test v3
BC 추가/삭제major전면 재실행대상 변경테이블 추가/삭제전체 BCbc-plan 재검토전체 재생성
Aggregate Root 이름 변경majoradapter-classes 갱신불필요테이블명 변경해당 BC 전체도메인 레이어해당 BC 전체
interface[].name 변경majoradapter-classes 재도출target-interfaces 갱신불필요Port 재생성Service 본문@Mock 선언
Err* ID 변경 ★majorDomainExceptionHandler.handles불필요violation-error-idException 클래스throw 지점getErrorId() 검증
새 Command/Event 추가minor불필요불필요불필요영향 BC만서비스 레이어영향 BC만
새 interface/service-method 추가minoradapter-class 1개불필요불필요Port 1개생성자/본문@Mock/@Test 추가
새 error-value 추가minorhandles 추가불필요불필요Exception 1개throw 추가@Test 추가
NFR 신규 Err* (CircuitOpen 등)minorhandles 추가제안 생성불필요Exception 1개불필요불필요
VO 추가minor불필요불필요컬럼 추가domain만domain만domain 테스트
불변식 설명 수정patch불필요불필요불필요주석만불필요불필요
UL·Gherkin·user-message 수정patch불필요불필요불필요불필요불필요@DisplayName만
/check-domain-version 커맨드가 consumers 섹션을 읽어 동기화가 필요한 소비자와 최소 재실행 순서를 자동 계산합니다.
v1.7 자동화 강화:
/check-spec v4 가 55개 게이트로 매트릭스의 모든 영향 항목을 정적 검증.
content-version 증가 시 영향받은 소비자 산출물 자동 재실행 + 검증.
alt-flows/compensation-flows 추가·삭제도 MINOR 증가로 추적.
CLAUDE CODE ADAPTER 고유 내용

슬래시 커맨드는 A-ADM Core의 5단계 워크플로를 Claude Code 환경에서 실행하는 진입점입니다.
CLAUDE.md에 정의하며, 다른 AI 도구 어댑터에서는 동등한 트리거 메커니즘으로 대체합니다.

슬래시 커맨드 레퍼런스

CLAUDE.md에 정의된 커맨드가 전 단계를 자동화합니다.
모든 커맨드는 계약 파일을 읽어 추론 없이 실행합니다.

Phase 1 — 요구사항 분석 커맨드

/usecase [domain-desc] [--level]

UC 명세서 작성 커맨드

도메인 설명을 Usecase 2.0 형식으로 구조화.
전체 도메인을 분석하여 식별된 UC를 usecases/ 디렉토리에 UC별 개별 파일로 분할 저장.
기본 흐름·대안 흐름·예외 흐름·비기능 요구사항 포함.
/usecase-by-example의 필수 선행 커맨드.

/usecase "주문 관리 시스템"            # 기본값: casual → usecases/ 분할 저장
/usecase "주문 관리" --level casual
/usecase "주문 관리" --level fully-dressed
산출물 구조
usecases/UC001-주문생성.md
usecases/UC002-주문취소.md
usecases/UC003-결제처리.md
네이밍: UC{nnn}-{한글이름}.md — 번호 자동 채번, 정렬 보장
/usecase-by-example [uc-file]

Gherkin 시나리오 변환 커맨드

usecases/ 디렉토리를 읽어 features/에 .feature 파일 생성.
파일 지정 시 해당 UC만 변환, 생략 시 디렉토리 전체 순회.
usecases/ 디렉토리가 없으면 /usecase 실행을 안내하고 중단.

/usecase-by-example                         # usecases/ 전체 순회
/usecase-by-example usecases/UC001-주문생성.md  # 특정 UC만 변환

Phase 5 — 실행 커맨드

/run-local [--bc {bc}] [--infra-only]

로컬 실행 커맨드

arch-decisions.md를 읽어 필요한 인프라를 Docker Compose로 기동하고 Spring Boot를 시작한다.
persistence/messaging 파라미터에 따라 compose 파일을 자동 구성한다.

/run-local                  # 전체 기동 (인프라 + 앱)
/run-local --infra-only     # Docker Compose만 기동
/run-local --bc order       # 특정 BC 모듈만 기동
/run-local --profile local  # 프로파일 명시 (기본값)
사전 조건: arch-decisions.md 존재, Docker 실행 중
자동 생성: docker-compose.local.yml (없을 때)
/run-check [--verbose]

실행 상태 검증 커맨드

기동된 애플리케이션의 Run Gate 조건을 순서대로 확인한다.
실패 항목과 수정 방향을 함께 출력한다.

/run-check                  # 전체 Gate 확인
/run-check --verbose        # 상세 응답 포함 출력
검증 항목 (순서대로)
GET /actuator/health → 200 OK
② DB 커넥션 풀 정상 여부
③ BC OutputPort 구현체 주입 확인
④ messaging ≠ none → 토픽 존재 확인

Phase 3·4 — 구현 및 테스트 커맨드

/implement-bc {bc} [layer]

BC 구현 커맨드

bc-plan.md + domain-context.md + arch-decisions.md를 읽어 Wave 순서대로 구현.
arch-decisions.mdarchitecture 값(hexagonal|layered)에 따라 레이어 구조가 결정됨.
파일 없으면 즉시 중단.

/implement-bc order          # 전체
/implement-bc order domain   # 레이어 지정 (hexagonal: domain|application|adapter)
/implement-bc --wave 2       # Wave 일괄
/implement-bc --dry-run      # 실행 계획만
/implement-bc --check-plan   # 순환 의존 검사
/gen-test {bc} [scope] [flags]

테스트 생성 커맨드

Gherkin 시나리오 1:1 추적.
.feature 없으면 domain-context.md 에러 케이스 컬럼에서 도출.
arch-decisions.md의 messaging 파라미터를 읽어 계약 테스트 도구를 자동 선택.

/gen-test order              # 전체
/gen-test order application  # 레이어 지정
/gen-test order --contract   # BC 간 계약 테스트 (동기→SCC, 비동기→Pact 자동 분기)
/gen-test order --pbt        # Property-Based Testing (Jqwik, domain 레이어만)
/gen-test --e2e              # E2E 통합 시나리오
/gen-test --wave 2           # Wave 일괄
--pbt: Jqwik 불변식 탐색 --contract: SCC or Pact 자동 선택
/check-spec [--bc] [--section] [--verbose]

명세 ↔ 코드 드리프트 검증

domain-context.md YAML ↔ 실제 코드를 정적 대조.
정방향(구현 누락) + 역방향(미등록 항목) 양방향 스캔.
Service 메서드 레벨까지 검증. 산출물 변경 없이 리포트만 출력.

/check-spec                    # 전체 BC 대조
/check-spec --bc order         # 특정 BC만
/check-spec --section commands # Command ↔ Service만
/check-spec --verbose          # 파일:라인 포함
검증 범위 구분
UC ↔ domain-context 수렴 → /domain-modeling Step 4 관할
consumers 버전 동기화 → /check-domain-version 관할
domain-context ↔ 코드 정합성 → /check-spec 관할
/check-domain-version

버전 동기화 확인

domain-context.md consumers 섹션과 content-version 비교.
재생성 필요 소비자 목록과 최소 실행 순서 출력.

설계 단계 커맨드

Phase 2 커맨드

/usecase — UC 명세서 작성 (Usecase 2.0)
/usecase-by-example — usecases/*.md → features/*.feature 변환
/domain-modeling — domain-context.md 생성/갱신 (--bc 증분 갱신, --split-waves Wave 분할 지원)
/gen-class-diagram ★ 위성 — domain-context.md → PlantUML 클래스 다이어그램 3종 (docs/class-diagrams/). --bc {name} 증분 모드 지원. 55 게이트 무관, 검토 보조용.
/arch-design — arch-decisions.md 생성
/nfr-spec — NFR 도출 → arch-decisions.md ## NFR 섹션 추가
/gen-schema — Persistence → erd.mmd (Mermaid ERD) + schema.sql (DDL) 생성
/uc-to-skeleton — Java 스켈레톤 + PlantUML 시퀀스 다이어그램 (docs/diagrams/) 생성

Phase 2.5 — DB 스키마 생성 커맨드

/gen-schema [--bc {bc}] [--update] [--format]

DB 스키마 생성 커맨드

arch-decisions.md ## Persistence 섹션을 읽어 Mermaid ERD(erd.mmd)와 DDL SQL(schema.sql)을 자동 생성합니다.
domain-context.md의 Aggregate → 테이블 매핑 규칙을 적용합니다.
persistence=jpa+jdbc 시 Command 테이블에 [Command Side] JPA @Entity, Query Row에 [Query Side] JdbcTemplate Row 주석을 삽입합니다 — codegen 없음.
persistence=jpa+jooqschema.sql을 jOOQ codegen 입력으로 사용하여 Query Side Java 클래스를 빌드 타임에 생성합니다.

/gen-schema                   # 전체 BC ERD + DDL 생성
/gen-schema --bc order        # 특정 BC만 생성
/gen-schema --update          # 변경 내용만 반영 (MAJOR/MINOR)
/gen-schema --format flyway   # Flyway V1__init.sql 형식
/gen-schema --format liquibase # Liquibase XML 형식
/gen-schema --dry-run         # 생성 계획만 출력
사전 조건
arch-decisions.md ## Persistence 섹션 존재
domain-context.md aggregates 섹션 존재
두 파일 없으면 즉시 중단 — 추론으로 스키마 생성하지 않음

Aggregate → JpaEntity 매핑 규칙

Aggregate Root → @Entity 테이블
AggregateRoot 이름 → snake_case 테이블명.
id → UUID PK.
created_at / updated_at 자동 추가.
Value Object → @Embeddable / 별도 테이블
단순 VO(Money, Address) → @Embeddable 인라인.
컬렉션 VO → 별도 테이블 + FK.
Aggregate 상태 → VARCHAR + CHECK
domain-context.md states 배열 → VARCHAR 컬럼.
CHECK (status IN ('PENDING','CONFIRMED','CANCELLED')).
BC 간 참조 → FK 금지, UUID만 저장
다른 BC Aggregate를 직접 참조하지 않음.
customer_id UUID만 저장 — JOIN 없이 ACL로 조회.
산출물
erd.mmd — Mermaid ERD (GitHub/GitLab 바로 렌더링)
schema.sql — 표준 DDL (Flyway/Liquibase 입력)
V{n}_init_schema.sql — --format flyway 옵션 시
target/generated-sources/jooq/ — persistence=jpa+jooq 시 자동 생성
※ persistence=jpa+jdbc: codegen 없음 — QueryRepository SQL을 schema.sql 참조해 직접 작성

진화적 설계 — 아키텍처 마이그레이션 커맨드

/migrate-module {시나리오} [옵션]

모듈 마이그레이션 커맨드

현재 아키텍처 구조를 진화시키는 3-Gate 커맨드.
분석 리포트 → 개발자 승인 → 실행 순으로 진행하며 arch-decisions.md 업데이트와 migration-log.md 생성을 자동 처리한다.

/migrate-module single-to-multi           # single → Maven 멀티모듈
/migrate-module split-bc {bc} {bc1} {bc2} # BC 분리
/migrate-module --dry-run single-to-multi  # 분석 리포트만
/migrate-module --status                   # 진행 상태 확인
3-Gate 프로세스
Gate 1 분석 → 개발자 승인 → Gate 2 준비 → 개발자 승인 → Gate 3 실행
domain-context.md는 직접 수정하지 않음 — /domain-modeling 재실행 권장

지원 시나리오 및 산출물

single → multi 모듈 분리
단일 패키지 → Maven 멀티모듈.
모듈 pom.xml 생성, 클래스 이동, import 경로 수정 자동화.
BC 분리 (split-bc)
1개 BC → 2개 BC.
Aggregate Root 기준 경계 제안, OutputPort 스켈레톤 자동 생성, bc-plan.md 업데이트 안내.
자동 생성 산출물
arch-decisions.md 업데이트 migration-log.md 생성 OutputPort 스켈레톤

전체 커맨드 실행 시퀀스 — 쇼핑몰 예시

# Phase 1 — 요구사항 (순차 파이프라인)
/usecase "온라인 쇼핑몰: 주문·결제·재고·알림"
# → usecases/ 디렉토리에 UC별 분할 저장 (기본값: --level casual)
#   usecases/UC001-주문생성.md
#   usecases/UC002-주문취소.md
#   usecases/UC003-결제처리.md
#   usecases/UC004-재고확인.md
#   usecases/UC005-알림발송.md
# ↑ 검토·수정 후 다음 커맨드 실행

/usecase-by-example
# → usecases/ 전체 순회 → features/ 디렉토리에 UC별 1:1 .feature 생성

/usecase-by-example usecases/UC001-주문생성.md
# → 특정 UC만 변환 (수정 후 개별 재생성)

# Phase 2 — 설계 (병렬 실행 후 수렴)
/domain-modeling                 → domain-context.md  (v1.0.0)
/gen-class-diagram               → (선택, 위성) docs/class-diagrams/ — 모델 시각 검토
/arch-design                  → arch-decisions.md  (consumers.arch-design: "1.0.0")
/nfr-spec                     → arch-decisions.md에 ## NFR 섹션 추가
                                  AUTO: JWT, BCrypt, MDC, Actuator, Pageable
                                  TODO: [NFR-CACHE] [NFR-CB] [NFR-RETRY]
/gen-schema                   → erd.mmd (Mermaid ERD) + schema.sql (DDL)
                                  Aggregate → JpaEntity 매핑 규칙 적용
                                  BC 간 FK 금지 — ID 참조만 허용
/uc-to-skeleton               → Java 스켈레톤 + PlantUML 시퀀스 (docs/diagrams/, NFR AUTO 클래스 포함)

# Phase 3 — 구현 (Wave 순서)
/implement-bc --wave 0        → shared 구현 (Money, Address)
/implement-bc --wave 1        → inventory 구현
/implement-bc --wave 2        → order + payment 병렬 구현 (NFR TODO 주석 삽입)
/implement-bc --wave 3        → notification 구현

# Phase 4 — 테스트
/gen-test --wave 2            → order + payment 테스트
/gen-test order --contract    → BC 간 계약 테스트 (Kafka → Pact 자동 선택)
/gen-test order --pbt         → Aggregate 불변식 Property-Based Testing
/gen-test --e2e               → 전체 E2E 시나리오

# 테스트 후 테스트 커버리지 확인 (bash)
mvn jacoco:report

# Phase 5 — 실행
/run-local                    → Docker Compose 기동 + Spring Boot 시작
/run-check                    → Run Gate 전체 확인 (health·DB·포트·토픽)

# 수시 — 명세 ↔ 코드 드리프트 검증 (Phase 3~4 반복 중 언제든, 큰 작업이라 BC별로 진행 추천)
/check-spec                   → 전체 BC 대조 (domain-context.md ↔ 코드)
/check-spec --bc order        → 특정 BC만 빠르게 확인
/check-spec --section commands → Command ↔ Service 메서드만 대조

# 도메인 모델 변경 시 (v1.3: --bc 증분 갱신)
/domain-modeling --bc order         → order BC만 재모델링 (source-uc 역참조로 관련 UC 자동 식별)
/domain-modeling --bc order --uc UC005,UC024  → 신규 UC 추가 시 해당 BC에 반영
/domain-modeling --bc new           → 미할당 UC 분석 → 신규 BC 후보 제안
/gen-class-diagram --bc order       → (선택) order BC 다이어그램만 갱신, 비대상 BC 보존
/check-domain-version         → 재생성 필요 목록 확인
/implement-bc order application  → 영향 레이어만 재실행
/gen-test order application   → 테스트 업데이트

# 대규모 프로젝트 — Wave 분할 전환 (v1.5: 1회성, BC 8개 또는 1500줄 초과 시)
/domain-modeling --split-waves      → schema 2.0 → 2.1 전환 (단일 → Wave 단위 다중 파일)
                                   원본은 domain-context.md.backup으로 보존
                                   bounded-contexts[].wave 필드 기반으로 wave별 파일 자동 분배
/check-spec                      → 전환 후 정합성 검증 권장
/implement-bc voucher            → STEP 0이 schema 2.1 자동 감지 → 필요한 wave 파일만 선택 로딩

# 진화적 설계 — 아키텍처 마이그레이션
/migrate-module --dry-run single-to-multi  → 분석 리포트 (파일 변경 없음)
/migrate-module single-to-multi            → Gate 1 분석 → 승인 → Gate 2 준비 → 승인 → Gate 3 실행
/migrate-module --status                   → 진행 중인 마이그레이션 상태 확인

# BC 분리 시나리오
/migrate-module --dry-run split-bc order order-core fulfillment
/migrate-module split-bc order order-core fulfillment
# → Gate 3 완료 후 필수 후속 작업:
/domain-modeling --bc order-core    → order-core BC 모델링 (source-uc 자동 매핑)
/domain-modeling --bc fulfillment --uc UC010,UC011  → fulfillment BC 신규 모델링
/check-domain-version         → consumers 동기화
/implement-bc order-core application  → FulfillmentPort 호출 코드 완성
/gen-test order-core --contract       → 포트 계약 테스트 재생성
V1.4 NEW — EXTENSION DOCUMENTS

A-JADM 본체(v1.7)는 범용 파이프라인에 집중하고, 실전 시나리오별 심화 전략은 확장 문서 체계로 분리했습니다.
본체를 가볍게 유지하면서 고급 주제를 선택적으로 참조할 수 있도록 구성한 2-레이어 구조입니다.

확장 문서 체계

대규모 시스템 · 레거시 DB · 에이전트 기반 자동화 같은 고급 주제는 별도 확장 문서로 관리합니다.
각 확장 문서는 독립 버전을 가지며 실전 검증을 거쳐 정식 통합 여부를 결정합니다.

EXTENSION v0.1 · April 2026
문서 보기 →

대규모 시스템 및 레거시 DB 대응

ERP급 도메인이 많은 시스템 개발 전략과 레거시 DB 리버스 엔지니어링 방법론.
Part I: 1 프로젝트 = 1~소수 BC 원칙, Wave 위상 정렬, BC 간 통신 패턴, 세션 운영.
Part II: 레거시 DB A/B/C/D 진단 프레임, legacy-db-context.md 계약 파일, 유형별 Strangler 전략.

대상 독자: ERP 현대화 프로젝트, 레거시 DB 위 신규 개발 착수 팀
신규 계약 파일: legacy-db-context.md
신규 스킬 (초안): reverse-schema, legacy-uc-extract
AGENTS v0.2 · April 2026
문서 보기 →

Subagent & Agent Teams 통합 전략

Claude Code의 subagent 기능으로 세션 분리를 자동화하면서 계약 파일 철학과 순환논리 방지 원칙을 유지하는 전략.
bc-implementer · ddd-modeler · spec-checker 에이전트 템플릿 제공.
Phase 4 고급 패턴으로 Agent Teams(Wave 병렬, DDD 수렴, Competing Hypotheses) 도입 시나리오 분석.

대상 독자: Claude Code 기반 자동화 고도화, 대규모 BC 병렬 구현 필요 팀
신규 디렉토리: .claude/agents/
핵심 원칙: gen-test는 별도 부모 세션 전용 (순환논리 방지)

본체와 확장 문서의 관계

[ A-JADM 본체 v1.7 ] ← 이 문서
   ├─ SDLC 5단계 범용 파이프라인
   ├─ 9개 정규 SKILL.md + 1개 위성 (gen-class-diagram) · 14개 슬래시 커맨드
   ├─ 계약 파일 체계 · 버저닝 · 멀티 BC 오케스트레이션
   │
   ├─→ [ A-JADM Extension v0.1 ] 실전 시나리오 심화
   │     ├─ ERP급 대규모 시스템 설계
   │     └─ 레거시 DB 리버스 엔지니어링
   │
   └─→ [ A-JADM Agents v0.2 ]    자동화 고도화
         ├─ Subagent 기반 세션 분리 자동화
         └─ Agent Teams 고급 협업 패턴 (Phase 4)
독립성 원칙: 본체의 기본 파이프라인만으로 표준 규모 프로젝트는 충분합니다.
확장 문서는 특정 시나리오에 해당하는 팀만 선택적으로 참조합니다. 확장 문서 없이도 본체만으로 완결된 개발이 가능합니다.

v1.7 주요 변경 (2026-04, Flow-Complete Extraction) LATEST

배경: v1.6 까지는 UC 기본 흐름(main)만 service-method 로 추출되어, 대안(A*) · 예외(E*) 흐름의 인터페이스 호출이 domain-modeling 단계에서 누락. 49개 게이트가 모두 PASS 여도 결제 승인 후 저장 실패 시 결제 취소 로직이 구현에서 사라지는 구조적 결함. v1.7 은 UC Section 3 흐름 컬럼과 alt-flows[]/compensation-flows[] 필드로 흐름별 인터페이스 호출을 보존하고 6개 신규 게이트(C9/C10/K9/S9/V7/T7)로 누락을 정적 검증.
+
usecase v1.3 — Section 3 `흐름` 컬럼
UC Section 3 협력 인터페이스 테이블의 첫 컬럼 직후에 흐름 컬럼 추가 (main | alt:A{n} | exc:E{n}). v1.2 UC 는 /usecase --migrate-to 1.3 으로 main 일괄 태깅.
+
domain-modeling v2.1 — schema 3.1 (alt-flows · compensation-flows · flow-type · promoted-from)
service-methods[]flow-type (main | alt-primary), alt-flows[] (비승격 alt — entry-condition + uses-interfaces, 내부 if-else 분기), compensation-flows[] (exc 보상 — trigger-error + uses-interfaces + raises-events, try-catch 블록), promoted-from (alt-primary 승격 추적) 신설. interfaces[].uc-mapping[]{uc, step, flow} 객체 배열로 확장.
+
alt 흐름 승격 기준 4개
transaction-boundary-independent / authorization-boundary-independent / time-boundary-independent / api-entry-independent. 하나라도 만족 시 flow-type: alt-primary 로 승격되어 독립 메소드 + 전용 Command Record 생성.
+
uc-to-skeleton v5 — 흐름 완전성 스켈레톤
alt-primary 는 독립 public 메소드 + 전용 Command Record. 비승격 alt 는 원본 메소드 본문의 if-else 분기. exc 는 try-catch 블록 — catch 타입 = trigger-errorexception-class 역참조. 생성자 파라미터는 main + alt + comp uses-interfaces flatten 후 중복 제거. 중첩 보상(E3 ⊃ E4 등) 자동 처리.
+
implement-bc v3 — 결정론적 보상 본문
compensation-flows[] 직접 소비로 try-catch 본문 추론 없이 구현. 중첩 보상 · 보상의 보상(manual queue) 패턴 자동 적용. V2 확장(전 흐름 커버리지) + V7 신규(try-catch AST 검증).
+
gen-test v3 — 전 흐름 테스트 자동 생성
전 Scenario(@UC-S + @UC-A + @UC-E) ↔ @Test 1:1 (T1 확장). compensation-flows[].trigger-error 당 보상 호출 검증 @Test 자동 생성 (T7 신규 — thenThrow + isInstanceOf + verify 템플릿). alt-primary 는 @Nested 클래스로 분리. T0 세션 분리 판정 조건 4개로 강화.
+
check-spec v4 — 55개 게이트 (신규 6개 + 확장 3개)
신규 6개: C9 (흐름 컬럼 필수값), C10 (Section 3 ↔ 본문 쌍방향), K9 (recovery-strategy ↔ compensation-flows), S9 (alt/exc Port + 주입), V7 (try-catch AST), T7 (보상 @Test). 기존 확장 3개: C2/K5/V2/T1 등 전 흐름 대응. --gates flow-completeness 옵션으로 9개만 집중 검증 가능.
+
domain-context-template.md v3.1 레퍼런스
skills/domain-modeling/references/domain-context-template.md 에 전체 YAML 스키마 + 필드 스펙 + check-spec v4 게이트 매핑 + 마이그레이션 가이드 문서화 (약 1,000줄).
=
하위 호환성 보장
schema 3.0 (v1.6 산출) 및 UC v1.2 는 check-spec v4 의 v3 호환 모드에서 계속 동작. C9/C10/K9/S9/V7/T7 는 SKIP + "v1.7 마이그레이션 권장" WARN. /usecase --migrate-to 1.3 + /domain-modeling --bc {name} 순서로 전환.

v1.6.1 주요 변경 (2026-04, 위성 스킬 추가)

+
gen-class-diagram v1 위성 스킬 추가
Phase 2 모델링 산출물(domain-context.md schema 3.0/3.1) 검토 보조 도구. PlantUML 클래스 다이어그램 3종(조감도 · BC별 상세 · interfaces 의존도) 결정론적 생성. 산출 위치 docs/class-diagrams/ — uc-to-skeleton 시퀀스 다이어그램(docs/diagrams/)과 docs/ 하위 정렬. --bc {name} 증분 모드 지원하여 /domain-modeling --bc 워크플로와 정합.
+
uses-interfaces 순서 시각 정렬
gen-class-diagram의 «uses» [n] 라벨이 uc-to-skeleton의 S7 게이트(Application Service 생성자 파라미터 순서 = uses-interfaces 순서)와 시각적으로 정렬. 검토자가 다이어그램만 봐도 생성자 순서 위반을 즉시 인지 가능.
+
자체 D1~D6 게이트 (49 게이트와 별개)
위성 스킬 원칙에 따라 gen-class-diagram은 자체 검증 D1~D6 만 보유. 49 게이트 카탈로그 미오염. D1 BC 노드 완전성 / D2 BC별 Aggregate Root 수 / D3 interfaces 완전성 / D4 ★ uses-interfaces 순서 / D5 식별자 보존(R1·R3·R4) / D6 PlantUML 문법.
=
위성 스킬 원칙 확립
정규 스킬과 의도적 차별 4가지: ① 계약 파일 미산출(.puml 만), ② domain-context.md consumers 블록 미등록(의존 그래프 미오염), ③ 49 게이트 미편입, ④ 하류 스킬 의존 없음. 빠지더라도 A-JADM 파이프라인 정상 동작.
=
하위 호환성
본 변경은 추가 전용. 기존 9개 정규 스킬·계약 파일·49 게이트 모두 무영향.

v1.6 주요 변경 (2026-04)

+
domain-context.md Schema 3.0 전환
기존 aggregates · value-objects · commands · events · ubiquitous-language 에 더해 interfaces[] · error-values[] · service-methods[] 3개 섹션 신설. UC Section 3 협력 인터페이스가 interfaces[].uc-mapping으로 1:1 매핑되어 결정론적 도출 경로 확보.
arch-decisions.md Markdown → YAML Schema 1.0 전환
모든 결정을 YAML 블록으로 구조화. nfr-spec 산출은 별도 ## NFR 섹션이 아닌 nfr: YAML 블록으로 병합. adapter-classes[] 가 interfaces[].name 패턴 매칭으로 자동 도출.
+
schemas-decisions.md 신규 계약 파일 (gen-schema v2)
기존 erd.mmd + schema.sql 외에 schemas-decisions.md (schema 1.0) 추가. tables[] · saver-interface · cross-bc-references · CHECK constraint 의 invariant-source 등 추적 메타데이터 YAML 형식. 계약 파일이 3개 → 4개로 확장.
+
49개 정합성 게이트 자동화 (check-spec v2)
C8 + K8 + S8 + N6 + D6 + V6 + T7 = 49개 게이트를 bash + grep + sed 로 정적 검증.
End-to-End 시뮬레이션에서 47 PASS / 0 FAIL / 1 WARN / 1 SKIP 달성. CI 파이프라인 통합 시 PR 단위 드리프트 감지 가능.
+
Err* ID 6-레이어 추적 체인 공식화
UC Section 4 → Gherkin Scenario → error-values[] → Exception.ERROR_ID → DomainExceptionHandler → test.getErrorId() 까지 6개 레이어에서 Err ID 문자열 정확 일치 보장. V1 / S4 / K6 / T2 게이트가 각 전환을 정적 검증.
스킬 8개 → 9개 확장 (gen-schema 독립 편입)
기존 파이프라인에서 위성 스킬이던 gen-schema가 공식 파이프라인에 편입되어 9개 스킬 체계 완성. 각 스킬이 자체 schema-version과 content-version 을 관리하는 계약 파일 기반 버저닝 체계 확립.
+
결정론적 매핑 0% 추론 달성
uses-interfaces 순서가 UC step → domain-context → 생성자 파라미터 → 본문 호출 → @Mock 선언 → InOrder.verify 까지 6-레이어에서 완전히 동일 순서로 전파. 이름·타입·순서 어디에서도 LLM 추론 개입 없음.
=
하위 호환성 보장
v1.5 이하 프로젝트(schema 2.x)는 변경 없이 동작. schema 3.0 전환은 /domain-modeling --migrate-to 3.0 명시적 실행 시에만 전환. Wave 분할 모드는 schema 3.1로 이전 개념 유지.

v1.5 주요 변경 (2026-04)

+
Wave 분할 모드 도입 (--split-waves)
대규모 프로젝트에서 domain-context.md가 비대해질 때 Wave 단위 다중 파일 구조로 전환. schema-version 2.0(단일) / 2.1(분할) 이중 모드 지원. 임계값: BC 8개 또는 1,500줄 초과 시 검토 권장.
+
implement-bc STEP 0 BC 컨텍스트 추출 신설
대상 BC와 의존 항목만 컨텍스트에 유지 (70~80% 토큰 절감). schema 자동 감지로 단일 파일(모드 A) / Wave 분할(모드 B) 분기. 기존 사용자 영향 없음.
계약 파일 분류 정리 (검증 vs 문서화)
domain-context.md의 YAML 키를 check-spec 검증 대상과 문서화/추적 목적으로 명시 분리. 템플릿에 분류 주석 추가.
=
하위 호환성 보장
기존 v1.4 이하 프로젝트(schema-version 2.0)는 변경 없이 동작. Wave 분할은 명시적 --split-waves 실행 시에만 전환.

v1.4 주요 변경 (2026-04)

+
Extension 확장 문서 체계 공식화
대규모 시스템 · 레거시 DB 전략을 별도 문서로 분리. 본체는 범용 파이프라인에 집중.
+
Agents 확장 문서 체계 공식화
Claude Code subagent 통합 전략 명문화. bc-implementer 레퍼런스 구현 제공.
네비게이션 · 시리즈 배너 개편
Extension · Agents 링크를 상단 네비게이션과 시리즈 배너에 공식 편입.
=
본체 파이프라인 · 커맨드 · 계약 파일 — 변경 없음
기존 v1.3 사용자에게 마이그레이션 부담 없음. 확장 문서는 선택적 참조.