--- name: rule-auditor description: Validates code against coding standards and best practices. Reports compliance violations and suggests fixes. version: 2.0 model: haiku invoked_by: both user_invocable: true tools: [Read, Write, Edit, Bash, Glob, Grep] best_practices: - Run audits early in development cycle - Focus on high-severity violations first - Provide specific, actionable fixes - Group violations by category error_handling: graceful streaming: supported --- # Rule Auditor Skill Rule Auditor - Validates code against coding standards and best practices from expert skills. Reports compliance violations and suggests fixes. - Auditing code against best practices - Identifying violations and anti-patterns - Suggesting fixes for violations - Generating compliance reports ### Step 1: Identify Applicable Skills Find relevant expert skills based on the code being audited: | File Type | Expert Skills | | ------------- | ------------------------------- | | `.ts`, `.tsx` | typescript-expert, react-expert | | `.py` | python-backend-expert | | `.go` | go-expert | | `.java` | java-expert | | `*.test.*` | testing-expert | ### Step 2: Load Best Practices Read the relevant skill files to understand best practices: ```bash cat .claude/skills/[skill-name]/SKILL.md ``` Extract key rules and patterns to check for. ### Step 3: Scan Target Files Analyze the target files for violations: 1. **Read target files**: Use Read tool to examine code 2. **Check patterns**: Look for anti-patterns from skill guidelines 3. **Identify issues**: Note file, line, and violation type Common checks: - Naming conventions - Code structure - Import patterns - Type safety - Security issues - Performance anti-patterns ### Step 4: Generate Report Create a structured compliance report: ```markdown ## Audit Report **Target**: src/components/ **Skills Applied**: react-expert, typescript-expert **Date**: YYYY-MM-DD ### Summary - **Pass**: 12 rules - **Warn**: 3 rules - **Fail**: 2 rules ### Violations #### FAIL: Avoid using `any` type - **File**: src/components/UserAuth.tsx:45 - **Issue**: `const user: any = await getUser()` - **Fix**: Define proper User interface #### WARN: Use Server Components by default - **File**: src/components/UserAuth.tsx:1 - **Issue**: Missing 'use client' directive but uses useState - **Fix**: Add 'use client' or refactor to Server Component ``` 1. **Run Early**: Audit during development, not just before commit 2. **Prioritize**: Focus on high-severity violations first 3. **Be Specific**: Include file paths and line numbers 4. **Suggest Fixes**: Provide actionable remediation steps 5. **Group Issues**: Organize by severity and category **Audit Request**: ``` Audit src/components/ for TypeScript and React best practices ``` **Response**: ```markdown ## Audit Report: src/components/ ### Violations Found 1. **[ERROR]** src/components/User.tsx:23 - Rule: Avoid `any` type - Code: `const data: any = response.json()` - Fix: `const data: UserResponse = response.json()` 2. **[WARN]** src/components/Form.tsx:1 - Rule: Prefer Server Components - Issue: Uses useState without 'use client' - Fix: Add 'use client' directive at top ### Passed Checks - Component naming (PascalCase) ✓ - Hook usage patterns ✓ - Import organization ✓ ``` ## Rules - Always check relevant expert skills for standards - Provide line numbers and specific fixes - Prioritize security and type safety issues ## Memory Protocol (MANDATORY) **Before starting:** ```bash cat .claude/context/memory/learnings.md ``` **After completing:** - New pattern -> `.claude/context/memory/learnings.md` - Issue found -> `.claude/context/memory/issues.md` - Decision made -> `.claude/context/memory/decisions.md` > ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.