From dev-squad
Use when starting new feature development - sets up Agent Teams, gathers requirements, creates plan, implements with parallel agents, runs code review/QA/security checks, and commits with conventional commits
npx claudepluginhub leoheo/dev-squad --plugin dev-squadThis skill uses the workspace's default tool permissions.
새로운 기능 개발을 **Agent Teams 협업** 방식으로 진행합니다.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Provides patterns for autonomous Claude Code loops: sequential pipelines, agentic REPLs, PR cycles, de-sloppify cleanups, and RFC-driven multi-agent DAGs. For continuous dev workflows without intervention.
Applies NestJS patterns for modules, controllers, providers, DTO validation, guards, interceptors, config, and production TypeScript backends with project structure and bootstrap examples.
새로운 기능 개발을 Agent Teams 협업 방식으로 진행합니다. 단독 작업이 아닌 Agent Teams (TeamCreate + SendMessage) 협업으로 진행한다. 아래 Phase를 순서대로 진행해줘.
⚠️ 핵심 원칙: Agent Teams 필수 (절대 위반 금지)
team_name 파라미터와 함께 생성 (팀원으로 등록)아래 파일들이 모두 존재하는지 확인해줘.
cto-lead.mdfrontend-senior.mdbackend-senior.mduiux-senior.mdsecurity-senior.mdqa-senior.mdnew-feature.md (이 파일)누락된 파일이 있으면:
모두 존재하면 → .claude/templates/agents/에 템플릿이 있는데 .claude/agents/에 없는 파일이 있으면 복사 후 "사전 조건 검증 완료" 표시
현재 작업 디렉토리(CWD)의 하위 디렉토리를 스캔해줘:
| 파일 | 추정 type |
|---|---|
build.gradle + Spring 의존성 | spring-boot |
pom.xml + Spring 의존성 | spring-boot |
nuxt.config.ts 또는 nuxt.config.js | nuxt |
next.config.* | nextjs |
vite.config.* | vite |
Cargo.toml | rust |
go.mod | go |
package.json만 있음 | node |
| 기타 | unknown |
감지 결과를 테이블로 보여줌.
AskUserQuestion으로 각 디렉토리의 설정을 확인:
확인된 정보로 .claude/project-config.json을 생성/갱신:
{
"directories": [
{ "name": "backend", "path": "backend", "type": "spring-boot" },
{ "name": "frontend", "path": "frontend", "type": "nuxt" }
],
"baseBranch": "master",
"branchPrefix": "feature/"
}
대상 디렉토리들에서 각각 git status --short 실행.
변경사항이 있는 경우:
git stash push -m "auto-stash: $(date +%Y%m%d-%H%M%S)" 실행변경사항이 없으면 "깨끗합니다" 표시 후 다음으로.
AskUserQuestion으로 base 브랜치 선택:
선택된 base 브랜치로:
git checkout {base-branch}git pull origin {base-branch} (실패해도 진행)이 base 브랜치명을 Phase 6에서 사용하므로 기억해둔다.
⚠️ 반드시 브랜치를 먼저 생성한 후 작업을 시작한다. master에서 직접 작업하지 않는다.
AskUserQuestion으로 기능 이름을 수집:
user-profile-edit)AskUserQuestion으로 브랜치명 확인:
git checkout -b {new-branch} 실행
브랜치 생성 확인:
✅ 브랜치 생성 완료: {new-branch}
이후 모든 작업은 이 브랜치에서 진행됩니다.
AskUserQuestion으로 기능의 상세 정보를 수집:
TeamCreate로 팀 생성:
team_name: "{feature-name}"
description: "{기능 설명 요약}"
팀원을 **Task(team_name 필수)**로 생성:
| name | subagent_type | 역할 |
|---|---|---|
| cto-lead | general-purpose | 전체 아키텍처 + 오케스트레이션 |
| frontend-senior | general-purpose | 프론트엔드 구현 |
| backend-senior | general-purpose | 백엔드 구현 |
| uiux-senior | general-purpose | 화면 설계 (필요 시) |
| security-senior | general-purpose | 보안 검증 |
| qa-senior | general-purpose | 테스트/QA |
각 에이전트 생성 시 prompt에:
.claude/agents/{name}.md 파일 내용을 포함⚠️ team_name 없이 Task 실행 = sub-agent = 에이전트 간 메시지 불가 = 절대 금지
CTO Lead가 요구사항을 분석하여:
에이전트들이 SendMessage로 소통하며 Plan 초안 작성:
CTO Lead가 각 초안을 취합하여 최종 Plan 확정:
→ docs/plan/features/{feature}.plan.md 생성
→ feature 이름 최종 확정
(브랜치는 Phase 1-6에서 이미 생성됨)
git add docs/plan/features/{feature}.plan.md
git commit -m "docs: {feature} Plan 문서 작성
기능 요구사항 및 범위 정의.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>"
Agent Teams 기반으로 구현 진행:
구현 완료 후 다음을 진행:
| 에이전트 | 작업 | 실패 시 |
|---|---|---|
| Frontend Senior | 프론트 코드리뷰 | 지적사항 기록 → 수정 → 수정내역 기록 |
| Backend Senior | 백엔드 코드리뷰 | 지적사항 기록 → 수정 → 수정내역 기록 |
| Security Senior | 보안 점검 (OWASP Top 10, 인증/인가) | 해당 Senior에게 SendMessage로 수정 요청 |
| QA Senior | 테스트 작성 + 실행 | 수정 → 재실행 (최대 3회) |
| CTO Lead | 요구사항 충족률 확인 | < 90%: 미충족 항목 수정 → 재분석 |
⚠️ npm run test:unit (vitest) 실행 후 fork worker 프로세스가 남아있을 수 있다.
QA Senior는 frontend 테스트 실행 완료 후 반드시 잔여 프로세스를 정리해야 한다:
# vitest/node 잔여 프로세스 확인 및 종료
pkill -f "vitest" 2>/dev/null || true
# fork worker 프로세스 정리
pgrep -f "node.*vitest" | xargs kill 2>/dev/null || true
테스트 완료 후 pgrep -f "vitest" 로 잔여 프로세스가 없는지 확인한다.
각 Senior는 코드리뷰 결과를 CTO Lead에게 SendMessage로 아래 형식으로 보고:
## 코드리뷰 결과 — {Frontend/Backend}
### 지적사항
1. [파일:라인] 내용 — 심각도(Critical/Major/Minor)
2. ...
### 수정 내역
1. [파일:라인] 수정 내용 — 관련 지적사항 번호
2. ...
### 미수정 사유 (있을 경우)
1. [지적사항 번호] 사유
CTO Lead는 이 정보를 Phase 5 최종 요약에 포함한다.
모든 검증 통과 후 아래 형식으로 보고:
작업 완료!
─────────────────────────────────────────────────
Feature: {feature-name}
Branch: feature/{feature-name}
─────────────────────────────────────────────────
대상 디렉토리:
{name}: {type} — {path}
─────────────────────────────────────────────────
검증 결과:
Code Review: Frontend ✅ / Backend ✅
Security: 보안 점검 통과
QA: N/N 시나리오 통과
요구사항: 충족률 {N}%
─────────────────────────────────────────────────
코드리뷰 지적사항 요약:
[Frontend]
Critical (N건):
- 요약...
Major (N건):
- 요약...
Minor (N건):
- 요약...
[Backend]
Critical (N건):
- 요약...
Major (N건):
- 요약...
Minor (N건):
- 요약...
수정 완료: N/N건
미수정: N건 (사유 포함)
─────────────────────────────────────────────────
Stash: {stash 내역 또는 "없음"}
Plan: docs/plan/features/{feature}.plan.md
─────────────────────────────────────────────────
아래 규칙을 반드시 준수하여 커밋:
| prefix | 용도 |
|---|---|
feat: | 새 기능 |
fix: | 버그 수정 |
refactor: | 리팩토링 (동작 변경 없음) |
chore: | 빌드/설정 변경 |
test: | 테스트 추가/수정 |
docs: | 문서 변경 |
git diff --stat으로 변경 파일 확인git status와 git diff --stat으로 전체 변경사항 파악커밋 분리 계획:
1. feat: 사용자 프로필 편집 API 추가 — backend/...
2. feat: 프로필 편집 화면 구현 — frontend/...
3. test: 프로필 편집 테스트 추가 — backend/..., frontend/...
feat: 사용자 프로필 편집 API 추가
프로필 편집 기능의 백엔드 구현.
PUT /api/users/profile 엔드포인트를 추가하여
이름, 이메일, 프로필 이미지 수정을 지원.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AskUserQuestion으로 다음 단계를 물어봄:
git push -u origin {feature-branch}git checkout {base-branch} && git merge {feature-branch}
({base-branch}는 Phase 1-5에서 선택한 기본 브랜치)QA/테스트 중 실행했던 서버들과 잔여 프로세스를 종료:
lsof -ti :8080 | xargs kill -9 2>/dev/null || true (backend)lsof -ti :3000 | xargs kill -9 2>/dev/null || true (frontend)pkill -f "vitest" 2>/dev/null || true (vitest 잔여 프로세스)pgrep -f "node.*vitest" | xargs kill 2>/dev/null || true (vitest fork worker)team_name 파라미터를 반드시 포함