galmuri:polish — completion-claim gate
"검증 없이 완료 선언하지 않는다." A short, hard gate to run before saying done / 완료 / passed. If any row is ✗, fix it; do not declare completion.
If invoked bare (no scope hint), ask: "What are you about to declare complete? e.g. feat/foo branch, UI refactor, migration 0042 — name the scope so the checklist evidence makes sense."
This is the discipline-gate version. For the full quality-improvement loop (6-axis inspection × N + e2e + PR doc), use oh-my-borory:polish.
Step 1: Gather context
Cheap reads only — no full-file scans.
git status --short
git diff --stat
git branch --show-current
git log -1 --pretty='%h %s'
Note the baseline branch + SHA explicitly — the checklist below references it.
Step 2: Run the Self-Check Gate
Output exactly the following table. Every row must resolve to ✓ or ✗ — no n/a, no pending. If a row genuinely does not apply (e.g. no UI changes → testid row), mark it ✓ with evidence: scope-not-applicable.
| Check | Status | Evidence |
|----------------------------------------------------------------|--------|-------------------------------------------|
| Branch is feature/* (not main/master/release/*) | ✓/✗ | `git branch --show-current` |
| Pre-commit hooks ran successfully | ✓/✗ | last hook exit code (or `.husky/pre-commit` ran) |
| Baseline branch + SHA explicitly stated for comparisons | ✓/✗ | quote the SHA |
| No `withTimeout`, defensive `{ timeout }`, or silent try/catch | ✓/✗ | `rg 'withTimeout\|timeout:\s*\d+' diff` |
| No hardcoded version field names (`v1.*`, `schema_v2`) | ✓/✗ | `rg 'v\d+\.\w+\|schema_v\d' diff` |
| testid constants are UPPER_SNAKE_CASE | ✓/✗ | `rg 'data-testid="[a-z]' diff` |
| No raw px values outside design tokens | ✓/✗ | manual diff inspection / tokens file |
| Long reports (>30 lines) written to docs/reports/ not chat | ✓/✗ | inspect last chat output |
| Pixel-delta table present when claim is UI work | ✓/✗ | path to pixel-delta artifact (or scope-not-applicable) |
| Locale separation respected (en/ko/jp files do not mix) | ✓/✗ | `rg -l '[가-힣]\|[ぁ-ヿ]' *.md` filtered |
Token Efficiency
After the table:
- If the cycle exceeded 80% of context budget, write a handoff note to
tmp/polish-handoff-<ts>.mdand STOP. Wait for an explicit "continue". - Never restate the entire diff in chat — summarize and link to the commit hash.
Step 3: Halt-or-Pass
- Any ✗ → halt. List each ✗ row with the fix command, apply fixes, re-run Step 2. Do not emit a completion claim until all rows are ✓.
- All ✓ → emit one line:
polish gate clean: {commit-hash} ready.That is the only form of completion claim allowed.
What this skill does NOT do
- ✗ Run inspections / write tests / generate PR docs (that's
oh-my-borory:polishorharnish:ralphi) - ✗ Modify any code by itself — it only verifies what you already did
- ✗ Replace
galmuri:self-audit(which audits Claude's own session actions across all axes, not just completion claims)