장 04
스킬과 에이전트
DWP는 에이전트 비종속이지만, 반복되는 두 가지 구성 요소 — 스킬과 에이전트 — 와 어떤 작업이 시작되기 전에 리포지토리에서 방향을 잡는 의도적인 방법을 전제로 합니다.
스킬 대 에이전트
스킬
어떻게 — 재사용 가능한 절차
fix-lintadd-componenttranslate-syncdwp-create
에이전트
누가 — 전문화된 작업자
reviewerexecutorarchitecti18n-guardian
.claude .agents 심볼릭 링크 → 하위 호환성 둘은 혼동하기 쉽지만 서로 다른 목적을 수행합니다.
- 스킬은 이름으로 호출되는 재사용 가능한 절차입니다. 스킬은 반복 가능한 워크플로 — 테스트 실행, lint 수정, 컴포넌트 생성 — 를 패키징하여, 에이전트와 사람이 매번 같은 방식으로 호출하게 합니다.
- 에이전트는 정의된 역할 — 리뷰어, 실행자, 아키텍트 — 을 가진 특화된 작업자입니다. 각 에이전트는 집중된 책임을 가지며 자신의 범위 안에서 동작합니다.
유용한 약칭: 스킬은 반복되는 작업을 어떻게 하는지이고, 에이전트는 어떤 부류의 작업을 누가 책임지는지입니다.
살아 있는 키트: 리포지토리가 자체 스킬을 키운다
온보딩은 리포지토리를 에이전트 하니스로 바꾸지, 그것을 고정시키지 않습니다. 키트는 리포지토리의 워크플로가 분명해질수록 자라도록 의도되었습니다. DWP는 /skill-create와 /agent-create를 통해 호출되는 author 하위 스킬을 제공합니다. 이 스킬은 리포지토리의 기존 .agents/ 구조와 관례를 추론한 뒤, 그것에 맞는 새 스킬, 에이전트, 또는 얇은 명령 위임자를 작성합니다. 리포지토리는 범용 키트를 물려받는 대신 자체 키트를 저작합니다.
author 하위 스킬은 적합성에 대해 의도적입니다. 사람이 손으로 실행하는 반복 가능한 절차에는 스킬을, 별도의 모델이나 도구 요구가 있는 반복되는 역할에는 에이전트를, 그리고 스킬이나 에이전트로 라우팅하는 얇은 진입점으로서만 명령을 만듭니다. 실제 워크플로에 맞지 않는 범용적인 것은 무엇이든 건너뛰고, 추가하는 모든 것에 맞춰 .agents/docs/ 카탈로그를 동기화 상태로 유지합니다. 같은 하위 스킬이 필수 스킬 & 에이전트 발견 작업을 뒷받침하며, 이 작업은 카탈로그를 디스크에 실제로 있는 것과 대조해 일치시킵니다 — 그리고 /dwp-verify는 그 일치를 객관적으로 확인하여, 카탈로그와 파일이 어긋나면 불합격 처리합니다.
유지보수 애드온
저작을 넘어, DWP는 선택형 유지보수 애드온을 제공합니다 — 리포지토리가 AI-first가 되는 데 결코 필수는 아닙니다. dependency-upgrade 애드온이 대표적인 예입니다. 하나를 가정하는 대신 리포지토리의 실제 패키지 관리자(npm, pnpm, 또는 ncu가 있는 yarn; pip, poetry, 또는 uv; Cargo; Go modules; Bundler; Composer)를 추론한 뒤, 작은 배치 단위로 업그레이드하고, 각 배치 후 리포지토리의 실제 검증 게이트를 실행하며, 실패한 배치는 되돌리고, 자동 커밋 없이 요약합니다. 애드온은 온보딩 중에 명시적으로 채택됩니다. 하나를 거절해도 리포지토리는 완전히 적합한 상태로 남습니다.
추론 기반 리포지토리 온보딩
계획을 생성하거나 실행하기 전에, 에이전트는 리포지토리에 온보딩합니다. 온보딩은 스크립트 기반이 아니라 추론 기반입니다. 에이전트는 고정된 셋업 스크립트를 실행하는 대신 리포지토리의 구조, 문서, 설정을 읽어 멘탈 모델을 구축합니다.
온보딩 동안 에이전트는 리포지토리 아키타입(개별 대 오케스트레이터), build·test·lint 명령, 스타일·구조·명명에 대한 기존 관례, 그리고 이미 사용 가능한 스킬과 에이전트를 식별합니다. 이 이해가 에이전트로 하여금 리포지토리와 싸우는 대신 그에 맞는 방식으로 계획하고 실행하게 합니다.
.agents/ 디렉터리와 .claude → .agents 심링크
DWP는 에이전트 동작을 정의하는 모든 것 — 스킬, 명령, 에이전트 정의, 내부 문서, 설정 — 을 하나의 정규 디렉터리인 .agents/ 아래에 모읍니다. 이 이름은 그 내용이 어느 한 도구에 묶이지 않고 에이전트 전반에 공유됨을 나타냅니다.
역사적으로 .claude/에서 읽던 도구와의 하위 호환을 위해, 그 경로는 .agents/에 대한 심링크입니다.
ls -la .claude
# .claude -> .agents
모든 .claude/... 경로는 그에 상응하는 .agents/...로 투명하게 해석되므로, 오래된 도구는 계속 작동하고 새 내용은 정규 위치인 .agents/를 참조합니다. 스킬과 에이전트는 심링크가 아니라 .agents/ 아래의 실제 파일을 통해 편집됩니다.