추측하기 전에,
묻습니다.

"만들어줘" 한마디에 엉뚱한 걸 만들어 오고, "다 됐어요"는 믿기 어렵고. cat-harness는 그 습관을 끊는 Claude Code 하네스입니다 — 모호하면 묻고, 계획은 심사받고, 완료는 증거로 증명합니다. 설정 없이, 슬래시 명령 없이.

/plugin marketplace add chussum/cat-harness
30초 인터뷰 받아보기

마스코트 쿼리(Query)는 모호도가 5% 아래로 내려올 때까지 움직이지 않습니다

이런 적 있죠

분명히 설명했는데, 이미 엉뚱한 코드를 쓰고 있다
모호하면 코드보다 질문이 먼저 나옵니다
다 됐습니다 — 실행해 보면 안 돌아간다
증거 파일 없이는 완료로 인정되지 않습니다
시안은 44px인데 구현은 38px, 눈으론 못 잡는다
Figma 수치와 computed style을 기계가 대조합니다

Philosophy

네 가지 약속

묻기 전엔
만들지 않습니다
Interview before guessing
계획 없이
바꾸지 않습니다
Plan before mutation
증거 없이
끝내지 않습니다
Execute with evidence
필요할 때만
병렬화합니다
Parallelize when useful

How it works

모호한 한 줄이
검증된 결과가 되기까지

"만들어줘"라고 쓰는 순간 라우터가 요청을 분류합니다. 각 단계는 게이트를 통과해야만 다음으로 넘어갑니다.

Interactive

쿼리에게 인터뷰를 받아보세요

deep-interview의 실제 채점 방식 그대로 — 답할수록 모호도가 내려가지만, 앞서 한 말과 충돌하면 올라갑니다.

100%
Ambiguity
floor 10% 잠김 — disputed fact

specs/deep-interview-dark-mode.md 생성됨 · status: pending-approval
스펙은 승인 전까지 절대 실행되지 않습니다. 다음 단계: ralplan(권장) / ultragoal / team

어디로 튈지 모르는 고양이를 위한,
하네스.

그래서 이름이 cat-harness입니다.

Design QA

Figma 링크 하나면,
디자인까지 검증합니다

픽셀 차이를 눈으로 잡는 시대는 끝났습니다. 시안의 숫자와 구현의 computed style을 기계가 대조하고, 어긋나면 완료를 막습니다.

  • Figma 노드에서 기대 수치 추출 — 배지·라벨까지 크기 있는 노드는 전부, 샘플링 없이
  • 디자인 브레이크포인트 그대로 Playwright 캡처 (1:1 원칙)
  • 두 숫자 규칙 — 시안 수치와 실측 computed style이 둘 다 있어야 갭으로 인정하고 심각도를 매깁니다
  • Critical/Major 갭은 완료를 차단 — 픽셀 몇 개도 Major는 Major
  • 겹쳐서(overlay) 재고 → 코드 고치고 → 다시 캡처, 일치할 때까지 — 갭을 '보고'만 하지 않고 실제로 맞춥니다 (design-qa 스킬)
  • 따로 부를 필요도 없습니다 — Figma 링크가 있으면 ultragoal 실행이 끝난 직후 design-qa 픽셀 맞춤 루프가 자동으로 이어집니다

디자이너의 "시안이랑 조금 달라요" 코멘트 — 받기 전에 잡으세요.

Figma · 기대
구현 · 실측
height 44 ≠ 38 · Major

Agents

역할은 넷이면 충분합니다

비싼 에이전트 하나에게 전부 맡기는 대신, 읽기 전용 셋이 검토하고 쓰는 건 하나뿐입니다.

planner

read-only

증거에 기반한 계획 초안과 RALPLAN-DR 심의 요약을 작성합니다. 본문 대신 영수증만 반환합니다.

PrinciplesOptions ≥2Pre-mortem

architect

read-only

아키텍처·코드 양면에서 계획과 결과를 리뷰합니다. 근거 없는 승인은 없습니다.

CLEARWATCHBLOCKAPPROVE

critic

read-only

실행자가 추측 없이 따라갈 수 있는 계획인지만 봅니다. 테스트 가능성, 순서, 롤백.

OKAYITERATEREJECT

executor

유일한 write 권한

승인된 계획만 구현합니다. 작고 되돌릴 수 있는 diff, 모든 주장엔 증거를 붙입니다.

small diffsreceipts

Code graph

계획하기 전에,
코드의 호출 관계부터 읽습니다

네 워크플로 모두 저장소의 코드 그래프(호출 관계 지도 — 어떤 함수가 무엇을 부르는지)를 씁니다. 인터뷰는 기존 코드 맥락을 잡고, 계획·실행 담당은 바꾸려는 파일이 어디까지 번지는지 — 변경 파급 범위(blast-radius) — 를 받습니다. Node 18+만 있으면 되고, 따로 설치할 것은 없습니다.

  • JS·TS·TSX를 파싱해 호출 관계 지도를 만듭니다 — 서버도 네트워크도 없이 저장소 안에서 (web-tree-sitter + sql.js, 둘 다 동봉)
  • planner와 executor에게만 변경 파급 범위 힌트를 전달합니다 — 무엇을 건드리면 어디가 흔들리는지
  • 지도는 워크플로가 알아서 새로고침합니다 — 처음엔 전체 빌드, 이후엔 바뀐 파일만
검토관(architect·critic)에게는 미리 만든 지도를 '건네주지' 않습니다. 같은 힌트를 양쪽에 주면 두 검토가 서로 닮아버리거든요. 대신 검토관은 필요할 때 직접 그래프를 조회합니다 — grep으로 같은 코드를 보는 것과 같아, 합의 게이트가 지키려는 '독립적인 눈'은 그대로 유지됩니다.

Evidence

완료는 주장이 아니라
영수증입니다

목표를 "끝났다"고 말하려면 CLI가 품질 게이트를 통과시켜야 합니다. 아키텍트 승인, QA 통과, 실물 증거 파일 — 하나라도 없으면 거부됩니다.

$ node cat-state.mjs goal checkpoint --goal G001 --status complete --quality-gate-json gate.json

# fail-closed validation…
architect_review.verdicts   { architecture: CLEAR, product: CLEAR, code: CLEAR } → APPROVE
qa.status                   passed · commands 4 · artifacts 3 (PNG ✓ ≥4096B ✓)
design-qa                   Critical 0 · Major 0 · figma export ↔ impl screenshot

# receipt minted
plan_generation_sha256      9f4e2c81…d07a
ledger_event_id             a1b2c3d4-… (anchored)
verified_at                 2026-07-17T07:42:11Z

G001 ✓ complete이후 goals.json이 1바이트라도 바뀌면 receipt verify가 실패합니다

스크린샷은 파일 크기와 PNG 매직 바이트까지 검사합니다. Figma 링크가 있으면 디자인 검증 레인이 붙어 computed-style을 수치로 대조합니다.

Install

1분이면 충분합니다

Node.js 18+가 전부입니다. 계정도, 설정 파일도 없습니다. 설치 후엔 평소처럼 요청하세요 — 라우터가 알아서 태웁니다.

/plugin marketplace add chussum/cat-harness
/plugin install cat@cat-harness
/reload-plugins

급할 땐 ! 또는 force: 접두사로 그 턴만 게이트를 건너뛸 수 있습니다. 수동 진입: /cat:interview · :plan · :execute · :team · :design-qa