AIDE (Agent-Informed Development Engineering) -- 에이전트 시대의 소프트웨어 개발론 v1.0¶
작성: CTO (20년+ 아키텍처 경험, 3년 AI 에이전트 실전 경험) 기반: GPT/Claude/Gemini 3종 딥리서치 + Team Alpha(통합파) 보고서 2종 + Team Beta(급진파) 보고서 1종 날짜: 2026-02-18
Part 4: AIDE 실전 가이드¶
파일/코드 크기 지침¶
| 구분 | 권장 | 상한 | 토큰 추정 | 비고 |
|---|---|---|---|---|
| Feature 로직 (logic.ts) | 150-200줄 | 300줄 | ~5,400 | 핵심 비즈니스 로직 |
| 핸들러 (handler.ts) | 100-150줄 | 200줄 | ~3,600 | 각 핸들러 함수 30줄 이내 |
| 타입 정의 (types.ts) | 50-100줄 | 150줄 | ~2,700 | 타입은 밀도가 높으므로 짧아도 충분 |
| 테스트 (*.test.ts) | 200-300줄 | 500줄 | ~9,000 | 반복 구조이므로 약간 길어도 허용 |
| 메타 파일 (CLAUDE.md) | 100-200줄 | 300줄 | ~5,400 | 지시 이행률 유지를 위한 상한 |
| 도메인 컨텍스트 (AGENTS.md, Tier 2) | 50-100줄 | 200줄 | ~3,600 | 핵심 비즈니스 규칙만 압축 |
| 함수 크기 | 20-30줄 | 50줄 | ~900 | 단일 추론 턴 내 완전 이해 |
"18토큰/줄" 경험법칙: 평균적으로 코드 1줄 = 약 18토큰 (Cursor IDE 연구 기반)
네이밍 컨벤션 가이드¶
Gemini 보고서의 의미론적 장황함(Semantic Verbosity) 원칙을 적용하되, 실용적 균형을 유지한다.
핵심 규칙: 언어 고유 컨벤션 우선 (Language-Native Convention First)¶
AIDE는 범용적인 케이스 스타일을 강제하지 않는다. 대상 언어의 확립된 네이밍 컨벤션을 항상 따른다 (예: Python은 PEP 8, TypeScript는 ESLint camelcase, Kotlin은 Kotlin Coding Conventions). 언어 생태계에 반하는 스타일은 린터, 프레임워크, 라이브러리와 마찰을 일으키며 — 관용적 코드로 학습된 AI 에이전트와 인간 개발자 모두를 혼란시킨다.
AIDE가 규정하는 것은 케이스 스타일이 아닌 이름의 의미론적 내용이다:
| 규칙 | 설명 | 예시 (TS) | 예시 (Python) | 반례 |
|---|---|---|---|---|
| 함수는 동사+목적어 | 이름이 동작과 대상을 기술 | calculateOrderTotalInKrw() |
calculate_order_total_in_krw() |
calc(d) |
| 변수는 의미 포함 | 이름이 목적을 전달 | activeUserIdList |
active_user_id_list |
ids |
| 부작용 명시 | 접두사로 부작용을 표시 | persistUserToDatabase() |
persist_user_to_database() |
save() |
| 타입은 명사 | 타입명은 서술적 명사 | OrderItem |
OrderItem |
OI |
| 상수에 출처 포함 | 상수명에 원천을 포함 | MAX_LOGIN_ATTEMPTS_PER_POLICY |
MAX_LOGIN_ATTEMPTS_PER_POLICY |
MAX |
| 파일명 | 언어 컨벤션에 따름 | user-auth.ts |
user_auth.py |
ua.ts |
핵심 원칙: 변수명과 함수명은 에이전트에게 추론의 입력이다. 이름이 구체적일수록 에이전트가 잘못 사용할 확률이 기하급수적으로 낮아진다. 이 원칙은 어떤 케이스 스타일에서든 동일하게 적용된다. 단, calculatedTotalPriceWithDiscountAppliedInKrw 수준의 극단적 장황함은 라인 길이 제한과 충돌하므로 실용적 범위를 유지한다.
CLAUDE.md 작성 가이드 (템플릿)¶
# Project: [프로젝트명]
## Identity
- Type: [프로젝트 타입, e.g. Next.js 14 Monorepo]
- Language: TypeScript (Strict Mode)
- Paradigm: Functional core, classes only for infrastructure
- State: [상태 관리 도구, e.g. Zustand]
## Absolute Rules (MUST FOLLOW)
- 비즈니스 로직에 class를 사용하지 말 것
- 모든 함수 매개변수와 반환값에 타입을 명시할 것
- any 타입을 사용하지 말 것
- features/ 외부에서 features/ 내부를 직접 import하지 말 것
- 새로운 npm 패키지 추가 전 반드시 확인을 받을 것
- [프로젝트 특화 규칙 추가]
## Architecture Map
features/: 기능별 독립 모듈 (types + logic + handler + store + test)
shared/: 전역 타입, 인프라 클라이언트, 공통 에러 (최소 유지)
evals/: 평가 데이터셋 및 시나리오
.agents/: 스킬 패키지
## Code Style
- 네이밍: 언어 고유 컨벤션 우선 (예: TS는 camelCase, Python은 snake_case)
- 네이밍 내용: 함수는 동사_목적어, 변수는 의미 포함, 부작용 접두사 명시
- 타입명: PascalCase
- 파일: kebab-case (또는 언어 컨벤션, 예: Python은 snake_case.py)
- 최대 파일 길이: 300줄 (경고), 500줄 (금지)
- 함수: 50줄 이내
## Workflow
1. types.ts 먼저 정의/수정
2. logic.ts에 순수 함수 구현
3. *.test.ts에 테스트 작성
4. handler.ts에서 부작용 통합
5. 린트 + 테스트 + 타입 체크 통과 확인
## Domain Glossary
- [도메인 용어1]: [정의]
- [도메인 용어2]: [정의]
## Examples
- Good pattern: src/features/user-auth/logic.ts
- Anti-pattern: (해당 없으면 생략)
AIDE-REFERENCE.md 프로젝트 통합 가이드¶
AIDE-REFERENCE.md는 10대 핵심 원칙, Feature 아키텍처, 코드 스타일, 워크플로우를 하나의 파일(~240줄)로 요약한 독립형 빠른 참조 문서다. AI 에이전트가 AIDE를 일관되게 따르도록 하는 데 활용한다.
Option A: 별도 참조 파일 (권장)¶
AIDE-REFERENCE.md를 프로젝트 루트에 복사하고 CLAUDE.md에서 참조한다:
# CLAUDE.md
## Methodology
이 프로젝트는 AIDE 방법론을 따릅니다. 전체 참조는 AIDE-REFERENCE.md를 참고하세요.
## Project-Specific Rules
- [프로젝트 고유 규칙 추가]
작동 원리: AI 에이전트(Claude, Cursor 등)는 CLAUDE.md에서 참조된 파일을 자동으로 로드한다. AIDE 규칙을 별도 파일로 분리하면 CLAUDE.md의 라인 예산을 프로젝트 고유 컨텍스트에 사용할 수 있다. AIDE-REFERENCE.md(~240줄)는 단독으로도 Tier 1 제한(300줄) 내에 들어간다.
Option B: CLAUDE.md에 직접 포함¶
소규모 프로젝트에서는 관련 섹션을 CLAUDE.md에 직접 복사한다:
# CLAUDE.md
## Methodology: AIDE
### Core Principles
[AIDE-REFERENCE.md에서 필요한 원칙 붙여넣기]
### Code Style
[AIDE-REFERENCE.md에서 코드 스타일 섹션 붙여넣기]
## Project-Specific Rules
- [프로젝트 규칙 추가]
트레이드오프: 설정이 간단하지만 CLAUDE.md 라인 예산을 소비한다. AIDE 원칙 중 일부만 필요할 때 적합하다.
Option C: Feature 수준 AGENTS.md 활용¶
대규모 프로젝트에서는 루트 레벨에서 AIDE를 참조하고, 각 Feature의 AGENTS.md에 도메인별 컨텍스트를 추가한다:
project-root/
CLAUDE.md → "AIDE를 따릅니다. AIDE-REFERENCE.md 참조."
AIDE-REFERENCE.md → AIDE 전체 빠른 참조
src/features/
user-auth/
AGENTS.md → 이 Feature의 도메인별 규칙
payment/
AGENTS.md → 이 Feature의 도메인별 규칙
이는 AIDE의 점진적 공개(P6) 원칙을 활용한다: Tier 1(루트 CLAUDE.md + AIDE-REFERENCE.md)은 항상 로드되고, Tier 2(Feature AGENTS.md)는 에이전트가 해당 디렉토리에서 작업할 때만 로드된다.
Context Budget 고려사항¶
| 구성 | CLAUDE.md | AIDE-REFERENCE.md | 총 Tier 1 |
|---|---|---|---|
| Option A | ~60줄 (프로젝트 규칙) | ~240줄 | ~300줄 |
| Option B | ~200-300줄 (통합) | 해당 없음 | ~200-300줄 |
| Option C | ~60줄 (프로젝트 규칙) | ~240줄 | ~300줄 + Feature당 Tier 2 |
AGENTS.md 작성 가이드 (Feature Tier 2 템플릿)¶
# [Feature명] Domain Context
## Business Rules
- [규칙 1: 구체적이고 명확하게]
- [규칙 2: 에이전트가 추론할 필요 없이 이해할 수 있게]
- [규칙 3: 예외 케이스도 포함]
## Data Flow
[주요 플로우]: Request -> validate -> [순수 로직] -> [부작용] -> Response
## Known Edge Cases
- [엣지 케이스 1]: [처리 방법]
- [엣지 케이스 2]: [처리 방법]
## Dependencies
- 이 Feature가 의존하는 shared/ 모듈: [목록]
- 이 Feature를 참조하는 다른 Feature: [목록]
Skills 관리 가이드¶
.agents/skills/
{skill-name}/
SKILL.md # YAML frontmatter(이름, 설명, 태그) + 실행 가이드
scripts/ # 자동화 스크립트 (선택)
examples/ # 예제 입출력 (선택)
tests/ # 스킬 검증용 eval 시나리오
SKILL.md 예시:
---
name: add-api-endpoint
description: "새로운 REST API 엔드포인트를 features/ 디렉토리에 추가"
tags: [api, feature, crud]
version: "1.2.0"
---
## Steps
1. features/{feature-name}/ 디렉토리 확인 (없으면 생성)
2. types.ts에 Request/Response 타입 정의
3. logic.ts에 비즈니스 로직 순수 함수 구현
4. handler.ts에 HTTP 핸들러 추가
5. {feature-name}.test.ts에 테스트 추가
6. Tier 2 AGENTS.md에 비즈니스 규칙 문서화
7. 린트 + 테스트 + 타입 체크 실행
## Guardrails
- shared/ 수정 금지 (새 타입이 필요하면 feature 내부에 정의)
- 기존 핸들러의 시그니처 변경 금지
- 테스트 없는 코드 커밋 금지
스킬 로딩 프로토콜: 1. Discovery: SKILL.md의 YAML frontmatter만 읽음 (~50토큰) 2. Selection: 태스크와 관련된 스킬 선택 3. Loading: 선택된 스킬의 전체 내용을 컨텍스트에 주입 4. Execution: 스킬 가이드에 따라 작업 수행 5. Unloading: 작업 완료 후 컨텍스트에서 해제
테스트 전략 가이드¶
graph TB
subgraph TestPyramid["AIDE 테스트 피라미드"]
HR["Human Review<br/>아키텍처 · 보안 · 도메인 지식"]
ES["Eval Suites (EDD)<br/>시나리오/데이터셋 기반 행동 평가"]
IT["Integration Tests<br/>Feature 간 연동 · 데이터 흐름 검증"]
PBT["Property-Based Tests<br/>불변 속성 검증 (fast-check/Hypothesis)"]
UT["Unit Tests (TDD)<br/>결정적 코드: 파서 · 정책 · 비즈니스 로직"]
end
UT --> PBT --> IT --> ES --> HR
style UT fill:#4CAF50,color:#fff
style PBT fill:#8BC34A,color:#fff
style IT fill:#FFC107,color:#000
style ES fill:#FF9800,color:#fff
style HR fill:#F44336,color:#fff
각 레이어별 역할:
| 레이어 | 빈도 | 실행 시점 | 차단 권한 |
|---|---|---|---|
| Unit Tests | 매 커밋 | Pre-commit + CI | 머지 차단 |
| Property-Based | 매 커밋 | CI | 머지 차단 |
| Integration | 매 PR | CI | 머지 차단 |
| Eval Suites | 매 PR + 메타파일 변경 시 | CI | 경고 (임계값 이하 시 차단) |
| Human Review | 매 PR | PR 리뷰 | 머지 차단 |
| Security Tests | 매일 + 메타파일/정책 변경 시 | CI + 정기 실행 | 머지 차단 |
← Previous: 03-EXISTING-METHODOLOGIES | Next: 05-CICD-PIPELINE →