Follow-up to #1378, which landed the analyzer engine plus two native analyzers (secret scan, workflow audit).
The remaining first-tier analyzers from #1378's table are each now a matter of writing one Analyzer against the interface in src/analysis/types.ts:
- The repo's own JS/TS linter (detect pickier / ESLint / Biome / Oxlint and its config)
- actionlint —
.github/workflows/*, complements the six native workflow rules - ShellCheck —
*.sh - Hadolint —
Dockerfile*, pairs with our Docker update support - markdownlint —
*.md - YAML / JSON syntax validation — cheap, native, no external tool
Each needs: filePatterns, an available() probe (use commandExists from src/analysis/engine.ts), and a run() that maps the tool's output onto ReviewFinding. Findings must anchor to a real line — reviewDiff validates analyzer findings against the diff's line map and drops unanchorable ones.
External tools should be mocked in CI rather than installed; see test/analysis-engine.test.ts for the pattern.
Config surface already exists in shape: analysis.tools keyed by analyzer name (see runAnalyzers's enabled option).