CLAUDE CODE ADAPTER · VERSION 2.0 · MARCH 2026

AI-Driven Go Application
Development Methodology

A-ADM Core 방법론의 Claude Code + Go 구현 어댑터.
IDD · CBD · 패키지 중심 설계로 Go 백엔드 SDLC를 자동화합니다.

5
SDLC Phase
7
스킬 파이프라인
3
계약 · 입력 파일
11
슬래시 커맨드
A-ADM 시리즈 ← A-JADM Java · ⬤ A-GADM v2 Go · A-FADM Frontend

A-GADM v2란

A-JADM의 핵심 무기 — 계약 파일 기반 파이프라인, 1:1 추적성, 커맨드 자동 실행 — 을 Go 패키지 중심 설계에 맞게 재구성한 방법론.
v1에서 대화 내 블록으로 관리하던 설계 상태를 영속적인 계약 파일로 전환합니다.

A-ADM CORE 참조

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

A-ADM Core 보기 → 이 어댑터 고유 내용: IDD+CBD 설계 · chi/pgx/go-redis 고정 스택 · 11개 슬래시 커맨드
계약
파일 기반 스킬 연결
IDD
소비자 측 최소 인터페이스
CBD
구조체 조합 행위 설계
1:1
UC↔인터페이스↔테스트 추적

v1 → v2 주요 변경

영역v1v2이유
상태 추적설계 컨텍스트 블록 (대화 내)domain-context.md세션 간 소실 방지
아키텍처대화로 협의arch-decisions.md고정 스택 영속 전달
스킬0개7개 독립 SKILL.md오케스트레이터 분리
추적성미정의UC Step↔인터페이스↔테스트 1:1추론 최소화
Step 4~5"대화로 진행"커맨드화 (/go-implement, /go-skeleton)파이프라인 연속
커맨드7개11개전 단계 커버

A-JADM 대응 관계

개념A-JADM (Java)A-GADM v2 (Go)
설계 단위Bounded Context · Maven 모듈패키지 (package)
계약 파일domain-context.md + arch-decisions.mddomain-context.md + arch-decisions.md (Go 패키지 구조로 변환)
Port 정의application 레이어 OutputPort소비자 패키지 인터페이스 (IDD)
DISpring IoCcmd/main 수동 wire-up
에러Exception 계층에러를 값으로 — (T, error)
금지 규칙Lombok 완전 금지ORM·I접두사·panic·전역DI 금지
추적성Gherkin ↔ @Test 1:1UC Step ↔ 인터페이스 ↔ 테이블 드리븐 1:1

5대 설계 원칙

5대 원칙의 전체 정의는 A-ADM Core → 설계 원칙을 참조하세요.
Go 어댑터에서 추가되는 원칙 하나를 포함합니다.

① Lean
chi · pgx · go-redis 고정

GORM, Gin 등 대안 미고려. 선택 오버헤드 제거.

② Traceability
Table-driven test 1:1 추적

Gherkin 시나리오 → tc.name 필드로 추적.

③ Contract-File
features.md → domain-context.md

Go 전용 계약 파일 흐름. 파일 없으면 스킬 중단.

④⑤ + Go 고유
Package as Design Unit

도메인 패키지에 외부 import 없음. cmd/main이 유일한 조합 루트.

5단계 워크플로

각 단계는 명확한 입력·산출물·게이트를 가집니다.
A-JADM 5 Phase 구조와 동일한 프레임워크.

Phase 1 요구사항 Phase 2 설계 Phase 3 구현 Phase 4 테스트 Phase 5 검증
1
요구사항 분석
features.md → /go-domain-init → /go-usecase-spec — UC 명세서 + OpenAPI 초안
0
features.md — 개발자 작성 입력 파일
프로젝트 개요, 액터, 기능 목록(MVP/후순위), 비즈니스 규칙, 외부 의존성, 기술 제약.
파이프라인의 모든 산출물이 이 파일에서 파생됩니다.
1
/go-domain-init — 도메인 이해 + 패키지 후보 + UC 도출 계획
features.md를 읽어 도메인 사전, 패키지 후보(근거 추적), UC 도출 계획(/go-usecase-spec 실행 순서) 산출.
features.md 없으면 대화형으로 수집 후 파일 생성.
2
/go-usecase-spec — UC 명세서 + OpenAPI 초안
go-usecase-spec 6섹션.
features.md의 액터·비즈니스 규칙·외부 의존성을 참조 Section 1/3/4/5에 반영.
OpenAPI 초안 동시 생성.
입력 → 산출
📝 features.md (개발자 작성)
📄 도메인 사전 + 패키지 후보 + UC 도출 계획
📄 UC명세서.md + openapi.yaml 초안
→ Phase 2 go-domain-modeling 입력
features.md = 파이프라인의 원천. 개발자가 "무엇을 만들 것인가"를 확정하면, AI는 "어떻게 패키지를 나눌 것인가"만 판단합니다.
추론 범위를 최소화하는 A-GADM v2의 핵심 설계입니다.
2
설계 — 계약 파일 생성
도메인 모델링 → 아키텍처 설계 → 스켈레톤 — 계약 파일 기반
UC명세서 + 협력 인터페이스
   │
   ▼
/go-domain-modelingdomain-context.md [계약 1]
   │
   ▼
/go-arch-designarch-decisions.md [계약 2]
   │
   ▼
/go-skeleton → Go 패키지 + 인터페이스 + wire-up (추론 없는 1:1 매핑)
3
구현
/go-implement — 레이어 순서 강제: domain → service → infra → handler → wire-up
레이어 순서 강제 (A-JADM domain→application→adapter 대응)
1. 도메인 타입 + 에러값 (외부 의존 없음) → 2. 인터페이스 + Service → 3. 인프라 구현체 (인터페이스 구현) → 4. handler (chi) → 5. cmd/main wire-up 완성
4
테스트
/go-gen-test + /review-deps — UC Step ↔ 테이블 드리븐 1:1 추적
5
검증 + OpenAPI 확정
/check-design + /gen-openapi — 품질 게이트 통과 후 API 명세 확정 → A-FADM 전달

7개 스킬 파이프라인

각 스킬은 독립적인 SKILL.md 오케스트레이터 + 참조 파일로 구성됩니다.
스킬 간 직접 호출 없이 계약 파일로만 소통합니다.

go-domain-init go-usecase-spec go-domain-modeling go-arch-design go-skeleton go-implement go-gen-test
go-domain-init

도메인 이해 + 패키지 후보 (features.md 기반)

features.md를 읽어 도메인 사전, 패키지 후보(근거 추적), UC 도출 계획 산출.
features.md 없으면 대화형으로 수집 후 파일 자동 생성.
파이프라인의 최초 진입점.

입력: features.md / 산출: 도메인 사전 + 패키지 후보 + UC 도출 계획
참조 1개 (features 템플릿)
go-usecase-spec

UC 명세서 + OpenAPI 초안

Go IDD+CBD 설계로 직결되는 6섹션 UC 명세서.
Section 3 협력 인터페이스가 domain-context.md의 직접 입력.
Phase 2에서 OpenAPI 초안도 함께 생성.

입력: 도메인 설명 / 산출: UC명세서.md + openapi.yaml 초안
981줄 참조 3개
go-domain-modeling

Go 도메인 모델링 → domain-context.md

4단계: 패키지 경계 식별 → IDD 인터페이스 설계 → struct+에러값 정의 → UL 사전+수렴 검증.
UC Section 3 협력 인터페이스 수 = interfaces[] 수 1:1 강제.

입력: UC명세서.md / 산출: domain-context.md
408줄 참조 1개 (템플릿)
go-arch-design

Go 아키텍처 설계 → arch-decisions.md

4단계: 패키지 구조 확정 → 통신 방식 확정 → 인프라 어댑터 구조 → Wire-Up 템플릿.
Fixed Stack + Forbidden Rules + 컴파일 타임 검증 포함.

입력: domain-context.md / 산출: arch-decisions.md
650줄 참조 2개 (템플릿+메시징)
go-skeleton

코드 골격 생성 (추론 없는 1:1)

두 계약 파일을 읽어 패키지 디렉토리 + interfaces.go + service.go 골격 + errors.go + struct + 인프라 골격 + cmd/main wire-up.
계약 파일의 키를 코드로 기계적 변환.

입력: domain-context.md + arch-decisions.md / 산출: Go 소스 골격
345줄 두 파일 모두 필요
go-implement

패키지 구현 (레이어 순서 강제)

go-skeleton 골격의 TODO를 실제 코드로 채움.
5단계 레이어 순서: domain(생성자+불변식) → service(UC 흐름) → infra(pgx SQL) → handler(chi+에러→HTTP) → wire-up. Forbidden Rules 실시간 검증.

입력: 골격 + 계약 파일 2개 / 산출: 구현된 Go 소스
448줄 --dry-run 지원
go-gen-test

테스트 생성 (UC↔테스트 1:1)

3단계: 매핑 테이블 구성 → Mock 타입 생성(testify/mock) → 테이블 드리븐 테스트.
UC 시나리오 수 = 테스트 케이스 수 강제.
AssertExpectations(t) 필수.
scope: service | handler | all.

입력: UC명세서 + domain-context.md / 산출: *_test.go
346줄 scope 3종

스킬 ↔ 커맨드 관계

스킬은 SKILL.md에 정의되는 실행 로직(워크플로우 + 매핑 규칙 + 생성 템플릿)이고,
커맨드는 CLAUDE.md에 정의되는 진입점(파라미터 파싱 + 선행 조건 검사 + 스킬 호출)입니다.
모든 커맨드가 별도 스킬을 가지는 것은 아닙니다
/review-deps, /check-design 등 검증 커맨드는 CLAUDE.md에 규칙이 직접 정의됩니다.
계약 파일 YAML 스키마는 A-ADM Core → 계약 파일을 참조하세요.
이 섹션은 Go 환경의 파일 간 흐름과 features.md 추가 입력을 설명합니다.

계약 파일 체계

스킬 간 인터페이스를 파일로 명문화. 소비자 커맨드는 파일 없이는 실행하지 않습니다.

domain-context.md
go-domain-modeling 산출
packages → 패키지명 + 책임 + 의존 방향
interfaces → 소비자 측 인터페이스 + uc-mapping
domain-types → 핵심 struct 목록
error-values → 패키지별 sentinel 에러값
service-methods → 시그니처 + UC Step 매핑
ubiquitous-language → canonical + forbidden
소비자: go-arch-design · go-skeleton · go-implement · go-gen-test
arch-decisions.md
go-arch-design 산출
fixed-stack → chi v5, pgx v5, go-redis v9, slog
forbidden-rules → ORM·I접두사·panic·전역DI 금지
package-layout → internal/ 디렉토리 트리
infra-mapping → 인터페이스 → 구현체 패키지
wire-up → cmd/main 주입 순서
shared-pkg → 공유 VO 위치
소비자: go-skeleton · go-implement

파일 간 흐름

features.md (개발자 작성 — 파이프라인의 원천)
       ↓
/go-domain-init              → 도메인 사전 + 패키지 후보 + UC 도출 계획   ← 검토·수정
       ↓
/go-usecase-spec             → UC명세서.md + openapi.yaml 초안        ← 검토·수정
       ↓
domain-context.md     ← /go-domain-modeling 산출 (패키지·인터페이스·에러값·UL)
       ↓
arch-decisions.md     ← /go-arch-design 산출 (패키지 구조·스택·금지 규칙·wire-up)
       ↓
Go 스켈레톤              ← /go-skeleton (추론 없는 1:1 매핑)
       ↓
패키지별 구현            ← /go-implement (레이어 순서 강제)
       ↓
테스트 스위트            ← /go-gen-test — go-gen-test 스킬 (UC↔테스트 1:1 추적)
       ↓
openapi.yaml 확정      ← /gen-openapi (초안 drift 검증 → A-FADM 전달)

domain-context.md 스키마 (YAML 블록)

## Interfaces                            # 핵심 — IDD 매핑의 원천
```yaml
interfaces:
  - name: StockChecker
    package: order                        # 소비자 패키지
    methods:
      - "IsAvailable(ctx context.Context, productID string, qty int) (bool, error)"
    consumed-by: [order.OrderService]
    uc-mapping: "UC-001 Step 1"           # ← 추적성 원천
```

## Error Values                          # sentinel 에러
```yaml
error-values:
  order:
    - name: ErrNotFound
      sentinel: 'errors.New("order not found")'
    - name: ErrInsufficientStock
      sentinel: 'errors.New("insufficient stock")'
```

## Service Methods                       # UC Step 매핑
```yaml
service-methods:
  - package: order
    struct: OrderService
    methods:
      - name: PlaceOrder
        signature: "(ctx context.Context, req PlaceOrderReq) (OrderID, error)"
        uc-step: "UC-001 기본 흐름"
        uses-interfaces: [StockChecker, PaymentRequester, OrderSaver]
        error-cases: [ErrInsufficientStock, ErrPaymentFailed]
```

arch-decisions.md 스키마 (YAML 블록)

## Package Layout
```yaml
package-layout:
  tree:
    - "cmd/server/main.go"
    - "internal/order/"          # 도메인 (외부 import 없음)
    - "internal/postgres/"       # 인프라 구현체
    - "internal/handler/"        # chi router
    - "pkg/money/"               # 공유 VO
  dependency-direction: "handler → order; postgres → order (구현); order ← 외부 없음"
```

## Infra Mapping                         # 인터페이스 → 구현체 확정
```yaml
infra-mapping:
  - interface: OrderFinder
    consumer-pkg: order
    implementation: "postgres.OrderRepo"
    impl-pkg: "internal/postgres"
```

## Wire-up Strategy                      # cmd/main 코드 순서
```yaml
wire-up:
  location: "cmd/server/main.go"
  order: [pgxpool, repos, services, handlers, router]
```
추적성 3단계 체인 규칙은 A-ADM Core → 추적성을 참조하세요.
Go 어댑터는 Table-driven Test의 tc.name 필드로 Gherkin 시나리오를 추적합니다.

추적성 규칙

UC Step → 인터페이스 → 테스트 케이스까지 1:1 매핑 강제.
A-JADM의 Gherkin↔@Test를 Go 테이블 드리븐으로 재해석.

3단계 추적 체인

UC-001: 고객이 상품을 주문한다
  Step 1: 재고 확인  → StockChecker.IsAvailable()  → {name:"UC001_Step1_재고충분"}, {name:"UC001_Step1_재고부족"}
  Step 2: 결제 요청  → PaymentRequester.Request()   → {name:"UC001_Step2_결제성공"}, {name:"UC001_Step2_결제실패"}
  Step 3: 주문 저장  → OrderSaver.Save()            → {name:"UC001_Step3_저장성공"}
  Step 4: 이벤트 발행 → EventPublisher.Publish()     → {name:"UC001_Step4_발행성공"}

계약 파일에서의 추적

interfaces:
  - name: StockChecker
    uc-mapping: "UC-001 Step 1"  # ← 추적 원천

service-methods:
  - name: PlaceOrder
    uc-step: "UC-001 기본 흐름"
    error-cases: [ErrInsufficientStock]
    # ← 에러 케이스가 테스트 테이블 행 근거

테이블 드리븐 테스트에서의 추적

tests := []struct {
    name string  // ← UC Step 추적
}{
    {name: "UC001_Step1_재고충분"},
    {name: "UC001_Step1_재고부족"},
    {name: "UC001_Step2_결제성공"},
    {name: "UC001_Step2_결제실패"},
}
// go test -run "UC001_Step1" 가능
추적성 검증 (/check-design 자동)
□ 모든 인터페이스에 uc-mapping 존재?
□ error-cases가 error-values에 정의?
□ 테스트 정상 케이스 ≥ UC Step 수?
□ 에러 케이스 ≥ error-cases 수?
FIXED STACK Go 1.22+ chi router pgx v5 go-redis v9 Table-driven Test GORM 금지

고정 스택 · 금지 규칙

arch-decisions.md에 선언. 모든 스킬과 커맨드가 추론 없이 따릅니다.

확정 스택

역할라이브러리비고
HTTP Routerchi v5net/http 호환
DB Driverpgx v5PostgreSQL, 직접 SQL
Cachego-redis v9Redis
Test Mocktestify/mock인터페이스 mock
Asserttestify/assert테이블 드리븐
로거slogGo 1.21+

금지 규칙

금지대체
I 접두사 인터페이스OrderFinder
OrderServiceImplpostgres.OrderRepo
ORM (GORM 등)pgx v5 직접 SQL
전역 변수 DIcmd/main wire-up
panic 에러 처리(T, error)
인터페이스 메서드 4개+읽기/쓰기 분리
CLAUDE CODE ADAPTER 고유 내용

11개 슬래시 커맨드는 A-ADM Core 5단계 워크플로를 Claude Code + Go 환경에서 실행하는 진입점입니다.

11개 슬래시 커맨드

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

Phase 1 — 요구사항

/go-domain-init [features.md]

go-domain-init 스킬 실행.
features.md를 읽어 도메인 사전 + 패키지 후보 + UC 도출 계획. 파일 없으면 대화형으로 수집 후 features.md 자동 생성.

/go-domain-init                # features.md 자동 읽기
/go-domain-init features.md    # 파일 경로 지정
/go-usecase-spec {desc} [--pkg]

go-usecase-spec 6섹션 UC 명세서 + OpenAPI 초안 생성.
Section 3 협력 인터페이스가 핵심.

/go-usecase-spec "고객이 주문한다" --pkg order

Phase 2 — 설계 (계약 파일 생성) 스킬 연동

/go-domain-modeling

go-domain-modeling 스킬 실행.
UC명세서 → domain-context.md 생성.
패키지 → IDD 인터페이스 → struct+에러값 → UL 4단계.

/go-domain-modeling
# UC명세서 없으면 중단 → /go-usecase-spec 안내
/go-arch-design

go-arch-design 스킬 실행. domain-context.md → arch-decisions.md 생성. 구조 → 통신 → 어댑터 → wire-up 4단계.

/go-arch-design
# domain-context.md 없으면 중단
/go-skeleton

go-skeleton 스킬 실행.
두 계약 파일 → 패키지 디렉토리 + interfaces.go + service.go + errors.go + struct + 인프라 골격 + cmd/main.
추론 없는 1:1 매핑.

/go-skeleton
# 두 계약 파일 모두 필요. 하나라도 없으면 중단.

Phase 3 — 구현

/go-implement {pkg} [layer]

go-implement 스킬 실행.
레이어 순서 강제: domain → service → infra → handler → wire-up.
Forbidden Rules 실시간 검증.

/go-implement order            # 전체 (all)
/go-implement order domain     # 레이어 지정
/go-implement order service
/go-implement order --dry-run  # 실행 계획만
/add-interface {pkg} [--uc]

IDD.
소비자 측 인터페이스 Go 코드 추가 생성.
읽기/쓰기 분리 + 컴파일 타임 검증.

/add-interface order
/add-interface order --uc UC-001

Phase 4 — 테스트 · 검증

/go-gen-test {pkg} [--uc] [--scope]

go-gen-test 스킬 실행.
UC 시나리오 ↔ 테이블 드리븐 1:1 추적.
Mock 자동 생성. scope: service | handler | all.

/go-gen-test order                 # 전체 (scope=service)
/go-gen-test order --uc UC-001     # 특정 UC
/go-gen-test order --scope handler # HTTP 핸들러 테스트
/go-gen-test order --scope all     # service + handler
/review-deps [--pkg]

순환 의존 · 도메인 외부 import · 의존성 방향 위반 감지.

/review-deps
/review-deps --pkg order
/check-design [--phase]

계약 파일 기반 품질 게이트.
추적성 + Forbidden Rules + 인터페이스 메서드 수 + 컴파일 타임 검증.

/check-design
/check-design --phase 2

Phase 5 — OpenAPI 확정

/gen-openapi [--pkg]

Phase 1 초안 대비 drift 검증 → openapi.yaml 확정 → A-FADM 전달. openapi-typescript로 프론트 타입 자동 생성.

/gen-openapi
/gen-openapi --pkg order
Phase 1(초안) → Phase 5(확정) 두 단계 운영. diff를 명시적으로 출력.

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

# Phase 1 — 요구사항 분석
# features.md 작성 (개발자) — 프로젝트 개요 + 액터 + 기능 목록 + 비즈니스 규칙 + 외부 의존성 + 기술 제약

/go-domain-init                     # features.md 읽기 → 도메인 사전 + 패키지 후보 + UC 도출 계획
# → 검토 후 UC 도출 계획에 따라 /go-usecase-spec 실행
/go-usecase-spec "고객이 상품을 주문한다" --pkg order
/go-usecase-spec "주문을 취소하고 환불한다" --pkg order
# → UC명세서.md + 협력 인터페이스 + openapi.yaml 초안

# Phase 2 — 설계 (계약 파일 파이프라인)
/go-domain-modeling       → domain-context.md (v1.0.0)
/go-arch-design           → arch-decisions.md
/go-skeleton              → internal/{order,payment,postgres,handler}/ + cmd/

# Phase 3 — 구현 (레이어 순서 강제)
/go-implement order domain     # struct + errors + 생성자
/go-implement order service    # UseCase 구현 (UC 흐름 순서)
/go-implement order infra      # postgres Repo (pgx SQL)
/go-implement order handler    # chi HTTP 핸들러
/go-implement order wire-up    # cmd/main 조합 루트
/go-implement payment          # 다음 패키지 전체

# Phase 4 — 테스트 · 검증
/go-gen-test order                 # UC↔테스트 1:1 테이블 드리븐
/go-gen-test order --scope handler # HTTP 핸들러 테스트
/go-gen-test payment
/review-deps                    # 순환 · 방향 위반
/check-design                   # 추적성 + Forbidden Rules

# Phase 5 — OpenAPI 확정
/gen-openapi                    # 초안 drift 검증 → 확정 → A-FADM 전달

# 도메인 모델 변경 시
/go-domain-modeling             # domain-context.md (v1.1.0)
/go-skeleton                    # 영향 범위 재생성
/go-implement order service    # 변경 레이어만 재실행
/go-gen-test order                 # 테스트 업데이트