polish
This skill contains shell command directives (!`command`) that may execute system commands. Review carefully before installing.
Pre-Release Polish
Current branch: !git rev-parse --abbrev-ref HEAD
Uncommitted changes: !git diff --stat 2>/dev/null | tail -1
Rules
- Read every changed file fully before reviewing - never assess code you haven't opened
- Only flag real issues, not style preferences already handled by the formatter
- Do NOT add comments, docstrings, or type annotations to code that doesn't have them
- Distinguish legitimate operational logging (
logger.info,logger.error) from debug leftovers (console.log,console.debug) - When fixing, make minimal targeted edits - don't refactor surrounding code
- Only flag issues in changed/added lines, not pre-existing code
- Reuse suggestions must point to a specific existing function/utility in the codebase, not hypothetical "you could extract this"
- Do not flag efficiency on cold paths, one-time setup code, or scripts that run once
Phase 1: Automated Checks
Run the project's lint + type-check command. Check CLAUDE.md for the correct validation command (commonly pnpm check, just check, cargo clippy, uv run ruff check, etc.).
If checks fail:
- Fix all errors
- Re-run checks until clean
- Then proceed to Phase 2
If no validation command is found in CLAUDE.md, ask the user what to run.
Phase 2: Diff Analysis
Determine what changed:
- Check for uncommitted changes:
git diff+git diff --cached - If no uncommitted changes, diff against main:
git diff main...HEAD - If no changes at all, report "nothing to review" and stop
Read every changed file fully. Understand what each change does and why.
Phase 3: Parallel Review
Use the Agent tool to launch all three agents concurrently in a single message with model: "opus". Pass each agent the full diff and the list of changed files so it has the complete context.
Agent 1: Cleanliness
Fast, mechanical, high-confidence. Looks for junk that should be removed.
- Debug leftovers:
console.log,console.debug,console.warnadded during development; temporary debug variables, hardcoded test values. NOT structured logger calls (logger.info,logger.error,c.var.logger) - AI slop: comments explaining obvious code ("// increment counter", "// return the result") - flag each such comment individually, even if the code it describes is also flagged under another category; JSDoc on internal/private functions that aren't part of a public API; verbose docstrings on simple helpers;
TODO/FIXME/HACKmarkers left by Claude (not by the user); unnecessary type annotations where the language infers correctly; emoji in code or comments (unless the project uses them) - Dead code: unreferenced functions, variables, types; commented-out code blocks (git has history); unused function parameters (unless required by interface/callback signature)
- Unused imports: imports added but never referenced, imports left behind after refactoring (linter catches most - verify edge cases)
- Hardcoded values: magic numbers or strings that should be in constants; URLs, prices, limits that belong in config. NOT obvious constants like
0,1,true, HTTP status codes
Agent 2: Design & Reuse
Requires codebase exploration beyond the diff. Looks for structural and design issues.
- Reuse opportunities: search the codebase for existing utilities, helpers, and shared modules that could replace newly written code. Look in utility directories, shared modules, and files adjacent to the changed ones. Flag hand-rolled logic where a utility already exists (string manipulation, path handling, type guards, env checks)
- Over-engineering: helper functions used exactly once (should be inlined); abstractions wrapping a single call with no added value; try/catch adding nothing (re-throwing same error, catching impossibilities); validation of internal data already validated at route boundary; feature flags or config for things that could just be code; backwards-compat shims for code that was just written
- Redundant state: state that duplicates existing state; cached values that could be derived; observers/effects that could be direct calls
- Parameter sprawl: adding new parameters to a function instead of generalizing or restructuring existing ones
- Copy-paste with slight variation: near-duplicate code blocks that should be unified
- Leaky abstractions: exposing internal details that should be encapsulated, or breaking existing abstraction boundaries
- Stringly-typed code: using raw strings where constants, enums, or branded types already exist in the codebase
- Structural issues: functions that grew too long during changes (>50 lines, consider splitting); inconsistent naming with existing codebase conventions
Agent 3: Efficiency
Looks for runtime performance and resource issues.
- Redundant work: redundant computations, repeated file reads, duplicate network/API calls, N+1 patterns
- Missed concurrency: independent operations run sequentially when they could run in parallel
- Hot-path bloat: new blocking work added to startup or per-request/per-render hot paths
- No-op updates: state/store updates inside polling loops, intervals, or event handlers that fire unconditionally without change detection. Also: wrapper functions that take updater/reducer callbacks but don't honor same-reference returns
- TOCTOU anti-patterns: pre-checking file/resource existence before operating - operate directly and handle the error
- Memory: unbounded data structures, missing cleanup, event listener leaks
- Overly broad operations: reading entire files when only a portion is needed, loading all items when filtering for one
- Unchecked system boundaries: fetch/HTTP calls without response status checks (
r.ok), unhandled promise rejections on external calls, missing error handling at I/O boundaries
Phase 4: Report
Synthesize findings from all three agents into a single deduplicated report. If multiple agents flagged the same code, merge into one finding. Group by category:
## Review Findings
### Cleanliness (N issues)
1. `path/to/file.ts:42` - console.log("debug response")
2. ...
### Design (N issues)
1. `path/to/file.ts:15-18` - hand-rolled path join, use existing `resolveAssetPath` from shared/utils
2. ...
### Efficiency (N issues)
1. `path/to/file.ts:30-45` - sequential awaits on independent API calls, use Promise.all
2. ...
**Total: X issues across Y categories**
**Awaiting approval before proceeding with fixes.**
If zero issues found, report "Clean - no issues found" and stop.
The report MUST end with the line "Awaiting approval before proceeding with fixes." (or "Clean - no issues found"). Do not proceed to Phase 5 until the user explicitly approves.
Phase 5: Fix and Verify
After user approves:
- Fix all reported issues with minimal targeted edits
- Re-run the project's validation command
- If new errors appear, fix them
- Show summary: what was fixed, final check status
More from tenequm/claude-skills
mpp
Build with MPP (Machine Payments Protocol) - the open protocol for machine-to-machine payments over HTTP 402. Use when developing paid APIs, payment-gated content, AI agent payment flows, MCP tool payments, pay-per-token streaming, or any service using HTTP 402 Payment Required. Covers the mppx TypeScript SDK with Hono/Express/Next.js/Elysia middleware, pympp Python SDK, and mpp Rust SDK. Supports Tempo stablecoins, Stripe cards, Lightning Bitcoin, and custom payment methods. Includes charge (one-time) and session (streaming pay-as-you-go) intents. Make sure to use this skill whenever the user mentions mpp, mppx, machine payments, HTTP 402 payments, Tempo payments, payment channels, pay-per-token, paid API endpoints, or payment-gated services.
12x402
Build internet-native payments with the x402 open protocol. Use when developing paid APIs, paywalled content, AI agent payment flows, or any service using HTTP 402 Payment Required for on-chain micropayments. Covers TypeScript, Python, and Go SDKs across EVM (Base, MegaETH, Monad, Polygon), Solana, Stellar, and Aptos networks with HTTP, MCP, and A2A transports. Supports exact and upto (usage-based) payment schemes.
1impactful-writing
Write clear, emotionally resonant, and well-structured content that readers remember and act upon. Use when writing or editing any text—Twitter posts, articles, documentation, emails, comments, updates—for maximum clarity, engagement, and impact.
1gh-cli
GitHub CLI for remote repository analysis, file fetching, codebase comparison, and discovering trending code/repos. Use when analyzing repos without cloning, comparing codebases, or searching for popular GitHub projects.
1tanstack
Build type-safe React apps with TanStack Query (data fetching, caching, mutations), Router (file-based routing, search params, loaders), and Start (SSR, server functions, middleware). Use when working with react-query, data fetching, server state, routing, search params, loaders, SSR, server functions, or full-stack React. Triggers on tanstack, react query, query client, useQuery, useMutation, invalidateQueries, tanstack router, file-based routing, search params, route loader, tanstack start, createServerFn, server functions, SSR.
1vite
Configure and optimize Vite 7 for React projects. Covers build tooling, dev server, plugins, HMR, chunk splitting, Environment API, and Rolldown integration. Use when setting up Vite, configuring builds, optimizing bundles, managing plugins, or troubleshooting dev server. Triggers on vite, vite config, vite plugin, HMR, dev server, build optimization, chunk splitting, rolldown, vite proxy, environment api, rolldown-vite.
1