실제 제품을 매일 만들면서 10개월간 다듬은 결과물이다. Anthropic x Cerebral Valley 해커톤에서 개발됐으며, 만든 사람(Affaan Mustafa)이 자기 회사에서 매일 쓰던 설정을 오픈소스로 푼 것.
우리가 평소에 OS(macOS, Windows)를 깔면 기본 앱들이 줄줄이 깔리듯, ECC는 AI 코딩 에이전트라는 "OS" 위에 어떻게 일해야 하는지에 대한 매뉴얼 + 도구함을 한 방에 깔아주는 패키지다.
"하네스(harness)"는 말에 채우는 마구(馬具)에서 온 표현으로 — Claude Code·Cursor 같은 IDE/CLI 자체를 가리킨다. ECC는 그 하네스 위에 덧씌우는 운영 매뉴얼이라고 보면 된다.
TrendShift 일간 15위에 오른 이유는 단순하다. AI 코딩 에이전트(Claude Code, Cursor, Codex)는 강력하지만 매일 쓰다 보면 누구나 같은 문제에 부딪힌다 — 컨텍스트 윈도우 폭발, 같은 설명 반복, 보안 사고, 비용 폭주. ECC는 이 모든 통점을 한 번에 정리한 "완성된 운영 패턴"을 무료로 푼 것이다.
| 비교 대상 | 일반적 접근 | ECC의 접근 |
|---|---|---|
| 설정 모음집(dotfiles 같은 것) | config 파일 모아둠 → 사용자가 알아서 활용 | 설정 + 실행 시스템 + 10개월 운영 경험 묶음 |
| 단일 스킬 패키지 | 특정 작업(예: SEO)만 잘함 | 전 분야(언어 12종, 프레임워크 10+) 커버 |
| Claude Code 전용 툴 | 한 하네스에만 묶임 | 7개 하네스에 동시 동작 (Claude/Codex/Cursor/OpenCode/Gemini/Zed/Copilot) |
| AI 보안 도구 | 패턴 매칭만 함 | AgentShield — Opus 4.6 3개로 레드팀/블루팀/감사관 시뮬레이션 |
모델 선택, 시스템 프롬프트 축소, 백그라운드 프로세스 분리 등으로 API 비용을 60~90%까지 낮춘다. 같은 작업에 비용이 1/10 들면 더 많이 시도할 수 있다 = 학습 속도가 빨라진다.
세션이 끝나도 컨텍스트를 자동 저장/로드. "어제 어디까지 했지?"를 사람이 다시 설명할 필요 없음.
세션마다 사용자의 패턴을 자동으로 추출해 "본능(instinct)"으로 저장하고, 클러스터링해 새로운 스킬로 진화시킨다. 시간이 지날수록 AI가 당신 스타일에 가까워진다.
체크포인트 evals, 연속 evals, 그레이더(grader), pass@k 메트릭 등 ML 분야 평가 기법을 일반 코딩에 도입.
git worktree를 활용해 여러 AI 인스턴스를 동시에 다른 브랜치에서 돌린다. "캐스케이드 방법" 등 멀티 인스턴스 패턴 제공.
102개 정적 분석 룰, 1282 테스트, 98% 커버리지. npx ecc-agentshield scan 한 줄로 CLAUDE.md/settings.json/MCP/후크의 취약점 점검.
"단일 메인테이너 1명이 7개 하네스에 매주 배포한다" — 이게 가능한 이유는 ECC 자체가 자기 자신을 ECC로 개발하기 때문이다. 도그푸딩(dogfooding)의 극단적 사례.
ECC는 단일 언어 프로젝트가 아니다. 각 부분이 가장 적합한 도구로 작성되어 있다.
| 구성요소 | 언어/도구 | 역할 |
|---|---|---|
| 크로스플랫폼 스크립트 | Node.js | 설치 스크립트, 후크 실행기. macOS/Windows/Linux 모두 동작. |
| 대시보드 GUI | Python + Tkinter | ecc_dashboard.py — 에이전트/스킬/룰 시각 탐색기 (다크/라이트 토글) |
| ECC 2.0 컨트롤플레인 | Rust | ecc2/ — 알파 상태. dashboard, start, sessions, daemon 명령 제공. |
| 상태 저장소 | SQLite | 설치 상태, 세션 기록, 본능 컬렉션 저장. CLI에서 쿼리 가능. |
| 오케스트레이션 | PM2 | 멀티 서비스 워크플로우 관리. /pm2, /multi-execute 등. |
| 채널 | 이름 | 설명 |
|---|---|---|
| npm | ecc-universal | 크로스 하네스 설치 CLI. npx ecc-install --profile minimal |
| npm | ecc-agentshield | 보안 스캐너. 독립 사용 가능. |
| Claude 플러그인 | ecc@ecc | 한 줄 설치: /plugin install ecc@ecc |
| GitHub App | ecc-tools | 유료 호스팅 버전. PR 자동 감사. 150+ 설치. |
TypeScript / JavaScript · Python · Go · Rust · Java · Kotlin · Swift · C++ · F# · PHP · Perl · ArkTS(HarmonyOS)
웹: Django, Next.js (Turbopack), NestJS, Spring Boot, Quarkus, Laravel
모바일: Swift Actor / Concurrency 6.2, Liquid Glass(iOS 26), HarmonyOS
데이터: PostgreSQL, JPA/Hibernate, ClickHouse, pgvector
인프라: Docker, Playwright(E2E), Plankton(코드 품질 후크)
Cursor는 후크 이벤트가 20개, Claude Code는 8개. ECC의 .cursor/hooks/adapter.js가 Cursor의 stdin JSON을 Claude Code 포맷으로 변환해, 같은 후크 스크립트를 양쪽에서 재사용한다. DRY(Don't Repeat Yourself)의 정석.
사용자가 Claude Code에 "OAuth 인증 추가해줘"라고 입력했을 때, ECC가 뒤에서 어떻게 동작하는지 시각화하면:
같은 핵심 자산(스킬/룰)을 N개 하네스에 배포하려면 N개를 따로 유지하면 안 된다. ECC는 "공통 자산 1세트 + 하네스별 어댑터" 구조로 풀었다.
scripts/hooks/session-start.js ← 한 곳에 작성한 후크 로직
↑
┌────┴─────┬──────────┬─────────┐
│ │ │ │
Claude Cursor Codex Zed
어댑터 어댑터 어댑터 어댑터
(stdin 포맷만 변환, 핵심 로직은 공유)
v1.9.0부터 도입. 매니페스트 기반 설치 파이프라인으로 install-plan.js가 "뭐를 깔지" 계획을 세우고, install-apply.js가 실제 복사한다. SQLite 상태 저장소가 "지금 뭐가 깔려 있는지" 추적해 점진적 업데이트를 가능하게 한다.
npx ecc consult "security reviews" --target claude
# → 매칭되는 컴포넌트 + 관련 프로필 + 미리보기/설치 명령 출력
npx ecc install --profile minimal --target claude --with capability:machine-learning
# → 최소 프로필 + 머신러닝 캐퍼빌리티만 추가
Stop 후크가 세션 종료 시 자동 발화. 사용자가 반복한 패턴(예: "에러는 항상 result 객체로 반환")을 감지해 신뢰도(confidence)를 매긴 인스팅트로 저장한다. 시간이 지나면 /evolve가 관련 인스팅트를 클러스터링해 정식 스킬로 승격.
"코드 짜기 → 빌드 → 테스트 → 린트 → 타입체크 → 보안"을 한 번에 끝까지 돌리는 사이클. 중간에 하나라도 깨지면 처음으로 돌아간다. ML에서 학습 루프를 돌리듯 코딩도 루프로 본다.
가장 멋진 설계 중 하나. npx ecc-agentshield scan --opus --stream을 실행하면 Claude Opus 4.6 모델 3개가 동시에 일한다:
| 역할 | 하는 일 |
|---|---|
| Red Team (공격자) | 설정 파일을 살펴보고 "내가 해커라면 어떻게 뚫지?" — exploit chain 찾기 |
| Blue Team (방어자) | 현재 보호 장치(권한, 후크, 룰)를 분석해 어떤 공격을 막아내는지 평가 |
| Auditor (감사관) | 레드/블루팀 결과를 종합해 우선순위 매긴 리스크 리포트 생성 |
출력은 터미널(A-F 색상 등급), JSON(CI 파이프라인용), Markdown, HTML 네 가지. 크리티컬 발견 시 exit code 2로 빌드 게이트 차단 가능.
레포 루트의 핵심 폴더만 추리면 다음과 같다. 각각이 ECC의 어떤 "기능"을 담당하는지가 중요하다.
agents/와 skills/가 분리된 이유는 역할이 다르기 때문. 에이전트는 "위임받는 인격" (Read/Grep/Bash 도구 권한이 따로 있음), 스킬은 "참고하는 매뉴얼" (자동 호출되지만 권한은 호스트와 공유). 새 워크플로우는 항상 skills/에 먼저 만들고, 위임이 필요할 때만 agent로 분리한다.
| 파일 | 역할 |
|---|---|
.claude-plugin/plugin.json | "이 플러그인은 이런 컴포넌트를 가지고 있다" 매니페스트. Claude Code v2.1+가 자동 로드. |
hooks/hooks.json | "어떤 이벤트에 무슨 명령 실행" 매핑. plugin.json에 hooks 필드 절대 추가 금지(중복 검출 에러). |
install.sh / install.ps1 | OS별 설치 진입점. --profile minimal/core/full, --target claude/cursor/codex. |
scripts/hooks/session-start.js | 세션 시작 시 컨텍스트 로드 후크의 본체. |
ecc_dashboard.py | Tkinter GUI. npm run dashboard로 실행. |
ECC를 그냥 사용하는 게 아니라 "읽고 배워서 자기 도구를 만드는 재료"로 쓸 때 얻을 게 많다. 분야별로 정리.
배울 것: 67개 에이전트를 어떻게 역할별로 쪼개고, 언제 위임할지 결정하는 로직.
핵심 파일: agents/*.md의 frontmatter — tools(허용 도구), model(opus/sonnet/haiku 라우팅)
실습 아이디어: 자기 직무에 맞는 에이전트 1개 만들기 (예: "내 회사 코딩 컨벤션 리뷰어")
배울 것: Agent Skills 표준 (SKILL.md 형식, YAML frontmatter, description-driven activation)
핵심 파일: skills/skill-stocktake/ — 스킬 품질 감사 스킬 (메타!)
실습 아이디어: /skill-create로 자기 git 히스토리에서 스킬 자동 추출
배울 것: 이벤트 드리븐 패턴, JSON matcher 문법, exit code로 차단/허용 제어
핵심 파일: hooks/hooks.json, scripts/hooks/*.js
실습 아이디어: "git push 전에 npm test 강제" 후크 작성
배울 것: 패키지 매니저 자동 감지 (npm/pnpm/yarn/bun), Windows/macOS/Linux 경로 차이 처리
핵심 파일: scripts/lib/utils.js, scripts/lib/package-manager.js
실습 아이디어: Lock 파일 우선순위로 패키지 매니저 추론하는 함수 작성
배울 것: CLI 도구가 설치 상태/세션 기록을 어떻게 영속화하나
핵심 파일: 상태 저장소 + 쿼리 CLI
실습 아이디어: 자기만의 "설치 매니페스트 + 상태 저장" 미니 도구 만들기
배울 것: AgentShield의 102개 정적 분석 룰 — 시크릿 패턴(sk-, ghp_, AKIA), 권한 감사, MCP 위험 프로파일링
핵심 파일: skills/security-scan/, AgentShield 별도 레포
실습 아이디어: npx ecc-agentshield scan을 자기 프로젝트에 돌려보고 결과 분석
배울 것: Python 표준 라이브러리만으로 다크/라이트 토글, 폰트 커스터마이즈 가능한 데스크탑 앱
핵심 파일: ecc_dashboard.py
실습 아이디어: Tkinter로 "내 git 레포 대시보드" 만들기
| 항목 | 필요 버전 / 사양 |
|---|---|
| Claude Code CLI | v2.1.0 이상 필수 (이전 버전은 후크 자동 로딩이 안 됨) |
| Node.js | 18+ (크로스플랫폼 스크립트 실행용) |
| Python | 3.x (대시보드 사용 시. 미사용이면 불필요) |
| OS | Windows / macOS / Linux 모두 지원 |
| 패키지 매니저 | npm / pnpm / yarn / bun 중 아무거나 (자동 감지) |
| 디스크 | 전체 설치 시 약 100MB (선택 설치로 줄일 수 있음) |
| 컨텍스트 윈도우 | 200K 권장. SessionStart 캡 8000자 (환경변수로 조정) |
| MCP 서버 | 10개 이내, 활성 도구 80개 이내 권장 |
플러그인 + 수동 설치를 동시에 하면 후크가 중복 실행돼 충돌한다. 처음 깔 때 한 가지 경로만 선택해야 한다. 이미 꼬였다면 node scripts/uninstall.js --dry-run으로 먼저 확인하고 정리.
목표: ECC를 깔고 대시보드로 어떤 게 들었는지 시각적으로 확인.
# 1) 플러그인 설치
/plugin marketplace add https://github.com/affaan-m/ECC
/plugin install ecc@ecc
# 2) 룰만 수동 복사 (자기 기술스택 1개만)
git clone https://github.com/affaan-m/ECC.git
cd ECC && mkdir -p ~/.claude/rules/ecc
cp -r rules/common ~/.claude/rules/ecc/
cp -r rules/typescript ~/.claude/rules/ecc/
# 3) 대시보드 띄우기
npm install && npm run dashboard
학습 포인트: 플러그인 매니페스트가 어떻게 동작하는지, 어떤 컴포넌트가 자동/수동 설치인지 체감.
목표: 내 ~/.claude/ 폴더에 보안 이슈가 있는지 확인.
npx ecc-agentshield scan --markdown > security-report.md
# A-F 등급과 발견된 이슈 마크다운 리포트 생성
학습 포인트: 시크릿 키 노출, 위험한 후크, 과도한 MCP 권한이 어떤 모양으로 보이는지 학습.
목표: 자기 회사 코딩 컨벤션을 SKILL.md로 만들어 ECC와 함께 사용.
# 1) skill-creator 실행
/skill-create
# 2) 또는 직접 작성
mkdir -p ~/.claude/skills/my-team-style
cat > ~/.claude/skills/my-team-style/SKILL.md << 'EOF'
---
name: my-team-style
description: 우리 팀 코딩 컨벤션 — 함수명은 동사+명사, 에러는 항상 Result 타입
---
# 코딩 규칙
1. 함수명은 동사+명사 (e.g. fetchUserData)
2. 에러 처리는 throw 대신 Result<T, E> 패턴
3. console.log 절대 금지, logger.debug 사용
EOF
학습 포인트: Skill 자동 호출(description-based activation) 메커니즘 이해.
목표: Edit 도구로 .ts 파일을 수정할 때마다 자동으로 ESLint 돌리기.
// ~/.claude/hooks/hooks.json
{
"matcher": "tool == \"Edit\" && tool_input.file_path matches \"\\\\.tsx?$\"",
"hooks": [{
"type": "command",
"command": "npx eslint $file_path --fix || echo '[ESLint] 위반' >&2"
}]
}
학습 포인트: 후크 matcher 문법, stderr/exit code로 차단/경고 차이 만들기.
목표: ECC의 .cursor/hooks/adapter.js가 Cursor↔Claude Code 포맷 변환을 어떻게 하는지 분석하고, "Gemini CLI 어댑터"를 직접 작성해보기.
// 분석 순서
1. .cursor/hooks/adapter.js 정독 (stdin JSON 변환 로직)
2. scripts/hooks/session-start.js가 어떤 포맷을 기대하는지 파악
3. Gemini CLI의 hook event 포맷 조사
4. adapter-gemini.js 작성 → 같은 session-start.js를 재사용
학습 포인트: 어댑터 패턴의 실전 적용. 단일 진실의 원천(SSOT)을 유지하면서 다중 환경 지원하는 방법.
"ECC를 깊이 이해하려면"이라는 관점에서 8주 코스로 정리.
| 주차 | 주제 | 학습 자료 |
|---|---|---|
| 1주 | Claude Code 기본 + Agent Skills 표준 | Anthropic 공식 docs, ECC Shorthand Guide |
| 2주 | MCP (Model Context Protocol) 이해 | MCP 스펙 문서, ECC mcp-configs/ |
| 3주 | 서브에이전트 + 위임 패턴 | ECC agents/ 67개 정독, planner→architect 흐름 |
| 4주 | 후크 시스템 + 이벤트 드리븐 아키텍처 | ECC hooks/hooks.json, scripts/hooks/* |
| 5주 | 토큰 최적화 + 컨텍스트 관리 | ECC Longform Guide, strategic-compact 스킬 |
| 6주 | 지속 학습 시스템 (Continuous Learning v2) | 인스팅트 → 스킬 진화 사이클 추적 |
| 7주 | LLM 보안 (AgentShield) | AgentShield 레포 정독, OWASP LLM Top 10 |
| 8주 | 자기만의 ECC 만들기 | 처음부터 작은 skill pack 1개 + GitHub 마켓플레이스 등록 |
ECC README의 표 "Token Optimization / Memory Persistence / Continuous Learning / Verification Loops / Parallelization / Subagent Orchestration" 여섯 가지를 키워드로 잡고, 각각의 ECC 구현을 코드까지 읽어보면 AI 에이전트 운영의 거의 모든 토픽을 커버한다.
| 용어 | 의미 |
|---|---|
| Harness | AI 모델을 부려 일을 시키는 외피(IDE/CLI). Claude Code, Cursor, Codex가 다 harness. |
| Agent | 특정 역할이 정해진 서브AI. Read/Bash 등 도구 권한이 분리됨. |
| Skill | 워크플로우 매뉴얼. YAML frontmatter + description으로 AI가 자동 호출. |
| Hook | 이벤트 트리거. PreToolUse, PostToolUse, SessionStart, Stop 등에서 발화. |
| Rule | 항상 적용되는 가이드라인. 언어별/공통으로 폴더 분리. |
| MCP | Model Context Protocol. AI ↔ 외부 도구(GitHub/DB/Slack) 표준 통신. |
| Instinct | 사용자 행동에서 자동 추출된 패턴. 신뢰도 점수가 매겨짐. Continuous Learning v2의 단위. |
| Evolve | 관련 인스팅트를 클러스터링해 정식 스킬로 승격하는 명령. |
| Verification Loop | build → test → lint → typecheck → security를 한 사이클로 보는 패턴. |
| pass@k | 같은 문제를 k번 시도했을 때 한 번이라도 맞히는 비율. ML eval 메트릭. |
| Cascade Method | 여러 AI 인스턴스를 git worktree에서 병렬로 돌리는 패턴. |
| Strategic Compact | 컨텍스트가 차기 전에 의도적으로 압축하는 기법. |
| Red Team / Blue Team / Auditor | AgentShield의 3개 Opus 4.6 에이전트 패턴 (공격 / 방어 / 감사). |
| Selective Install | 매니페스트 기반 컴포넌트 선택 설치. SQLite로 상태 추적. |
| Adapter Pattern | 같은 핵심 로직을 여러 환경(Cursor/Claude/Codex)에서 재사용하기 위한 변환 레이어. |
| Plankton | 코드 품질을 작성 시점에 강제하는 후크 시스템. |
--opus 플래그가 만드는 3개 Opus 모델의 역할은?plugin.json에 "hooks" 필드를 넣으면 안 되나?