feature-ship
Complete a feature with quality gates - security review, QA validation, and final verification. Use when user says they're done implementing, wants to ship a feature, or asks to complete/finish work.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Complete Feature Command
You are executing the COMPLETE FEATURE workflow - a quality gate process that ensures features meet security, quality, and testing standards before being marked as completed.
First Step (Do This Now)
Read the file at path: docs/features/DASHBOARD.md
This file shows in-progress features. Look at the "In Progress" section to find features ready to ship.
Note: To complete a feature, create
docs/features/[id]/shipped.md. The PostToolUse hook automatically updates DASHBOARD.md - do NOT edit DASHBOARD.md directly.
Contents
Feature Target
$ARGUMENTS
If no specific feature ID was provided above, you will help the user select from in-progress items.
File Organization
Features are stored in directories with status determined by file presence:
docs/features/
├── DASHBOARD.md # Auto-generated, read-only for Claude
├── my-feature/
│ ├── idea.md # Problem statement + metadata (backlog)
│ ├── plan.md # Implementation plan (in-progress)
│ └── shipped.md # Completion notes (completed)
└── another-feature/
└── idea.md
Status Detection by File Presence
| Files Present | Status |
|---|---|
idea.md only |
backlog |
idea.md + plan.md |
in-progress |
idea.md + plan.md + shipped.md |
completed |
Key Principles:
-
/feature-capturecreatesidea.mdonly (backlog status) -
/feature-planaddsplan.md(changes to in-progress) -
/feature-shipaddsshipped.md(changes to completed) - DASHBOARD.md is auto-regenerated by hooks - never edit directly
Workflow Overview
This command orchestrates a 6-phase quality gate workflow:
| Phase | Name | Purpose |
|---|---|---|
| 1 | Pre-flight Check | Verify feature is in-progress, has implementation artifacts |
| 2 | Security Review | Scan for vulnerabilities (OWASP Top 10, CVEs) |
| 3 | QA Validation | Verify test coverage and acceptance criteria |
| 4 | Final Verification | Run tests, type check, lint, build |
| 5 | Write shipped.md | Create shipped.md to complete the feature |
| 6 | Summary | Display completion report |
Effort-Based Scaling
| Effort | Phase 2 (Security) | Phase 3 (QA) |
|---|---|---|
| Small (< 8 hours) | npm audit only |
npm test only |
| Medium/Large | Full security-reviewer agent | Full qa-engineer agent |
Phase Details
Phase 1: Pre-flight Check & Effort Selection
See: preflight.md
- Read DASHBOARD.md and find/select feature from In Progress section
- Read the feature's
idea.mdandplan.mdfor details - Verify feature is in-progress (has plan.md, no shipped.md)
- Determine effort level for workflow scaling
Phase 2: Security Review
See: security.md
-
Small effort: Run
npm audit --audit-level=high - Medium/Large: Run security-reviewer agent
- BLOCKS completion if Critical/High issues found
Phase 3: QA Validation
See: qa.md
-
Small effort: Run
npm test - Medium/Large: Run qa-engineer agent
- BLOCKS completion if critical issues or test failures
Phases 4-6: Verification & Completion
See: completion.md
- Run full test suite, type check, lint, build
- Review implementation checklist from plan.md
- Get user confirmation
- Write shipped.md
-
After writing shipped.md, regenerate the dashboard by running:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/shared/lib/run_dashboard.py <project_root> -
Clear statusline by running:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/shared/lib/statusline.py clear - Display completion summary
shipped.md Format
Write shipped.md with YAML frontmatter followed by content:
---
shipped: YYYY-MM-DD
---
# Shipped: [Feature Name]
## Summary
Brief summary of what was delivered...
## Key Changes
- Change 1
- Change 2
- Change 3
## Testing
How the feature was tested and verified...
## Notes
Any follow-up items, known limitations, or context for future maintainers...
Error Handling
| Error | Resolution |
|---|---|
| Feature not in-progress | Direct user to correct command or status |
| Security issues found | BLOCK and provide fixes |
| QA issues found | BLOCK and list what needs fixing |
| Tests failing | BLOCK and show failures |
| Feature artifacts missing | Ask user to verify implementation was done |
| Already completed | Feature has shipped.md - nothing to do |
Fallback: Manual Ship
If shipped.md wasn't created, you can use the ship script:
# Use the ship_feature.py script
python3 ${CLAUDE_PLUGIN_ROOT}/skills/feature-ship/scripts/ship_feature.py <project_root> <feature-id> "Summary message"
Or create shipped.md manually:
cat > docs/features/[feature-id]/shipped.md << 'EOF'
---
shipped: $(date +%Y-%m-%d)
---
# Shipped: [Feature Name]
## Summary
Feature completed and committed.
EOF
After creating shipped.md, regenerate the dashboard:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/shared/lib/run_dashboard.py <project_root>
Philosophy: "Quality is Not Optional"
This workflow ensures:
- Security vulnerabilities are caught before production
- Quality standards are met consistently
- Test coverage is verified
- Features are properly documented
- Clean transition from in-progress to completed
No feature should be marked complete without passing these quality gates.
Let's verify your feature is ready for completion!
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!