# Everything Claude Code에 기여하기 기여에 관심을 가져주셔서 감사합니다! 이 저장소는 Claude Code 사용자를 위한 커뮤니티 리소스입니다. ## 목차 - [우리가 찾는 것](#우리가-찾는-것) - [빠른 시작](#빠른-시작) - [스킬 기여하기](#스킬-기여하기) - [에이전트 기여하기](#에이전트-기여하기) - [훅 기여하기](#훅-기여하기) - [커맨드 기여하기](#커맨드-기여하기) - [Pull Request 프로세스](#pull-request-프로세스) --- ## 우리가 찾는 것 ### 에이전트 특정 작업을 잘 처리하는 새로운 에이전트: - 언어별 리뷰어 (Python, Go, Rust) - 프레임워크 전문가 (Django, Rails, Laravel, Spring) - DevOps 전문가 (Kubernetes, Terraform, CI/CD) - 도메인 전문가 (ML 파이프라인, 데이터 엔지니어링, 모바일) ### 스킬 워크플로우 정의와 도메인 지식: - 언어 모범 사례 - 프레임워크 패턴 - 테스팅 전략 - 아키텍처 가이드 ### 훅 유용한 자동화: - 린팅/포매팅 훅 - 보안 검사 - 유효성 검증 훅 - 알림 훅 ### 커맨드 유용한 워크플로우를 호출하는 슬래시 커맨드: - 배포 커맨드 - 테스팅 커맨드 - 코드 생성 커맨드 --- ## 빠른 시작 ```bash # 1. 포크 및 클론 gh repo fork affaan-m/everything-claude-code --clone cd everything-claude-code # 2. 브랜치 생성 git checkout -b feat/my-contribution # 3. 기여 항목 추가 (아래 섹션 참고) # 4. 로컬 테스트 cp -r skills/my-skill ~/.claude/skills/ # 스킬의 경우 # 그런 다음 Claude Code로 테스트 # 5. PR 제출 git add . && git commit -m "feat: add my-skill" && git push -u origin feat/my-contribution ``` --- ## 스킬 기여하기 스킬은 Claude Code가 컨텍스트에 따라 로드하는 지식 모듈입니다. ### 디렉토리 구조 ``` skills/ └── your-skill-name/ └── SKILL.md ``` ### SKILL.md 템플릿 ```markdown --- name: your-skill-name description: 스킬 목록에 표시되는 간단한 설명 origin: ECC --- # 스킬 제목 이 스킬이 다루는 내용에 대한 간단한 개요. ## 핵심 개념 주요 패턴과 가이드라인 설명. ## 코드 예제 \`\`\`typescript // 실용적이고 테스트된 예제 포함 function example() { // 잘 주석 처리된 코드 } \`\`\` ## 모범 사례 - 실행 가능한 가이드라인 - 해야 할 것과 하지 말아야 할 것 - 흔한 실수 방지 ## 사용 시점 이 스킬이 적용되는 시나리오 설명. ``` ### 스킬 체크리스트 - [ ] 하나의 도메인/기술에 집중 - [ ] 실용적인 코드 예제 포함 - [ ] 500줄 미만 - [ ] 명확한 섹션 헤더 사용 - [ ] Claude Code에서 테스트 완료 ### 스킬 예시 | 스킬 | 용도 | |------|------| | `coding-standards/` | TypeScript/JavaScript 패턴 | | `frontend-patterns/` | React와 Next.js 모범 사례 | | `backend-patterns/` | API와 데이터베이스 패턴 | | `security-review/` | 보안 체크리스트 | --- ## 에이전트 기여하기 에이전트는 Task 도구를 통해 호출되는 전문 어시스턴트입니다. ### 파일 위치 ``` agents/your-agent-name.md ``` ### 에이전트 템플릿 ```markdown --- name: your-agent-name description: 이 에이전트가 하는 일과 Claude가 언제 호출해야 하는지. 구체적으로 작성! tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"] model: sonnet --- 당신은 [역할] 전문가입니다. ## 역할 - 주요 책임 - 부차적 책임 - 하지 않는 것 (경계) ## 워크플로우 ### 1단계: 이해 작업에 접근하는 방법. ### 2단계: 실행 작업을 수행하는 방법. ### 3단계: 검증 결과를 검증하는 방법. ## 출력 형식 사용자에게 반환하는 것. ## 예제 ### 예제: [시나리오] 입력: [사용자가 제공하는 것] 행동: [수행하는 것] 출력: [반환하는 것] ``` ### 에이전트 필드 | 필드 | 설명 | 옵션 | |------|------|------| | `name` | 소문자, 하이픈 연결 | `code-reviewer` | | `description` | 호출 시점 결정에 사용 | 구체적으로 작성! | | `tools` | 필요한 것만 포함 | `Read, Write, Edit, Bash, Grep, Glob, WebFetch, Task` | | `model` | 복잡도 수준 | `haiku` (단순), `sonnet` (코딩), `opus` (복잡) | ### 예시 에이전트 | 에이전트 | 용도 | |----------|------| | `tdd-guide.md` | 테스트 주도 개발 | | `code-reviewer.md` | 코드 리뷰 | | `security-reviewer.md` | 보안 점검 | | `build-error-resolver.md` | 빌드 오류 수정 | --- ## 훅 기여하기 훅은 Claude Code 이벤트에 의해 트리거되는 자동 동작입니다. ### 파일 위치 ``` hooks/hooks.json ``` ### 훅 유형 | 유형 | 트리거 시점 | 사용 사례 | |------|-----------|----------| | `PreToolUse` | 도구 실행 전 | 유효성 검증, 경고, 차단 | | `PostToolUse` | 도구 실행 후 | 포매팅, 검사, 알림 | | `SessionStart` | 세션 시작 시 | 컨텍스트 로딩 | | `Stop` | 세션 종료 시 | 정리, 감사 | ### 훅 형식 ```json { "hooks": { "PreToolUse": [ { "matcher": "tool == \"Bash\" && tool_input.command matches \"rm -rf /\"", "hooks": [ { "type": "command", "command": "echo '[Hook] BLOCKED: Dangerous command' && exit 1" } ], "description": "위험한 rm 명령 차단" } ] } } ``` ### Matcher 문법 ```javascript // 특정 도구 매칭 tool == "Bash" tool == "Edit" tool == "Write" // 입력 패턴 매칭 tool_input.command matches "npm install" tool_input.file_path matches "\\.tsx?$" // 조건 결합 tool == "Bash" && tool_input.command matches "git push" ``` ### 훅 예시 ```json // tmux 밖 dev 서버 차단 { "matcher": "tool == \"Bash\" && tool_input.command matches \"npm run dev\"", "hooks": [{"type": "command", "command": "echo '개발 서버는 tmux에서 실행하세요' && exit 1"}], "description": "dev 서버를 tmux에서 실행하도록 강제" } // TypeScript 편집 후 자동 포맷 { "matcher": "tool == \"Edit\" && tool_input.file_path matches \"\\.tsx?$\"", "hooks": [{"type": "command", "command": "npx prettier --write \"$file_path\""}], "description": "TypeScript 파일 편집 후 포맷" } // git push 전 경고 { "matcher": "tool == \"Bash\" && tool_input.command matches \"git push\"", "hooks": [{"type": "command", "command": "echo '[Hook] push 전에 변경사항을 다시 검토하세요'"}], "description": "push 전 검토 리마인더" } ``` ### 훅 체크리스트 - [ ] Matcher가 구체적 (너무 광범위하지 않게) - [ ] 명확한 오류/정보 메시지 포함 - [ ] 올바른 종료 코드 사용 (`exit 1`은 차단, `exit 0`은 허용) - [ ] 충분한 테스트 완료 - [ ] 설명 포함 --- ## 커맨드 기여하기 커맨드는 `/command-name`으로 사용자가 호출하는 액션입니다. ### 파일 위치 ``` commands/your-command.md ``` ### 커맨드 템플릿 ```markdown --- description: /help에 표시되는 간단한 설명 --- # 커맨드 이름 ## 목적 이 커맨드가 수행하는 작업. ## 사용법 \`\`\` /your-command [args] \`\`\` ## 워크플로우 1. 첫 번째 단계 2. 두 번째 단계 3. 마지막 단계 ## 출력 사용자가 받는 결과. ``` ### 커맨드 예시 | 커맨드 | 용도 | |--------|------| | `commit.md` | Git 커밋 생성 | | `code-review.md` | 코드 변경사항 리뷰 | | `tdd.md` | TDD 워크플로우 | | `e2e.md` | E2E 테스팅 | --- ## 크로스-하네스 및 번역 ### 스킬 서브셋 (Codex 및 Cursor) ECC는 다른 하네스를 위한 스킬 서브셋도 제공합니다: - **Codex:** `.agents/skills/` — `agents/openai.yaml`에 나열된 스킬이 Codex에서 로드됩니다. - **Cursor:** `.cursor/skills/` — Cursor용 스킬 서브셋이 별도로 포함됩니다. Codex 또는 Cursor에서도 제공해야 하는 **새 스킬**을 추가한다면: 1. 먼저 `skills/your-skill-name/` 아래에 일반적인 ECC 스킬로 추가합니다. 2. **Codex**에서도 제공해야 하면 `.agents/skills/`에 반영하고, 필요하면 `agents/openai.yaml`에도 참조를 추가합니다. 3. **Cursor**에서도 제공해야 하면 Cursor 레이아웃에 맞게 `.cursor/skills/` 아래에 추가합니다. 기존 디렉터리의 구조를 확인한 뒤 같은 패턴을 따르세요. 이 서브셋 동기화는 수동이므로 PR 설명에 반영 여부를 적어 두는 것이 좋습니다. ### 번역 번역 문서는 `docs/` 아래에 있습니다. 예: `docs/zh-CN`, `docs/zh-TW`, `docs/ja-JP`. 번역된 에이전트, 커맨드, 스킬을 변경한다면: - 대응하는 번역 파일도 함께 업데이트하거나 - 유지보수자/번역자가 후속 작업을 할 수 있도록 이슈를 열어 주세요. --- ## Pull Request 프로세스 ### 1. PR 제목 형식 ``` feat(skills): add rust-patterns skill feat(agents): add api-designer agent feat(hooks): add auto-format hook fix(skills): update React patterns docs: improve contributing guide ``` ### 2. PR 설명 ```markdown ## 요약 무엇을 추가했고 왜 필요한지. ## 유형 - [ ] 스킬 - [ ] 에이전트 - [ ] 훅 - [ ] 커맨드 ## 테스트 어떻게 테스트했는지. ## 체크리스트 - [ ] 형식 가이드라인 준수 - [ ] Claude Code에서 테스트 완료 - [ ] 민감한 정보 없음 (API 키, 경로) - [ ] 명확한 설명 포함 ``` ### 3. 리뷰 프로세스 1. 메인테이너가 48시간 이내에 리뷰 2. 피드백이 있으면 수정 반영 3. 승인되면 main에 머지 --- ## 가이드라인 ### 해야 할 것 - 기여를 집중적이고 모듈화되게 유지 - 명확한 설명 포함 - 제출 전 테스트 - 기존 패턴 따르기 - 의존성 문서화 ### 하지 말아야 할 것 - 민감한 데이터 포함 (API 키, 토큰, 경로) - 지나치게 복잡하거나 특수한 설정 추가 - 테스트하지 않은 기여 제출 - 기존 기능과 중복되는 것 생성 --- ## 파일 이름 규칙 - 소문자에 하이픈 사용: `python-reviewer.md` - 설명적으로 작성: `workflow.md`가 아닌 `tdd-workflow.md` - name과 파일명을 일치시키기 --- ## 질문이 있으신가요? - **이슈:** [github.com/affaan-m/everything-claude-code/issues](https://github.com/affaan-m/everything-claude-code/issues) - **X/Twitter:** [@affaanmustafa](https://x.com/affaanmustafa) --- 기여해 주셔서 감사합니다! 함께 훌륭한 리소스를 만들어 갑시다.