/ce-* 슬래시 커맨드로 묶었다. 매번의 작업이 다음 작업을 더 쉽게 만들도록 설계됐고, 38개 이상 스킬 + 50개 이상 에이전트를 담아 10개 가까운 코딩 도구에서 동작한다. (저장소: EveryInc/compound-engineering-plugin · MIT · 17.2k★ · 제작: Every)AI에게 "이거 만들어줘"라고 막 시키면 코드는 나오지만, 다음에 또 비슷한 걸 시킬 때 AI는 지난번 교훈을 기억하지 못한다. Compound Engineering은 이 흐름을 구조화된 루프로 바꾼다 — 브레인스토밍으로 요구사항을 정리하고, 계획을 세우고, 실행하고, 여러 에이전트가 리뷰하고, 배운 것을 문서로 남겨 다음 작업의 밑천으로 삼는다.
이름 그대로 "복리(compound interest)"다. 보통 코드베이스는 기능을 추가할수록 복잡해지고 빚(기술 부채)이 쌓여, 다음 작업이 점점 더 힘들어진다.
Compound Engineering은 정반대를 노린다. 작업마다 교훈과 문서라는 '이자'를 차곡차곡 쌓아, 다음 작업이 더 쉬워지게 만든다. 통장에 이자가 붙듯, 개발 경험이 복리로 누적되는 구조다.
/plugin install 한 번으로 받는다.요즘 AI 코딩의 한 흐름은 "느낌대로 막 시키는(vibe coding)" 방식이다. 빠르지만 품질이 들쭉날쭉하고 부채가 쌓인다. Compound Engineering의 철학은 명확하게 그 반대다 — "좋은 작업은 80%가 계획과 리뷰, 20%가 실행"이다. 잘 짠 계획은 실행을 작게 만들고, 좋은 리뷰는 버그가 아니라 '패턴'을 잡아낸다.
/ce-code-review는 여러 보조 에이전트를 동시에 띄워 코드를 다각도로 검토한다. 그리고 핵심은 /ce-compound인데, 작업에서 배운 교훈을 문서로 남겨 다음 작업의 에이전트가 같은 실수를 반복하지 않게 한다. 이게 "복리"의 실제 메커니즘이다.
이 플러그인의 영리한 점은 Claude Code 호환 포맷으로 한 번 작성하면, 내장된 TypeScript 변환기가 Codex·Cursor·GitHub Copilot·Factory Droid·Qwen Code·OpenCode·Pi·Gemini·Kiro 등으로 변환해 준다는 것이다. 도구를 갈아타도 같은 워크플로우를 그대로 쓸 수 있다.
제작사 Every는 실제로 이 워크플로우로 자사 제품을 개발하며, 그 방법을 그대로 오픈소스로 풀었다. README에 연결된 "Compound engineering: how Every codes with agents" 같은 글들이 방법론의 배경을 설명한다. 17.2k개의 별은 "AI와 어떻게 일해야 하는가"에 대한 갈증을 보여준다.
"이 기능 만들어줘" 한 줄로 에이전트에게 바로 코딩을 시키면, 요구사항이 모호한 채 코드가 나와 되돌리는 비용이 커진다. 매 작업이 독립적이어서 교훈도 누적되지 않는다.
/ce-brainstorm으로 요구사항을 먼저 또렷하게 만들고, /ce-plan으로 작은 단위로 쪼갠 뒤 /ce-work로 실행한다. /ce-code-review로 검토하고 /ce-compound로 교훈을 남긴다. 다음 사이클은 더 좋은 컨텍스트에서 시작된다.
겉보기엔 "프롬프트 모음"처럼 보이지만, 속을 보면 플러그인 패키징 + 멀티 타깃 변환기라는 두 개의 기술 축으로 이뤄져 있다. 언어 비중은 TypeScript 80%, Python 14%, Shell 6%다.
핵심은 Claude Code의 플러그인 규격을 따른다는 점이다. .claude-plugin/에 매니페스트(plugin.json)가 있고, skills/에 각 작업 절차가, agents/에 역할별 보조 에이전트가, 루트에 마켓플레이스 정의(marketplace.json)가 들어간다.
/ce-plan). 에이전트는 특정 역할(리뷰어·리서처 등)을 맡아 스킬이 병렬로 부려쓰는 보조 AI다. 이 플러그인은 스킬 38개 이상 + 에이전트 50개 이상을 담았다.src/ 디렉토리의 TypeScript 코드가 @every-env/compound-plugin이라는 npm 패키지로, Bun 런타임에서 도는 설치·변환 CLI다. Claude Code용 플러그인을 Codex/Cursor/OpenCode/Pi/Gemini/Kiro 등 각 도구의 포맷으로 번역한다.
bun.lock이 있고 bunx @every-env/compound-plugin 식으로 변환기를 실행한다.Claude Code에서는 /plugin marketplace add EveryInc/compound-engineering-plugin으로 마켓플레이스를 등록한 뒤 /plugin install로 받는다. 변환기가 필요한 다른 도구들은 npm의 Bun 기반 CLI로 설치한다. 릴리스는 scripts/release의 자동화가 버전을 관리한다(현재 v3.8.x대, 153개 릴리스).
이 플러그인의 본질은 코드가 아니라 "일하는 순서"다. 모든 단계가 슬래시 커맨드 하나로 매핑되고, 각 단계의 산출물이 다음 단계의 입력이 된다.
여기에 곁가지 커맨드가 붙는다. /ce-debug는 "재현 → 근본 원인 → 수정"을 체계적으로 돌리고, /ce-doc-review는 문서를 검토하며, /ce-product-pulse는 사용량·성능·에러를 시간 구간별로 모아 docs/pulse-reports/에 리포트로 쌓는다.
머릿속 노하우나 위키 문서로 흩어져 있던 "우리 팀은 이렇게 일한다"를 슬래시 커맨드로 코드화했다. 사람이 기억해서 따라야 하는 절차가 아니라, 호출하면 에이전트가 그 절차대로 움직이는 실행물이다.
/ce-brainstorm은 요구사항 문서를 만들고, /ce-plan은 그 문서를 받아 구현 계획을 만들며, /ce-work는 그 계획을 실행한다. 각 단계가 파일로 된 산출물을 남기므로 중간에 끊겨도 이어갈 수 있고, 사람이 검토·수정할 지점이 명확하다.
# 전형적인 한 사이클
/ce-brainstorm "백그라운드 작업 재시도를 더 안전하게"
/ce-plan docs/brainstorms/background-job-retry-safety-requirements.md
/ce-work
/ce-code-review
/ce-compound
리뷰·리서치 같은 무거운 작업은 메인 대화가 직접 하지 않고, 역할별 보조 에이전트에게 병렬로 맡긴다. 에이전트는 역할별로 명명된 .md 파일 43개가 평면 구조로 들어있다 (ce-reviewer, ce-researcher 등). 그래서 Codex처럼 커스텀 에이전트를 아직 못 받는 도구에서는 별도 설치 단계가 필요하다.
루프의 위쪽에 /ce-strategy가 만드는 STRATEGY.md가 있다. 제품의 목표 문제·접근·페르소나·핵심 지표를 짧게 박아둔 파일로, ideate·brainstorm·plan이 이걸 "근거"로 읽는다. 전략이 개별 기능 결정으로 자연스럽게 흘러내리게 하는 장치다.
Claude Code 호환 매니페스트가 단일 진실 공급원(single source of truth)이고, src/의 변환기가 이를 각 도구 포맷으로 번역한다. 도구별 차이(에이전트 지원 여부 등)는 변환기가 흡수한다 — "한 번 쓰고 어디서나 실행"의 플러그인 버전이다.
저장소는 크게 ① 배포되는 플러그인 본체와 ② 그걸 변환·설치하는 도구로 나뉜다.
읽는 법: plugins/compound-engineering/skills/의 각 폴더가 곧 하나의 /ce-* 커맨드다. 스킬 폴더 안의 SKILL.md가 "이 작업을 이렇게 하라"는 절차서이고, agents/의 역할별 에이전트들이 그 스킬들이 부려쓰는 보조 일꾼이다. 루트의 src/는 플러그인 자체와는 별개로, "이 플러그인을 다른 도구로 옮기는" 메타 도구라는 점이 독특하다.
이 프로젝트는 코드 자체보다 "AI와 어떻게 일할 것인가"라는 방법론과 그것을 도구로 패키징하는 법을 동시에 가르친다.
Claude Code 플러그인이 어떻게 구성되는지(매니페스트, skills/, agents/, marketplace.json)를 잘 정돈된 실제 사례로 본다. 내 워크플로우를 플러그인으로 만들고 싶을 때 그대로 베껴 쓸 수 있는 골격이다.
요구사항 → 계획 → 실행 → 리뷰의 각 단계를 산출물로 남기는 흐름을 따라가 보면, "왜 바로 코딩하면 안 되는가"를 몸으로 익힌다. AI 시대의 소프트웨어 공정 설계 감각.
리뷰·리서치를 메인이 직접 하지 않고 역할별 보조 에이전트에 분산하는 패턴. 멀티 에이전트 시스템을 어떻게 역할로 쪼개 조립하는지 배운다.
/ce-compound가 만드는 "배운 것 문서"가 다음 작업의 컨텍스트가 되는 구조. 휘발되던 노하우를 어떻게 누적 가능한 자산으로 바꾸는지가 핵심 교훈이다.
하나의 소스를 여러 대상 포맷으로 번역하는 변환기(transpiler) 패턴을 TypeScript로 구현한 사례. 도구 종속을 피하는 추상화 설계를 배운다.
| 항목 | 요구 사항 / 메모 |
|---|---|
| 코딩 도구 | Claude Code(가장 매끄럽게 지원) 또는 Cursor·Codex·Copilot·Droid·Qwen·OpenCode·Pi·Gemini·Kiro 중 하나 |
| Bun | Claude Code는 불필요. 변환기 기반 타깃(Codex 등)이나 로컬 개발 시 필요 (bunx로 실행) |
| git | /ce-work가 worktree를 사용하므로 git 저장소 환경 권장 |
| 초기 설정 | 설치 후 /ce-setup이 환경 점검 + 누락 도구 설치 + 프로젝트 설정 부트스트랩 |
Claude Code 사용자는 마켓플레이스 등록 + 설치 두 줄이면 끝이고, 그 외 도구는 도구별로 변환기 단계가 한 번 더 붙는다.
Claude Code에서 /plugin marketplace add EveryInc/compound-engineering-plugin → /plugin install compound-engineering → 아무 프로젝트에서 /ce-setup 실행. 어떤 커맨드가 생겼는지 둘러본다.
작은 기능 하나를 골라 /ce-brainstorm "..."으로 요구사항 문서를 생성한다. AI가 되묻는 질문에 답하며 모호함이 어떻게 또렷해지는지 체감하는 게 목표.
/ce-plan → /ce-work → /ce-code-review까지 한 기능을 끝까지 통과시킨다. 계획 문서가 실행을 얼마나 작게 만드는지 직접 비교해 본다.
작업 후 /ce-compound로 교훈을 문서화하고, 다음 비슷한 작업에서 그 문서가 컨텍스트로 쓰이는지 관찰한다. "두 번째가 더 쉬워졌는가"를 평가한다.
skills/ 폴더의 SKILL.md 구조를 본떠, 자신의 반복 작업(예: 배포 점검 절차)을 스킬로 만들어 본다. 더 나아가 변환기(src/)가 다른 도구로 어떻게 번역하는지 코드를 읽는다.
| 주차 | 주제 | 핵심 키워드 |
|---|---|---|
| 1주 | AI 코딩 도구 + 플러그인 개념 잡기 | Claude Code, 플러그인, 슬래시 커맨드 |
| 2주 | compound engineering 방법론 이해 | 계획 80/실행 20, 산출물 체이닝 |
| 3주 | 스킬 작성법 | SKILL.md 구조, 절차서 인코딩 |
| 4주 | 서브에이전트 설계 | 역할 분리, 병렬 리뷰/리서치 |
| 5주 | 크로스툴 배포 + 변환기 | marketplace.json, Bun CLI, 멀티 타깃 |
| 용어 | 뜻 |
|---|---|
| Compound Engineering | 작업마다 교훈·문서를 누적해 다음 작업을 더 쉽게 만드는 개발 방법론 |
| 플러그인 (Plugin) | 스킬+에이전트+커맨드+설정을 묶어 한 번에 설치하는 기능 꾸러미 |
| 스킬 (Skill) | "이 작업을 이렇게 하라"는 절차서. SKILL.md로 정의 |
| 에이전트 (Agent) | 특정 역할(리뷰·리서치 등)을 맡는 보조 AI. 역할별 명명된 평면 구조, 50개 이상 |
| 슬래시 커맨드 | 스킬을 부르는 단축어 (/ce-plan 등) |
| STRATEGY.md | 제품의 목표·접근·지표를 박아둔 영속 앵커 문서 |
| /ce-brainstorm | 대화형 Q&A로 요구사항 문서를 만드는 스킬 |
| /ce-plan | 요구사항을 상세 구현 계획으로 바꾸는 스킬 |
| /ce-work | 계획을 worktree + 작업추적으로 실행하는 스킬 |
| /ce-code-review | 여러 에이전트가 병렬로 코드 리뷰 |
| /ce-compound | 배운 것을 문서로 codify (복리의 핵심) |
| marketplace.json | Claude Code가 읽는 마켓플레이스 정의 파일 |
| Bun | 변환기 CLI가 도는 빠른 JS 런타임 |
@every-env/compound-plugin