Awesome-omni-skill new-feature

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

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/product/new-feature" ~/.claude/skills/diegosouzapw-awesome-omni-skill-new-feature && rm -rf "$T"
manifest: skills/product/new-feature/SKILL.md
source content

새로운 기능 개발을 Agent Teams 협업 방식으로 진행합니다. 단독 작업이 아닌 Agent Teams (TeamCreate + SendMessage) 협업으로 진행한다. 아래 Phase를 순서대로 진행해줘.

⚠️ 핵심 원칙: Agent Teams 필수 (절대 위반 금지)

  • 단독 작업 금지 → 반드시 Agent Teams 방식 (TeamCreate + SendMessage)
  • 모든 에이전트는 반드시 TeamCreate로 팀을 먼저 만들고, Task의
    team_name
    파라미터와 함께 생성 (팀원으로 등록)
  • 절대로 team_name 없이 Task를 실행하지 않음 (sub-agent 모드에서는 에이전트 간 메시지 교환이 불가)
  • 에이전트 간 협업은 반드시 SendMessage로 수행
  • 작업 관리는 TaskCreate/TaskUpdate/TaskList로 팀 공유 Task List 활용

Phase 0: 사전 조건 검증

아래 파일들이 모두 존재하는지 확인해줘.

필수 Agent 정의 (.claude/agents/)

  • cto-lead.md
  • frontend-senior.md
  • backend-senior.md
  • uiux-senior.md
  • security-senior.md
  • qa-senior.md

필수 Skills (.claude/skills/)

  • new-feature.md
    (이 파일)

검증 결과 처리

누락된 파일이 있으면:

  1. 누락 목록을 보여주고
  2. AskUserQuestion: "누락된 파일이 있습니다. 어떻게 할까요?"
    • "중단" → 여기서 멈추고 누락 파일을 먼저 준비하라고 안내
    • "계속 진행" → 누락 파일 없이 가능한 범위에서 진행

모두 존재하면 →

.claude/templates/agents/
에 템플릿이 있는데
.claude/agents/
에 없는 파일이 있으면 복사 후 "사전 조건 검증 완료" 표시


Phase 1: 프로젝트 구조 감지 + 설정 생성

1-1: 디렉토리 자동 감지

현재 작업 디렉토리(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

감지 결과를 테이블로 보여줌.

1-2: 사용자 확인

AskUserQuestion으로 각 디렉토리의 설정을 확인:

  • 감지된 type이 있으면 추천으로 표시, "직접 입력" 옵션도 제공
  • 작업 대상에서 제외할 디렉토리 선택 가능

1-3: project-config.json 생성

확인된 정보로

.claude/project-config.json
을 생성/갱신:

{
  "directories": [
    { "name": "backend", "path": "backend", "type": "spring-boot" },
    { "name": "frontend", "path": "frontend", "type": "nuxt" }
  ],
  "baseBranch": "master",
  "branchPrefix": "feature/"
}

1-4: 미커밋 변경사항 확인

대상 디렉토리들에서 각각

git status --short
실행.

변경사항이 있는 경우:

  • 변경된 파일 목록을 보여주고
  • AskUserQuestion으로 각 디렉토리별 처리:
    • "stash로 저장" →
      git stash push -m "auto-stash: $(date +%Y%m%d-%H%M%S)"
      실행
    • "무시하고 진행" → 그대로 진행
    • "작업 중단" → 여기서 멈춤

변경사항이 없으면 "깨끗합니다" 표시 후 다음으로.

1-5: 기본 브랜치 선택

AskUserQuestion으로 base 브랜치 선택:

  • "master (기본)"
  • "현재 브랜치 유지" → 현재 브랜치명을 표시하고 그대로 사용
  • "직접 입력" → 사용자가 브랜치명 입력

선택된 base 브랜치로:

  1. git checkout {base-branch}
  2. git pull origin {base-branch}
    (실패해도 진행)

이 base 브랜치명을 Phase 6에서 사용하므로 기억해둔다.

1-6: 기능 이름 수집 + 브랜치 생성

⚠️ 반드시 브랜치를 먼저 생성한 후 작업을 시작한다. master에서 직접 작업하지 않는다.

  1. AskUserQuestion으로 기능 이름을 수집:

    • 기능 이름 (영문 kebab-case 추천, 예:
      user-profile-edit
      )
  2. AskUserQuestion으로 브랜치명 확인:

    • "feature/{feature-name} (추천)"
    • "직접 입력"
  3. git checkout -b {new-branch}
    실행

  4. 브랜치 생성 확인:

    ✅ 브랜치 생성 완료: {new-branch}
    이후 모든 작업은 이 브랜치에서 진행됩니다.
    

Phase 2: Agent Teams — 요구사항 수집 + Plan

2-1: 요구사항 수집 + 팀 생성

  1. AskUserQuestion으로 기능의 상세 정보를 수집:

    • 상세 요구사항
    • 제약 조건 (기술적/비즈니스) (기능 이름은 Phase 1-6에서 이미 확정됨)
  2. TeamCreate로 팀 생성:

    team_name: "{feature-name}"
    description: "{기능 설명 요약}"
    
  3. 팀원을 **Task(team_name 필수)**로 생성:

    namesubagent_type역할
    cto-leadgeneral-purpose전체 아키텍처 + 오케스트레이션
    frontend-seniorgeneral-purpose프론트엔드 구현
    backend-seniorgeneral-purpose백엔드 구현
    uiux-seniorgeneral-purpose화면 설계 (필요 시)
    security-seniorgeneral-purpose보안 검증
    qa-seniorgeneral-purpose테스트/QA

    각 에이전트 생성 시 prompt에:

    • .claude/agents/{name}.md
      파일 내용을 포함
    • 프로젝트의 CLAUDE.md 규칙 준수 지시
    • 팀 내 다른 에이전트와 SendMessage로 소통하라는 지시

    ⚠️ team_name 없이 Task 실행 = sub-agent = 에이전트 간 메시지 불가 = 절대 금지

2-2: 화면 필요 여부 판단

CTO Lead가 요구사항을 분석하여:

  • 화면이 필요한 기능 → UI/UX Senior에게 SendMessage로 화면 설계 요청
  • 화면 불필요 → UI/UX Senior 건너뜀

2-3: 협업 Plan 작성

에이전트들이 SendMessage로 소통하며 Plan 초안 작성:

  • CTO Lead → 전체 아키텍처 + 작업 분배 초안
  • Backend Senior → 백엔드 구현 계획 (API 스펙 포함)
  • Frontend Senior → 프론트 구현 계획 (Backend Senior의 API 스펙 참조)
  • UI/UX Senior → 화면 설계안 (Phase 2-2에서 필요 판정 시)

2-4: Plan 통합 + 확정

CTO Lead가 각 초안을 취합하여 최종 Plan 확정: →

docs/plan/features/{feature}.plan.md
생성 → feature 이름 최종 확정


Phase 3: Plan 커밋 + 병렬 구현

3-1: Plan 문서 첫 커밋

(브랜치는 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>"

3-3: 병렬 구현

Agent Teams 기반으로 구현 진행:

  • CTO Lead가 TaskCreate로 작업 항목 생성 → 각 Senior에게 SendMessage로 할당
  • Frontend Senior ↔ Backend Senior가 SendMessage로 API 인터페이스 계약 조율
  • 각 Senior는 독립적으로 작업하되, 필요 시 SendMessage로 실시간 협업
  • 구현 완료 시 각 Senior가 CTO Lead에게 SendMessage로 보고

Phase 4: 병렬 검증

구현 완료 후 다음을 진행:

에이전트작업실패 시
Frontend Senior프론트 코드리뷰지적사항 기록 → 수정 → 수정내역 기록
Backend Senior백엔드 코드리뷰지적사항 기록 → 수정 → 수정내역 기록
Security Senior보안 점검 (OWASP Top 10, 인증/인가)해당 Senior에게 SendMessage로 수정 요청
QA Senior테스트 작성 + 실행수정 → 재실행 (최대 3회)
CTO Lead요구사항 충족률 확인< 90%: 미충족 항목 수정 → 재분석

Frontend 테스트 후 프로세스 정리 (필수)

⚠️

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 최종 요약에 포함한다.


Phase 5: 작업 요약 + 커밋

5-1: 완료 보고

모든 검증 통과 후 아래 형식으로 보고:

작업 완료!
─────────────────────────────────────────────────
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
─────────────────────────────────────────────────

5-2: 커밋 (Conventional Commits 규칙)

아래 규칙을 반드시 준수하여 커밋:

규칙

  1. 하나의 커밋 = 하나의 논리적 변경 — 여러 성격의 변경을 하나에 섞지 않음
  2. Conventional Commits 형식 사용:
    prefix용도
    feat:
    새 기능
    fix:
    버그 수정
    refactor:
    리팩토링 (동작 변경 없음)
    chore:
    빌드/설정 변경
    test:
    테스트 추가/수정
    docs:
    문서 변경
  3. 커밋 메시지 본문에 "왜" 변경했는지 반드시 포함
  4. 리팩토링과 기능 변경을 절대 같은 커밋에 섞지 않기
  5. 커밋 단위 리뷰 — 변경사항을 분석하고 논리적 단위로 분리:
    • git diff --stat
      으로 변경 파일 확인
    • 성격이 다른 변경은 별도 커밋으로 분리
    • 사용자에게 커밋 분리 계획을 보여주고 확인 받음

커밋 절차

  1. git status
    git diff --stat
    으로 전체 변경사항 파악
  2. 변경사항을 논리적 단위로 그룹핑
  3. 사용자에게 커밋 분리 계획 표시:
    커밋 분리 계획:
    1. feat: 사용자 프로필 편집 API 추가 — backend/...
    2. feat: 프로필 편집 화면 구현 — frontend/...
    3. test: 프로필 편집 테스트 추가 — backend/..., frontend/...
    
  4. 확인 후 각 커밋 실행 (각 커밋에 Co-Authored-By 포함)

커밋 메시지 예시

feat: 사용자 프로필 편집 API 추가

프로필 편집 기능의 백엔드 구현.
PUT /api/users/profile 엔드포인트를 추가하여
이름, 이메일, 프로필 이미지 수정을 지원.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Phase 6: 푸시 / 머지 결정

AskUserQuestion으로 다음 단계를 물어봄:

  • "원격에 푸시" →
    git push -u origin {feature-branch}
  • "로컬에서 {base-branch}로 머지" →
    git checkout {base-branch} && git merge {feature-branch}
    ({base-branch}는 Phase 1-5에서 선택한 기본 브랜치)
  • "아무것도 하지 않음" → 현재 상태 유지

Phase 7: 서버 종료 + 팀 해산

7-1: 서버 및 테스트 프로세스 종료

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)
  • 기타 백그라운드 프로세스 정리

7-2: 팀 해산

  1. 모든 팀원에게 SendMessage(type: "shutdown_request") 전송
  2. 모든 팀원 shutdown 확인 후 TeamDelete로 팀 리소스 정리

⚠️ Agent Teams 필수 규칙 (이 섹션은 모든 Phase에 적용)

  1. 팀 생성: Phase 2에서 TeamCreate로 반드시 팀을 먼저 생성
  2. 팀원 생성: Task 도구 사용 시
    team_name
    파라미터를 반드시 포함
  3. 에이전트 간 소통: SendMessage 도구로만 수행 (sub-agent는 상호 소통 불가)
  4. 작업 관리: TaskCreate/TaskUpdate/TaskList로 팀 공유 Task List 활용
  5. CTO Lead가 오케스트레이터: 모든 작업 할당과 결과 검증은 CTO Lead를 통해 수행
  6. sub-agent 금지: team_name 없이 Task를 실행하면 에이전트 간 소통이 불가하므로 절대 사용하지 않음