{"id":48986904,"url":"https://github.com/dokkabei97/hardened-claude-code","last_synced_at":"2026-04-18T13:07:02.845Z","repository":{"id":341327929,"uuid":"1161334888","full_name":"Dokkabei97/hardened-claude-code","owner":"Dokkabei97","description":"Battle-tested Claude Code commands, hooks, and skills forged from real-world enterprise operations. Built around hard-won expertise in high-traffic, large-scale data streaming environments — not another beginner-friendly productivity wrapper.","archived":false,"fork":false,"pushed_at":"2026-03-15T05:46:22.000Z","size":237,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-15T17:03:09.432Z","etag":null,"topics":["anthropic","claude","claude-code","enterprise","productivity"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dokkabei97.png","metadata":{"files":{"readme":"README-KR.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-19T01:45:37.000Z","updated_at":"2026-03-15T05:46:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Dokkabei97/hardened-claude-code","commit_stats":null,"previous_names":["dokkabei97/hardened-claude-code"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Dokkabei97/hardened-claude-code","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dokkabei97%2Fhardened-claude-code","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dokkabei97%2Fhardened-claude-code/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dokkabei97%2Fhardened-claude-code/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dokkabei97%2Fhardened-claude-code/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dokkabei97","download_url":"https://codeload.github.com/Dokkabei97/hardened-claude-code/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dokkabei97%2Fhardened-claude-code/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31969835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic","claude","claude-code","enterprise","productivity"],"created_at":"2026-04-18T13:07:01.978Z","updated_at":"2026-04-18T13:07:02.838Z","avatar_url":"https://github.com/Dokkabei97.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hardened Claude Code\n\n실전 엔터프라이즈 환경에서 단련된 Claude Code 설정.\n\n[English](README.md)\n\n---\n\n## 왜 만들었나\n\n대부분의 Claude Code 설정은 생산성 위주의 설정입니다. 이 설정은 **엔터프라이즈 프로덕션 환경** - 대용량 트래픽 시스템, 대규모 데이터 스트리밍 파이프라인, 잘못된 에이전트 설정 하나가 실제 장애로 이어지는 인프라에서 만들어졌습니다.\n\n이런 환경에서 수년간 개발하면서, 다음과 같은 Claude Code 설정이 필요했습니다:\n\n- **실수를 사전에 차단** - 위험한 명령어를 블록하고, 포맷팅을 강제하고, 컴파일 오류를 실시간으로 검증하는 훅\n- **멀티 스택 지원** - Kotlin/Spring Boot, TypeScript/Next.js, Python/FastAPI를 하나의 워크플로우에서\n- **AI 생산성과 개발자 성장의 균형** - 모든 사고를 AI에 위임하면 엔지니어로서 퇴화하니까\n\n## 영감을 준 것들\n\n이 프로젝트는 여러 소스에서 영감을 받았습니다:\n\n- **[Advent of Claude 2025](https://adocomplete.com/advent-of-claude-2025/)** - Ado Kukic의 31일간 Claude Code 베스트 프랙티스 가이드. 훅, 서브에이전트, 세션 관리, 그리고 인간-AI 협업 철학에 대한 실용적인 팁\n- **[Everything Claude Code](https://github.com/affaan-m/everything-claude-code)** - Anthropic 해커톤 우승 설정. 에이전트, 스킬, 커맨드를 대규모로 활용하는 것이 어떤 것인지 보여줌\n- **Boris Cherny의 팁** - Anthropic의 Claude Code 팀 개발자인 Boris Cherny가 공유한 실용적인 Claude Code 팁\n- **시니어 개발자 피드백** - 실무 코드 리뷰 피드백이 아키텍처 리뷰와 성능 리뷰 워크플로우의 형태를 만듦\n\n결과물은 의견이 뚜렷하고 실전에서 검증된 설정입니다. 범용 스타터 킷이 아닙니다.\n\n---\n\n## 구성 요소\n\n```\nhardened-claude-code/\n├── .claude-plugin/      # 플러그인 매니페스트\n│   └── plugin.json\n├── .mcp.json            # MCP 서버 설정 (Playwright)\n├── .lsp.json            # LSP 서버 설정 (TypeScript, Kotlin, Java, Python, Go)\n├── agents/              # 4개 전문 리뷰 에이전트\n├── commands/            # 9개 슬래시 커맨드\n├── skills/              # 11개 지식 기반 스킬 모듈\n├── hooks/               # Pre/Post 도구 훅 (안전성 + 품질)\n├── scripts/             # 훅 지원 스크립트 (위험 명령어 차단기)\n└── output-styles/       # Learning Plus - 교육형 출력 스타일\n```\n\n### 에이전트\n\n집중적인 분석 작업을 수행하는 자율 전문가.\n\n| 에이전트 | 역할 |\n|---------|------|\n| `arch-reviewer` | 아키텍처 적합성, 의존성 방향, 레이어 위반 분석 |\n| `perf-reviewer` | Kotlin, Python, TypeScript 성능 안티패턴 탐지 |\n| `e2e-runner` | Playwright E2E 테스트 생성, 실행, 아티팩트 캡처 |\n| `tdd-guide` | 테스트 주도 개발 강제 (RED-GREEN-REFACTOR) |\n\n### 커맨드\n\n멀티 스텝 워크플로우를 조율하는 슬래시 커맨드.\n\n| 커맨드 | 역할 |\n|--------|------|\n| `/analyze` | 종합 코드 분석 + AI 협업 옵션 (Gemini/Copilot/Codex) |\n| `/arch-review` | 아키텍처 리뷰 + 건강 점수 (0-100) |\n| `/perf-review` | 성능 코드 리뷰 + 안티패턴 탐지 |\n| `/tdd` | TDD 워크플로우 강제 + 80%+ 커버리지 목표 |\n| `/e2e` | E2E 테스트 생성 및 실행 |\n| `/create-flow` | 에이전트, 커맨드, 스킬, 훅의 인터랙티브 스캐폴딩 |\n| `/verify-flow` | 컴포넌트 컨벤션 검증 |\n| `/handoff` | HANDOFF.md를 통한 세션 컨텍스트 전달 |\n| `/obsidian` | 기술 학습 노트 생성 (7종 템플릿) |\n\n### 스킬\n\n상황에 맞게 활성화되는 지식 모듈.\n\n| 스킬 | 역할 |\n|------|------|\n| `arch-review-guide` | 아키텍처 위반 탐지 빠른 참조 |\n| `perf-review-guide` | 성능 안티패턴 체크리스트 |\n| `tdd-workflow` | Kotlin + TypeScript TDD 방법론 |\n| `flow-scaffolding` | 플러그인 컴포넌트 생성 템플릿 |\n| `flow-validation` | 컴포넌트 품질 검증 규칙 |\n| `sync-claude-md` | 코드 변경 후 CLAUDE.md 업데이트 필요 여부 자동 감지 |\n| `claude-md-inverted-index` | CLAUDE.md 역색인 전략 — AI 에이전트 도구 호출 42-68% 절감 |\n| `obsidian-tech-note` | Obsidian 노트 템플릿 (개념, 실습, 비교, 트러블슈팅, 패턴, TIL, MOC) |\n| `document` | 키워드 기반 자동 감지 템플릿으로 체계적인 문서 생성 (계획서, 보고서, 분석서) |\n| `web-fetch` | Claude WebFetch 실패 시 Gemini CLI를 통한 웹 페이지 콘텐츠 가져오기 |\n| `with` | 외부 AI CLI 에이전트 오케스트레이션 (Codex, Gemini, Copilot) + 복잡도 기반 라우팅 |\n\n### 훅\n\n진짜 하드닝은 훅 시스템에서 이루어집니다. 모든 도구 사용 시 자동으로 실행됩니다.\n\n**PreToolUse:**\n- **위험 명령어 차단기** - 4단계 보안 시스템으로 위험한 Bash 명령을 차단하거나 승인을 요청:\n\n  | 레벨 | 동작 | 예시 |\n  |------|------|------|\n  | L1 치명적 | 차단 (deny) | `rm -rf /`, fork bomb, `mkfs`, `shutdown` |\n  | L2 핵심 경로 | 차단 (deny) | `rm .git/`, `rm .env`, `package.json` 수정 |\n  | L3 위험 | 사용자 승인 | `git push --force`, `git reset --hard`, `sudo`, `curl \\| sh` |\n  | L4 의심 | 사용자 승인 | `rm *.log`, `find -delete`, `kill -9` |\n\n- tmux 외부에서 dev 서버 실행 차단 (고아 프로세스 방지)\n- 장시간 명령어에 대한 tmux 사용 리마인더\n- `git push` 전 리뷰 리마인더\n- 불필요한 문서 파일 생성 차단\n\n**PostToolUse:**\n- 편집 후 Prettier로 JS/TS 자동 포맷팅\n- 편집 후 ktlint로 Kotlin 자동 포맷팅\n- `.ts/.tsx` 편집 후 TypeScript 타입 체크\n- `.kt/.kts` 편집 후 Kotlin 컴파일 체크\n- `.py` 편집 후 Python 구문 체크\n- 코드에 남은 `console.log` / `println()` / `print()` 경고\n- PR/MR 생성 후 URL 로깅 (GitHub + GitLab)\n- 비동기 빌드 분석 훅\n\n### 출력 스타일: Learning Plus\n\n이 설정에서 가장 의도적으로 만든 부분입니다.\n\n문제: **AI 에이전트에 과도하게 의존하면 단기 생산성은 올라가지만 엔지니어링 실력은 퇴화합니다.** AI가 모든 것을 처리하니까 설계 결정, 에러 핸들링 전략, 알고리즘 선택에 대해 생각하지 않게 됩니다.\n\nLearning Plus는 모든 코드를 **보일러플레이트** 또는 **핵심 로직**으로 분류합니다:\n\n- **보일러플레이트** (DTO, 설정, CRUD, import) → 간결한 인사이트와 함께 즉시 자동 완성\n- **핵심 로직** (비즈니스 규칙, 알고리즘, 에러 전략, 보안) → 가이드된 컨텍스트와 함께 직접 작성\n\n\"함께 만들기\" 포맷은 맥락을 제공하고, 정확한 위치를 알려주고, 트레이드오프를 설명합니다 - 하지만 결정과 코드 작성은 당신이 합니다. 기계적인 부분에서는 빠르게 진행하면서도 핵심 역량은 유지할 수 있습니다.\n\n### MCP 서버\n\n`.mcp.json`을 통한 사전 구성된 MCP 서버 연결:\n\n| 서버 | 역할 |\n|------|------|\n| Playwright | E2E 테스트를 위한 브라우저 자동화 |\n\n\u003e **참고:** Context7과 Serena는 별도 플러그인으로 사용을 권장합니다. All Agents MCP 기능은 `with` 스킬로 대체되었습니다.\n\n### LSP 서버\n\n`.lsp.json`을 통한 사전 구성된 LSP 서버 연결 (코드 인텔리전스 강화):\n\n| 언어 | 서버 |\n|------|------|\n| TypeScript/JavaScript | `typescript-language-server` |\n| Kotlin | `kotlin-language-server` |\n| Java | `jdtls` |\n| Python | `pyright-langserver` |\n| Go | `gopls` |\n\n---\n\n## 설치\n\n### 플러그인으로 설치 (권장)\n\n```bash\n# 1. 마켓플레이스 추가 (Dokkabei97의 모든 플러그인 포함)\n/plugin marketplace add Dokkabei97/claude-plugins\n\n# 2. 플러그인 설치\n/plugin install hardened-claude-code\n```\n\n\u003e 플러그인 저장소를 직접 추가할 수도 있습니다: `/plugin marketplace add Dokkabei97/hardened-claude-code`\n\n끝입니다. 모든 에이전트, 커맨드, 스킬, 훅, 출력 스타일이 자동으로 사용 가능합니다.\n\n### 로컬 개발\n\n설치 전 로컬에서 테스트:\n```bash\ngit clone https://github.com/Dokkabei97/hardened-claude-code.git\nclaude --plugin-dir ./hardened-claude-code\n```\n\n\u003e **참고:** 일부 훅은 프로젝트에 설치되어 있어야 하는 특정 도구(Prettier, ktlint, gradlew)를 참조합니다.\n\n---\n\n## 커스터마이즈\n\n이 설정은 의도적으로 주관적입니다. 필요에 맞게 조정하세요:\n\n- **불필요한 훅 제거** - Kotlin을 사용하지 않으면 ktlint/gradle 훅을 제거\n- **Learning Plus 스타일 조정** - 성장하고 싶은 영역에 따라 보일러플레이트와 핵심 로직 카테고리를 이동\n- **자신만의 커맨드 추가** - `/create-flow`로 컨벤션을 따르는 새 컴포넌트를 스캐폴딩\n- **변경사항 검증** - `/verify-flow`로 컴포넌트를 프로젝트 표준에 맞게 점검\n\n---\n\n## 철학\n\n이 설정을 이끄는 세 가지 원칙:\n\n1. **기본값은 안전** - 훅이 일반적인 실수를 자동으로 잡습니다. 코드 포맷팅이나 디버그 구문 푸시 방지를 기억할 필요가 없어야 합니다.\n\n2. **멀티 스택 지원** - 엔터프라이즈 환경에서 단일 언어만 사용하는 경우는 드뭅니다. 모든 에이전트, 스킬, 훅이 Kotlin, TypeScript, Python 워크플로우를 지원합니다.\n\n3. **배우면서 배포하기** - Learning Plus 출력 스타일이 존재하는 이유는, 최고의 엔지니어는 코드가 *동작한다는 것*만이 아니라 *왜 동작하는지*를 이해하기 때문입니다. AI는 당신의 실력을 대체하는 것이 아니라 증폭시켜야 합니다.\n\n---\n\n## 기여하기\n\n새로운 훅, 에이전트, 커맨드, 버그 수정 등 모든 기여를 환영합니다!\n\n### 시작하기\n\n```bash\n# Fork 후 클론\ngit clone https://github.com/\u003cyour-username\u003e/hardened-claude-code.git\ncd hardened-claude-code\n\n# 로컬 테스트\nclaude --plugin-dir .\n```\n\n### 컴포넌트 추가\n\n프로젝트 컨벤션을 따르는 스캐폴딩 도구를 활용하세요:\n\n```bash\n# 새 에이전트, 커맨드, 스킬, 훅 생성\nclaude /create-flow\n\n# 컴포넌트 검증\nclaude /verify-flow\n```\n\n### 프로젝트 구조\n\n| 디렉토리 | 용도 |\n|----------|------|\n| `agents/` | 자율 리뷰/분석 에이전트 (`.md`) |\n| `commands/` | 멀티 스텝 워크플로우 슬래시 커맨드 (`.md`) |\n| `skills/` | 상황별 지식 모듈 (`SKILL.md` + 참조 파일) |\n| `hooks/` | Pre/Post 도구 훅 (`hooks.json` - 인라인만) |\n| `output-styles/` | 출력 스타일 정의 (`.md`) |\n| `.mcp.json` | MCP 서버 설정 (루트 레벨) |\n| `.lsp.json` | LSP 서버 설정 (루트 레벨) |\n\n### 가이드라인\n\n- **훅은 가능하면 인라인** - 간단한 훅은 `node -e \"...\"` 사용. 복잡한 훅(위험 명령어 차단기 등)은 `scripts/`의 외부 스크립트 사용 가능.\n- **멀티 스택 지원** - 새 에이전트, 커맨드, 훅은 가능한 Kotlin, TypeScript, Python을 모두 지원.\n- **제출 전 테스트** - `claude --plugin-dir .`로 변경사항이 올바르게 동작하는지 확인.\n- **하나의 역할에 집중** - 각 컴포넌트는 하나의 일을 잘 수행해야 합니다. 관련 없는 기능 결합 지양.\n\n### PR 프로세스\n\n1. `main`에서 feature 브랜치 생성\n2. `/create-flow`로 컴포넌트 추가\n3. `/verify-flow`로 검증\n4. `claude --plugin-dir .`로 로컬 테스트\n5. 컴포넌트의 역할과 필요성을 명확히 설명하는 PR 제출\n\n---\n\n## 라이선스\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdokkabei97%2Fhardened-claude-code","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdokkabei97%2Fhardened-claude-code","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdokkabei97%2Fhardened-claude-code/lists"}