Mandu MCP Verify

SkillFiles & storage

Post-edit verification loop. Runs automatically right after file edits — triggered by "check 해줘" or the stop-hook. Runs ate_auto_pipeline + guard_check + doctor in parallel. Do not manually break it down into individual ate_* tools — drill down only if it fails.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Mandu MCP Verify skill

What this skill tells your AI

The instructions your AI receives, as published by konamgil/mandu in docs/archive/skills/package-v0/mandu-mcp-verify/SKILL.md and read by ahel’s review.

편집 직후 / 생성 직후 / pre-commit 에서 도는 표준 검증 루프. 핵심은 "하나의 ate 파이프라인 + guard + 구조 진단" 을 병렬 fast path 로 먼저 돌리고, 실패했을 때만 세분 도구로 drill-down 하는 것.

Trigger

  • 파일 편집 직후 (특히 app/, spec/, src/shared/contracts/)
  • mandu_generate 완료 직후 (create-flow 가 자동 전이)
  • "check 해줘", "제대로 된 거야?", "괜찮아?"
  • stop-hook / pre-commit 자동 실행
  • 사용자가 명시적으로 "verify", "validate", "검증"

Fast Path (병렬, 기본값)

네 도구는 서로 독립. 병렬 호출.

┌─────────────────────────────┐
│ mandu.ate.auto_pipeline     │  ← Tier-0: extract/generate/run/heal 전부
├─────────────────────────────┤
│ mandu_guard_check           │  ← Tier-1: 아키텍처 규칙 위반 스캔
├─────────────────────────────┤
│ mandu.lint                  │  ← 가드레일-lint: 코드 품질 스캔 (oxlint)
├─────────────────────────────┤
│ mandu_doctor                │  ← Tier-0: 구조/import/location 진단
└─────────────────────────────┘
       네 개를 parallel 호출

인자 예:

mandu.ate.auto_pipeline({
  repoRoot: ".",
  oracleLevel: "standard",
  useImpactAnalysis: true,    // 변경된 라우트만 대상
  autoHeal: false              // heal 은 별도 단계
})

mandu_guard_check({ repoRoot: "." })

mandu.lint({ typeAware: false })   // oxlint 미설치 시 조용히 skip

mandu_doctor({ repoRoot: "." })

네 응답을 수집하고 pass/fail 매트릭스를 만든다:

도구passfail 의 의미
ate.auto_pipeline테스트 통과 + 계약 일치테스트 실패 또는 impact 드리프트
guard_check레이어/금지 import 위반 없음아키텍처 규칙 위반
lintoxlint error 0error 1+ (warning 은 informational)
doctor파일 위치 / import 정상구조 결함

네 개 모두 green → verify 종료. 사용자에게 압축 요약 제시.

Drill-Down (실패 시에만)

fast path 가 빨간 항목을 돌려주면 그 카테고리별로만 drill-down. 세 종류가 다 실패했다고 모든 drill-down 을 돌리지 말고, 응답에 들어온 카테고리만.

Guard 실패

mandu_guard_explain({ violationId })    ← 먼저: 왜 위반인지 설명
  → (자동 수정 가능하면) mandu_guard_heal({ autofix: true, violationIds: [...] })
  → (수동 수정이면) 사용자에게 수정 지시 후 fast path 재실행

ATE 실패 (테스트 실패 / 힐 후보 있음)

mandu.ate.feedback({ runId })           ← 힐 후보의 카테고리/우선순위
  → mandu.ate.apply_heal({ runId, healIndex, createBackup: true })
  → fast path 의 ate.auto_pipeline 재실행

중요: mandu.ate.heal + mandu.ate.apply_heal 을 수동으로 엮지 않는다. ate.auto_pipeline 이 이미 heal 후보를 계산했고, 우리는 적용 여부만 결정.

Lint 실패 (oxlint error 1+)

mandu.lint({ typeAware: false })    ← 이미 fast path 에서 뜬 상태
  → 반환 payload 의 error 목록에서 rule id 확인
  → site-level 수정 (절대 전역 off 로 회피 금지 — `mandu-lint` §AP-1)
  → fast path 재실행

oxlint 가 설치되어 있지 않으면 fast path 의 lint 응답은 installed: false 로 돌아온다. 그 경우 mandu.lint.setup({}) 로 설치하도록 사용자에게 안내 — 기존 프로젝트는 opt-in 이 필요함. 신규 프로젝트는 mandu init 이 이미 배선했으므로 이 경로는 드물다.

Doctor 실패 (구조 / import)

mandu_check_import({ filePath })        ← 잘못된 import 경로 상세
  → mandu_check_location({ filePath })  ← 파일 위치 규칙 위반 상세
  → 사용자에게 수정안 제시 (또는 safe-change 로 전이)

Kitchen (런타임 에러 동반)

dev 서버 돌고 있고 fast path 중 런타임 성격의 실패가 보이면:

mandu_kitchen_errors({ limit: 20 })

절대 규칙

#규칙이유
V-1ATE 는 반드시 mandu.ate.auto_pipeline 하나로 시작개별 ate_* 도구 수동 조합 = AP-1 (index 참조)
V-2fast path 는 병렬 호출세 도구 독립. 순차 호출은 왕복 3배 낭비
V-3mandu_guard_healdrill-down 단계에서만fast path 에서 autofix 를 켜면 스냅샷 없이 자동 수정됨
V-4drill-down 은 실패한 카테고리에만통과한 쪽까지 drill 해서 왕복 부풀리지 않는다
V-5heal 후에는 fast path 를 다시 돌린다수정이 새 위반을 만들 수 있음. 1회 재확인
V-6대규모 수정이 필요한 drill-down 은 mandu-mcp-safe-change 로 escalatesnapshot + tx 없이 큰 수정 금지

Anti-patterns

AP-1 — ATE 수동 분해 (index AP-1 재인용)

  • 증상: mandu.ate.extractmandu.ate.generatemandu.ate.runmandu.ate.healmandu.ate.apply_heal 를 손으로.
  • 왜 안 되나: 왕복 5배 + 중간 실패 처리 로직을 재구현하게 됨.
  • 대응: mandu.ate.auto_pipeline 단 하나.

AP — fast path 순차 호출

  • 증상: auto_pipeline 결과 보고 → guard_checkdoctor 를 하나씩.
  • 왜 안 되나: 독립 작업을 직렬화. 응답 집계가 늦어지고 사용자 대기 시간이 3배.
  • 대응: V-2, 병렬 호출.

AP — heal 없이 재생성

  • 증상: ate 또는 guard 실패 → mandu_generate 재호출로 "리셋" 시도.
  • 왜 안 되나: 같은 입력이면 같은 결과. 원인은 입력 쪽 (contract / slot / island) 에 있음.
  • 대응: 해당 카테고리 drill-down → guard_heal / apply_heal / 수동 수정.

AP — verify 생략

  • 증상: 편집 후 바로 git add . && git commit.
  • 왜 안 되나: 위반을 커밋에 박음. CI 에서 reject.
  • 대응: stop-hook 또는 명시적 mandu-mcp-verify 호출.

Quick Reference

편집 완료
  ┌─ mandu.ate.auto_pipeline ─┐
  ├─ mandu_guard_check        │  (parallel)
  └─ mandu_doctor             ─┘
  ────────────────────────────
  all green? → 종료
  실패? → 해당 카테고리만 drill-down:
           guard_explain / guard_heal
           ate.feedback / ate.apply_heal
           check_import / check_location
         → 재실행 (fast path)

목표 호출 수:

  • all-green 경로: 3 calls (parallel)
  • 1 카테고리 drill + 재실행: 3 + 12 + 3 = 78 calls
  • 모든 카테고리 실패: escalate to mandu-mcp-safe-change

See Also

  • mandu-mcp-index — Tier/aggregate 우선순위 + AP-1 (ATE 수동 분해)
  • mandu-mcp-create-flow — 생성 직후 이 skill 로 자동 전이
  • mandu-mcp-safe-change — drill-down 이 대규모 수정으로 번질 때
  • mandu-debug — 에러 카테고리별 도메인 지식
  • mandu-guard-guide — guard 위반 유형별 수정 방법
  • mandu-lint — 가드레일-lint 축 상세 (setup / type-aware / 자동수정 안전 절차)

Signals

GitHub stars
46
Forks
3
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
mandu-mcp-verify
Source
github.com/konamgil/mandu