Claude Code Plugins

Community-maintained marketplace

Feedback

Review code quality, security, and maintainability before committing. Use when reviewing code changes, checking code quality, performing security review, or validating changes before commit.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name review
description Review code quality, security, and maintainability before committing. Use when reviewing code changes, checking code quality, performing security review, or validating changes before commit.

Code Review Before Commit

Review code quality, security, and maintainability before committing changes to Linus Dashboard.


Your Role

Senior code reviewer ensuring quality, security, and maintainability.

Context Required:

  1. .aidriven/memorybank.md
  2. .aidriven/rules/ - All rule files
  3. Changed files (git diff)

Review Checklist

1. Code Quality

Readability:

  • Functions < 50 lines
  • Variables have descriptive names
  • Complex logic has comments explaining WHY
  • Code is self-documenting

Structure:

  • Single responsibility per function/class
  • No code duplication
  • Logical organization
  • Consistent style

Type Safety:

  • All functions have type hints
  • No Any without justification
  • Return types specified
  • Proper use of Optional/Union

2. Documentation

  • Module docstrings present
  • Public functions/classes documented
  • Docstrings follow Google style
  • Complex algorithms explained
  • No outdated comments

3. Error Handling

  • Specific exceptions (no bare except)
  • Errors logged with context
  • User-friendly error messages
  • Resources cleaned up (try/finally)
  • No silent failures

4. Async/Await

  • No blocking I/O in async functions
  • All async functions awaited
  • asyncio.gather() for parallel ops
  • Proper timeout handling
  • CancelledError handled

5. Home Assistant Patterns

  • Integration lifecycle correct (setup/unload)
  • Data stored in hass.data[DOMAIN][entry_id]
  • Cleanup registered with entry.async_on_unload()
  • Entities have unique_id
  • Services registered properly
  • Coordinator pattern used correctly

6. Security

  • No hardcoded credentials
  • User input validated
  • SQL injection prevented
  • XSS vulnerabilities addressed
  • API keys stored securely
  • No sensitive data in logs

7. Performance

  • No N+1 queries
  • Expensive operations cached
  • Database queries optimized
  • No memory leaks
  • Async for I/O operations

8. Testing

  • Changes manually tested
  • Edge cases considered
  • Error paths tested
  • No regressions

Review Process

Step 1: Get Changed Files

# See what changed
git status

# View diff
git diff

# Check specific files
git diff path/to/file.py

Step 2: Analyze Changes

For each changed file:

  1. Read the diff
  2. Understand the purpose
  3. Check against standards
  4. Look for issues
  5. Note improvements

Step 3: Check Build and Tests

# TypeScript
npm run build
npm run type-check
npm run lint:check

# Run smoke tests
npm run test:smoke

Step 4: Provide Feedback

Format:

File: path/to/file.py

✅ Good:
- Clear function names
- Proper type hints
- Good error handling

⚠️ Issues:
1. Line 42: Missing docstring
2. Line 78: Blocking I/O in async function
3. Line 103: Exception too broad

💡 Suggestions:
- Consider caching this result
- Extract this logic to separate function

Common Issues to Watch For

Python Issues

Async/Await:

# ❌ Bad - blocking I/O
async def fetch_data():
    response = requests.get(url)  # Blocks event loop

# ✅ Good - async I/O
async def fetch_data():
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            return await response.json()

Error Handling:

# ❌ Bad - bare except
try:
    do_something()
except:
    pass

# ✅ Good - specific exception
try:
    do_something()
except ValueError as err:
    _LOGGER.error("Invalid value: %s", err)
    raise

Type Hints:

# ❌ Bad - no types
def process_data(data):
    return data.get("value")

# ✅ Good - with types
def process_data(data: dict[str, Any]) -> str | None:
    """Process data and return value."""
    return data.get("value")

TypeScript Issues

Type Safety:

// ❌ Bad - any type
function process(data: any): any {
    return data.value;
}

// ✅ Good - proper types
function process(data: DataType): string | undefined {
    return data.value;
}

Null Safety:

// ❌ Bad - no null check
const value = entity.state.toUpperCase();

// ✅ Good - null check
const value = entity.state?.toUpperCase() ?? "unknown";

Security Review Checklist

  • No secrets in code
  • API keys from config
  • User input sanitized
  • SQL queries parameterized
  • HTML output escaped
  • HTTPS for external calls
  • Authentication checked
  • Authorization verified

Performance Review Checklist

  • No synchronous I/O in async code
  • Database queries optimized
  • Caching used appropriately
  • No unnecessary API calls
  • Efficient algorithms
  • Memory usage reasonable

Final Review

Before approving:

Code Quality:

  • Follows project standards
  • Well-documented
  • Properly typed
  • Good error handling

Functionality:

  • Implements requirements
  • No obvious bugs
  • Edge cases handled
  • Tested manually

Maintainability:

  • Easy to understand
  • Well-structured
  • Follows patterns
  • Documented properly

Security:

  • No vulnerabilities
  • Input validated
  • Secrets protected

Review Outcome

APPROVE - Code meets all standards REQUEST CHANGES - Issues must be fixed COMMENT - Suggestions for improvement


Quick Commands

# Check what changed
git diff

# Check specific file
git diff path/to/file

# See commit history
git log --oneline -10

# Run quality checks
npm run lint:check
npm run type-check
npm run build

# Run tests
npm run test:smoke