From skills
Use when the user says "drive the feature", "/drive-feature", "audit the feature logic", "is this feature complete", "check edge cases", or asks Claude to verify that a feature (typically the one in the current PR) is well built end-to-end. Reads any ADRs and specs that exist for the feature, traces the data flow from entry to exit, and checks edge cases, error handling, loading states, and side effects against the spec. Does NOT pass judgment on code style (use /drive-code) or click through the UX (use /drive-ux) - focuses on logic and completeness.
How this skill is triggered — by the user, by Claude, or both
Slash command
/skills:drive-featureThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
drive-feature asks: **"does this feature actually work, for every case
drive-feature asks: "does this feature actually work, for every case someone might hit, in a way that matches what we said we were building?"
It's a logic-and-completeness audit, not a code-style pass and not a UX walkthrough. It traces the data flow from entry to exit (UI → API → service → repository → side effects) and checks each step for:
The skill produces a gap list. It applies obvious fixes inline but leaves judgment calls to the user.
The spec is the source of truth. Look for one before reading any code. Search in this order; collect all hits, don't stop at the first:
# ADR / RFC directories (common conventions)
fd --type f --extension md . \
docs/adr docs/architecture docs/rfcs docs/specs \
adr architecture rfcs specs \
.docs design-docs 2>/dev/null
# Feature-named docs
rg -l --type md "<feature-name-or-keyword>" docs/ .docs/ 2>/dev/null
# PR description and linked issues
gh pr view --json body,closingIssuesReferences --jq '.body, .closingIssuesReferences'
# Then for each referenced issue:
gh issue view <number> --json title,body,labels
Also check for:
<feature>.md in the same directory as the code.// see docs/...).If no spec exists, say so explicitly in the final report:
No ADR / spec found for this feature. drive-feature audited against common-sense expectations only - not against documented intent.
Don't make up a spec. Don't assume what the feature "probably" should do. Specs are load-bearing for this audit; their absence is itself a finding.
Identify everything that's part of the feature, not just the files the PR happens to touch. The PR diff is a starting point, not the boundary.
# Files the PR touches
gh pr diff --name-only
# For each touched file, find imports and importers
tslsp references --symbol <main-exported-symbol-of-each-file>
# (or grep equivalents for non-TS)
# Find the entry points (UI components, API routes, CLI commands, cron handlers)
rg -l 'export default' <touched-dirs>
Build a mental map (and write it down in the report):
Entry: POST /api/orders/:id/cancel
→ controller: src/api/orders/cancel.ts
→ service: src/services/orders/cancelOrder.ts
→ repo: src/repositories/orders.ts
→ side effects:
- emit OrderCancelledEvent → analytics
- send cancellation email → email service
- refund via payment provider
→ response: { status: "cancelled", refundId? }
The map is the skeleton the rest of the audit hangs from. Without it, you'll miss things - especially side effects, which tend to hide one layer below the obvious flow.
For every distinct path from entry to exit, walk it and validate:
For every parameter the entry point accepts:
references/feature-audit-checklist.md
(null, empty, boundary, large, unicode, SQL-injection, XSS, permission,
missing, stale).if balance > 0 then both decrementing.)For every external call (HTTP, DB, queue, cache, file system):
For every side effect identified in the map:
For each async operation that the user triggers from the UI:
loading flag (or equivalent - pending state
from React Query, etc.)?success state distinct from idle?error state distinct from "blank screen"?(This overlaps with what /drive-ux looks at, but drive-feature checks
that the code has the states wired up - drive-ux checks that the
user can see them working.)
For each requirement in the spec, find it in the code:
Spec says | Code does | Status
---------------------------------------------- | ------------------------ | ------
"Orders can only be cancelled within 24h" | checks `created_at` | ✅
"Cancellation triggers a refund" | enqueues RefundJob | ✅
"Refunds may take up to 5 business days" | not surfaced to user | ❌ gap
"Cancellation by admin requires audit log" | nothing | ❌ gap
Any spec line that has no implementation, or whose implementation disagrees with what was specified, is a gap. List them all.
Conversely, anything the code does that the spec doesn't mention is either:
Some gaps are mechanical to fix:
For these, edit inline (the trust-policy and operating rules still apply - see below). For each fix, leave a short commit:
git commit -m "drive-feature: handle 404 on missing order ID"
For judgment calls - splitting a feature differently, changing the spec, introducing a new pattern - write them up in the report. The user decides.
# Tests run
<test-runner> <touched-paths-and-their-tests>
# Types compile
tslsp diagnostics --files <touched paths> # or tsc / cargo check / etc.
If a fix breaks something, surface it. Don't push broken code.
drive-feature audited <feature name>.
Spec source: <path or "none found">
Feature surface: <entry> → <flow summary>
Fixed inline (each its own commit): <sha> <one-line>
Gaps (spec vs. code): P0 / P1 / P2, each with spec line, code location.
Edge cases NOT handled: <list>
Side effects review: ordering, atomicity, idempotency per effect.
Scope creep (code does, spec doesn't ask): <list>
Hidden behaviour (code does, spec doesn't mention): <list>
Spec missing or thin in these areas: <list>
Recommended next steps: <list>
Be honest about gaps. If the spec is silent on something important, say "spec is silent - needs an answer" rather than guessing.
tslsp skill for TS/JS symbol-level exploration.references/trust-policy.md./drive-pr - comments + CI + description; AI bot edge-case comments often route here./drive-ux - checks the user can see the states this skill wired up./drive-code - orthogonal; logic-complete code can still be coded badly.Natural order on a fresh PR: /drive-code → /drive-feature →
/drive-ux → /drive-pr.
npx claudepluginhub 0xdeafcafe/skills --plugin skillsCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.