Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Is that skill safe to install?
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
Are you the author of Finish?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/snwlee-finish)
---
name: finish
description: "Completion gate (evidence + integrity) → commit, archive, check off tasks. Runs right after review. 트리거: \"마무리\", \"커밋하고 정리\"."
---
# finish
nereus:common 규칙을 따른다. 담당 에이전트: writer(문서·아카이브), 커밋은 이 세션이 직접.
1. **게이트**: 먼저 완료 게이트를 돌린다.
```bash
node "${CLAUDE_PLUGIN_ROOT}/skills/finish/scripts/gate.mjs" # 미커밋 변경 기준
node "${CLAUDE_PLUGIN_ROOT}/skills/finish/scripts/gate.mjs" --base main
```
게이트를 돌리기 전에 철칙을 확인한다 (출처: superpowers `verification-before-completion`):
```
FRESH한 검증 증거 없이 완료를 주장하지 않는다.
```
> **Iron Law — NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION.**
> FRESH한 검증 증거 없이 완료를 주장하지 않는다.
주장→명령→출력→판정 순서를 지킨다. 명령을 직접 실행하고, 전체 출력을 읽고, 종료 코드와 실패 수를 센 뒤에야 주장한다. 단계를 건너뛰면 검증이 아니라 거짓말이다. 아래는 전부 미검증이다: "될 거야", 이전 실행 결과, "자신 있다", 부분 확인, 에이전트 성공 보고, 린터 통과로 빌드됐다고 extrapolate하기.
네 가지를 본다. (a) **테스트 evidence**가 FRESH이고 통과인가 — MISSING/STALE이면 `run-tests.mjs`로 다시 돌린다. (b) **완료 무결성** — diff에 TODO/FIXME, TBD, 건너뛴 테스트, 스텁, 테스트 없는 가드 제거, **조용한 실패**(빈 catch·삼킴 fallback·except-pass)가 있으면 차단. (c) **연결 검사** — 새 실행 스크립트를 아무 데서도 호출하지 않으면(`unwired`) 차단한다. 테스트가 import 하는 것은 연결이 아니다. (d) **디자인 피드백** — 디자인 표면을 만졌는데 impeccable 비평 라운드가 없거나(`design_feedback_missing`), 비평 후 파일이 바뀌었거나(`design_feedback_stale`), REVISE 를 반영하지 않았으면(`design_feedback_unaddressed`) 차단한다. `nereus:design` 으로 라운드를 돌린다. 각 항목을 고치거나, 정당한 이유가 있으면 common의 Ruling 형식으로 커밋 메시지 본문(또는 `.nereus/review.md`)에 이유를 적고 사용자에게 확인받는다. 조용히 넘기지 않는다.
tasks 파일에 이 작업 단위의 태스크가 전부 체크됐는지 확인한다. 아니면 build로 돌려보낸다.
2. **커밋**: `git status`, `git diff --stat`을 보고 conventional commit 메시지를 만든다. 여러 관심사가 섞였으면 나눠 커밋한다. 시크릿·`.env`·빌드 산출물이 스테이징되지 않았는지 확인한다.
3. **스펙 정리**: OpenSpec 프로젝트면 `/opsx:archive`로 change를 아카이브한다. spec-kit이면 `/speckit.converge`로 남은 작업이 없는지 확인한다.
4. **문서**: 사용자에게 보이는 동작이 바뀌었으면 README나 docs를 갱신한다. 설계 결정이 있었으면 `docs/adr/`에 ADR 한 장(writer가 archify로 다이어그램을 붙일 수 있다).
5. **브랜치**: main이 아닌 브랜치면 "푸시할까요? PR을 만들까요? 브랜치를 유지할까요?"를 한 번 묻는다. 묻지 않고 푸시하지 않는다.
6. **메모리**: claude-mem이 있으면 세션 요약은 자동이다. 없으면 세션을 넘는 기록은 커밋·tasks·`.nereus/review.md` 뿐임을 알린다.
마지막 메시지는 이 세션을 보지 않은 사람이 읽어도 되게: 무엇을 했고, 무엇이 검증됐고, 무엇이 남았는지 세 줄.