No. 16 · Agent Tooling · Claude Code Plugin

검증을 통과하기 전에는
완료를 인정하지 않습니다.

Anthropic의 코딩 모델 Fable이 보여준 검증 규율을 Claude Code 훅으로 재현했습니다. 핵심은 고정 체크리스트가 아니라 작업 위험에 맞춰 매번 새로 세우는 완료 기준이고, 훅이 기계적으로 강제하는 것은 마지막 하나입니다. 검증 증거 없이는 작업을 끝내지 못합니다. 원본은 플라잉따릉이(Agent Korea)의 Codex 플러그인입니다. 이름·스킬·워크플로를 그대로 두고 Claude Code로 포팅했습니다.

GitHub Stars★ 41
PlatformClaude Code
HooksUserPromptSubmit · PreToolUse · PostToolUse · Stop
RuntimePython 3 표준 라이브러리만
LicenseApache-2.0 + MIT
설치 GitHub ↗
01하는 일

"다 됐습니다"라고 말하기 전에
검증 절차를 거치게 합니다.

목표 설정, 근거 수집, 작업 단위 정의, 탈출 기준 설정, 구현, 검증, 반례 탐색, 기준 재조정. 이 루프는 스킬이 안내하고, 훅은 마지막 게이트만 강제합니다.

1.1

작업 분류

들어온 요청을 quick normal deep blocked로 나눠 검증 깊이를 컨텍스트로 전달합니다. 파괴적·시크릿 노출 요청은 입력 단계에서 막습니다.

1.2

위험 차단

rm -rf, 재귀 Remove-Item, git push, terraform destroy, 시크릿 출력, .env·.pem·id_rsa 편집을 실행 전에 막습니다. 배포·마이그레이션·publish는 일부러 막지 않습니다. 검증 게이트이지 배포 게이트는 아니기 때문입니다.

1.3

증거 기록

바뀐 파일, 실행한 검증 명령, 실패를 JSON 장부에 남깁니다. 바뀐 파일이 실제 검증 대상에 포함됐는지(direct·generic·uncertain)까지 추적합니다. 실패로 끝난 검증은 성공으로 적지 않습니다.

1.4

완료 게이트

코드를 바꿨는데 성공한 검증 증거가 없거나, 작업을 말로만 약속하고 끝내려 하면 종료를 막고 되돌립니다. 무한 루프 방지를 위해 최대 2회까지만 되돌립니다.

위험 차단은 정규식 휴리스틱이라 1차 방어에 해당합니다. rm -r -f 플래그 분리나 base64 파이프 eval로 우회할 수 있습니다. 우회할 수 없는 강제 차단이 필요하면 Claude Code 네이티브 permissions.deny를 함께 설정합니다. 예제가 레포에 있습니다.
02훅 4종

한 번 설치하면
자동으로 작동합니다.

역할
UserPromptSubmit요청 분류와 컨텍스트 주입. blocked는 프롬프트 자체를 막음
PreToolUse / PermissionRequestBash·PowerShell 파괴적 명령과 시크릿 파일 편집을 실행·승인 전에 deny
PostToolUse (+Failure)성공·실패 양쪽에서 바뀐 파일·검증 명령·커버리지·실패를 장부에 기록
Stop검증 없는 종료, 말로만 약속한 종료를 되돌림. 최대 2회

/fable-ish <작업>으로 직접 부르거나 "fable-ish로 끝까지 구현해"라고 말하면 스킬이 모드별 작업 루프·검증 사다리·최종 보고 형식을 안내합니다.

03설치

플러그인 명령 두 줄을 실행하고,
/hooks에서 신뢰하면 됩니다.

/plugin marketplace add chrisryugj/fable-ish /plugin install fable-ish # Claude Code 재시작 후 /hooks 를 열어 훅 정의를 검토하고 신뢰해야 게이트가 작동합니다
훅은 표준 라이브러리만 쓰는 Python 스크립트라 python3가 PATH에 있어야 합니다. Windows에서 python3가 없으면 hooks/hooks.json의 command를 바꾸면 됩니다.