agentsclimarketplace

Pr linter enforcer

Skill WesleySmits/agent-skills/.agent/skills/pr-linter-enforcer

43 production-ready skills for AI coding agents. Works with Claude, GitHub Copilot, Cursor, Windsurf, and Zed.

Install
npx -y skills add WesleySmits/agent-skills --skill pr-linter-enforcer

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Runs ESLint, Prettier, and stylelint against changed files and suggests or applies fixes. Use when the user mentions linting, code style, PR review, formatting issues, or wants to check code quality before committing.

SKILL.md

6.6 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it

PR Reviewer / Linter Enforcer

When to use this skill

  • User asks to lint or format code
  • User wants to review code quality before a PR
  • User mentions ESLint, Prettier, or stylelint
  • User asks to fix formatting or style issues
  • User wants to check changed files for violations
  • User mentions code consistency or style enforcement

Workflow

  • Identify changed files (staged or branch diff)
  • Detect available linting tools in project
  • Run linters against changed files only
  • Collect and categorize issues
  • Present issues with fix suggestions
  • Apply automatic fixes if requested
  • Verify fixes resolved issues

Instructions

Step 1: Identify Changed Files

For staged changes:

git diff --cached --name-only --diff-filter=ACMR

For branch comparison:

git diff --name-only origin/main...HEAD

Filter to lintable files:

git diff --cached --name-only --diff-filter=ACMR | grep -E '\.(js|jsx|ts|tsx|vue|css|scss|json|md)$'

Step 2: Detect Available Linters

Check for linter configurations in project root:

ToolConfig Files
ESLint.eslintrc.*, eslint.config.*, package.json
Prettier.prettierrc.*, prettier.config.*, package.json
stylelint.stylelintrc.*, stylelint.config.*, package.json

Verify tools are installed:

npm ls eslint prettier stylelint 2>/dev/null || yarn list --pattern "eslint|prettier|stylelint" 2>/dev/null

Step 3: Run Linters on Changed Files

ESLint (JavaScript/TypeScript):

npx eslint --format stylish <files>

With auto-fix preview:

npx eslint --fix-dry-run --format json <files>

Prettier (formatting):

npx prettier --check <files>

Show what would change:

npx prettier --write --list-different <files>

stylelint (CSS/SCSS):

npx stylelint <css-files>

Step 4: Categorize Issues

Group issues by severity and type:

Errors (must fix):

  • Syntax errors
  • Type errors
  • Security vulnerabilities
  • Unused variables in critical paths

Warnings (should fix):

  • Unused imports
  • Missing accessibility attributes
  • Deprecated API usage

Style (nice to fix):

  • Formatting inconsistencies
  • Naming conventions
  • Import ordering

Step 5: Present Issues

Format findings clearly:

## Linting Report

### Errors (3)

| File         | Line | Rule                               | Message                              |
| ------------ | ---- | ---------------------------------- | ------------------------------------ |
| src/utils.ts | 42   | @typescript-eslint/no-explicit-any | Unexpected any                       |
| src/api.ts   | 15   | no-unused-vars                     | 'response' is defined but never used |
| src/index.ts | 8    | import/no-unresolved               | Unable to resolve path               |

### Warnings (2)

| File           | Line | Rule                                     | Message                   |
| -------------- | ---- | ---------------------------------------- | ------------------------- |
| src/Button.tsx | 23   | jsx-a11y/click-events-have-key-events    | Missing keyboard handler  |
| src/utils.ts   | 67   | @typescript-eslint/no-non-null-assertion | Avoid non-null assertions |

### Formatting (5 files)

- src/components/Card.tsx
- src/hooks/useAuth.ts
- src/pages/Home.tsx
- src/styles/main.css
- src/types/index.ts

Step 6: Apply Fixes

Auto-fix all fixable issues:

npx eslint --fix <files>
npx prettier --write <files>
npx stylelint --fix <css-files>

Fix specific rule categories:

# Only formatting fixes
npx eslint --fix --rule 'indent: error' --rule 'semi: error' <files>

# Only import sorting
npx eslint --fix --rule 'import/order: error' <files>

Step 7: Verify Fixes

Re-run linters to confirm resolution:

npx eslint <files> && npx prettier --check <files> && echo "✓ All checks passed"

Configuration Detection

ESLint Config Patterns

Check for flat config (ESLint 9+):

ls eslint.config.{js,mjs,cjs} 2>/dev/null

Check for legacy config:

ls .eslintrc.{js,cjs,json,yml,yaml} 2>/dev/null

Prettier Config Patterns

ls .prettierrc{,.json,.yml,.yaml,.js,.cjs,.mjs} prettier.config.{js,cjs,mjs} 2>/dev/null

Package.json Scripts

Check for existing lint scripts:

npm pkg get scripts.lint scripts.format scripts.style 2>/dev/null

Prefer using project scripts when available:

npm run lint -- --fix
npm run format

Common Fix Patterns

Unused Imports

// Before
import { useState, useEffect, useCallback } from "react";
// Only useState used

// After
import { useState } from "react";

Missing Accessibility

// Before
<div onClick={handleClick}>Click me</div>

// After
<button type="button" onClick={handleClick}>Click me</button>

Formatting Issues

// Before
const obj = { foo: "bar", baz: 42 };

// After
const obj = { foo: "bar", baz: 42 };

Integration with Git Hooks

If user wants pre-commit enforcement, suggest:

npx husky add .husky/pre-commit "npx lint-staged"

With lint-staged config in package.json:

{
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"],
    "*.{css,scss}": ["stylelint --fix", "prettier --write"],
    "*.{json,md}": ["prettier --write"]
  }
}

Validation

Before completing:

  • All errors are resolved or acknowledged
  • Warnings reviewed and addressed where appropriate
  • Formatting is consistent
  • No new issues introduced by fixes
  • Changes staged for commit

Error Handling

  • Linter not installed: Run npm install --save-dev <tool> or check if project uses yarn/pnpm.
  • No config found: Linter may use defaults. Run npx <tool> --init to create config.
  • Command fails: Run npx <tool> --help for available options.
  • No changed files: Run git status to verify. May need to stage changes first.

Resources

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Gives 0 of the 12 instructions most quality gates skills give in ~1.7k tokens

Counted across 1,195 of the 2,094 authors here whose files we hold, read 2026-08-07

  • Read the output and check the exit codein 54 of 1195, across 14 files
  • Verify requirements using a line-by-line checklistin 53 of 1195, across 12 files
  • Identify the verification command proving the claimin 51 of 1195, across 12 files
  • Run the full verification commandin 50 of 1195, across 11 files
  • Verify output confirms the claimin 49 of 1195, across 12 files
  • Check version control diff after agent delegationin 46 of 1195, across 6 files
  • State claim with evidencein 44 of 1195, across 4 files
  • Run the test suitein 33 of 1195, across 26 files
  • Keep state in memory by defaultin 27 of 1195, across 6 files
  • Make prototype runnable with one commandin 26 of 1195, across 5 files
  • Produce a verification reportin 25 of 1195, across 14 files
  • Detect the package manager from lockfilesin 24 of 1195, across 5 files

Said here and by no other author read

  • identify changed files before linting
  • present issues with fix suggestions
  • apply automatic fixes if requested
  • prefer project lint scripts when available
  • verify fixes resolved all issues

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,984. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.