cc-guard
Claude Code๋ฅผ ์์ ํ๊ฒ ๋ง๋๋ ์์ปค๋งจ๋ ๋๊ตฌ. 772๊ฐ์ example hook ยท 71๊ฑด ์ด์์ Anthropic ๊ณต์ Issue์ ๋์ ยท 9,228+ ํ
์คํธ ยท
npx @gaebalai/cc-guard
10์ด ๋ง์ 8๊ฐ์ ์์ hook์ ์ค์นํ๋ค. rm -rf / ์ฐจ๋จ, main ๋ธ๋์น push ๋ฐฉ์ง, ์ํฌ๋ฆฟ ์ ์ถ ๊ฐ์ง, ๊ตฌ๋ฌธ ์ค๋ฅ ์๋ ๊ฒ์ถ. ์์กด์ฑ ์ ๋ก.
hook์ด๋? Claude Code๊ฐ ๋ช
๋ น์ ์คํํ๊ธฐ ์ ์ ๋ด์ฉ์ ๊ฒ์ฌํ๊ณ ์ํํ๋ฉด ์ค๋จ์ํค๋ ๊ตฌ์กฐ. ๊ณตํญ์ ๋ณด์ ๊ฒ์๋์ ๊ฐ๋ค โ ํ์น๊ตฌ(๋ช
๋ น ์คํ) ์์ ์ฒดํฌํฌ์ธํธ(hook)๊ฐ ์์ด, ์ํ๋ฌผ(rm -rf ๋ฑ)์ ์์งํ๊ณ ์์ผ๋ฉด ํต๊ณผ์ํค์ง ์๋๋ค.
๊ธฐ๋ฅ
| ๋ช
๋ น | ๊ธฐ๋ฅ |
|---|
npx @gaebalai/cc-guard | 8๊ฐ์ ์์ hook ์ค์น |
--shield | ์ต๋ ์์ (stack ๊ฐ์ง + ๊ถ์ฅ hook ์๋ ์ ํ) |
--install-example <name> | 772๊ฐ์ example ์ค ๊ฐ๋ณ ์ค์น |
--examples | ๋ชจ๋ example ์ผ๋ ํ์ |
--create "์ค๋ช
" | ์์ฐ์ด๋ก ์ปค์คํ
hook ์์ฑ |
--verify | ๊ฐ hook์ ๋์ ํ์ธ |
--audit | ์์ ์ค์ฝ์ด(0-100) |
--doctor | ๋์ํ์ง ์๋ ์์ธ ์ง๋จ |
--dashboard | ์ฐจ๋จ ํต๊ณ ๋์๋ณด๋ |
--stats | ์ฐจ๋จ ํต๊ณ ๋ฆฌํฌํธ |
--lint | ์ค์ ์ ์ ์ ๋ถ์ |
--benchmark | hook ์คํ ์๋ ์ธก์ |
--diff <file> | ์ค์ ๋น๊ต |
--watch | ์ฐจ๋จ๋ ๋ช
๋ น์ ์ค์๊ฐ์ผ๋ก ํ์ |
--export / --import | ํ์์ ์ค์ ๊ณต์ |
--team | ํ๋ก์ ํธ์ ์ปค๋ฐํด ๊ณต์ |
56๊ฐ์ CLI ๋ช
๋ น ์ ์ฒด ๋ฆฌ์คํธ: npx @gaebalai/cc-guard --help
์ค์น
npx @gaebalai/cc-guard
Claude Code ์ฌ์์. ์๋ฃ.
์ฐจ๋จ๋๋ ๋์
| ๋์ | Before | After |
|---|
rm -rf / | ์คํ๋จ | ์ฐจ๋จ |
git push --force | ์คํ๋จ | ์ฐจ๋จ |
git push origin main | ์คํ๋จ | ์ฐจ๋จ |
git add .env | ์คํ๋จ | ์ฐจ๋จ |
cat ~/.netrc | ํ ํฐ ํ์ | ์ฐจ๋จ |
| Python ๊ตฌ๋ฌธ ์ค๋ฅ | ์์์ฐจ๋ฆฌ์ง ๋ชปํจ | ์๋ ๊ฐ์ง |
| ์ปจํ
์คํธ ๊ณ ๊ฐ | ๊ฐ์์ค๋ฌ์ด ์ข
๋ฃ | ๋จ๊ณ์ ๊ฒฝ๊ณ |
| CLAUDE.md ๊ท์น ์์ค | ์์ถ ํ ๋ฌด์ | ์๋ ์ฌ์ฃผ์
|
| ์๋ธ์์ด์ ํธ์ ์ง์ ๋ฌด์ | v2.1.84 ์ดํ CLAUDE.md ์ ์ธ (#40459) | hook์ผ๋ก ์ ์ฝ |
| ์ฝ์ง ์๊ณ ํธ์ง | 6%โ34%๋ก ์ฆ๊ฐ (#42796) | ๊ฒฝ๊ณ |
๐ token ์๋น๊ฐ ๋๋ฌด ๋ง์๊ฐ? Token Checkup ๋ฌด๋ฃ ์ง๋จ ๋๊ตฌ๋ก 30์ด ๋ง์ ์์ ์ ์๋น ํจํด์ ํ์ธํ ์ ์๋ค. CLAUDE.md ์ต์ ํ ยท hook์ ํตํ token ์ ์ด ยท ์ปจํ
์คํธ ๊ด๋ฆฌ ยท ์ํฌํ๋ก ์ค๊ณ ๊ฐ์ด๋๋ COOKBOOK๊ณผ hook ์์ ๋ฅผ ์ฐธ๊ณ ํ๋ค.
์๋ ค์ง ์ ์ฝ:
FileChanged ์๋ฆผ์ ํ์ผ ๋ด์ฉ์ hook์ ์ด์ ์ ์ปจํ
์คํธ๋ก ์ฃผ์
ํ๋ค. session ์ค์ .env๋ credentials.json์ด ์ธ๋ถ์์ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ hook์ผ๋ก ์ฐจ๋จํ ์ ์๋ค(#44909). ๋์ฑ
: dotenv-watch๋ก ๊ฒฝ๊ณ ๋ฅผ ์์ ํ๊ณ , Claude Code ์คํ ์ค์๋ ๊ธฐ๋ฐ ํ์ผ์ ํธ์งํ์ง ์๋๋ค.
Session ๋ณดํธ hook
session์ ์์์ด๋ token ๋ญ๋น๋ฅผ ๋ฐฉ์งํ๋ hook.
| hook | ํด๊ฒฐํ๋ ๋ฌธ์ | Issue |
|---|
cch-cache-guard | session ํ์ผ ์ฝ๊ธฐ๋ก ์ธํ cache ์ค์ผ ์ฐจ๋จ | #40652 |
image-file-validator | ๊ฐ์ง ์ด๋ฏธ์ง ํ์ผ(ํ
์คํธ์ .png) ์ฝ๊ธฐ ์ฐจ๋จ | #24387 |
large-read-guard | ํฐ ํ์ผ์ cat์ ์ํ ์ปจํ
์คํธ ๋ญ๋น ๊ฒฝ๊ณ | #41617 |
prompt-usage-logger | ๋ชจ๋ prompt๋ฅผ ๋ก๊น
ํด token ์๋น ํจํด ์ถ์ | #41249 |
compact-alert-notification | auto-compaction ๋ฐํ ์๋ฆผ(token ๋ญ๋น ์ฌ์ดํด ๊ฐ์ง) | #41788 |
token-budget-guard | session ๋น์ฉ ์ํ ์ด๊ณผ ์ tool ํธ์ถ ์ฐจ๋จ | #38335 |
session-index-repair | ์ข
๋ฃ ์ sessions-index.json ์ฌ๊ตฌ์ถ(--resume๋ก session ์์ค ๋ฐฉ์ง) | #25032 |
session-backup-on-start | ์์ ์ session JSONL ๋ฐฑ์
(์์์ ์ญ์ ๋ก๋ถํฐ ๋ณดํธ) | #41874 |
working-directory-fence | CWD ๋ฐ์ Read/Edit/Write ์ฐจ๋จ(๋ค๋ฅธ ํ๋ก์ ํธ์์์ ์ค์์
๋ฐฉ์ง) | #41850 |
pre-compact-transcript-backup | compaction ์ ์ JSONL ์ ์ฒด ๋ฐฑ์
(rate limit ์ ๋ฐ์ดํฐ ์์ค ๋ฐฉ์ง) | #40352 |
read-before-edit | ์ฝ์ง ์๊ณ ํธ์งํ๋ ํจํด์ ๊ฐ์งํด ๊ฒฝ๊ณ (Read:Edit ๋น์จ์ด 70% ์ ํ โ #42796) | #42796 |
subagent-error-detector | ์๋ธ์์ด์ ํธ์ 529/502/timeout ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์งํด ๊ฒฝ๊ณ | #41911 |
subagent-identity-leak-guard | ์์ ์์ด์ ํธ๊ฐ ๋ถ๋ชจ์ ์ ๋ถ์ ์ฌ์นญํ๊ฑฐ๋ ๋ถ๋ชจ์ ๋ํ ์ด๋ ฅ์ ๋์คํ๋ ๊ฒ์ ์๋ฐฉ(delegation prompt์ ์ ๋ถ ๊ฒฝ๊ณ ๊ฒ์ฌ) | #55488 |
subagent-tool-allowlist-enforcer | ์์ ์์ด์ ํธ์ ๋๊ตฌ ๊ฒฝ๊ณ๋ฅผ delegation prompt๋ก ๋ช
์ํ๊ณ , ๋ถ๋ชจ์ ๊ฒ์ฆ ์ ์ฐจ๋ฅผ ์ ๋(ํ์ ๋ณด๊ณ ์๋ฐฉ) | #55653 |
subagent-spawn-verification-enforcer | ์์ ์์ด์ ํธ์ spawn ์๋ต์ด ํ์๊ฐ ์๋์ง ์ฐ์ถ๋ฌผ์ ๊ฒ์ฆ ์ ์ฐจ๋ก ์๋ฐฉ | #55666 |
subagent-destructive-git-guard | ์์ ์์ด์ ํธ์ delegation prompt์์ destructiveํ git ๋ช
๋ น์ ๊ธ์ง์ ์์ ํ ๋์ฒด(git stash) ๋ฐ working tree ์ํ ํ์ธ ์ง์๊ฐ ๋ช
์๋์ด ์๋์ง ๊ฒ์ฌ(4/25-5/8์ 3๊ฑด์ ๋ํ data-loss ์๋ฐฉ) | #57463 / #46444 / #53765 |