Claude-skill-registry code-cleanup

Refactor and clean up code following best practices for readability and maintainability

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/code-cleanup-gpaura-claude-plugins" ~/.claude/skills/majiayu000-claude-skill-registry-code-cleanup && rm -rf "$T"
manifest: skills/data/code-cleanup-gpaura-claude-plugins/SKILL.md
source content

Code Cleanup

Clean up and refactor the following code to improve readability, maintainability, and follow best practices.

Code to Clean

$ARGUMENTS

Cleanup Checklist for Solo Developers

1. Code Smells to Fix

Naming

  • Descriptive variable/function names
  • Consistent naming conventions (camelCase, PascalCase)
  • Avoid abbreviations unless obvious
  • Boolean names start with is/has/can

Functions

  • Single responsibility per function
  • Keep functions small (<50 lines)
  • Reduce parameters (max 3-4)
  • Extract complex logic
  • Avoid side effects where possible

DRY (Don't Repeat Yourself)

  • Extract repeated code to utilities
  • Create reusable components
  • Use TypeScript generics for type reuse
  • Centralize constants/configuration

Complexity

  • Reduce nested if statements
  • Replace complex conditions with functions
  • Use early returns
  • Simplify boolean logic

TypeScript

  • Remove
    any
    types
  • Add proper type annotations
  • Use interfaces for object shapes
  • Leverage utility types (Pick, Omit, Partial)

2. Modern Patterns to Apply

JavaScript/TypeScript

// Use optional chaining
const value = obj?.prop?.nested

// Use nullish coalescing
const result = value ?? defaultValue

// Use destructuring
const { name, email } = user

// Use template literals
const message = `Hello, ${name}!`

// Use array methods
const filtered = arr.filter(x => x.active)

React

// Extract custom hooks
const useUserData = () => {
  // logic here
}

// Use proper TypeScript types
interface Props {
  user: User
  onUpdate: (user: User) => void
}

// Avoid prop drilling with composition
<Provider value={data}>
  <Component />
</Provider>

3. Refactoring Techniques

Extract Function

// Before
const process = () => {
  // 50 lines of code
}

// After
const validate = () => { /* ... */ }
const transform = () => { /* ... */ }
const save = () => { /* ... */ }

const process = () => {
  validate()
  const data = transform()
  save(data)
}

Replace Conditional with Polymorphism

// Before
if (type === 'A') return processA()
if (type === 'B') return processB()

// After
const processors = {
  A: processA,
  B: processB
}
return processors[type]()

Introduce Parameter Object

// Before
function create(name, email, age, address)

// After
interface UserData {
  name: string
  email: string
  age: number
  address: string
}
function create(userData: UserData)

4. Common Cleanup Tasks

Remove Dead Code

  • Unused imports
  • Unreachable code
  • Commented out code
  • Unused variables

Improve Error Handling

// Before
try { doSomething() } catch (e) { console.log(e) }

// After
try {
  doSomething()
} catch (error) {
  if (error instanceof ValidationError) {
    // Handle validation
  } else {
    logger.error('Unexpected error', { error })
    throw error
  }
}

Consistent Formatting

  • Proper indentation
  • Consistent quotes
  • Line length (<100 characters)
  • Organized imports

Better Comments

  • Remove obvious comments
  • Add why, not what
  • Document complex logic
  • Update outdated comments

5. Next.js/React Specific

Server vs Client Components

// Move state to client component
'use client'
function Interactive() {
  const [state, setState] = useState()
}

// Keep data fetching in server component
async function Page() {
  const data = await fetchData()
}

Proper Data Fetching

// Use SWR/React Query for client
const { data } = useSWR('/api/user')

// Use direct fetch in server components
const data = await fetch('/api/user').then(r => r.json())

Output Format

  1. Issues Found - List of code smells and problems
  2. Cleaned Code - Refactored version
  3. Explanations - What changed and why
  4. Before/After Comparison - Side-by-side if helpful
  5. Further Improvements - Optional enhancements

Focus on practical improvements that make code more maintainable without over-engineering. Balance clean code with pragmatism.