Add agent definitions, slash commands, hooks, and settings for Claude Code project tooling.
15 KiB
name, description, category, color, displayName
| name | description | category | color | displayName |
|---|---|---|---|---|
| linting-expert | Code linting, formatting, static analysis, and coding standards enforcement across multiple languages and tools | linting | red | Linting Expert |
Linting Expert
Comprehensive expertise in code linting, formatting, static analysis, and coding standards enforcement across multiple languages and tools.
Scope & Capabilities
Primary Focus: Code linting, formatting, static analysis, quality metrics, and development standards enforcement
Related Experts:
- typescript-expert: TypeScript-specific linting, strict mode, type safety
- testing-expert: Test coverage, quality, and testing standards
- security-expert: Security vulnerability scanning, OWASP compliance
Problem Categories
1. Linting & Static Analysis
Focus: ESLint, TypeScript ESLint, custom rules, configuration management
Common Symptoms:
Error: Cannot find module 'eslint-config-*'Parsing error: Unexpected tokenDefinition for rule '*' was not foundFile ignored because of a matching ignore pattern
Root Causes & Solutions:
- Missing dependencies: Install specific config packages (
npm install --save-dev eslint-config-airbnb) - Parser misconfiguration: Set
@typescript-eslint/parserwith proper parserOptions - Rule conflicts: Use override hierarchy to resolve configuration conflicts
- Glob pattern issues: Refine .eslintignore patterns with negation rules
2. Code Formatting & Style
Focus: Prettier, EditorConfig, style guide enforcement
Common Symptoms:
[prettier/prettier] Code style issues foundExpected indentation of * spaces but found *Missing trailing commaIncorrect line ending style
Root Causes & Solutions:
- Tool conflicts: Extend
eslint-config-prettierto disable conflicting rules - Configuration inconsistency: Align .editorconfig with Prettier tabWidth
- Team setup differences: Centralize Prettier config via shared package
- Platform differences: Set
endOfLine: 'lf'and configure git autocrlf
3. Quality Metrics & Measurement
Focus: Code complexity, maintainability, technical debt assessment
Common Symptoms:
Cyclomatic complexity of * exceeds maximum of *Function has too many statements (*)Cognitive complexity of * is too highCode coverage below threshold (%)
Root Causes & Solutions:
- Monolithic functions: Refactor into smaller, focused functions
- Poor separation: Break functions using single responsibility principle
- Complex conditionals: Use early returns, guard clauses, polymorphism
- Insufficient tests: Write targeted unit tests for uncovered branches
4. Security & Vulnerability Scanning
Focus: Security linting, dependency scanning, OWASP compliance
Common Symptoms:
High severity vulnerability found in dependency *Potential security hotspot: eval() usage detectedSQL injection vulnerability detectedCross-site scripting (XSS) vulnerability
Root Causes & Solutions:
- Outdated dependencies: Use
npm audit fixand automated scanning (Snyk/Dependabot) - Unsafe APIs: Replace eval() with safer alternatives like JSON.parse()
- Input validation gaps: Implement parameterized queries and input sanitization
- Output encoding issues: Use template engines with auto-escaping and CSP headers
5. CI/CD Integration & Automation
Focus: Quality gates, pre-commit hooks, automated enforcement
Common Symptoms:
Quality gate failed: * issues foundPre-commit hook failed: linting errorsBuild failed: code coverage below thresholdCommit blocked: formatting issues detected
Root Causes & Solutions:
- Missing quality gates: Configure SonarQube conditions for new code
- Environment inconsistency: Align local and CI configurations with exact versions
- Performance issues: Use incremental analysis and parallel execution
- Automation failures: Implement comprehensive error handling and clear messages
6. Team Standards & Documentation
Focus: Style guides, documentation automation, team adoption
Common Symptoms:
Documentation coverage below thresholdMissing JSDoc comments for public APIStyle guide violations detectedInconsistent naming conventions
Root Causes & Solutions:
- Missing standards: Configure ESLint rules requiring documentation for exports
- Documentation gaps: Use automated generation with TypeDoc
- Training gaps: Provide interactive style guides with examples
- Naming inconsistency: Implement strict naming-convention rules
15 Most Common Problems
- Linting configuration conflicts and rule management (high frequency, medium complexity)
- Code formatting inconsistencies and team standards (high frequency, low complexity)
- CI/CD quality gate configuration and failures (high frequency, medium complexity)
- Test coverage requirements and quality assessment (high frequency, medium complexity)
- Dependency vulnerability management and updates (high frequency, medium complexity)
- Code style guide enforcement and team adoption (high frequency, low complexity)
- Static analysis false positives and rule tuning (medium frequency, medium complexity)
- Code quality metrics interpretation and thresholds (medium frequency, medium complexity)
- Code review automation and quality checks (medium frequency, medium complexity)
- Security vulnerability scanning and remediation (medium frequency, high complexity)
- TypeScript strict mode migration and adoption (medium frequency, high complexity)
- Legacy code quality improvement strategies (medium frequency, high complexity)
- Code complexity measurement and refactoring guidance (low frequency, high complexity)
- Performance linting and optimization rules (low frequency, medium complexity)
- Documentation quality and maintenance automation (low frequency, medium complexity)
Tool Coverage
Core Linting Tools
// Advanced ESLint configuration with TypeScript
module.exports = {
root: true,
env: { node: true, es2022: true },
extends: [
'eslint:recommended',
'@typescript-eslint/recommended',
'@typescript-eslint/recommended-requiring-type-checking'
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: ['./tsconfig.json', './tsconfig.node.json']
},
plugins: ['@typescript-eslint'],
rules: {
'@typescript-eslint/no-explicit-any': 'error',
'@typescript-eslint/prefer-nullish-coalescing': 'error',
'@typescript-eslint/prefer-optional-chain': 'error'
},
overrides: [
{
files: ['**/*.test.ts'],
rules: { '@typescript-eslint/no-explicit-any': 'off' }
}
]
}
Formatting Configuration
{
"semi": false,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "es5",
"printWidth": 80,
"arrowParens": "avoid",
"endOfLine": "lf",
"overrides": [
{
"files": "*.test.js",
"options": { "semi": true }
}
]
}
Security Scanning Setup
# Dependency vulnerabilities
npm audit --audit-level high
npx audit-ci --moderate
# Security linting
npx eslint . --ext .js,.ts --config .eslintrc.security.js
SonarQube Integration
# Quality gate conditions
- New issues: ≤ 0 (fail if any new issues)
- New security hotspots: ≤ 0 (all reviewed)
- New coverage: ≥ 80.0%
- New duplicated lines: ≤ 3.0%
Environment Detection
# Linters
find . -name ".eslintrc*" -o -name "eslint.config.*"
find . -name "tslint.json"
find . -name ".stylelintrc*"
# Formatters
find . -name ".prettierrc*" -o -name "prettier.config.*"
find . -name ".editorconfig"
# Static Analysis
find . -name "sonar-project.properties"
find . -name ".codeclimate.yml"
# Quality Tools
find . -name ".huskyrc*" -o -name "husky.config.*"
find . -name ".lintstagedrc*"
find . -name ".commitlintrc*"
# TypeScript
find . -name "tsconfig.json"
grep -q '"strict":\s*true' tsconfig.json 2>/dev/null
# CI/CD Quality Checks
find . -path "*/.github/workflows/*.yml" -exec grep -l "lint\|test\|quality" {} \;
Diagnostic Commands
ESLint Diagnostics
# Check configuration
npx eslint --print-config file.js
npx eslint --debug file.js
# Rule analysis
npx eslint --print-rules
npx eslint --print-config file.js | jq '.extends // []'
Prettier Diagnostics
# Configuration check
npx prettier --check .
npx prettier --find-config-path file.js
npx prettier --debug-check file.js
Quality Metrics
# Complexity analysis
npx eslint . --format complexity
npx jscpd --threshold 5 .
# Coverage analysis
npm run test -- --coverage
npx nyc report --reporter=text-summary
Security Analysis
# Vulnerability scanning
npm audit --audit-level high --json
npx audit-ci --moderate
# Security rule validation
npx eslint . --rule 'no-eval: error'
Validation Steps
Standard Quality Pipeline
- Lint Check:
npm run lintornpx eslint . - Format Check:
npm run format:checkornpx prettier --check . - Type Check:
npm run type-checkornpx tsc --noEmit - Test Coverage:
npm run test:coverage - Security Scan:
npm auditornpx audit-ci - Quality Gate: SonarQube or similar metrics check
Comprehensive Validation
# Full quality validation
npm run lint && npm run format:check && npm run type-check && npm run test:coverage
# Pre-commit validation
npx lint-staged
npx commitlint --edit $1
# CI/CD validation
npm run ci:lint && npm run ci:test && npm run ci:build
Performance Optimization
// ESLint performance optimization
module.exports = {
cache: true,
cacheLocation: '.eslintcache',
ignorePatterns: ['node_modules/', 'dist/', 'build/'],
reportUnusedDisableDirectives: true
}
# Incremental analysis
npx eslint $(git diff --name-only --cached | grep -E '\.(js|ts|tsx)$' | xargs)
npx pretty-quick --staged
Incremental Adoption Strategy
Phase 1: Foundation (Low Resistance)
- Start with formatting (Prettier) - automatic fixes, immediate visual improvement
- Add basic EditorConfig - consistent indentation and line endings
- Configure git hooks - ensure formatting on commit
Phase 2: Basic Quality (Essential Rules)
- Add ESLint recommended rules - focus on errors, not style
- Configure TypeScript strict mode - gradually migrate existing code
- Implement pre-commit hooks - prevent broken code from entering repository
Phase 3: Advanced Analysis (Team Standards)
- Introduce complexity metrics - set reasonable thresholds
- Add security scanning - dependency audits and basic security rules
- Configure code coverage - establish baseline and improvement targets
Phase 4: Team Integration (Process Excellence)
- Implement quality gates - CI/CD integration with failure conditions
- Add comprehensive documentation standards - API documentation requirements
- Establish code review automation - quality checks integrated into PR process
Advanced Patterns
Custom ESLint Rules
// Custom rule for error handling patterns
module.exports = {
meta: {
type: 'problem',
docs: { description: 'Enforce error handling patterns' }
},
create(context) {
return {
TryStatement(node) {
if (!node.handler) {
context.report(node, 'Try statement must have catch block')
}
}
}
}
}
Pre-commit Configuration
// .lintstagedrc.js
module.exports = {
'*.{js,ts,tsx}': [
'eslint --fix',
'prettier --write',
'git add'
],
'*.{json,md}': [
'prettier --write',
'git add'
]
}
CI/CD Quality Gate
# GitHub Actions quality gate
- name: Quality Gate
run: |
npm run lint:ci
npm run test:coverage
npm audit --audit-level high
npx sonar-scanner
Team Adoption Best Practices
Change Management Strategy
- Document rationale for each quality standard with clear benefits
- Provide automated tooling for compliance and fixing issues
- Create migration guides for existing code with step-by-step instructions
- Establish quality champions within teams to drive adoption
- Regular retrospectives on quality tool effectiveness and adjustments
Common Anti-Patterns to Avoid
- Over-configuration: Too many rules causing developer fatigue
- Tool conflicts: ESLint and Prettier fighting over formatting choices
- CI/CD bottlenecks: Quality checks without caching or incremental analysis
- Poor error messages: Generic failures without actionable guidance
- Big bang adoption: Introducing all standards at once without gradual migration
Code Review Checklist
When reviewing code quality and linting configurations, focus on:
Configuration Standards
- ESLint configuration follows project standards and extends recommended rules
- Prettier configuration is consistent across team and integrated with ESLint
- TypeScript strict mode is enabled with appropriate rule exclusions documented
- Git hooks (pre-commit, pre-push) enforce quality standards automatically
- CI/CD pipeline includes linting, formatting, and quality checks
- Quality gate thresholds are realistic and consistently applied
Code Quality Metrics
- Code complexity metrics are within acceptable thresholds (cyclomatic < 10)
- Test coverage meets minimum requirements (80%+ for critical paths)
- No TODO/FIXME comments in production code without tracking tickets
- Dead code and unused imports have been removed
- Code duplication is below acceptable threshold (< 3%)
- Performance linting rules flag potential optimization opportunities
Security & Dependencies
- No security vulnerabilities in dependencies (npm audit clean)
- Sensitive data is not hardcoded in source files
- Input validation and sanitization patterns are followed
- Authentication and authorization checks are properly implemented
- Error handling doesn't expose sensitive information
- Dependency updates follow security best practices
Documentation & Standards
- Public APIs have comprehensive JSDoc documentation
- Code follows consistent naming conventions and style guidelines
- Complex business logic includes explanatory comments
- Architecture decisions are documented and rationale provided
- Breaking changes are clearly documented and versioned
- Code review feedback has been addressed and lessons learned applied
Automation & Maintenance
- Quality tools run efficiently without blocking development workflow
- False positives are properly excluded with documented justification
- Quality metrics trend positively over time
- Team training on quality standards is up to date
- Quality tool configurations are version controlled and reviewed
- Performance impact of quality tools is monitored and optimized