一键导入
verify
AI가 구현한 변경사항을 요구사항·문서·도메인 언어·diff와 대조해 사용자가 리뷰할 수 있는 감사 브리핑을 만든다. 무엇을 바꿨는지, 어디까지 믿어도 되는지, 무엇을 직접 봐야 하는지, 다음 행동이 캡처/수정/PR 중 무엇인지 판정할 때 사용한다.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
AI가 구현한 변경사항을 요구사항·문서·도메인 언어·diff와 대조해 사용자가 리뷰할 수 있는 감사 브리핑을 만든다. 무엇을 바꿨는지, 어디까지 믿어도 되는지, 무엇을 직접 봐야 하는지, 다음 행동이 캡처/수정/PR 중 무엇인지 판정할 때 사용한다.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
현재 worktree를 최신 production 기반 새 branch로 in-place 전환해야 할 때 사용한다. "/to-production", "production으로 옮겨", "production 바라보게", "hotfix로 다시 쌓아" 요청에 사용한다. 기존 작업 commit은 backup 후 cherry-pick하고, 새 worktree가 필요하면 /wt fork --hotfix가 담당한다.
열린 PR의 리뷰 코멘트나 changes requested에 대해 부모/현재 대화와 작업 내역을 확인한 뒤, 표면적 답변이 아니라 근본 원인을 판단해 코드 수정·커밋·푸시·스레드 답글·review re-request까지 수행해야 할 때 사용한다. `--push-only` 모드에서는 코멘트/re-request 없이 커밋·푸시 후 수동 게시용 답글 초안을 세션에서 다듬는다. "PR 코멘트 대응", "리뷰 대응", "이거 대응작업-커밋-푸시-코멘트까지", "근본적으로 대응", "대응할 게 없으면 근거 코멘트" 요청에 사용한다.
Local guide for using interactive_shell in this repo. Prefer it for dev servers, TUI apps, REPLs, database shells, log viewers, and commands that need a visible terminal overlay. Do not use it for subagent-style delegation; use the subagent tool for that.
열린 PR의 GitHub Actions/CI 실패를 분석해 원인을 분류하고, 코드·generated artifact·테스트·환경 문제를 근본 대응한 뒤 검증, 커밋, push까지 수행해야 할 때 사용한다. "CI 실패 대응", "체크 실패 봐줘", "Actions 실패 고쳐줘", "pr-checks 실패", "ci-ship" 요청에 사용한다.
PR을 만들기 전 또는 remote에 올리기 전, 변경사항을 의도 단위로 커밋하고 lint/typecheck/test/build 같은 사전 검증을 통과시킨 뒤 push해야 할 때 사용한다. "ship 해줘", "커밋해서 푸시", "올리기 전에 검증", "push 준비" 요청에 사용한다.
PR/구현 검증을 PM·비개발자도 이해할 수 있는 캡처 중심 HTML 리포트로 만든다. Jira/Notion/Slack/와이어프레임/PR test plan 같은 기획 근거를 사용자-facing 동작과 매핑하고, 핵심 UI 흐름은 스크린샷/GIF를 primary evidence로 증명한다. 로직/API/DB/code diff 검증은 하단 기술 보조 검증으로 정리한다. 기본은 로컬 확인용이며 업로드/PR 업데이트는 명시 요청 시에만 한다.
| name | verify |
| description | AI가 구현한 변경사항을 요구사항·문서·도메인 언어·diff와 대조해 사용자가 리뷰할 수 있는 감사 브리핑을 만든다. 무엇을 바꿨는지, 어디까지 믿어도 되는지, 무엇을 직접 봐야 하는지, 다음 행동이 캡처/수정/PR 중 무엇인지 판정할 때 사용한다. |
/verify는 QA 완료 선언자가 아니라 AI 구현물 감사관이다.
사용자는 보통 “AI가 구현은 했는데 뭘 했는지 모르겠으니 검토시키고 싶다”는 의도로 /verify를 호출한다. 따라서 /verify는 “통과/실패”보다 먼저 다음 질문에 답해야 한다.
핵심 원칙: 증거 없이 완료를 선언하지 않는다.
각 claim, requirement, risk, evidence gap은 다음 중 하나로 분류한다.
| 판정 | 의미 |
|---|---|
믿어도 됨 | 자동 검증 또는 명확한 코드 근거가 claim을 닫음 |
코드상 그럴듯함 | diff상 구현은 보이나 runtime/UI/consumer evidence는 없음 |
아직 못 믿음 | 화면, 클릭, 데이터, 권한, 외부 효과 등 실제 소비 경로 미확인 |
문제 있음 | 실패 로그, 코드 결함, 요구사항 누락 확인 |
범위 밖 | 이번 작업 요구가 아님 |
명령 성공은 사용자 성공이 아니다. 명령 결과가 어떤 claim을 닫는지 반드시 명시한다.
/verify는 기본적으로 <worktree>/.pi/frame.json이 있을 때 가장 잘 동작한다.
/frame을 먼저 실행하세요라고 안내하고 종료한다. 단, 사용자가 --no-frame 플래그로 명시적으로 우회하면 자유 감사 모드로 진행한다.TFT Studio는 Verify를 강제로 요구하지 않는다. 하지만 /verify를 실제로 수행했다면 결과는 Studio transcript에만 남기지 않는다.
frame.json.verifications[] 또는 --no-frame 자유 검증 보고서에 남긴다.frame_studio를 사용하면 진행/요약은 tab=verify에 렌더링하고, 사용자 선택이 필요한 질문은 frame_studio action=ask tab=verify로 처리한다.frame_studio ask 결과가 unavailable, cancelled, timeout일 때만 허용한다.frame_studio action=finish tab=verify로 닫는다.반복되는 unrelated validation 실패는 agent가 자동 preflight baseline 흐름으로 분리한다. Bash validation 결과가 [preflight] Known baseline failure로 주석 처리되면 최종 보고에서 별도 분리하되, 이번 diff가 같은 실패를 건드렸다면 baseline으로 취급하지 말고 새 실패로 재검증한다. 새 unrelated baseline이라고 판단되면 사용자에게 slash command를 요구하지 말고 preflight_baseline tool로 기록한다.
frame success criteria, requirement matrix, Jira/문서 요구사항, 사용자 요청을 diff와 연결한다.
각 요구사항은 다음 형식으로 분류한다.
| 요구 | 구현 상태 | 근거 | 신뢰도 |
|---|---|---|---|
| R1 | 코드상 구현 | Foo.tsx:42 | 코드상 그럴듯함 |
규칙:
PASS 같은 단어를 남발하지 않는다. 기본 언어는 신뢰도다.믿어도 됨으로 올리지 않는다.아직 못 믿음 또는 코드상 그럴듯함이다.믿어도 됨, 코드상 그럴듯함, 아직 못 믿음, 문제 있음, 범위 밖 중 하나여야 한다.requirement_matrix가 있으면 source-grounded requirement coverage 검증을 수행한다. 원문 요구 ID, source text, 구현 계약, evidence 상태를 빠짐없이 연결한다.domain_work_map이 있으면 Domain Work Map coverage를 별도로 정리한다. domain lane leaf task가 닫히지 않았는데 SC만 닫힌 것처럼 보고하지 않는다.구현된 diff를 문서, 티켓, 도메인 언어, 기존 코드와 다시 부딪힌다. 이는 구현 전 grill-with-docs의 사후 버전이다.
확인 질문:
출력은 문서/도메인 그릴 결과에 기록한다.
| 항목 | 확인 결과 | 판단 |
|---|---|---|
| “동일한 형태” | 기존 컴포넌트 직접 재사용은 아님. 전용 shallow wrapper로 유사 구조 구현 | 리뷰 필요 |
AskUserQuestion으로 승격하는 경우:
ask_first 영역으로 넘어간다.그 외 의문은 리뷰어에게 던질 질문으로 남긴다. 처리된 항목이나 단순 캡처 필요 항목을 의례적으로 묻지 않는다.
다음을 분리해 보고한다.
신뢰 경계는 사용자-facing 판단을 돕는 핵심 출력이다. 내부 검증표보다 위에 둔다.
필요한 검증 명령을 실행하되 fan-out을 좁힌다.
권장 검증:
/verify-report 또는 수동 확인으로 넘김규칙:
예상 fan-out: ... 체크리스트를 적고, 실행 후 결과가 실제로 그 범위를 닫았는지 확인한다.references/risk-lenses.md를 읽고 diff trigger에 맞는 lens를 고른다. Project/private overlay가 있으면 함께 적용한다.
자주 쓰는 lens:
requirement_matrix/domain_work_map → source-grounded requirement coverage lensbackend_layer_map.triggered → backend layer responsibility lensarchitecture_flow_map.triggered → architecture/data flow lensOverlay 규칙:
/decide 또는 AskUserQuestion으로 분리한다.믿어도 됨이 아니라 코드상 그럴듯함 또는 아직 못 믿음이다.architecture_flow_map.triggered가 있으면 Architecture/Data Flow 검증을 수행한다. lane/node/edge/source-of-truth가 실제 diff와 맞는지 보고, mismatch는 신뢰 경계와 리뷰 질문에 연결한다.Diff와 frame boundaries를 대조한다.
확인:
boundaries.never 또는 boundaries.ask_first를 침범했는가?규칙:
변경된 코드의 consumer path를 추적한다.
확인:
출력은 “영향 범위”보다 “사람이 먼저 봐야 할 곳”에 우선 반영한다.
사람이 먼저 봐야 할 곳을 1~5개로 제시한다.
우선순위:
리뷰어에게 던질 질문은 AskUserQuestion이 아니다. 사용자가 PR/수동 리뷰에서 바로 확인할 수 있는 질문이다.
Verify 결과는 canonical 저장이 끝난 뒤에만 완료로 보고한다.
frame.json이 있으면 frame.verifications[]에 다음을 기록한다.
frame.verifications.push({
id: "VER-1",
baseCommit,
verdict: "Ready | Reviewable | Needs changes | Blocked",
oneLineJudgment,
changedSummary: [...],
requirementMapping: [{ id, status, evidence, trust }],
docsGrillFindings: [{ item, finding, judgment }],
trustBoundary: {
reliable: [...],
plausibleButUnproven: [...],
notYetTrusted: [...],
problems: [...],
outOfScope: [...]
},
humanReviewPriorities: [...],
reviewerQuestions: [...],
riskSignals: [...],
validationRuns: [{ command, result, closesClaim, note }],
riskLensFindings: [...],
unintendedChanges: [...],
affectedScope: [...],
verifyReportHandoff: [...],
nextAction,
tftStudio: { transcriptPath, transcriptRef, tab: "verify" },
verifiedAt: Date.now()
});
frame.md 또는 자유 검증 보고서에는 아래 Output Format을 append한다.
최종 판정과 evidence gap에 따라 다음 행동을 정한다.
미검증 UI/동작 evidence가 있으면 /create-pr를 첫 번째 추천으로 두지 않는다.
추천 순서 예:
/verify-report 또는 수동 확인 후 verify 기록 추가/verify --resume/create-pr, /stress-interview, /reflect, 일단 멈춤/verify-report handoff 후보는 각 항목을 reuse/revise/add/drop/blocked 중 하나로 표시한다. 예: 기존 test plan item을 그대로 쓰면 reuse, 캡처 축을 바꾸면 revise, 새 evidence가 필요하면 add, 범위 밖이면 drop, 데이터/계정/환경 때문에 막히면 blocked.
질문이 실제 행동을 바꾸지 않으면 묻지 말고 추천만 보고한다. 선택이 필요하면 TFT Studio ask를 사용한다.
최종 사용자-facing 출력은 내부 검증표보다 감사 브리핑을 우선한다.
# Verify 결과 — AI 구현물 감사 브리핑
## 1. 한 줄 판정
**판정**: Reviewable / Needs changes / Blocked / Ready
{한 문장 요약}
---
## 2. AI가 바꾼 것
- {변경 1}
- {변경 2}
- {변경 3}
---
## 3. 요구사항 매핑
| 요구 | 구현 상태 | 근거 | 신뢰도 |
|---|---|---|---|
| R1 | 코드상 구현 | `Foo.tsx:42` | 코드상 그럴듯함 |
---
## 4. 문서/도메인 그릴 결과
| 항목 | 확인 결과 | 판단 |
|---|---|---|
| {스펙/용어/문구} | {코드/문서와 대조한 결과} | 코드상 일치 / 리뷰 필요 / 결정 필요 / 문제 있음 |
---
## 5. 믿어도 되는 것
- {자동 검증 또는 명확한 코드 근거로 닫힌 항목}
- {side effect 없음이 확인된 항목}
---
## 6. 아직 못 믿는 것
- {화면/동작/데이터/권한/외부 효과 미확인 항목}
- {코드는 있으나 runtime evidence가 없는 항목}
---
## 7. 리뷰어가 먼저 봐야 할 곳
1. {리뷰 포인트 1}
2. {리뷰 포인트 2}
3. {리뷰 포인트 3}
---
## 8. 리뷰어에게 던질 질문
- {질문 1}
- {질문 2}
- {질문 3}
---
## 9. 위험 신호
| 위험 | 정도 | 이유 | 다음 행동 |
|---|---|---|---|
| UI 캡처 없음 | 높음 | 핵심 요구가 화면 변경 | `/verify-report` 또는 수동 캡처 |
---
## 10. 실행한 검증
| 검증 | 결과 | 닫은 claim | 비고 |
|---|---|---|---|
| 변경 파일 ESLint | PASS | 문법/린트 품질 | 사용자 동작 보증 아님 |
---
## 11. 최종 판정
- 코드 리뷰 후보: 가능 / 불가
- PR 생성: 가능 / 미검증 명시 필요 / 보류
- 배포 Ready: 예 / 아니오
- 추천 다음 단계: {다음 행동}
다음이 모두 참일 때만 사용한다.
코드는 리뷰 가능한 상태지만, 다음 중 하나가 남은 경우.
다음 중 하나가 있으면 사용한다.
다음 중 하나가 있으면 사용한다.
묻지 말고 보고서에 남길 것:
사용자에게 물을 것:
/verify기본값. AI 구현물 감사 브리핑 중심으로 실행한다.
/verify --deepGate Function, success criteria, risk lens, canonical schema를 상세히 펼친다. 기본 출력의 감사 브리핑을 생략하지 말고, 상세 표를 아래에 추가한다.
/verify --report-ready/verify-report에 넘길 캡처/동작 evidence 후보만 정리한다. UI 변경에서 유용하다.
/verify --commit-audit커밋 단위로 리뷰 가능한지 확인한다. 큰 diff 분리, 범위 밖 변경, commit message, validation 결과를 중심으로 본다.
| 합리화 | 차단 |
|---|---|
| “테스트가 통과하니까 완료” | 테스트 통과 ≠ 요구사항 달성. 어떤 claim을 닫았는지 매핑한다. |
| “코드상 보이니까 UI도 됨” | UI/TUI/렌더링 claim은 실제 화면 또는 artifact evidence가 필요하다. |
| “CI에서 잡아줄 것” | CI는 비즈니스 해석과 사용자 플로우 정합성을 보장하지 않는다. |
| “작은 변경이라 검증 불필요” | 작은 변경도 user-facing 신뢰 경계를 흐릴 수 있다. |
| “엣지 케이스를 확인했으니 사용자에게 물어보자” | 결정이 필요한 경우만 묻고, 처리된 항목은 보고서에만 남긴다. |
| “미검증 있어도 Ready라고 하자” | 미검증은 신뢰 경계에 남기고 Ready 대신 Reviewable/Blocked를 사용한다. |
/verify는 AI가 만든 변경을 완료로 선언하는 도구가 아니라, 사용자가 리뷰할 수 있게 변경 의도·요구사항 매핑·신뢰 경계·문서/도메인 해석 리스크를 정리하는 감사 브리핑이다.
항상 마지막에 이 질문에 답한다.
지금 이 변경에서 사용자가 믿어도 되는 것과 직접 봐야 하는 것은 무엇인가?