ship-feature
When to use
Use this skill when the user asks to implement a feature, fix a bug, or perform a refactor that requires more than a trivial one-liner. It covers the full lifecycle from understanding the ask through verified delivery.
Available scripts
scripts/verify-tests.sh— Run the project's test suite and return pass/fail counts as JSON. Call this after each significant change to confirm nothing regressed.scripts/verify-build.sh— Run the project's build and return success/failure as JSON. Call this before opening a PR.scripts/pre-pr-checklist.sh— Run typecheck + lint + tests + build all-or-nothing. Call this once when the feature is complete and all commits are staged.
Workflow
- Understand — Read the full ask. Ask clarifying questions if ambiguous.
- Research — Search the codebase for existing patterns, types, and utilities that the change will touch. Read every related file completely — never speculate.
- Plan — Outline the approach. Identify risks. Share the plan with the user if the change is non-trivial.
- Build — One file at a time. Write or update tests alongside each change. Read before edit; reuse before create.
- Verify — Run
scripts/verify-tests.shafter each significant change. Address failures before moving to the next file. - Pre-PR check — Run
scripts/pre-pr-checklist.shonce all commits are ready. Fix every error before opening the PR. - Deliver — Push with a clear commit message. Summarize what changed and why.
Gotchas
- Scope creep: if the work reveals adjacent issues, flag them to the user rather than expanding the change silently.
- Missing dependencies: propose adding any missing library with a rationale before installing it.
- Pre-PR checklist is blocking: if
scripts/pre-pr-checklist.shreturnsstatus: error, fix the reported step before proceeding. - No test runner detected: if
scripts/verify-tests.shreturnsstatus: blockedwithcode: NO_TEST_COMMAND, inform the user and agree on a manual verification step.
Failure modes
If scripts/pre-pr-checklist.sh returns status: error, read error.code:
TYPECHECK_FAILED— TypeScript errors present. Fix them before continuing.LINT_FAILED— Lint violations present. Fix or suppress with justification.TESTS_FAILED— Test suite is red. Fix failing tests before opening the PR.BUILD_FAILED— Build command failed. Fix compilation/bundling errors.NO_TEST_COMMAND— Project has no detectable test script. Discuss with user.NO_BUILD_COMMAND— Project has no detectable build script. Typecheck and lint are still enforced.