본문으로 건너뛰기
cccskills
무료GitHub에 공개

verify

Verify ticket completion criteria — use when finishing a ticket, before marking work done, or checking acceptance criteria. Runs tests, build, lint, scenarios, and dependency drift checks.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md7.1 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Verify

Prove a ticket meets its criteria. Works with or without an active ticket.

Invocation log

This skill is required at the done-gate (ticket 147). The line below appends a session-scoped entry to .safeword-project/skill-invocations.log so the done-gate hook can verify /verify was actually invoked. Bash injection runs at render time — hand-writing verify.md cannot produce this entry.

!PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}" && mkdir -p "$PROJECT_DIR/.safeword-project" && echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) ${CLAUDE_SESSION_ID} verify" >> "$PROJECT_DIR/.safeword-project/skill-invocations.log" && echo "[skill-invocation-log] verify ✓" || echo "[skill-invocation-log] FAILED — done-gate will block"

If you see [skill-invocation-log] FAILED above, or no verify ✓ line at all: STOP. Do not run /verify manually — that line is the only proof the done-gate accepts. Report the failure to the user (most likely cause: Claude Code's bash permission denied the injection) and ask them to resolve it before re-invoking /verify.

Instructions

1. Find Current Ticket (if any)

# Find in_progress tickets, excluding epics
for f in .safeword-project/tickets/*/ticket.md; do
  [ -f "$f" ] || continue
  grep -q "^status: in_progress" "$f" && ! grep -q "^type: epic" "$f" && echo "$f"
done | head -1

If a ticket is found, read it to get:

  • parent: field (if any)
  • Ticket ID/slug for test-definitions lookup

If no ticket is found, skip scenario validation (step 3) and parent check (step 4).

2. Run Automated Checks

Run these in sequence, reporting each result:

  1. Run /lint to auto-fix style issues first
  2. Then run verification:
# Full test suite
bun run test 2>&1

# Build check
bun run build 2>&1

The /lint command handles linting with auto-fix. Report any remaining unfixable errors.

3. Validate Test Definitions (skip if no ticket)

  1. Find matching file: .safeword-project/tickets/{id}-{slug}/test-definitions.md
  2. Count scenarios: total - [ lines
  3. Count completed: - [x] lines
  4. Report: "Scenarios: X/Y complete"

If any unchecked [ ] remain, list them.

4. Check Parent Epic (skip if no ticket)

If ticket has parent: field:

  1. Read parent ticket
  2. Get children: array
  3. Check each child's status:
  4. Report: "Siblings: X/Y done"

5. Check Dependency Drift

Compare package.json dependencies against ARCHITECTURE.md:

  1. If ARCHITECTURE.md does not exist, skip this check
  2. Read ARCHITECTURE.md content
  3. Read package.json dependencies and devDependencies keys
  4. For each dependency name:
    • Extract the package name (without @scope/ prefix for matching — but check both full name and short name)
    • Check if ARCHITECTURE.md mentions the package name (case-insensitive)
  5. Flag any dependency NOT mentioned: "Dependency \{name}` not documented in ARCHITECTURE.md"`

Do NOT flag:

  • @types/* packages (type-only, not architectural)
  • Packages in devDependencies that are tooling (eslint plugins, prettier plugins, test utils) — only flag deps that represent architectural choices

6. Report Results

Structure the report in three sections, in this order. Empty sections are hidden entirely — no "None" placeholders, no empty headers.

Status (the existing Verify Checklist — facts only)

The Status section uses the existing Verify Checklist format. Format with these EXACT patterns (the done-gate hook validates them):

## Verify Checklist

**Test Suite:** ✓ X/X tests pass (or ❌ N failures)
**Build:** ✅ Success (or ❌ Failed)
**Lint:** ✅ Clean (or ❌ N errors)
**Scenarios:** All N scenarios marked complete (or ❌ X/Y complete, or ⏭️ Skipped — no ticket)
**Dep Drift:** ✅ Clean (or ⚠️ N undocumented deps, or ⏭️ Skipped — no ARCHITECTURE.md)
**Parent Epic:** {id} (siblings: X/Y done) or N/A
**Reconcile:** ✅ No pattern deviation (or ⚠️ N deviations, M missing uplevel ticket — soft, never blocks)

Reconcile is soft — it never blocks the done gate. If the work introduced a pattern that diverges from existing siblings (see .safeword/guides/architecture-guide.md → Survey & Reconcile), confirm the ticket carries a reconcile record and every deviation has an uplevel follow-up ticket; flag any that don't. Use N/A when the work conformed or introduced no new pattern.

Done-gate evidence patterns (the stop hook validates these literal phrases — do not move or rename):

  • ✓ X/X tests pass — proves test suite ran
  • All N scenarios marked complete — proves scenarios checked
  • Audit passed — proves /audit ran (run /audit separately)

Without all three patterns in Status, the done phase will hard block.

Decisions needed (spec / scope / value)

Only include this section when there are spec, scope, or value questions the USER must answer.

Implementation-path questions (which approach, which pattern, which library) do NOT go here — they belong in "Agent's next actions" because the agent owns implementation choices.

Borderline classification examples:

  • "Should we use NextAuth or Lucia for auth?" → implementation-path → goes in Actions (agent picks one with reasoning, user can override).
  • "Should this endpoint be at /v1/projects or /v2/projects?" → value decision (API contract) → goes in Decisions.
  • "Is R5.x in scope for this slice or punt to slice 4?" → scope decision → goes in Decisions.
  • "Should we extract this helper or inline it?" → implementation-path → goes in Actions.
  • "Is 4xx the right HTTP status for this error?" → spec decision (if the spec exists, look it up; otherwise it's a value call) → goes in Decisions.

Hard cap of 5 items per section. If more exist, list the top 5 (most load-bearing) and add:

  • N others, see test-definitions.md

Decisions section is hidden when empty — no "None" placeholder. Do not surface the section at all if zero decisions exist.

Agent's next actions

Only include this section when there are concrete forward actions the agent will take. Each action must be concrete and falsifiable — not vague exploration ("look into X"), but a specific verb + object the agent will execute ("add integration test for R7.3 covering 404-on-uncovered-PATCH").

Hard cap of 5 items per section. If more exist, list the top 5 and add:

  • N others, see test-definitions.md

Actions section is hidden when empty — no "None" placeholder.

All-green collapse

When all Status checks pass AND zero decisions AND zero actions, collapse the entire report to a single-line verdict:

Ready to mark done.

No sections, no ceremony. Single line.

Summary

This command verifies ticket criteria (the done gate). Use it before marking any feature ticket complete. It also works without a ticket for quick project health checks (tests + build + lint + dep drift).

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

audit

무료

Run comprehensive code audit for architecture, dead code, and test quality. Use when reviewing overall codebase health, checking for architectural violations, or before marking a feature complete.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TheMostlyGreat/mythos192026년 6월 14일 업데이트

bdd

무료

Behavior-first feature development — use when building new capabilities, continuing feature work, or when work introduces new state or multiple user flows. Discovers desired behavior through examples and scenarios before implementation. Do NOT use for bug fixes, typos, or small isolated changes.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TheMostlyGreat/mythos192026년 6월 14일 업데이트

Use when the user wants to explore options, weigh approaches, or think through uncertainty before committing to a direction. Collaborative brainstorming and rubber ducking — divergence-first thinking partner.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TheMostlyGreat/mythos192026년 6월 14일 업데이트

Kill zombie dev servers and test processes. Use when ports are blocked, processes are hanging, or test runners won't start.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TheMostlyGreat/mythos192026년 6월 14일 업데이트

debug

무료

Root cause debugging before fixes. Use when investigating bugs, diagnosing test failures, troubleshooting unexpected behavior, or when previous fix attempts failed. Enforces investigate-first discipline.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TheMostlyGreat/mythos192026년 6월 14일 업데이트

elicit

무료

Extract tacit knowledge through non-obvious microquestions — things only the user knows that can't be found in code, docs, or research. Use when you're about to guess at intent, context, or constraints during SAFEWORD's understanding flow. Also use when user says 'ask me', 'what do you need to know', or when another skill (bdd, brainstorm, debug) needs user context before proceeding. Do NOT use for questions answerable by reading the codebase or searching the web.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

TheMostlyGreat/mythos192026년 6월 14일 업데이트

TheMostlyGreat의 스킬 모두 보기

이 스킬의 문제 신고