Mandu MCP Safe Change
SkillDev toolsRisky change transaction wrapper. Automatically invoked for migrations / large refactors / refactor_* tools / "irreversible changes". Requires history_snapshot + tx_begin; if verify is green, tx_commit, otherwise tx_rollback.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Mandu MCP Safe Change 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-safe-change/SKILL.md and read by ahel’s review.
돌이키기 힘든 변경 을 실행할 때의 표준 래퍼. history.snapshot 으로 롤백 포인트를
찍고, tx.begin 으로 트랜잭션을 열고, 안에서 편집 + verify, 결과에 따라
tx.commit 또는 tx.rollback.
Trigger
- 마이그레이션: 경로 컨벤션 변경, 생성 barrel 재작성, contract 추출 등
- 대규모 리팩터: 레이어 재배치, 모듈 이동, 대량 import 경로 수정
mandu.refactor.*/mandu.refactor.migrateRouteConventions/mandu.refactor.rewriteGeneratedBarrel/mandu.refactor.extractContract호출 직전- 사용자: "돌이킬 수 없는 변경", "한 번에 바꿔줘", "전체 프로젝트에 적용"
- 생성 파일 대량 재작성 (
mandu_generate를 전체 재실행)
Recipe (순서 고정)
mandu.history.snapshot ← 롤백 포인트 (Tier-1)
└─> mandu_begin ← 트랜잭션 시작 (alias of mandu.tx.begin)
└─> <편집 / refactor tool 호출>
└─> mandu-mcp-verify fast path
├─ all green → mandu_commit (alias of mandu.tx.commit)
│ └─> mandu_prune_history (선택, 오래된 스냅샷 정리)
└─ 실패 → mandu_rollback (alias of mandu.tx.rollback)
└─> 스냅샷은 유지. 원인 분석 후 재시도
Step Detail
Step 1 — mandu.history.snapshot
mandu.history.snapshot({
repoRoot: ".",
label: "pre-route-migration-2026-04-20"
})
스냅샷은 .mandu/generated/** 같이 git 추적 밖 산출물까지 포함해서 저장한다.
label 은 항상 붙인다 — mandu_list_history 로 볼 때 뭐였는지 알아야 함.
Step 2 — mandu_begin
mandu_begin({ label: "route-convention-migration" })
트랜잭션 ID 를 기억한다. Step 4 에서 쓴다. mandu.tx.status 로 상태 조회 가능.
Step 3 — 실제 변경
이제야 파괴적 도구를 호출한다. dry-run 이 있으면 먼저 dry-run:
mandu.refactor.migrateRouteConventions({ dryRun: true, ... })
→ 변경 목록 검토
mandu.refactor.migrateRouteConventions({ dryRun: false, ... })
복합 변경이면 여러 도구를 순차 호출 — tx 안이므로 중간 실패도 안전.
Step 4 — mandu-mcp-verify fast path
변경 후 검증. mandu-mcp-verify 의 병렬 4 콜 (ate.auto_pipeline, guard_check, lint, doctor). 특히 대규모 refactor 는 lint 에러를 쉽게 새로 만들기 때문에 lint 축을 반드시 포함한다 — 하나라도 빨간 상태로 tx_commit 하지 않는다.
Step 5a — 모두 green 이면 Commit
mandu_commit({ txId })
그리고 선택적으로 오래된 스냅샷 정리:
mandu_prune_history({ olderThan: "7d", keep: 10 })
Step 5b — 실패면 Rollback
mandu_rollback({ txId })
그리고 스냅샷은 삭제하지 않는다. 원인 분석 / 로그 공유 후 재시도에 필요.
mandu.history.snapshot 은 그대로
→ 로그 수집
→ 원인 수정
→ Step 2 부터 다시
절대 규칙
| # | 규칙 | 이유 |
|---|---|---|
| SC-1 | refactor_* 또는 대규모 마이그레이션은 반드시 이 레시피 안에서 | snapshot 없는 변경은 롤백 불가 |
| SC-2 | history.snapshot 은 tx.begin 전에 | tx 내부에서 찍으면 rollback 시 스냅샷도 사라질 수 있음 |
| SC-3 | refactor_* 도구는 dry-run 먼저 (도구가 지원하면) | 변경 범위 가시화 없이 실행 금지 |
| SC-4 | verify 는 fast path 의 세 개 모두 | 한두 개만 확인하고 커밋하는 건 안전망 의미 없음 |
| SC-5 | rollback 시 스냅샷 유지 | 재시도 / 재현 / 로그 공유에 필요 |
| SC-6 | 하나의 tx 에 하나의 의미 단위 | 여러 독립 변경을 한 tx 로 묶으면 부분 rollback 불가 |
Anti-patterns
AP — Snapshot Skip (index AP-3)
- 증상:
mandu.refactor.*를history.snapshot없이 바로 호출. - 왜 안 되나: git 은
.mandu/generated/**,node_modules/**, 런타임 아티팩트를 추적하지 않는다. 실패 시 수동 복구 불가. - 대응: Step 1 항상 실행. 예외 없음.
AP — tx 없이 복합 변경
- 증상:
mandu_add_route× 5 +mandu_create_contract× 3 +mandu_generate를 독립 호출. - 왜 안 되나: 중간에 실패하면 부분 생성물이 남아 guard violation 유발.
- 대응:
mandu_begin~mandu_commit또는 집계 도구 (mandu.feature.create) 로 묶는다.
AP — Commit 전 verify 생략
- 증상: refactor → 바로
mandu_commit. - 왜 안 되나: tx 커밋 = 되돌리기 포기. 검증 없이 커밋하면 깨진 상태가 확정.
- 대응: SC-4, fast path 3 개 모두 green 확인.
AP — Rollback 후 같은 절차 재시도
- 증상:
mandu_rollback→ 뭐가 문제인지 분석 없이 Step 2 부터 같은 도구 같은 인자로 재실행. - 왜 안 되나: 같은 실패가 재현된다. 시간 낭비.
- 대응: 스냅샷/로그로 원인 진단 → 인자 / 순서 / scope 수정 → 재시도.
AP — 너무 큰 tx
- 증상: 여러 날에 걸쳐 여러 독립 변경을 하나의 tx 로.
- 왜 안 되나: 중간 실패 시 무관한 변경까지 rollback 된다.
- 대응: SC-6, 의미 단위 하나씩.
Quick Reference
위험 변경
mandu.history.snapshot (1 call)
mandu_begin (1 call)
<refactor tool(s)> (n calls)
mandu-mcp-verify fast (3 calls, parallel)
───────────────────────
all green → mandu_commit (1 call)
mandu_prune_history (optional, 1 call)
실패 → mandu_rollback (1 call, 스냅샷 유지)
표준 총 호출 수:
- Happy path: 1 + 1 + n + 3 + 1 = 6 + n
- Rollback path: 1 + 1 + n + 3 + 1 = 6 + n
n (실제 변경 도구 호출) 을 줄이는 게 최적화 — 가능하면 집계 refactor 도구 하나로.
See Also
mandu-mcp-index— AP-3 (refactor without snapshot) / Tier-3 destructive 규칙mandu-mcp-verify— Step 4 의 fast path 상세mandu-mcp-create-flow— 간단한 생성은 여기로 (safe-change 불필요)mandu-guard-guide— verify 단계에서 guard 실패 시 수정 방법
Signals
- GitHub stars
- 46
- Forks
- 3
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
mandu-mcp-safe-change- Source
- github.com/konamgil/mandu