From powerups
Use for any code change — bug fix, small feature, refactor, or improvement. Ensures TDD, clarifying questions, codebase investigation, DRY, proper branching/worktrees, UI skills, and doc updates. PDD invokes this automatically for large features.
How this skill is triggered — by the user, by Claude, or both
Slash command
/powerups:best-practicesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The baseline discipline for every code change, no matter how small — a bug fix, a refactor, a small feature. `plan-driven-development` invokes this automatically for large multi-milestone features; use it directly for smaller work.
The baseline discipline for every code change, no matter how small — a bug fix, a refactor, a small feature. plan-driven-development invokes this automatically for large multi-milestone features; use it directly for smaller work.
Before any of this: if the change is a new user-facing feature, run powerups:user-research first — it produces the discovery brief (problem statement, jobs-to-be-done, core flow, decision matrix) that confirms you're building the right thing. That skill owns the skip conditions. plan-driven-development and give-me-five already invoke it at the right moment; this pointer is for standalone feature work.
Create a branch before writing any code: git checkout -b feature/name. Never commit directly to main.
Before writing code, spawn an Explore subagent to find what already exists:
"Investigate the codebase for [feature/problem]. Check: (1) does similar code already exist, (2) do existing services or third-party deps already handle this, (3) what patterns are used for similar features. Return a concise summary under 30 lines."
All investigation happens in subagents to protect main context — they return summaries, not raw file contents.
Third-party APIs and libraries: WebSearch the latest official docs before writing integration code — verify parameter names, required fields, response shapes, and recent breaking changes. Do not rely on training knowledge alone; APIs deprecate endpoints and rename parameters.
Before modifying an existing function, API, database schema, or shared utility, scan everything that depends on it. Scale to the blast radius: one scan for a small local change, all 3 in parallel for signature, schema, shared-utility, or API-shape changes.
Run scans as general-purpose subagents with this prompt shape:
"I'm modifying [function/module/table]. Find EVERY [scan target] across the entire codebase. For each: file path, line number, exact usage, whether it needs updating."
Merge findings into a single impact picture. If using PDD, add a "Callers Impacted" section to the plan; otherwise verify each caller is handled before marking the work done. Update any caller that passes explicit values matching old defaults you're changing.
This differs from practice #2: #2 asks "does similar code exist?" to avoid reinventing. This asks "what breaks when I change this?" to avoid incomplete changes.
Use AskUserQuestion to clarify before building. Don't guess at requirements, scope, or approach:
If the request is ambiguous, ask — don't pick an interpretation. If you're about to make a product decision, surface it. Batch related questions into one message.
Invoke powerups:test-driven-development. Failing test first, minimal code to pass, refactor. No mocks — tests hit real infrastructure. That skill owns the details.
Do NOT implement backward compatibility or legacy methods unless explicitly asked.
# removed comments, no _unused variables.If the change touches anything the user sees, invoke both:
simple-design-principles — copy and labels, toasts, empty states, error messages, component selectionfrontend-design — visual design for new or modified components, pages, loading/error statesIf the change adds or modifies API endpoints, invoke self-documenting-apis — endpoint docstrings, typed request/response models with field descriptions, status codes, router tags. Auto-generated docs (/docs, /redoc) are the only API reference; never maintain a separate api-reference.md.
The canonical completion sequence for any code change — plan-driven-development and bug-fix reference this instead of restating it. Run after the code works, in this order:
/simplify — review changed code for reuse, quality, and efficiency (duplicate code, N+1 queries, anti-patterns). Fix what it finds.powerups:change-log — CHANGELOG.md entry in plain language. User-facing changes only.update-docs — sync CLAUDE.md, README, guides, sibling repos. Small changes cause drift too.ruff check, npm run lint, …). Fix issues in files you changed; leave pre-existing issues in untouched files.0. User-research (new user-facing features)
1. Branch (never main)
2. Investigate + DRY (Explore subagent; WebSearch 3rd-party docs)
3. Impact scan (what breaks?)
4. Ask (clarify requirements with user)
5. TDD (invoke the skill)
6. No backward compat (unless explicitly asked)
7. UI → simple-design-principles + frontend-design
8. API → self-documenting-apis
9. Finish: simplify → change-log → update-docs → lint → full suite
npx claudepluginhub jackyliang/powerups --plugin powerupsProvides implementation patterns for writing code, building features, fixing bugs, and refactoring. Follows a verify-in-tight-loops approach to ship working code efficiently.
Creates comprehensive implementation plans for new features, refactoring, or bug fixes with detailed file-level changes and test strategies.
Use when implementation work starts on a feature or bug fix: writing or modifying source code, adding tests, or closing out a branch. Covers TDD-first, scope integrity, secret and security hygiene, dual post-implementation review (code reviewer plus spec reviewer), and finish-branch closure. Triggers on "implement", "start coding", "build the feature", "write the code", "fix the bug", "finish the branch", "wrap up the branch", and the same intent in any language ("開始實作", "開發這個功能", "收尾", "実装して").