janekbaraniewski/openusage/finalize-feature
Claude Code and agent skill by janekbaraniewski/openusage
- community
Checking that the SKILL.md file is still in the repository.
Install
npx vskill@latest install janekbaraniewski/openusage/finalize-featureSKILL.md
Skill: Finalize Feature
Create a branch, commit changes, and open a pull request for a completed feature.
When to use
After /validate-feature (or /iterate-feature) reports READY FOR REVIEW. This is the last step before code review.
Prerequisite
- Implementation complete and validated (clean build, passing tests)
- A design doc in
docs/*_DESIGN.md(used for PR description) - Uncommitted changes in working tree
Phases
Phase 0 — Pre-flight Checks
Before any git operations, verify the implementation is ready:
make build— must passmake vet— must passgo test <changed packages> -count=1 -race— must pass- Check
git status— confirm there are changes to commit - Scan staged files for:
.envfiles or credentials — BLOCK if found- Debug prints (
fmt.Printlnnot in test files) — WARN - Large binary files — WARN
- If any BLOCK issues: stop and report. Do not proceed.
- If any WARN issues: report and ask user to confirm proceeding.
Phase 0.5 — Docs Sweep (MANDATORY)
Every PR is also a docs PR until proven otherwise. Before opening the PR, audit user-facing documentation for changes the implementation just introduced. Skipping this phase is not allowed; record the audit result in the PR description.
For each pull request, do all of the following:
- Diff against the user-facing surface. From the staged diff,
identify changes that affect any of:
- Provider behavior (added / removed / renamed providers, new fields,
new endpoints, new env vars)
- CLI surface (commands, subcommands, flags, defaults)
settings.jsonschema (new keys, type changes, default changes)- Daemon, telemetry, integrations behavior
- TUI keybindings, themes, view modes, settings tabs
- Paths read or written
- Any
Defaultvalue referenced in code (theme, intervals, retention)
- Map each change to docs locations under
docs/site/docs/:
getting-started/— onboarding flowconcepts/— mental model, terminologyproviders/<id>.md— per-provider referencedaemon/— daemon, integrations, storagecustomization/— themes, widgets, keybindingsreference/— CLI, config, env vars, paths, full keybindingsguides/— workflowstroubleshooting/— known confusionsfaq.md— recurring questions
- Update or create pages. For each affected location:
- Update existing pages where the change is incremental
- Create a new page when the change introduces a concept that
doesn't fit any existing page (e.g. a new integration class, a new dashboard view mode)
- Treat
docs/site/docs/reference/configuration.md,
docs/site/docs/reference/cli.md, and docs/site/docs/reference/env-vars.md as canonical — every new field, flag, or env var goes in there
- Build the docs site. From
docs/site/:
`` DOCS_PREVIEW=1 npm run build ``
- Must complete with
[SUCCESS] - No broken-link warnings
- Sanity-check the change against the existing review-loop fact sheets
if any are still present in /tmp/openusage-docs-*.md. If a fact sheet contradicts the new code, update the docs to match the code, not the fact sheet.
- Record the audit in the PR description. Add a "Docs impact"
section listing every docs file touched, plus an explicit "no docs change required because <reason>" line if the PR genuinely doesn't affect user-visible behavior (rare).
If this phase reveals doc changes, commit them on the same branch before opening the PR. The PR must always include the documentation update for the change it ships.
Phase 1 — Branch
- Ask user for the branch name. Suggest format:
feat/<short-desc>or<linear-id>/<short-desc>.
- If user provides a Linear ID, use
<linear-id>/<short-desc>format - If no Linear ID, use
feat/<short-desc> - Convert to lowercase, hyphens for spaces
- Check if already on a feature branch (not
main):
- If yes: ask "You're on branch
<name>. Use this branch or create a new one?" - If no: create and checkout the new branch from current HEAD
- Confirm branch name with user before creating.
Phase 2 — Commit
- Run
git diff --statandgit statusto show what will be committed. - Present the list of changed files, grouped by type:
``` ## Files to commit
### New files
- internal/core/time_window.go
### Modified files
- internal/config/config.go
- internal/tui/model.go
### Test files
- internal/core/time_window_test.go
```
- Draft a commit message:
- Use conventional commit format:
feat:,fix:,refactor:,test:,docs: - All lowercase subject line
- Body: summarize what changed and why (2-5 bullet points)
- Reference design doc
- If Linear ID available: include
Closes <LINEAR-ID>in body - Always append
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Present the commit message to user. Ask: "Commit with this message, or edit?"
- Stage files with
git add <specific files>— never usegit add -Aorgit add . - Exclude from staging:
.env, credentials, secrets- Binary files not in
bin/ - Temporary files, editor backups
- Files not related to the feature
- Create the commit.
Phase 3 — Push & Pull Request
- Push branch to remote:
git push -u origin <branch-name> - Draft PR using information from:
- Design doc (problem statement, goals)
- Implementation changes (from git diff against main)
- Commit messages
- PR format:
``` Title: <short, under 70 chars, matches conventional commit style>
Body: ## Summary <1-3 bullet points from design doc problem statement + solution>
## Changes <grouped list of what changed, by subsystem>
## Design doc <link or path to design doc>
## Test plan
- [ ] Unit tests pass for changed packages
- [ ] Build compiles cleanly
- [ ] <feature-specific test steps>
🤖 Generated with Claude Code ```
- Create PR:
gh pr create --title "..." --body "..." - If Linear ID provided, the PR title or body should reference it for auto-linking.
- Report the PR URL to user.
Phase 4 — Final Checklist
Rules
- NEVER force push — always regular push. If push fails due to remote changes, report and ask user.
- NEVER commit secrets, credentials, or
.envfiles — block and report. - NEVER use
git add -Aorgit add .— always stage specific files. - NEVER create a commit without showing the message to the user first.
- NEVER push to main directly — always use a feature branch.
- Always use conventional commit format (lowercase, no period at end of subject).
- Always include Co-Authored-By trailer.
- If pre-flight checks fail, stop immediately — do not try to fix issues (that's
/iterate-feature's job). - If user is already on a feature branch with existing commits, ask before adding more commits.
- PR description should be useful for reviewers — include context, not just a file list.
Checklist
Before marking finalization complete:
- [ ] Pre-flight checks pass (build, vet, tests)
- [ ] No secrets or credentials in staged files
- [ ] Branch name follows convention
- [ ] Commit message follows conventional commit format
- [ ] Commit message reviewed by user
- [ ] Changes pushed to remote
- [ ] PR created with summary, changes, and test plan
- [ ] PR URL reported to user
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdocs/skills/finalize-feature/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/janekbaraniewski/openusage/finalize-feature)