Autonomous repository improvement. Fire-and-forget command that finds and fixes issues, commits changes to a branch, and raises a PR. No approval needed - the PR is the review gate.
Scanned 9/2/2026
Install to Claude Code
npx -y skills add ADWilkinson/claude-code-tools --skill repo-polish --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Repo Polish?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/adwilkinson-repo-polish)More formats (shields.io, HTML) on the badges page.
---
name: repo-polish
author: Andrew Wilkinson (github.com/ADWilkinson)
description: Autonomous repository improvement. Fire-and-forget command that finds and fixes issues, commits changes to a branch, and raises a PR. No approval needed - the PR is the review gate.
allowed-tools: Bash, Glob, Read, Grep, Edit, Write, Task, TodoWrite
disable-model-invocation: true
---
# /repo-polish
> **Quick Reference**: Create branch → Rapid assessment → Parallel deep scan (3 agents) → Fix all issues → Verify after each batch → Push & create PR.
Fully autonomous codebase improvement. Creates branch, fixes everything it finds, raises PR.
## Philosophy
**True fire and forget**: Invoke, walk away, come back to a PR ready for review.
- Fix everything found (the PR is the approval gate)
- Verify after each change batch (revert if tests break)
- Atomic commits with clear messages
- All work encapsulated in a PR
## Step 1: Branch Setup
```bash
# Capture current branch
ORIGINAL_BRANCH=$(git rev-parse --abbrev-ref HEAD)
# Pull latest
git pull 2>/dev/null || true
# Create polish branch with timestamp
POLISH_BRANCH="polish/$(date +%Y%m%d-%H%M%S)"
git checkout -b "$POLISH_BRANCH"
```
Store the original branch name - we'll PR back to it when done.
## Step 2: Rapid Assessment
Quickly gather context:
- Project type (package.json, Cargo.toml, requirements.txt, etc.)
- Build/test commands available
- Current test/lint status
- File structure overview
Output a one-liner summary:
```
[tech stack] | [X files] | [build status] | [test status]
```
## Step 3: Parallel Deep Scan
Launch specialized agents simultaneously using Task tool:
**Agent 1 - Quick Wins Scanner**:
- Unused imports/variables
- Console.log/print debug statements
- Commented-out code blocks
- Trailing whitespace, formatting issues
- Empty files or dead exports
**Agent 2 - Code Quality Scanner**:
- TODO/FIXME items (document or resolve)
- Type safety gaps
- Error handling holes
- Duplicated logic
- Inconsistent patterns
**Agent 3 - DX & Docs Scanner**:
- README accuracy vs actual setup
- Missing/outdated documentation
- Unclear error messages
- Missing examples
## Step 4: Fix Everything
Fix all issues found. Group by category and commit atomically.
### Fix Categories (in order)
**1. Mechanical cleanup**
- Remove unused imports
- Remove console.log/debug statements (unless in logging utilities)
- Remove commented-out code
- Fix typos in comments/strings
- Remove trailing whitespace
- Remove empty files with no exports
- Sort imports (if project has convention)
- Fix formatting (match project style)
**2. Code quality**
- Add missing error handling
- Fix type safety issues
- Resolve or document TODOs
- Extract duplicated logic
- Standardize inconsistent patterns
**3. Developer experience**
- Update README if inaccurate
- Improve error messages
- Add missing documentation for public APIs
### After each category:
```bash
# Detect package manager from lockfile
if [ -f "bun.lockb" ]; then
PM="bun"
elif [ -f "pnpm-lock.yaml" ]; then
PM="pnpm"
elif [ -f "yarn.lock" ]; then
PM="yarn"
else
PM="npm"
fi
# Verify nothing broke
$PM run build 2>/dev/null || true
$PM run test 2>/dev/null || true
```
If tests fail after a fix, immediately revert that specific change and continue.
### Commit Pattern
```bash
git add -A && git commit -m "chore: [specific improvement]"
```
One commit per logical fix type (e.g., "chore: remove unused imports", "fix: add error handling to API calls").
## Step 5: Push & Create PR
After all fixes are complete:
```bash
# Push the polish branch
git push -u origin "$POLISH_BRANCH"
# Create PR back to original branch
gh pr create \
--base "$ORIGINAL_BRANCH" \
--title "chore: repository polish $(date +%Y-%m-%d)" \
--body "$(cat <<'EOF'
## Summary
Automated repository polish pass.
### Changes
[List each commit with brief description]
### Stats
- Files changed: X
- Insertions: +X
- Deletions: -X
### Verification
- [x] Build passes
- [x] Tests pass (or N/A)
- [x] No behavioral changes
---
*Generated by `/repo-polish`*
EOF
)"
```
Output the PR URL.
If `gh` CLI is not available or not authenticated:
```
Polish complete on branch: polish/YYYYMMDD-HHMMSS
Push and create PR manually:
git push -u origin [branch]
https://github.com/[owner]/[repo]/compare/[original]...[branch]
```
## Constraints
- **Never break tests** - revert immediately if tests fail
- **Never change behavior** - only improve quality/clarity
- **Never touch .env or secrets** - skip entirely
- **Never modify generated files** - skip lock files, build output, etc.
- **Match existing style** - don't impose new conventions
## Execution Notes
1. Use TodoWrite to track progress visibly
2. Launch scan agents in parallel for speed
3. Group similar fixes into single commits
4. Always run verification after changes
5. If no build/test commands exist, be more conservative
6. Prefer many small improvements over few large ones
7. The PR description should list all changes made
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!