rule-auditor

Validates code against currently loaded rules and reports compliance violations. Supports auto-fixing violations with confirmation, dry-run mode, and automatic backups. Use after implementing features, during code review, or to ensure coding standards are followed. Provides actionable feedback with line-by-line issues and suggested fixes.

16 stars

Best use case

rule-auditor is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Validates code against currently loaded rules and reports compliance violations. Supports auto-fixing violations with confirmation, dry-run mode, and automatic backups. Use after implementing features, during code review, or to ensure coding standards are followed. Provides actionable feedback with line-by-line issues and suggested fixes.

Teams using rule-auditor should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/rule-auditor/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/development/rule-auditor/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/rule-auditor/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How rule-auditor Compares

Feature / Agentrule-auditorStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Validates code against currently loaded rules and reports compliance violations. Supports auto-fixing violations with confirmation, dry-run mode, and automatic backups. Use after implementing features, during code review, or to ensure coding standards are followed. Provides actionable feedback with line-by-line issues and suggested fixes.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

## Executable Script

The rule-auditor skill now includes an executable script for CLI usage and programmatic validation.

### Installation

No installation required - the script uses Node.js built-in modules only.

### CLI Usage

```bash
# Audit a directory
node .claude/skills/rule-auditor/scripts/audit.mjs src/components/

# Audit specific file with JSON output
node .claude/skills/rule-auditor/scripts/audit.mjs src/App.tsx --format json

# Preview fixes (dry run)
node .claude/skills/rule-auditor/scripts/audit.mjs src/ --fix-dry-run

# Apply fixes (creates .bak backups)
node .claude/skills/rule-auditor/scripts/audit.mjs src/ --fix

# Audit with specific rules only
node .claude/skills/rule-auditor/scripts/audit.mjs src/ --rules nextjs,typescript

# Strict mode (fail on any violation)
node .claude/skills/rule-auditor/scripts/audit.mjs src/ --strict
```

### Output Schema

All output conforms to `.claude/schemas/skill-rule-auditor-output.schema.json` and includes:

- `skill_name`: Always "rule-auditor"
- `files_audited`: Array of audited files with line counts
- `rules_applied`: Rules used during audit with violation counts
- `compliance_score`: 0-100 score based on violations
- `violations_found`: Detailed violations with locations
- `fixes_applied`: Applied fixes (when using --fix or --fix-dry-run)
- `rule_index_consulted`: Boolean confirming rule index was loaded
- `technologies_detected`: Technologies detected in codebase
- `audit_summary`: Summary statistics
- `timestamp`: ISO 8601 timestamp

### Testing

Run the test suite to validate the audit script:

```bash
node .claude/skills/rule-auditor/scripts/test-audit.mjs
```

Tests cover:

- Basic audit functionality
- Technology detection
- Dry-run fix mode
- Fix mode with backups
- Compliance score calculation
- Exit codes
- Output schema validation

---

<identity>
Rule Auditor - Automatically validates code against your project's coding standards and rules.
</identity>

<capabilities>
- After implementing a new feature or component
- During code review to check standards compliance
- Before committing to ensure quality gates pass
- When onboarding to understand project conventions
- To generate compliance reports for teams
</capabilities>

<instructions>
<execution_process>

### Step 1: Load Rule Index

Load the rule index to discover all available rules dynamically:

- @.claude/context/rule-index.json

The index contains metadata for all 1,081+ rules in `.claude/rules-master/` and `.claude/rules-library/` (formerly archive).

### Step 2: Filter Relevant Rules

Query the index's `technology_map` based on target files:

1. **Detect technologies** from target files:
   - File extension (`.tsx` → TypeScript, React)
   - Import statements (`next` → Next.js, `react` → React)
   - Directory structure (`app/` → Next.js App Router)

2. **Query technology_map**:

   ```javascript
   // Pseudocode
   const detectedTech = ['nextjs', 'react', 'typescript'];
   const relevantRules = [];

   detectedTech.forEach(tech => {
     const rules = index.technology_map[tech] || [];
     relevantRules.push(...rules);
   });
   ```

3. **Load only relevant rule files** (progressive disclosure):
   - Master rules take priority (from `.claude/rules-master/`)
   - Library rules supplement (from `.claude/rules-library/`, formerly archive)
   - Load 5-10 most relevant rules, not all 1,081

### Step 3: Scan Target Files

Identify the files to audit based on the task:

```bash
# For a specific file
audit: src/components/UserAuth.tsx

# For a directory
audit: src/components/

# For recent changes
git diff --name-only HEAD~1
```

### Step 4: Extract Validation Patterns from Rules

Parse rule files to extract formalized validation patterns:

1. **Look for `<validation>` block in rule file** (deterministic approach):

   ```markdown
   <validation>
   forbidden_patterns:
     - pattern: "useEffect\\(.*fetch"
       message: "Do not use useEffect for data fetching; use Server Components."
       severity: "error"
     - pattern: "console\\.log"
       message: "Remove console.log statements before commit."
       severity: "warning"
   </validation>
   ```

2. **OR look for `validation` section in rule frontmatter** (legacy support):

   ```yaml
   validation:
     forbidden_patterns:
       - pattern: "useEffect\\(.*fetch"
         message: 'Do not use useEffect for data fetching; use Server Components.'
         severity: 'error'
   ```

3. **Extract forbidden_patterns**:
   - **First priority**: Load from `<validation>` block (deterministic, preferred)
   - **Second priority**: Load from `validation.forbidden_patterns` in frontmatter
   - Each pattern includes:
     - `pattern`: Regex pattern to match
     - `message`: Human-readable violation message
     - `severity`: "error" or "warning"

4. **Fallback to pattern extraction** (if no validation block/section):
   - Parse rule text for common patterns
   - Convert natural language rules to regex where possible
   - Use grep/pattern matching for structure checks
   - **Note**: This is slower and less consistent than using `<validation>` blocks

**Pattern Categories to Check:**

| Category       | Example Rule                            | Check Method               |
| -------------- | --------------------------------------- | -------------------------- |
| Naming         | "Use camelCase for functions"           | Regex scan                 |
| Structure      | "Place components in `components/` dir" | Path check                 |
| Imports        | "Use ES modules, not CommonJS"          | Pattern match              |
| Types          | "Avoid `any`, prefer `unknown`"         | AST-level grep             |
| Performance    | "Use Server Components by default"      | Directive scan             |
| Security       | "Never hardcode secrets"                | Pattern detection          |
| **Formalized** | `validation.forbidden_patterns`         | **Regex/grep (preferred)** |

**Fix Field in Validation Patterns**:

Each pattern can optionally include a `fix` field for auto-fixing:

```yaml
- pattern: "console\\.log\\((.*)\\)"
  message: 'Remove console.log statements'
  severity: 'warning'
  fix: '' # Empty string = delete the entire match

- pattern: "const (\\w+): any"
  message: "Avoid using 'any' type"
  severity: 'error'
  fix: 'const $1: unknown' # $1 references first capture group

- pattern: "var (\\w+) ="
  message: "Use 'const' or 'let' instead of 'var'"
  severity: 'warning'
  fix: 'const $1 =' # Replace var with const
```

**Fix Replacement Syntax**:

- `""` (empty string): Delete the entire matched pattern
- `"// Removed: $0"`: Replace with comment (where $0 is the full match)
- `"const $1"`: Use capture groups ($1, $2, etc.) from the pattern
- Fixed string: Replace match with literal text

### Step 5: Run Validation Checks

For each forbidden pattern:

1. **Run grep/regex search** on target files:
   - Use pattern from `validation.forbidden_patterns`
   - Search across all target files
   - Report matches with line numbers

2. **Report matches**:
   - Include line number and file path
   - Include message from pattern definition
   - Include severity (error/warning)
   - Show code snippet with match highlighted

3. **Aggregate results by severity**:
   - Group errors separately from warnings
   - Count violations per pattern
   - Sort by severity and frequency

### Step 6: Generate Compliance Report

Output a structured report with violations, warnings, and passed rules.

### Step 7: Quick-Fix Mode (Optional)

When `--fix`, `--fix-auto`, or `--fix-dry-run` flags are provided, automatically apply fixes for violations that have a `fix` field defined.

**Fix Mode Behavior**:

1. **--fix-dry-run** (Safe Preview):
   - Scan for violations with fix definitions
   - Show diff preview of changes without modifying files
   - Display before/after for each fix
   - No file modifications occur
   - Useful for reviewing impact before applying

2. **--fix** (Interactive Mode):
   - Create `.bak` backup file before any modification
   - Show diff preview for each fixable violation
   - Prompt user for confirmation: "Apply this fix? (y/n/all/skip)"
     - `y`: Apply this fix and continue
     - `n`: Skip this fix and continue
     - `all`: Apply all remaining fixes without prompting
     - `skip`: Skip all remaining fixes
   - Apply confirmed fixes using Edit tool
   - Report summary of applied vs skipped fixes

3. **--fix-auto** (Batch Mode):
   - Create `.bak` backup file before any modification
   - Apply all fixable violations automatically
   - No user prompts (fully automated)
   - Generate detailed log of all changes
   - Useful for CI/CD pipelines or bulk cleanup

**Backup Behavior**:

- Backup file: `<original-file>.bak`
- Created before first modification to each file
- Contains original file contents
- Allows manual rollback if needed
- Example: `src/App.tsx` → `src/App.tsx.bak`

**Diff Preview Format**:

```diff
File: src/components/UserAuth.tsx
Line 23:
- console.log('User authenticated:', user);
+ // Removed: console.log('User authenticated:', user);

Line 45:
- const user: any = await getUser();
+ const user: unknown = await getUser();
```

**Fix Application Process**:

1. Read target file
2. Create backup if not in dry-run mode
3. Apply regex replacement using `fix` pattern
4. Handle capture group substitutions ($1, $2, etc.)
5. Write modified content back to file
6. Log change to fix report

**Limitations**:

- Only fixes violations with `fix` field defined in rule
- Complex refactorings require manual intervention
- Multiline fixes may need manual review
- Some patterns may require AST-level transformation
  </execution_process>

<audit_patterns>
**Next.js / React Audit**:

- CHECK: 'use client' directive present when using useState, useEffect, useContext
- CHECK: Server Components for data fetching (no useEffect for fetch)
- CHECK: Image optimization using next/image

**TypeScript Audit**:

- CHECK: Type safety - No `any` types, interfaces for object shapes
- CHECK: Naming conventions - PascalCase for Components, camelCase for functions

**Python/FastAPI Audit**:

- CHECK: Async patterns - async def for I/O operations
- CHECK: Type hints - All function parameters typed
  </audit_patterns>

<integration>
**Pre-Commit Hook**: Run rule audit on modified files before commit
**CI/CD Integration**: Generate JSON reports for automated quality gates
</integration>

<best_practices>

1. **Run Early**: Audit during development, not just before commit
2. **Fix as You Go**: Address violations immediately while context is fresh
3. **Customize Rules**: Adjust rule severity in manifest.yaml for your team
4. **Track Trends**: Monitor violation counts over time to measure improvement
5. **Educate Team**: Use audit reports in code reviews to teach standards
6. **Preview First**: Always run `--fix-dry-run` before `--fix-auto` to review changes
7. **Test After Fixing**: Run tests after auto-fixing to ensure no functionality broke
8. **Keep Backups**: Don't delete .bak files until changes are verified
9. **Review Diffs**: Use `git diff` to review all changes before committing
10. **Start Small**: Test auto-fix on single files before running on entire codebase
    </best_practices>

## Quick-Fix Mode

The rule-auditor now supports automatic fixing of violations through three modes: preview, interactive, and batch.

### Fix Modes

| Mode            | Flag            | Behavior                             | Use Case                      |
| --------------- | --------------- | ------------------------------------ | ----------------------------- |
| **Preview**     | `--fix-dry-run` | Show changes without modifying files | Review impact before applying |
| **Interactive** | `--fix`         | Prompt for confirmation on each fix  | Careful, selective fixing     |
| **Batch**       | `--fix-auto`    | Apply all fixes automatically        | Bulk cleanup, CI/CD           |

### Adding Fix Definitions to Rules

To make violations auto-fixable, add a `fix` field to validation patterns in your rule files:

**In `<validation>` block**:

```markdown
<validation>
forbidden_patterns:
  - pattern: "console\\.log\\((.*)\\)"
    message: "Remove console.log statements before commit"
    severity: "warning"
    fix: ""  # Empty = delete entire match

- pattern: "const (\\w+): any"
  message: "Avoid using 'any' type"
  severity: "error"
  fix: "const $1: unknown" # Replace with unknown

- pattern: "var (\\w+) ="
  message: "Use 'const' or 'let' instead of 'var'"
  severity: "warning"
  fix: "const $1 =" # Replace var with const
  </validation>
```

**Or in frontmatter**:

```yaml
---
validation:
  forbidden_patterns:
    - pattern: "console\\.log\\((.*)\\)"
      message: 'Remove console.log statements'
      severity: 'warning'
      fix: ''
---
```

### Fix Field Syntax

The `fix` field supports several replacement patterns:

1. **Delete Match**: Empty string removes the matched pattern

   ```yaml
   fix: ''
   ```

2. **Capture Group Substitution**: Use $1, $2, etc. to reference regex groups

   ```yaml
   pattern: "const (\\w+): any"
   fix: 'const $1: unknown'
   ```

3. **Fixed Replacement**: Replace with literal text

   ```yaml
   pattern: "var (\\w+) ="
   fix: 'const $1 ='
   ```

4. **Comment Out**: Replace with comment preserving original code
   ```yaml
   pattern: 'debugger;'
   fix: '// debugger;'
   ```

### Safety Features

1. **Automatic Backups**: Creates `.bak` file before any modification
2. **Diff Preview**: Shows before/after for all fixes
3. **Dry-Run Mode**: Test fixes without modifying files
4. **Interactive Confirmation**: Review each fix before applying
5. **Rollback Support**: Restore from .bak files if needed

### Example Workflow

```bash
# 1. Preview what would be fixed
/audit src/ --fix-dry-run

# 2. Apply fixes with confirmation
/audit src/components/UserAuth.tsx --fix

# 3. Review changes
git diff

# 4. Run tests
npm test

# 5. If issues occur, rollback
mv src/components/UserAuth.tsx.bak src/components/UserAuth.tsx

# 6. If all good, commit
git add src/
git commit -m "fix: auto-fix rule violations"

# 7. Clean up backups
rm **/*.bak
```

### Creating Effective Fix Patterns

**Good Fix Patterns** (Safe, Deterministic):

- Simple find-replace operations
- Type annotations (any → unknown)
- Variable declarations (var → const)
- Import statement updates
- Comment/uncomment code
- Formatting fixes

**Poor Fix Patterns** (Manual Review Required):

- Complex refactorings
- Logic changes
- Multiline transformations
- Context-dependent fixes
- AST-level transformations

**Best Practices for Fix Definitions**:

1. Keep fixes simple and deterministic
2. Test fix patterns on sample code before deploying
3. Use capture groups to preserve variable names
4. Prefer commenting over deletion for debugging code
5. Document why a fix is safe in the rule message
6. Consider edge cases where fix might break code

### Limitations

- Only fixes violations with `fix` field defined
- Regex-based replacements only (no AST manipulation)
- Complex refactorings require manual intervention
- Multiline patterns may need special handling
- Some fixes may require post-fix manual adjustments

For complex transformations beyond regex replacement, consider using the `refactoring-specialist` agent.

</instructions>

<examples>
<formatting_example>
**Markdown Report Format**:

```markdown
## Rule Audit Report

**Target**: src/components/UserAuth.tsx
**Rules Applied**: nextjs.mdc, typescript.mdc, react.mdc
**Scan Date**: {{timestamp}}

### Summary

- **Pass**: 12 rules
- **Warn**: 3 rules
- **Fail**: 2 rules

### Violations

#### FAIL: Use Server Components by default

- **File**: src/components/UserAuth.tsx:1
- **Issue**: Missing 'use client' directive but uses useState
- **Rule**: nextjs.mdc > Components
- **Fix**: Add 'use client' at file top, or refactor to Server Component

#### FAIL: Avoid using `any`

- **File**: src/components/UserAuth.tsx:45
- **Issue**: `const user: any = await getUser()`
- **Rule**: typescript.mdc > Type System
- **Fix**: Define proper User interface

#### WARN: Minimize use of 'useEffect'

- **File**: src/components/UserAuth.tsx:23
- **Issue**: useEffect for data fetching
- **Rule**: nextjs.mdc > Performance
- **Suggestion**: Consider Server Component with async/await

### Passed Rules

- ✅ Use TypeScript strict mode
- ✅ Use lowercase with dashes for directories
- ✅ Implement proper error boundaries
  ... (12 more)
```

</formatting_example>

<code_example>
**JSON Output Format (for CI/CD)**:

```json
{
  "target": "src/components/",
  "timestamp": "2025-11-29T10:00:00Z",
  "rules_applied": ["nextjs.mdc", "typescript.mdc"],
  "summary": {
    "pass": 12,
    "warn": 3,
    "fail": 2
  },
  "violations": [
    {
      "severity": "fail",
      "rule": "typescript.mdc",
      "pattern": "Avoid using any",
      "file": "src/components/UserAuth.tsx",
      "line": 45,
      "code": "const user: any = await getUser()",
      "fix": "Define User interface"
    }
  ]
}
```

</code_example>

<code_example>
**Inline Comments Format**:

```typescript
// RULE_VIOLATION: typescript.mdc > Avoid using `any`
// FIX: Define User interface with proper types
const user: any = await getUser(); // ❌ FAIL
```

</code_example>

<code_example>
**Pre-Commit Hook**:

```bash
#!/bin/bash
# .claude/hooks/pre-commit-audit.sh
# Hook: PreToolUse (for Edit, Write tools)

# Run rule audit on modified files
modified=$(git diff --cached --name-only)
for file in $modified; do
  audit_result=$(claude skill rule-auditor --target "$file" --format json)
  if echo "$audit_result" | jq -e '.summary.fail > 0' > /dev/null; then
    echo "Rule violations found in $file"
    exit 1
  fi
done
```

</code_example>

<code_example>
**CI/CD Integration (GitHub Actions)**:

```yaml
# GitHub Actions example
- name: Rule Audit
  run: |
    claude skill rule-auditor --target src/ --format json > audit-report.json
    if [ $(jq '.summary.fail' audit-report.json) -gt 0 ]; then
      echo "::error::Rule violations detected"
      exit 1
    fi
```

</code_example>

<usage_example>
**Quick Commands**:

```
# Audit current file
/audit this file

# Audit a specific directory
/audit src/components/

# Audit with specific rules only
/audit src/ --rules nextjs,typescript

# Generate CI-friendly output
/audit src/ --format json --strict

# Show only failures
/audit src/ --severity fail

# Preview fixes without applying (dry-run)
/audit src/components/ --fix-dry-run

# Apply fixes with confirmation
/audit src/components/UserAuth.tsx --fix

# Apply all fixes automatically (batch mode)
/audit src/ --fix-auto

# Dry-run with JSON output for CI/CD
/audit src/ --fix-dry-run --format json
```

</usage_example>

<usage_example>
**Quick-Fix Mode Examples**:

**Example 1: Dry-Run Preview**

Command:

```bash
/audit src/components/UserAuth.tsx --fix-dry-run
```

Output:

```diff
## Fix Preview (Dry-Run Mode)

### Fixable Violations: 3

#### Fix 1/3
File: src/components/UserAuth.tsx:23
Rule: Remove console.log statements
Severity: warning

- console.log('User authenticated:', user);
+ // Removed: console.log('User authenticated:', user);

#### Fix 2/3
File: src/components/UserAuth.tsx:45
Rule: Avoid using 'any' type
Severity: error

- const user: any = await getUser();
+ const user: unknown = await getUser();

#### Fix 3/3
File: src/components/UserAuth.tsx:67
Rule: Use 'const' or 'let' instead of 'var'
Severity: warning

- var isAuthenticated = true;
+ const isAuthenticated = true;

---
Summary: 3 fixable violations found
No files modified (dry-run mode)
```

**Example 2: Interactive Fix Mode**

Command:

```bash
/audit src/components/UserAuth.tsx --fix
```

Interactive Session:

```
Creating backup: src/components/UserAuth.tsx.bak

Fix 1/3:
File: src/components/UserAuth.tsx:23
Rule: Remove console.log statements

- console.log('User authenticated:', user);
+ // Removed: console.log('User authenticated:', user);

Apply this fix? (y/n/all/skip): y
✓ Applied fix 1/3

Fix 2/3:
File: src/components/UserAuth.tsx:45
Rule: Avoid using 'any' type

- const user: any = await getUser();
+ const user: unknown = await getUser();

Apply this fix? (y/n/all/skip): all
✓ Applied fix 2/3
✓ Applied fix 3/3

---
Fix Summary:
- Total violations: 3
- Fixes applied: 3
- Fixes skipped: 0
- Backup created: src/components/UserAuth.tsx.bak

Run git diff to review changes.
```

**Example 3: Batch Auto-Fix**

Command:

```bash
/audit src/ --fix-auto
```

Output:

```
## Auto-Fix Report

Creating backups for modified files...
✓ src/components/UserAuth.tsx.bak
✓ src/components/Profile.tsx.bak
✓ src/utils/helpers.ts.bak

Applying fixes...

src/components/UserAuth.tsx:
  ✓ Line 23: Removed console.log statement
  ✓ Line 45: Changed 'any' to 'unknown'
  ✓ Line 67: Changed 'var' to 'const'

src/components/Profile.tsx:
  ✓ Line 12: Removed console.log statement
  ✓ Line 89: Changed 'var' to 'const'

src/utils/helpers.ts:
  ✓ Line 34: Changed 'any' to 'unknown'
  ✓ Line 78: Changed 'any' to 'unknown'

---
Fix Summary:
- Files modified: 3
- Total fixes applied: 7
- Backups created: 3

Next steps:
1. Run 'git diff' to review all changes
2. Run tests to ensure fixes didn't break functionality
3. If issues occur, restore from .bak files
```

**Example 4: Before/After Comparison**

**Before** (src/components/UserAuth.tsx):

```typescript
import { useState } from 'react';

export default function UserAuth() {
  var isAuthenticated = false;
  const user: any = await getUser();

  console.log('User authenticated:', user);

  return <div>Welcome {user.name}</div>;
}
```

**After** (with `--fix-auto`):

```typescript
import { useState } from 'react';

export default function UserAuth() {
  const isAuthenticated = false;
  const user: unknown = await getUser();

  // Removed: console.log('User authenticated:', user);

  return <div>Welcome {user.name}</div>;
}
```

**Backup** (src/components/UserAuth.tsx.bak):

```typescript
// Original file preserved - can restore with:
// mv src/components/UserAuth.tsx.bak src/components/UserAuth.tsx
```

</usage_example>

<usage_example>
**CI/CD Integration with Auto-Fix**:

**.github/workflows/code-quality.yml**:

```yaml
name: Code Quality with Auto-Fix

on: [pull_request]

jobs:
  audit-and-fix:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      # Step 1: Audit and preview fixes
      - name: Audit Code (Dry-Run)
        run: |
          claude skill rule-auditor --target src/ --fix-dry-run --format json > fix-preview.json

      # Step 2: Apply fixes automatically
      - name: Auto-Fix Violations
        run: |
          claude skill rule-auditor --target src/ --fix-auto --format json > fix-report.json

      # Step 3: Commit fixes back to PR
      - name: Commit Fixes
        run: |
          git config user.name "Rule Auditor Bot"
          git config user.email "bot@example.com"
          git add -A
          git commit -m "chore: auto-fix rule violations" || echo "No fixes applied"
          git push

      # Step 4: Post summary as PR comment
      - name: Post Fix Summary
        uses: actions/github-script@v6
        with:
          script: |
            const report = require('./fix-report.json');
            const comment = `## Auto-Fix Summary
            - Files modified: ${report.files_modified}
            - Total fixes: ${report.total_fixes}
            - See commit for details`;
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: comment
            });
```

**Pre-Commit Hook with Auto-Fix**:

**.claude/hooks/pre-commit-autofix.sh**:

```bash
#!/bin/bash
# Auto-fix violations before commit

echo "Running rule audit with auto-fix..."

# Get staged files
staged_files=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.(ts|tsx|js|jsx)$')

if [ -z "$staged_files" ]; then
  echo "No files to audit"
  exit 0
fi

# Run audit with auto-fix on staged files
for file in $staged_files; do
  claude skill rule-auditor --target "$file" --fix-auto

  # Re-stage the fixed file
  git add "$file"
done

echo "✓ Auto-fix complete. Review changes with 'git diff --cached'"
```

</usage_example>
</examples>

Related Skills

technical-accuracy-and-usability-rules

16
from diegosouzapw/awesome-omni-skill

Ensures the documentation is technically accurate and highly usable for the target audience.

rules-migration

16
from diegosouzapw/awesome-omni-skill

MIGRATE CLAUDE.md into modular `.claude/rules/` directory structure following Claude Code's rules system. Converts monolithic CLAUDE.md into organized, path-specific rule files with glob patterns. Use when migrating to rules system, modularizing project instructions, splitting CLAUDE.md, organizing memory files. Triggers on "migrate claudemd to rules", "convert claude.md to rules", "modularize claude.md", "split claude.md into rules", "migrate to rules system".

rules-eval

16
from diegosouzapw/awesome-omni-skill

Evaluate and validate Claude Code rules in .claude/rules/ directories. Use when auditing rule file quality, validating frontmatter and glob patterns, or checking rules organization before deployment. Do not use when writing new rules from scratch - use rule authoring guides instead. Do not use when evaluating skills or hooks - use skills-eval or hooks-eval instead.

rule-updater

16
from diegosouzapw/awesome-omni-skill

Skill for programmatically reading, updating, and creating Cursor rules based on patterns and lessons learned

rule-selector

16
from diegosouzapw/awesome-omni-skill

Analyzes project tech stack and recommends optimal rule configuration. Detects frameworks from package.json, requirements.txt, go.mod, and other config files. Generates custom manifest.yaml profiles for your specific stack.

rule-making-skill

16
from diegosouzapw/awesome-omni-skill

Analyze a specific directory (e.g. frontend/, backend/, e2e/) and generate .claude/rules/ markdown files for it. Use when asked to create rules, analyze a folder for Claude Code, or set up domain memory for a specific part of the codebase.

python-fastapi-scalable-api-cursorrules-prompt-fil-cursorrules

16
from diegosouzapw/awesome-omni-skill

Apply for python-fastapi-scalable-api-cursorrules-prompt-fil. --- description: Applies general coding style and structure rules for Python code in the backend. globs: backend/src/**/*.py

prompt-generation-rules

16
from diegosouzapw/awesome-omni-skill

General rules to generate prompt.

packaging-rules

16
from diegosouzapw/awesome-omni-skill

BrainDrive plugin packaging and ZIP rules - use when creating the final distributable package or validating ZIP structure

my-react-rules

16
from diegosouzapw/awesome-omni-skill

This is a new rule

mobile-ui-development-rule

16
from diegosouzapw/awesome-omni-skill

General rules pertaining to Mobile UI development. Covers UI/UX best practices, state management, and navigation patterns.

mobile-first-design-rules

16
from diegosouzapw/awesome-omni-skill

Focuses on rules and best practices for mobile-first design and responsive typography using tailwind.