Use when modifying existing files, refactoring, improving code quality, or touching legacy code by applying the Boy Scout Rule to leave code better than you found it.
View on GitHubcore/skills/boy-scout-rule/SKILL.md
February 3, 2026
Select agents to install to:
npx add-skill https://github.com/TheBushidoCollective/han/blob/main/core/skills/boy-scout-rule/SKILL.md -a claude-code --skill boy-scout-ruleInstallation paths:
.claude/skills/boy-scout-rule/# Boy Scout Rule
> "Leave the campground cleaner than you found it."
**Always leave code better than you found it.** Make incremental
improvements when you touch a file.
## What to Improve
**Code Quality**:
- Remove dead code (commented blocks, unused functions)
- Fix linting issues in files you touch
- Improve unclear naming (`x`, `temp`, `data` → descriptive)
- Add type annotations (TypeScript/Elixir @spec)
- Extract magic numbers to named constants
- Simplify complex logic
- Add missing error handling
- Update outdated comments
- Fix formatting
- Remove unused imports/variables
- Consolidate duplication
## What NOT to Do
- ❌ Massive unrelated refactors
- ❌ Change behavior without tests
- ❌ Fix everything in the file (stay focused)
- ❌ Breaking changes without tests
- ❌ Premature optimization
- ❌ Change unrelated sections
## Process
1. **Before changes**: Read file, note obvious issues, run linter
2. **Make primary changes**: Implement feature/fix, write tests
3. **Apply improvements**: Fix linting, improve naming, add types,
extract constants, remove dead code
4. **Run verification**: `mix lint && mix test` or
`yarn test:lint && yarn ts:check && yarn test`
5. **Document**: Include boy scout changes in commit message
## Example Commit Message
```text
Add worker search filter
- Implement location-based filtering
- Add tests for search radius
Boy Scout improvements:
- Extract SEARCH_RADIUS constant
- Add type annotations to helper functions
- Remove unused import statements
- Improve variable naming in search logic
```
## Example Improvements
**Before**:
```typescript
function calculateTotal(items) { // No types
let t = 0; // Poor naming
for (let i = 0; i < items.length; i++) { // Old-style
t += items[i].price * 1.08; // Magic number
}
return t;
}
```
**After**:
```typescript
const TAX_RATE = 1.08;
function calculateTotal(items: Item[]): number {
return items.reduce((total, item) => {
return total + (item.price * TAX_RA