Ship Skill
Complete end-of-session workflow: verify work, organize commits, and track progress.
When to Use
Invoke with /ship when you're done with a development session and want to:
- Verify code quality and security
- Create clean, organized commits from your changes
- Track progress in changelog and/or project roadmap
Instructions
Phase 0: Verify Work (Mandatory)
IMPORTANT: All code changes MUST pass verification before organizing commits.
Run comprehensive verification by invoking the verify-work skill:
- Security checks (secrets, SQL injection, XSS, validation, rate limits)
- Best practices (debug code, TypeScript, error handling)
- Efficiency (React hooks, re-renders, imports)
- Code standards (CSS Modules, API patterns, naming)
Review all findings presented by verification:
- 🔒 Security issues (BLOCKING)
- ⚠️ Best practice violations (BLOCKING)
- 💡 Efficiency issues (optimization recommendations)
- 📝 Code standard violations (BLOCKING)
Resolve all BLOCKING issues:
- Use 'fix all' to auto-fix available issues
- Manually fix issues that require code changes
- Re-run verification until all blocking issues are resolved
Cannot proceed to Phase 1 until:
- All security issues are resolved
- All best practice violations are fixed
- All code standard violations are corrected
- User has explicitly approved any remaining optimizations
Check if tests need updates:
- Search for existing tests related to changed files/functions
- If changing constants, limits, or config values, check test mocks and assertions
- If changing function signatures, check test function calls
- If changing API behavior, check API tests for expected responses
Common patterns to check:
tests/lib/*.test.ts for library changes in lib/
tests/config/*.test.ts for config changes in src/config/
- Mock values (
mockResolvedValue, mockReturnValue) that simulate changed data
- Assertions (
expect(x).toBe(y)) that verify changed values
Update any tests that would fail due to the code changes.
Run tests to ensure nothing is broken:
npm test
- If tests fail, fix the issues before proceeding
- All tests must pass to continue to Phase 1
This ensures code quality, security standards, and test coverage before any commit is made.
Phase 1: Organize Commits
Analyze Changes
git status
git diff --stat HEAD
Group into Logical Commits
Categorize by: feat, fix, refactor, style, docs, chore, test, perf
Present Commit Plan
Show proposed groupings and ask for approval.
Execute Commits
Create each commit with conventional commit messages.
Phase 2: Track Progress (Automatic)
After commits are created, automatically track progress:
Recording progress...
- Scanning commits for changelog/progress routing
- User-facing changes → changelog + progress
- Admin/test/refactor → progress only
✓ Changelog: 2026-02-01 - Feature Name (draft)
✓ Progress: Feature Name (3 items)
Done! Review changelog at /admin/changelog to publish.
How it works:
- Analyzes commit types and scopes to route automatically
feat, fix (user-facing) → changelog + progress
feat(admin), test, refactor → progress only
- Checks for duplicates before creating
- Creates changelog entries as drafts for review
- Progress entries are initiatives only (no individual action items) to keep the view focused
To skip tracking (rare):
If you need to skip tracking for a specific session, say "skip tracking" when prompted. This should be rare - tracking helps maintain project visibility.
Quick Reference
| Phase |
Action |
Command/Tool |
| 0 |
Verify work |
/verify-work skill |
| 0 |
Fix issues |
Auto-fix or manual |
| 0 |
Check test updates |
Search tests/ for related tests |
| 0 |
Run tests |
npm test |
| 1 |
Check changes |
git status |
| 1 |
Create commits |
git add + git commit |
| 2 |
Track progress |
Automatic (uses commit data) |
Example Flow
User: /ship
Claude: I'll help you ship your changes. First, let me verify all code quality...
[Phase 0: Runs verification]
## Verification Results
### Best Practices [BLOCKING] - 2 found
- [ ] Debug Code - 3 console.logs in src/components/Dashboard.tsx
Auto-fix: Available
### Code Standards [BLOCKING] - 1 found
- [ ] API Pattern - Missing errorResponse helper in app/api/filters/route.ts
Auto-fix: Available
**Summary:** 3 blocking issues found
**Actions:** Type 'fix all' to auto-fix
User: fix all
Claude: Applying fixes...
- Removed 3 console.log statements
- Added errorResponse import and usage
Re-running verification... All checks passed!
Running tests...
✓ 45 tests passed
All tests passing!
[Phase 1: Analyzes changes]
I found 12 changed files across 3 categories:
1. feat(filters): Add active filter and counts (4 files)
2. fix(import): Include missing schema fields (1 file)
3. refactor(plan): Reorder tabs for workflow (1 file)
Does this grouping look right?
User: yes
Claude: Creating commits...
- Commit 1: feat(filters): add active filter and counts
- Commit 2: fix(import): include missing schema fields
- Commit 3: refactor(plan): reorder tabs for workflow
[Phase 2: Track Progress - Automatic]
Recording progress...
Analyzing commits:
★ feat(filters): add active filter and counts → changelog + progress
★ fix(import): include missing schema fields → changelog + progress
○ refactor(plan): reorder tabs for workflow → progress only
Creating entries...
✓ Changelog: 2026-01-13 - Add active filter and counts (draft)
✓ Progress: Add active filter and counts (1 item)
✓ Changelog: 2026-01-13 - Include missing schema fields (draft)
✓ Progress: Include missing schema fields (1 item)
✓ Progress: Reorder tabs for workflow (1 item)
Ship complete!
- 3 commits created
- 2 changelog entries (draft) - review at /admin/changelog
- 3 progress entries
Notes
- Phase 0 is mandatory - Cannot skip verification or tests
- Verification ensures code quality, security, and adherence to project standards
- Always check if tests need updates when changing constants, limits, config values, or function behavior
- All tests must pass before proceeding to commits
- Auto-fix available for common issues (console.logs, rate limiting, etc.)
- Manual fix required for complex issues (SQL injection, Zod schemas)
- If verification or tests fail, Phase 1 will not proceed until issues are resolved
/track-progress writes directly to database - no manual import needed
- Commits follow conventional commit format with Co-Authored-By
1---2name: ship-163description: Complete end-of-session workflow - verify work quality, organize commits, and track progress. Use at the end of a development session to ship cleanly.4---5
6# Ship Skill
7
8Complete end-of-session workflow: verify work, organize commits, and track progress.
9
10## When to Use
11
12Invoke with `/ship` when you're done with a development session and want to:
13- Verify code quality and security
14- Create clean, organized commits from your changes
15- Track progress in changelog and/or project roadmap
16
17## Instructions
18
19### Phase 0: Verify Work (Mandatory)
20
21**IMPORTANT**: All code changes MUST pass verification before organizing commits.
22
231. **Run comprehensive verification** by invoking the verify-work skill:
24 - Security checks (secrets, SQL injection, XSS, validation, rate limits)
25 - Best practices (debug code, TypeScript, error handling)
26 - Efficiency (React hooks, re-renders, imports)
27 - Code standards (CSS Modules, API patterns, naming)
28
292. **Review all findings** presented by verification:
30 - 🔒 Security issues (BLOCKING)
31 - ⚠️ Best practice violations (BLOCKING)
32 - 💡 Efficiency issues (optimization recommendations)
33 - 📝 Code standard violations (BLOCKING)
34
353. **Resolve all BLOCKING issues**:
36 - Use 'fix all' to auto-fix available issues
37 - Manually fix issues that require code changes
38 - Re-run verification until all blocking issues are resolved
39
404. **Cannot proceed** to Phase 1 until:
41 - All security issues are resolved
42 - All best practice violations are fixed
43 - All code standard violations are corrected
44 - User has explicitly approved any remaining optimizations
45
465. **Check if tests need updates**:
47 - Search for existing tests related to changed files/functions
48 - If changing constants, limits, or config values, check test mocks and assertions
49 - If changing function signatures, check test function calls
50 - If changing API behavior, check API tests for expected responses
51
52 Common patterns to check:
53 - `tests/lib/*.test.ts` for library changes in `lib/`
54 - `tests/config/*.test.ts` for config changes in `src/config/`
55 - Mock values (`mockResolvedValue`, `mockReturnValue`) that simulate changed data
56 - Assertions (`expect(x).toBe(y)`) that verify changed values
57
58 Update any tests that would fail due to the code changes.
59
606. **Run tests** to ensure nothing is broken:
61 ```bash
62 npm test
63 ```
64 - If tests fail, fix the issues before proceeding
65 - All tests must pass to continue to Phase 1
66
67**This ensures code quality, security standards, and test coverage before any commit is made.**
68
69---
70
71### Phase 1: Organize Commits
72
731. **Analyze Changes**
74 ```bash
75 git status
76 git diff --stat HEAD
77 ```
78
792. **Group into Logical Commits**
80 Categorize by: feat, fix, refactor, style, docs, chore, test, perf
81
823. **Present Commit Plan**
83 Show proposed groupings and ask for approval.
84
854. **Execute Commits**
86 Create each commit with conventional commit messages.
87
88### Phase 2: Track Progress (Automatic)
89
90After commits are created, automatically track progress:
91
92```
93Recording progress...
94- Scanning commits for changelog/progress routing
95- User-facing changes → changelog + progress
96- Admin/test/refactor → progress only
97
98✓ Changelog: 2026-02-01 - Feature Name (draft)
99✓ Progress: Feature Name (3 items)
100
101Done! Review changelog at /admin/changelog to publish.
102```
103
104**How it works:**
105- Analyzes commit types and scopes to route automatically
106- `feat`, `fix` (user-facing) → changelog + progress
107- `feat(admin)`, `test`, `refactor` → progress only
108- Checks for duplicates before creating
109- Creates changelog entries as drafts for review
110- Progress entries are **initiatives only** (no individual action items) to keep the view focused
111
112**To skip tracking (rare):**
113If you need to skip tracking for a specific session, say "skip tracking" when prompted. This should be rare - tracking helps maintain project visibility.
114
115## Quick Reference
116
117| Phase | Action | Command/Tool |
118|-------|--------|--------------|
119| 0 | Verify work | `/verify-work` skill |
120| 0 | Fix issues | Auto-fix or manual |
121| 0 | Check test updates | Search `tests/` for related tests |
122| 0 | Run tests | `npm test` |
123| 1 | Check changes | `git status` |
124| 1 | Create commits | `git add` + `git commit` |
125| 2 | Track progress | Automatic (uses commit data) |
126
127## Example Flow
128
129```
130User: /ship
131
132Claude: I'll help you ship your changes. First, let me verify all code quality...
133
134[Phase 0: Runs verification]
135
136## Verification Results
137
138### Best Practices [BLOCKING] - 2 found
139- [ ] Debug Code - 3 console.logs in src/components/Dashboard.tsx
140 Auto-fix: Available
141
142### Code Standards [BLOCKING] - 1 found
143- [ ] API Pattern - Missing errorResponse helper in app/api/filters/route.ts
144 Auto-fix: Available
145
146**Summary:** 3 blocking issues found
147**Actions:** Type 'fix all' to auto-fix
148
149User: fix all
150
151Claude: Applying fixes...
152- Removed 3 console.log statements
153- Added errorResponse import and usage
154
155Re-running verification... All checks passed!
156
157Running tests...
158✓ 45 tests passed
159All tests passing!
160
161[Phase 1: Analyzes changes]
162
163I found 12 changed files across 3 categories:
1641. feat(filters): Add active filter and counts (4 files)
1652. fix(import): Include missing schema fields (1 file)
1663. refactor(plan): Reorder tabs for workflow (1 file)
167
168Does this grouping look right?
169
170User: yes
171
172Claude: Creating commits...
173- Commit 1: feat(filters): add active filter and counts
174- Commit 2: fix(import): include missing schema fields
175- Commit 3: refactor(plan): reorder tabs for workflow
176
177[Phase 2: Track Progress - Automatic]
178
179Recording progress...
180
181Analyzing commits:
182 ★ feat(filters): add active filter and counts → changelog + progress
183 ★ fix(import): include missing schema fields → changelog + progress
184 ○ refactor(plan): reorder tabs for workflow → progress only
185
186Creating entries...
187 ✓ Changelog: 2026-01-13 - Add active filter and counts (draft)
188 ✓ Progress: Add active filter and counts (1 item)
189 ✓ Changelog: 2026-01-13 - Include missing schema fields (draft)
190 ✓ Progress: Include missing schema fields (1 item)
191 ✓ Progress: Reorder tabs for workflow (1 item)
192
193Ship complete!
194- 3 commits created
195- 2 changelog entries (draft) - review at /admin/changelog
196- 3 progress entries
197```
198
199## Notes
200
201- **Phase 0 is mandatory** - Cannot skip verification or tests
202- Verification ensures code quality, security, and adherence to project standards
203- **Always check if tests need updates** when changing constants, limits, config values, or function behavior
204- All tests must pass before proceeding to commits
205- Auto-fix available for common issues (console.logs, rate limiting, etc.)
206- Manual fix required for complex issues (SQL injection, Zod schemas)
207- If verification or tests fail, Phase 1 will not proceed until issues are resolved
208- `/track-progress` writes directly to database - no manual import needed
209- Commits follow conventional commit format with Co-Authored-By