개요
ttutak은 Claude Code 위에서 동작하는 개발 자동화 플러그인입니다. 9개 스킬, 9개 에이전트가 협업하여 자연어 요청 하나로 전체 개발 사이클을 수행합니다.
자연어 의도 파싱
명령어 없이 자연어로 의도를 전달하면 적절한 스킬과 모드가 자동 발동됩니다.
에이전트 팀 협업
PO, 설계자, 개발자, QA, 보안 감사자 등 9개 에이전트가 역할별로 협업합니다.
단계별 승인
PRD, 설계, 구현 계획 — 각 단계에서 사용자 승인 없이 다음으로 넘어가지 않습니다.
안전장치 내장
PR 머지 차단, force push 차단, 민감 파일 감지 등 다중 안전장치가 내장되어 있습니다.
안전장치
| 항목 | 설명 |
| PR 머지 차단 | gh pr merge 실행을 설정 수준에서 차단. 머지는 사람이 직접 수행 |
| Force Push 차단 | git push --force 차단 |
| 보호 브랜치 | main에서 직접 커밋 차단. 작업 브랜치를 먼저 생성 |
| 민감 파일 감지 | .env, *.key, *.pem, credentials*, *secret* 커밋 전 경고 |
| 빌드 아티팩트 | build/, node_modules/ 등 tracked 시 .gitignore 보강 제안 |
| 단계별 승인 | PRD, 설계, 구현 계획 — 사용자 승인 없이 진행하지 않음 |
| Mechanical Gate | 빌드/테스트 통과 후에만 QA 리뷰 진행 |
9개 스킬
| 스킬 |
핵심 역할 |
에이전트 |
모드 |
| setup |
GH 인증, 웹훅 설정 |
오케스트레이터 직접 |
— |
| context |
도메인 지식 등록/갱신 |
오케스트레이터 직접 |
스캔, 신규, 문서기반, 갱신, 동기화 |
| dev |
PRD → 설계 → 구현 → 리뷰 → PR |
9개 에이전트 팀 |
normal, hotfix, 단일단계, 재개 |
| lens |
코드에서 비즈니스 정책 추출 |
Explore + architect + security-auditor |
요약, 상세, 영향도분석 |
| research |
웹 검색/문서 분석 기반 리서치 |
오케스트레이터 직접 |
종합리포트, 비교표, 핵심요약 |
| humanizer |
AI 글쓰기 패턴 감지/교정 |
오케스트레이터 직접 |
audit, rewrite |
| test |
도메인별 단위/통합/E2E 테스트 자동 작성 |
coder |
--type, --coverage |
| commit |
브랜치 타입 파싱 + 한국어 커밋 |
오케스트레이터 직접 |
— |
| pull-request |
커밋 히스토리 분석 + PR 생성 |
오케스트레이터 직접 |
— |
setup — 초기 설정
플러그인 설치 후 최초 1회 실행합니다. 필수 도구(gh CLI)와 GitHub 인증을 확인하고, Slack 웹훅을 연동합니다.
/ttutak:setup
설정 항목
| 항목 | 설명 | 필수 |
| gh CLI | GitHub CLI 설치 및 인증 확인 | 필수 |
| GitHub 인증 | gh auth login 인증 상태 확인 | 필수 |
| Slack 웹훅 | PR 생성 시 팀 알림 전송 | 선택 |
context — 도메인 지식 관리
기획서, 요구사항 문서, 코드베이스를 분석하여 도메인 지식을 등록합니다.
5가지 모드 자동 판단
| 조건 | 모드 | 동작 |
context/ 없음 | 스캔 | 패키지 구조, 엔티티, API 분석 → 도메인 자동 생성 |
| 도메인명 지정 | 신규 | Q&A 5개 질문으로 도메인 생성 |
--from <파일> | 문서 기반 | PDF/이미지/텍스트 분석 → context 생성 |
| 기존 도메인 | 갱신 | 변경 제안 → 사용자 확인 후 반영 |
--sync | 동기화 | git log + PR 분석 → status.md 갱신 |
생성되는 문서 구조
context/{도메인}/
├── README.md ← 도메인 개요 (배경, 문제, 사용자, 성공기준, 담당자)
├── PROJECTS.md ← 관련 GHE 레포 매핑
├── glossary.md ← 도메인 용어 사전
├── architecture.md ← 전체 구조 요약 + 주제 문서 링크
├── status.md ← 구현 추적 (AC별 ✅/⬜)
└── {주제}/README.md ← 주제별 상세 정책/설계
답변 품질 게이트
context는 모호한 답변을 허용하지 않습니다. "많다", "자주" 대신 정량 수치를 요구하고, "효율화", "개선" 같은 추상어가 나오면 구체화를 요청합니다. 그래도 모르는 항목은 ❓로 남기고 진행합니다.
dev — 전체 개발 파이프라인
자연어 요청 하나로 PRD 작성부터 PR 생성까지 전체 사이클을 수행합니다. 자연어를 분석하여 모드를 자동 결정합니다.
자연어 의도 파싱
| 감지 패턴 | 모드 | 예시 |
상태, 진행, 어디까지 | STATUS | "지금 어디까지 됐어?" |
이어서, 계속, 재개 | RESUME | "아까 하던 작업 이어서 해줘" |
긴급, 핫픽스, 급한 | HOTFIX | "로그인 버그 긴급 수정해줘" |
설계만, PRD만, 구현만 | 단일 Phase | "설계만 해줘" |
| 위 어디에도 해당 안 됨 | NORMAL | "로그인 기능 추가해줘" |
7단계 파이프라인
정상 경로 (Normal)
긴급 경로 (Hotfix)
각 Phase 상세
Phase 1: Setup
- 진행 중 작업 감지 (.dev/state.md) — 이전 작업 있으면 재개 여부 확인
- Git 저장소 확인
- 베이스 브랜치 결정 + 동기화 (git pull)
- 프로젝트 정보 수집 (5개 작업 병렬)
- 프로젝트 타입 감지 (build.gradle.kts → java-spring 등)
- 디렉토리 구조 수집
- CLAUDE.md 컨벤션 확보
- 도메인 컨텍스트 매칭 (context/*/PROJECTS.md)
- 외부 규격 참조 탐색 (references/ → REFERENCES 변수)
- 관련 코드 맵 생성 — 키워드 추출 → Grep → 핵심 파일 15개 이내
- 작업 브랜치 생성 + .gitignore 보강 + 상태 초기화
Phase 2: Requirements — PRD Q&A
- product-owner 에이전트 호출 (PRD 작성)
- PRD 전문 표시 + 3관점 품질 자가 검증
- 유저 경험 검증: 사용자가 자연스럽게 이해하고 행동할 수 있는가
- 해석 여지 제거: "크게", "적절히" 대신 구체적 수치가 있는가
- 엣지케이스 커버리지: 빈 상태, 로딩, 에러, 최솟값/최댓값
- 질문 → AskUserQuestion 변환 → 답변 반영 — 최대 1회
- 사용자 승인 (승인 / 수정 요청) → .dev/prd.md 저장
Phase 3: Design — 설계 Q&A
- architect 에이전트 호출 (기술 설계)
- 설계 초안 전문 표시
- 설계 비판 검토 (중형/대형만)
- design-critic이 암묵적 가정 도전, 과잉 설계 식별
- MUST-ADDRESS → architect 설계 수정
- CONSIDER → 참고 사항으로 기록
- 사용자 승인 (최대 2회 반복) → .dev/design.md 저장
Phase 4: Implement — 구현 + 자기점검
- 구현 계획 제시 (변경 파일, 유형, 배치 테이블) → 사용자 승인
- 의존성 분석 → 배치 구성
- 파일 배타적 잠금: 같은 파일을 수정하는 단계는 같은 배치에 넣지 않음
- import/참조 의존: 신규 타입을 참조하면 순차 배치
- 위상 정렬로 B1 → B2 → B3 배치 배정
- 배치별 coder 디스패치 (병렬 실행)
- 단일 배치+단일 단계: 기존 전체 모드 coder 호출
- 배치 내 2개 이상: 동시 coder Task 발행 (각 coder는 담당 파일만 수정)
- 배치 간 통합 빌드 검증 → 실패 시 원인 coder 특정 후 수정 재호출
- 자기점검 (qa-manager)
- Critical → coder 자동 수정 (1회)
- Warning/Info → phase-review로 이월
- QUESTION → phase-review로 이월
Phase 5: Review — QA + 보안 감사
- Mechanical Gate
- 빌드 실패 → coder 자동 수정 → 1회 재시도
- 테스트 실패 → coder 자동 수정 → 1회 재시도
- qa-manager + security-auditor 병렬 호출
- QA: 코드 리뷰 + 스펙 충족 검증
- 종합 검증: PRD + 설계서 + diff 교차 검증
- 결과 합산 → Trust Ledger 생성 → Critical 자동 수정 — 최대 2회
Phase 6: Complete
- 인수 검증 (product-owner) — PRD 수용 기준 대비 검증
- /commit 스킬 실행 — 빌드 체크 + 한국어 커밋
- /pull-request 스킬 실행 — PR 본문 + Trust Ledger 요약
- 도메인 status.md 갱신 + context 환류 제안
정체 감지 + 에스컬레이션
구현/리뷰 단계에서 진전이 없으면 자동으로 전문 에이전트에게 에스컬레이션합니다.
| 감지 패턴 | 상황 | 1차 대응 | 2차 대응 |
| SPINNING | 동일 에러 2회 연속 | hacker에 제약 우회 분석 | researcher에 근본 원인 분석 |
| OSCILLATION | 접근법 A→B→A 왕복 | architect에 설계 재검토 | 사용자에게 두 접근법 제시 |
| NO_DRIFT | 코드 변경 없이 반복 | hacker에 우회 경로 요청 | researcher에 코드베이스 탐색 |
| DIMINISHING_RETURNS | 수정 줄고 결과 안 나옴 | simplifier에 범위 축소 | 사용자에게 방향 전환 확인 |
상태 저장과 재개
.dev/state.md에 현재 진행 상태를 기록합니다. "이어서 해줘"라고 말하면 중단된 Phase의 중단된 Step부터 정확히 재개합니다. 배치 실행 중 중단되면 완료된 배치는 건너뛰고 다음 배치부터 재개합니다.
# .dev/state.md 예시
phase: implement
status: in_progress
branch: JIRA-123
base: main
current-step: "coder 구현 (B2)"
phases:
setup: completed
requirements: completed
design: completed
implement: in_progress
steps:
implement:
- 구현 계획 승인: completed
- 배치 구성: completed
- coder 구현 (B1, 2단계 병렬): completed
- 빌드 검증 (B1): completed
- coder 구현 (B2, 1단계): in_progress
9개 에이전트 팀
dev 스킬의 핵심은 역할이 분리된 에이전트 팀이 협업하는 구조입니다.
| 에이전트 | 관점 | 역할 | 모델 | 활동 Phase |
| product-owner | "뭘 만들지" | PRD 작성, 인수 검증 | Sonnet | requirements, complete |
| architect | "어떻게 만들지" | 기술 설계 | Opus | design |
| design-critic | "이 가정이 맞나" | 암묵적 가정 도전 | Opus | design (중형 이상) |
| coder | "만든다" | 코드 구현 + 수정 | Opus | implement, review |
| qa-manager | "스펙대로 됐나" | 코드 리뷰, 스펙 검증 | Sonnet | implement, review |
| security-auditor | "뭘 놓쳤나" | 정책/보안 교차 검증 | Sonnet | review |
| researcher | "이해한다" | 코드베이스 조사 | Sonnet | (독립 호출) |
| hacker | "다른 길이 있다" | 제약 우회, 정체 탈출 | Sonnet | (정체 감지 시) |
| simplifier | "더 작게 만들자" | 복잡도 제거 | Sonnet | (정체 감지 시) |
모델 라우팅 원칙
모든 에이전트가 같은 모델을 쓰지 않습니다. 작업 특성에 따라 모델을 배정합니다.
Opus 비용 높음, 추론 깊음
비판적 분석 (가정 도전, 설계 비판), 구조적 설계 (기술 설계, 아키텍처), 코드 구현 (복잡한 코드 생성)
Sonnet 비용 효율
산출물 생성 (PRD, 리뷰), 정체 탈출 (빠른 판단), 단순 검증 (코드 리뷰, 스펙 체크)
컨텍스트 슬라이싱
에이전트에게 모든 정보를 전달하면 토큰 낭비입니다. 역할별로 필요한 섹션만 슬라이싱합니다.
| 에이전트 | 받는 정보 | 받지 않는 정보 |
| product-owner (PRD) | ARGS + 코드 맵 + 프로젝트 구조 | 설계서, diff |
| architect (설계) | PRD 전체 + 코드 맵 + 컨벤션 | diff |
| coder (구현) | 설계서 전체 + 코드 맵 | PRD (설계서에 반영됨) |
| coder (배치 모드) | 담당 단계 설계만 + 담당 파일 목록 + 코드 맵 | 설계서 전체, PRD |
| qa-manager (자기점검) | PRD 요구사항+수용기준만 | 설계서, 배경 |
| security-auditor | PRD + 설계서 + diff + 코드 맵 | (전체 접근) |
references/ — 외부 규격 참조
프로젝트가 준수해야 할 외부 규격/표준(시큐어코딩 가이드, API 설계 표준, eGovFrame 규칙 등)을 references/ 디렉토리에 넣어두면 dev 파이프라인이 자동으로 참조합니다.
사용법
# 프로젝트 루트에 references/ 디렉토리 생성 후 규격 문서 배치
references/
├── 시큐어코딩-가이드.md
├── API-설계-표준.md
└── eGovFrame/
└── 규칙.md
파이프라인 연동
| Phase | 에이전트 | 동작 |
| Setup | 오케스트레이터 | references/ 탐색 → 파일 목록 + 한줄 설명으로 REFERENCES 변수 생성 |
| Design | architect | 관련 규격을 Read하여 설계서에 "준수 규격" 섹션 추가 |
| Implement | coder | 규격을 준수하며 구현 (전체/배치/hotfix 모드) |
| Review | qa-manager | 규격 위반을 CERTAIN으로 보고 → 자동 수정 대상 |
| Review | security-auditor | 보안 관련 규격 항목을 감사에 포함 |
핵심 설계
경량 참조
프롬프트에는 파일 목록 + 한줄 설명만 포함합니다. 에이전트가 필요 시 Read로 원문을 직접 읽습니다.
없으면 투명
references/ 디렉토리가 없으면 REFERENCES 변수는 빈 상태. 에이전트 프롬프트에 포함되지 않아 토큰 소모가 없습니다.
사용자 관리
스킬이 references/를 생성하지 않습니다. 사용자가 직접 규격 문서를 관리합니다.
권장 작성 팁
기존 문서를 그대로 넣어도 동작합니다. 아래 팁을 따르면 에이전트가 더 효과적으로 참조합니다.
| 팁 | 효과 | 예시 |
| 문서 상단에 요약/목차 | 에이전트가 전체를 읽지 않고 필요한 부분만 탐색 | # 시큐어코딩 가이드 아래 목차 나열 |
| 항목별 번호/ID | 설계서에서 "§3.2 입력값 검증 반영" 식으로 정확히 참조 | §3.2 입력값 검증, R-001 |
| 체크리스트 형태 | QA가 항목별로 준수 여부를 검증 | - [ ] SQL 파라미터 바인딩 필수 |
lens — 비즈니스 정책 탐지
코드에서 비즈니스 정책을 찾아 PO/PD가 읽을 수 있는 보고서로 출력합니다. 읽기 전용 — 코드를 수정하지 않습니다.
페르소나: 기술 번역자
코드를 읽되, 출력은 비즈니스 언어로 번역합니다.
PurchaseLimitPolicy → "구매 한도 정책 (PurchaseLimitPolicy)"
코드 변경을 제안하지 않습니다. 확인이 필요한 사항만 안내합니다.
5단계 Phase
- Prepare — 쿼리 키워드 추출 → 프로젝트 확정
- Explore: Agent(Explore)로 코드에서 정책 구현 발견
- 1단계: 후보 수집 (Glob + Grep, Read 없이)
- 2단계: 입구 추적 (Controller/Handler Read)
- 3단계: 핵심 파일 정독 (Service/Policy/Rule Read)
- Report — "대상에게 무슨 일이 일어나는가" 관점으로 합성
- (선택) Impact — architect + security-auditor 병렬 분석
- (선택) Impact-Report — PO 친화적 영향도 보고서
research — 도메인 리서치
웹 검색과 문서 분석을 병행하여 출처가 명확한 조사 결과를 산출합니다. /context --from으로 결과를 context 문서에 반영할 수 있습니다.
3가지 결과물 형태
종합 리포트
요약 → 주요 발견 → 상세 분석 → 출처. 주제를 깊이 있게 조사할 때 사용합니다.
비교표
비교 기준 표 → 각 항목 요약 → 판단 근거. 기술/도구 선택지를 비교할 때 유용합니다.
핵심 요약
한 줄 결론 → 핵심 포인트 3-5개 → 출처. 빠르게 핵심만 파악할 때 사용합니다.
4단계 워크플로우
- 인터뷰 — 주제, 결과물 형태, 조사 깊이를 확인 (인자로 지정 시 스킵)
- 검색 실행 — 키워드 도출 → WebSearch → URL 선별 → WebFetch로 내용 수집
- 검증 + 보강 — 목표 충족, 완성도, 정확성, 균형 4기준 자기검증. 부족 시 1회 보강
- 결과물 생성 — 선택한 형태로
.research/에 저장
조사 깊이
| 모드 | 키워드 | URL | 특징 |
| 꼼꼼하게 | 5개 | 최대 10개 | 다수 소스 교차 검증 |
| 빠르게 핵심만 | 3개 | 최대 5개 | 핵심 소스만 빠르게 |
context 연동
/research 결제 시스템 트렌드
→ .research/결제-시스템-트렌드-20260316.md 생성
/context 결제 --from .research/결제-시스템-트렌드-20260316.md
→ context/결제/ 문서에 리서치 결과 반영
수칙
| 원칙 | 설명 |
| 출처 필수 | 모든 발견에 URL 또는 문서 출처를 명시한다 |
| 구체적 데이터 | "일반적으로", "대부분" 대신 구체적 수치를 찾는다 |
| 교차 검증 | 단일 출처의 주장은 다른 출처로 확인한다 (꼼꼼 모드) |
| 실패 투명성 | 찾지 못한 정보는 ❓로 남기고 명시한다 |
humanizer — AI 글쓰기 교정
AI가 생성한 텍스트에서 40+가지 패턴을 감지하고 교정합니다. Wikipedia의 "Signs of AI writing" 가이드와 한국어 AI 글쓰기 패턴 연구를 기반으로 합니다.
두 가지 모드
audit 모드
패턴을 감지하고 리포트만 출력합니다. 텍스트를 수정하지 않습니다. 어디가 문제인지 확인만 하고 싶을 때 사용합니다.
rewrite 모드
패턴을 감지하고 직접 교정합니다. AI 흔적을 제거한 최종본이 필요할 때 사용합니다.
심각도 분류
| 심각도 | 설명 | 처리 |
| P1 | 확실한 AI 흔적 — 사람이 거의 쓰지 않는 패턴 | 즉시 수정 |
| P2 | 의심스러운 패턴 — AI가 자주 쓰지만 사람도 가끔 사용 | 맥락 판단 |
| P3 | 스타일 개선 — 글 품질 향상 차원 | 선택적 수정 |
40+ 감지 패턴
한국어 P1 — 즉시 수정
| 코드 | 패턴 | 감지 키워드 |
| K1 | 도입부 상투어 | "오늘날", "알아보겠습니다", "이번 글에서는" |
| K2 | 과장 수식어 | "혁신적인", "체계적인", "다양한"(과용), "탁월한" |
| K3 | 회피 어미 | "~라고 할 수 있습니다", "~해도 과언이 아닙니다" |
| K4 | "이를 통해" 연쇄 | "이를 통해", "이를 바탕으로", "이를 활용하여" |
| K5 | 무의미한 중요성 | "중요성은 아무리 강조해도", "핵심적인 역할" |
| K10 | 결론부 상투어 | "결론적으로", "발전이 기대됩니다" |
| K11 | 대화형 흔적 | "도움이 되셨길", "좋은 질문입니다!" |
한국어 P2 — 맥락 판단
| 코드 | 패턴 | 감지 키워드 |
| K6 | 범위 확장 과용 | "~뿐만 아니라 ~도" |
| K7 | 자문자답 | "그렇다면 왜 ~일까요?" |
| K8 | 셋 법칙 | "첫째... 둘째... 셋째..." (억지 3개 묶음) |
| K9 | 격식체 과용 | "~에 있어서" |
| K12 | 의미 없는 접속부사 | "또한"(과용), "더불어", "나아가" |
| K13 | 장단점 대칭 | "장점으로는... 단점으로는..." |
| K14 | 이중 피동 | "~되어지다" |
영어 P1 — 즉시 수정
| 코드 | 패턴 | 감지 키워드 |
| E1 | 중요성 과장 | testament, pivotal, evolving landscape |
| E4 | 홍보성 언어 | groundbreaking, robust, seamless, leverage |
| E7 | AI 빈출 어휘 | Additionally, delve, tapestry, interplay |
| E13 | 대화형 잔류물 | "Great question!", "Let's dive in" |
| E18 | 불필요한 요약 | "In summary", "As we've seen" |
공통 패턴
| 코드 | 패턴 |
| C1 | 동의어 순환 — 같은 대상을 계속 다른 단어로 바꿔 부름 |
| C2 | 지식 한계 면책 — "정확한 정보는 확인이 필요합니다" |
| C3 | 긍정적 결론 — "밝은 미래가 기대됩니다" |
| C4 | 요청하지 않은 이모지 장식 |
| C5 | 균일한 문단 길이 — 모든 문단 3-4문장 |
| C6 | 강제 3단 구조 — 짧은 글에도 도입-본론-결론 |
콘텐츠 유형별 적용
| 유형 | 적용 기준 | 숨결 주입 |
| 블로그/에세이 | 모든 패턴 적용 | O — 의견, 1인칭, 개성 |
| 기술 문서 | 수식어/filler 제거 | X — 정확하고 건조하게 |
| 마케팅/카피 | 과장 줄이되 설득력 유지 | 제한적 |
| 학술/리포트 | 정확성과 출처 중심 | X — 객관적 톤 |
교정 예시
ttutak 소스코드를 기반으로 "시스템 구성 설명서"를 AI가 작성했을 때의 교정 전/후 비교입니다.
Before — AI 초안
ttutak은 혁신적인 AI 기반 개발 자동화 플러그인으로, 다양한 개발 단계를 체계적으로 자동화하는 효과적인 솔루션입니다. 이를 통해 PRD 작성부터 PR 생성까지 전체 개발 사이클을 효율적으로 수행할 수 있습니다. 뿐만 아니라 9개의 전문화된 AI 에이전트가 유기적으로 협업하여 탁월한 코드 품질을 보장합니다. 이를 바탕으로 개발 생산성을 획기적으로 향상시킬 수 있으며, 이는 현대 소프트웨어 개발에 있어서 혁신적인 변화를 가져올 것입니다.
감지 결과: P1 18건 P2 9건 P3 5건 — 총 32건
감지 리포트 (주요 항목)
| # | 심각도 | 패턴 | 원문 | 제안 |
| 1 | P1 | K2 과장 수식어 | "혁신적인" x2, "체계적으로", "효과적인", "탁월한", "획기적으로" | 전부 삭제 또는 수치로 대체 |
| 2 | P1 | K4 연쇄 | "이를 통해", "이를 바탕으로" 연속 | 주어를 바꿔 연결 |
| 3 | P1 | K6+C3 | "뿐만 아니라" + "변화를 가져올 것입니다" | 범위 확장 삭제 + 실측 데이터로 교체 |
| 4 | P1 | K9 격식체 | "현대 소프트웨어 개발에 있어서" | 삭제 |
| 5 | P2 | E12 볼드 과용 | 12개 단어에 볼드 처리 | 강조할 것만 남기기 |
After — humanizer 교정
ttutak은 Claude Code 플러그인입니다. /dev 로그인 기능 추가해줘 한 줄이면 PRD 작성 → 기술 설계 → 코드 구현 → QA 검증 → 커밋 → PR 생성을 알아서 수행합니다. 내부에서 PO, 설계자, 개발자, QA, 보안 감사자 5개 역할의 에이전트가 단계별로 넘기며 작업합니다. Spring Boot + Vue/Nuxt 풀스택 프로젝트 기준으로 만들었고, 빌드 명령만 맞으면 다른 스택에서도 사용할 수 있습니다.
핵심 차이
| 구분 | Before | After |
| 수식어 | "혁신적인", "탁월한", "획기적으로" 등 12회 | 0회 — 전부 삭제 |
| 인과 연결 | "이를 통해", "이를 바탕으로" 연쇄 | "한 줄이면", "알아서 돌린다" — 구어체 직결 |
| 결론 | "혁신적인 변화를 가져올 것입니다" | 삭제. 기능 나열로 충분 |
| 톤 | 격식체 + 과장 ("있어서", "뿐만 아니라") | 건조한 설명문 ("만들었고", "쓸 수 있다") |
| 정보 밀도 | 수식어가 내용보다 많음 | 2문장에 기능·구조·대상 스택 모두 포함 |
test — 테스트 자동 작성
도메인별로 단위/통합/E2E 테스트를 자동 작성합니다. 기존 테스트의 구조와 코딩 스타일을 분석하여 동일한 패턴으로 생성하며, 커버리지 목표를 검증합니다.
사용 예시
"테스트 작성해줘" ← 변경 코드 기반 자동 감지
"appointment 도메인 테스트 추가해줘" ← 특정 도메인 지정
"단위 테스트만 작성해줘 --type unit" ← 유형 선택
"커버리지 90% 목표로 테스트해줘 --coverage 90" ← 커버리지 목표
테스트 유형별 생성 위치 (예시)
| 유형 | 위치 패턴 (테스트 루트 하위 상대 경로) | 검증 대상 |
| 단위 | domain/{도메인}/{Entity}Test | 엔티티, VO, 도메인 서비스 |
| 통합 | domain/{도메인}/{Service}IntegrationTest | 서비스 계층, 리포지토리, 캐시 |
| E2E | interfaces.api/{도메인}/{Controller}E2ETest | API 엔드포인트, 인증/인가 |
실행 흐름
- 환경 감지 — 프로젝트 타입, 테스트 프레임워크, 기존 테스트 구조/스타일 분석
- 대상 도메인 결정 — dev 컨텍스트(PRD/AC) 또는 변경 파일 기반 자동 감지
- 테스트 계획 수립 — 기존 커버리지 분석 → 누락 테스트 도출 → 사용자 승인
- 테스트 작성 — 단위 → 통합 → E2E 순서로 coder 에이전트가 작성
- 실행 및 검증 — 테스트 실행 + 실패 시 자동 수정(1회) + 커버리지 확인
dev 파이프라인에서는 커밋 전에 자동 호출됩니다. hotfix 모드에서는 건너뜁니다.
commit / pull-request
commit — 커밋 자동화
- 사전 확인 — Git 저장소 + 변경사항 + 빌드 실행
- 타입 파싱 — 브랜치명에서 추출 (feat/login → feat)
- 커밋 메시지 생성 — {type}: 한국어 요약 (50자 이내) + 본문
- 커밋 실행
- 빌드 아티팩트 tracking 해제 (build/, node_modules/)
- 민감 파일 감지 (.env, *.key, *.pem, credentials*, *secret*) → 경고
- 20개 초과 변경 → 전체 스테이징 확인
- HEREDOC 포맷으로 커밋
- context 동기화 체크
pull-request — PR 자동화
- 사전 확인 — gh CLI + 인증 + origin remote + 베이스 브랜치
- 타입 매핑 — feat→FEATURE, fix→BUGFIX, docs→DOCS ...
- PR 제목 — [{TYPE}] 서술형 한국어 문장 (50자 이내)
- PR 본문 (문장형 서술)
- Background: 왜 이 변경이 필요한가
- Summary: 무엇을 했는가
- Changes: 기능 단위로 무엇이 바뀌었는가
- Checklist: 변경 내용에 따라 동적 생성
- PR 생성 + Slack 알림