Communitygithub.com

아키텍처 의사결정 기록

Claude Code 세션 중 내려진 아키텍처 결정을 구조화된 ADR로 캡처합니다. 결정 시점을 자동 감지하고, 맥락, 고려된 대안, 근거를 기록합니다. ADR 로그를 유지하여 미래 개발자가 코드베이스가 현재와 같은 형태를 갖게 된 이유를 이해할 수 있도록 합니다.

아키텍처 의사결정 기록란 무엇인가요?

이 스킬은 코딩 세션 중에 내려지는 아키텍처 결정을 체계적으로 문서화하여, 결정 사항이 Slack 스레드나 PR 댓글 또는 누군가의 기억 속에만 머무르지 않고 코드와 함께 보관되도록 합니다. 사용자가 명시적으로 요청하거나, 중요한 기술 대안(프레임워크, 라이브러리, 데이터베이스 등)을 비교하여 결정을 내리는 순간을 감지하여 ADR(Architecture Decision Record) 작성을 제안합니다. ADR은 Michael Nygard가 제안하고 AI 지원 개발에 맞게 조정된 경량 형식을 따르며, 맥락, 결정, 고려된 대안, 결과를 포함합니다. 이 스킬은 사용자의 명시적 승인 후에만 파일을 생성하고 수정하므로 안전하게 사용할 수 있으며, 기존 ADR을 조회하여 과거 결정에 대한 질문에 답변할 수도 있습니다. VSCode 및 Cursor 환경과 통합되어 있으며 주요 AI 에이전트 플랫폼에서 사용할 수 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/tree/main/skills/architecture-decision-records

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

아키텍처 의사결정 기록은(는) 무엇을 하나요?

코딩 세션 중 발생하는 아키텍처 결정을 캡처합니다. 결정 사항이 Slack 스레드, PR 댓글 또는 누군가의 기억에만 머무르는 대신, 이 스킬은 코드와 함께 보관되는 구조화된 ADR 문서를 생성합니다.

활성화 시점

  • 사용자가 명시적으로 "이 결정을 기록하자" 또는 "ADR로 남기자"고 말하는 경우
  • 사용자가 중요한 대안(프레임워크, 라이브러리, 패턴, 데이터베이스, API 설계) 중에서 선택하는 경우
  • 사용자가 "우리는 ...를 결정했습니다" 또는 "X 대신 Y를 하는 이유는 ...입니다"라고 말하는 경우
  • 사용자가 "왜 X를 선택했나요?"라고 물으며 기존 ADR을 읽는 경우
  • 아키텍처 절충점이 논의되는 계획 단계에서

ADR 형식

AI 지원 개발에 맞게 조정된 Michael Nygard 제안의 경량 ADR 형식을 사용합니다:

# ADR-NNNN: [결정 제목]

**날짜**: YYYY-MM-DD
**상태**: 제안됨 | 승인됨 | 폐기됨 | ADR-NNNN으로 대체됨
**결정자**: [참여한 사람]

## 맥락

이 결정이나 변경을 초래한 문제는 무엇입니까?

[상황, 제약 조건 및 관련 요인을 설명하는 2-5문장]

## 결정

제안하거나 실제로 수행하는 변경은 무엇입니까?

[결정을 명확히 설명하는 1-3문장]

## 고려된 대안

### 대안 1: [이름]
- **장점**: [혜택]
- **단점**: [결점]
- **선택되지 않은 이유**: [이 대안이 기각된 구체적인 이유]

### 대안 2: [이름]
- **장점**: [혜택]
- **단점**: [결점]
- **선택되지 않은 이유**: [이 대안이 기각된 구체적인 이유]

## 결과

이 변경으로 인해 무엇이 더 쉬워지거나 어려워집니까?

### 긍정적
- [혜택 1]
- [혜택 2]

### 부정적
- [절충점 1]
- [절충점 2]

### 위험
- [위험 및 완화 방안]

워크플로우

새 ADR 캡처

결정 시점이 감지되면:

  1. 초기화 (처음 한 번만) — docs/adr/ 디렉토리가 없으면, 사용자에게 확인을 받은 후에만 디렉토리, 아래 ADR 인덱스 형식의 인덱스 테이블 헤더가 포함된 README.md, 그리고 수동 사용을 위한 빈 template.md를 생성합니다. 명시적 동의 없이 파일을 생성하지 마십시오.
  2. 결정 식별 — 핵심 아키텍처 선택 사항을 추출합니다.
  3. 맥락 수집 — 어떤 문제가 이를 촉발했습니까? 어떤 제약 조건이 있습니까?
  4. 대안 문서화 — 어떤 다른 옵션이 고려되었습니까? 왜 기각되었습니까?
  5. 결과 명시 — 절충점은 무엇입니까? 무엇이 더 쉬워지거나 어려워집니까?
  6. 번호 할당 — docs/adr/에 있는 기존 ADR을 스캔하고 번호를 증가시킵니다.
  7. 확인 및 작성 — ADR 초안을 사용자에게 검토용으로 제시합니다. 명시적 승인 후에만 docs/adr/NNNN-decision-title.md에 씁니다. 사용자가 거부하면 파일을 쓰지 않고 초안을 폐기합니다.
  8. 인덱스 업데이트 — docs/adr/README.md에 추가합니다.

기존 ADR 읽기

사용자가 "왜 X를 선택했나요?"라고 물으면:

  1. docs/adr/가 존재하는지 확인 — 없으면 "이 프로젝트에서 ADR을 찾을 수 없습니다. 아키텍처 결정을 기록하기 시작하시겠습니까?"라고 응답합니다.
  2. 존재하는 경우, docs/adr/README.md 인덱스를 스캔하여 관련 항목을 찾습니다.
  3. 일치하는 ADR 파일을 읽고 맥락 및 결정 섹션을 제시합니다.
  4. 일치하는 항목이 없으면 "해당 결정에 대한 ADR을 찾을 수 없습니다. 지금 기록하시겠습니까?"라고 응답합니다.

ADR 디렉토리 구조

docs/
└── adr/
    ├── README.md              ← 모든 ADR의 인덱스
    ├── 0001-use-nextjs.md
    ├── 0002-postgres-over-mongo.md
    ├── 0003-rest-over-graphql.md
    └── template.md            ← 수동 사용을 위한 빈 템플릿

ADR 인덱스 형식

# 아키텍처 의사결정 기록

| ADR | 제목 | 상태 | 날짜 |
|-----|------|------|------|
| [0001](0001-use-nextjs.md) | 프론트엔드 프레임워크로 Next.js 사용 | 승인됨 | 2026-01-15 |
| [0002](0002-postgres-over-mongo.md) | 기본 데이터 저장소로 MongoDB 대신 PostgreSQL | 승인됨 | 2026-01-20 |
| [0003](0003-rest-over-graphql.md) | GraphQL 대신 REST API | 승인됨 | 2026-02-01 |

결정 감지 신호

대화에서 아키텍처 결정을 나타내는 다음 패턴을 주시하십시오:

명시적 신호

  • "X로 가자"
  • "Y 대신 X를 사용해야 해"
  • "절충점을 감수할 가치가 있어서 ..."
  • "이것을 ADR로 기록해"

암시적 신호 (ADR 기록을 제안하되 사용자 확인 없이 자동 생성하지 마십시오)

  • 두 프레임워크 또는 라이브러리를 비교하고 결론에 도달하는 경우
  • 명시된 근거와 함께 데이터베이스 스키마 설계 선택을 하는 경우
  • 아키텍처 패턴(모놀리스 vs 마이크로서비스, REST vs GraphQL) 중에서 선택하는 경우
  • 인증/권한 부여 전략을 결정하는 경우
  • 대안을 평가한 후 배포 인프라를 선택하는 경우

좋은 ADR의 조건

해야 할 일

  • 구체적으로 작성 — "ORM을 사용"이 아니라 "Prisma ORM 사용"
  • 이유를 기록 — 근거가 무엇보다 중요합니다
  • 기각된 대안 포함 — 미래 개발자는 무엇이 고려되었는지 알아야 합니다
  • 결과를 솔직하게 명시 — 모든 결정에는 절충점이 있습니다
  • 간결하게 유지 — ADR은 2분 안에 읽을 수 있어야 합니다
  • 현재 시제 사용 — "X를 사용할 것입니다"가 아닌 "X를 사용합니다"

하지 말아야 할 일

  • 사소한 결정 기록 — 변수 이름 지정이나 서식 선택은 ADR이 필요하지 않습니다
  • 에세이 작성 — 맥락 섹션이 10줄을 초과하면 너무 깁니다
  • 대안 생략 — "그냥 선택했습니다"는 타당한 근거가 아닙니다
  • 표시 없이 소급 기록 — 과거 결정을 기록하는 경우 원래 날짜를 명시하십시오
  • ADR이 쓸모없어지도록 방치 — 대체된 결정은 대체 ADR을 참조해야 합니다

ADR 생애주기

제안됨 → 승인됨 → [폐기됨 | ADR-NNNN으로 대체됨]
  • 제안됨: 결정이 논의 중이며 아직 확정되지 않음
  • 승인됨: 결정이 효력을 발휘하며 따르고 있음
  • 폐기됨: 결정이 더 이상 관련이 없음 (예: 기능 제거)
  • 대체됨: 새 ADR이 이 ADR을 대체함 (항상 대체 ADR 링크 포함)

기록할 가치가 있는 결정 범주

범주예시
기술 선택프레임워크, 언어, 데이터베이스, 클라우드 제공자
아키텍처 패턴모놀리스 vs 마이크로서비스, 이벤트 기반, CQRS
API 설계REST vs GraphQL, 버전 관리 전략, 인증 메커니즘
데이터 모델링스키마 설계, 정규화 결정, 캐싱 전략
인프라배포 모델, CI/CD 파이프라인, 모니터링 스택
보안인증 전략, 암호화 방식, 비밀 관리
테스트테스트 프레임워크, 커버리지 목표, E2E vs 통합 테스트 균형
프로세스브랜칭 전략, 리뷰 프로세스, 릴리스 주기

다른 스킬과의 통합

  • Planner 에이전트: 플래너가 아키텍처 변경을 제안할 때 ADR 생성을 제안합니다.
  • Code reviewer 에이전트: 해당 ADR 없이 아키텍처 변경을 도입하는 PR에 플래그를 지정합니다.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

affaan-m/ECC

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

affaan-m/fal-ai-media

Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.

affaan-m/manim-video

日本語翻訳:このファイルは manim-video 用の日本語翻訳が必要です

affaan-m/remotion-video-creation

Remotion のベストプラクティス - React で動画を作成する。3D、アニメーション、音声、字幕、チャート、トランジションなどをカバーするドメイン固有の29のルール。

affaan-m/video-editing

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

agent-self-evaluation

Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.

agent-sort

Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.

ai-first-engineering

Engineering operating model for teams where AI agents generate a large share of implementation output. Use when setting team process, review gates, or ownership rules for a codebase largely written by agents.

ai-regression-testing

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

android-clean-architecture

Clean Architecture patterns for Android and Kotlin Multiplatform projects — module structure, dependency rules, UseCases, Repositories, and data layer patterns. Use when structuring modules, layers, or data flow in an Android or KMP project.

angular-developer

Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.

관련 스킬