From feature-workflow
Ships ready features by writing shipped.md, committing/pushing to feature branch, merging PR to dev, and updating dashboard. Use after external reviews.
npx claudepluginhub schuettc/claude-code-plugins --plugin feature-workflowThis skill uses the workspace's default tool permissions.
You are executing the **SHIP FEATURE** workflow — writing the completion record, committing it to the feature branch, and merging the PR into dev.
Ships completed feature branches through quality gates, review, fresh-eyes checks, and PR creation. For existing PR updates: runs gates, pushes changes, reports PR URL. Config from .beislid/workflow.md.
Share bugs, ideas, or general feedback.
You are executing the SHIP FEATURE workflow — writing the completion record, committing it to the feature branch, and merging the PR into dev.
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.
$ARGUMENTS
If no specific feature ID was provided above, you will help the user select from in-progress items.
| Phase | Name | Purpose |
|---|---|---|
| 1 | Pre-flight | Verify feature is in-progress and has a PR |
| 2 | Write shipped.md | Create completion record on the feature branch |
| 3 | Commit and Push | Add shipped.md to the feature branch |
| 4 | Merge PR | Mark PR ready, merge into dev, clean up branches |
| 5 | Update Dashboard | Regenerate dashboard and clear statusline |
idea.md and plan.md for contextgh pr list --head feature/<id> --json number,url,state,isDraft,baseRefName --jq '.[0]'
feature/<id> branch — if not, switch to it:
git checkout feature/<id>
If there's no PR, warn the user — they may want to run /feature-submit first, or proceed with a local merge.
Write docs/features/<id>/shipped.md with the following format:
---
shipped: YYYY-MM-DD
---
# Shipped: [Feature Name]
## Summary
Brief summary of what was delivered...
## Key Changes
- Change 1
- Change 2
- Change 3
## Files Changed
- `path/to/file1.ts`
- `path/to/file2.ts`
## Testing
How the feature was tested and verified...
## Notes
Any follow-up items, known limitations, or context for future maintainers...
Populate this from the plan.md, commit messages, and git diff.
Commit shipped.md to the feature branch and push:
git add docs/features/<id>/shipped.md
git commit -m "docs(<id>): mark feature as shipped"
git push
After writing shipped.md, regenerate the dashboard by running:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/shared/lib/run_dashboard.py <project_root>
If the dashboard was regenerated, commit and push that too:
git add docs/features/DASHBOARD.md
git commit -m "docs: regenerate dashboard"
git push
gh pr ready <pr-number>
gh pr merge <pr-number> --merge --delete-branch
git checkout dev && git pull && git branch -d feature/<id>
python3 ${CLAUDE_PLUGIN_ROOT}/skills/shared/lib/run_dashboard.py <project_root>
python3 ${CLAUDE_PLUGIN_ROOT}/skills/shared/lib/statusline.py clear
## Feature Shipped
**Feature**: [name]
**ID**: <id>
**PR**: <pr-url> (merged)
**Shipped**: YYYY-MM-DD
The feature is now in dev. Dashboard updated.
| Error | Resolution |
|---|---|
| Feature not in-progress | Direct user to correct command or status |
| No PR exists | Suggest /feature-submit first, or offer local merge |
| Not on feature branch | Switch to feature/<id> |
| Already completed | Feature has shipped.md — nothing to do |
If shipped.md wasn't created, you can use the ship script:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/feature-ship/scripts/ship_feature.py <project_root> <feature-id> "Summary message"
After creating shipped.md, regenerate the dashboard:
python3 ${CLAUDE_PLUGIN_ROOT}/skills/shared/lib/run_dashboard.py <project_root>