42 KiB
Changelog
All notable changes to brooks-lint are documented here.
[Unreleased]
[1.4.0] - 2026-06-19
Added
-
Parser-fidelity benchmark —
evals/benchmark-corpus.jsonfreezes 30 real, model-generated reports (all six modes, incl. 9 false-positive/tradeoff cases), each independently graded and hand-checked.npm run benchmarkruns the shipped parser against it (severity-count fidelity, risk-code precision/recall, SARIF validity) andnpm testguards it as a deterministic regression. Replaces the synthetic-fixture-only coverage of the report parser with real model output. -
SARIF output for GitHub Code Scanning —
ci-review.mjsgains--format sarif/--sarif-out, and the GitHub Action asarif-fileinput, so findings surface inline on the PR "Files changed" tab. Newreport-parse.mjs(Markdown report → structured findings) andsarif.mjs(SARIF 2.1.0 serializer). -
CI quality gates — the Action adds
fail-on(critical/warning) andfail-on-regressioninputs on top offail-below, backed by a unit-testedci-gate.mjs. The JSON report now carries per-severity finding counts plus the score delta vs the last run. -
Strictness presets — a
strictnessconfig key (strict/balanced(default) /legacy-friendly) tunes Health-Score deduction weights;legacy-friendlysoftens scoring and leads with the top fixes so a legacy codebase's first run isn't a wall of Criticals. -
Eval coverage backfill — benchmark suite 49 → 57 scenarios: Full Sweep gains its first cases, Architecture Audit and Tech Debt are deepened, and every new mode group includes a false-positive/tradeoff check.
-
One-command multi-platform installer —
scripts/install.sh <platform>copies the six skills +_shared/flat into the correct folder for OpenCode, Cursor, Windsurf, Antigravity, pi, Kiro, GitHub Copilot, Claude, or the vendor-neutral~/.agents/skills, so the../_shared/relative reads always resolve (users can't get the layout wrong). Runs from a clone or viacurl … | bash -s -- <platform>;--projecttargets the current repo. -
Per-platform setup guides —
docs/getting-started.mdplusdocs/{opencode,cursor,windsurf,antigravity,pi,copilot,kiro}-setup.md, with install, invocation, gotchas, and source links for each. Modeled on theaddyosmani/agent-skillsdocs layout (compact README + detailed docs). -
Multi-platform support in both READMEs — the EN and zh-CN READMEs now expose seven additional Agent-Skills agents via collapsible per-platform entries that link to the docs, plus a verification-status note inviting community end-to-end reports. Resolves the OpenCode compatibility request (#14).
-
Factory Droid support — added
droidto the installer and adocs/factory-droid-setup.mdguide. Droid natively loadsSKILL.mdfrom~/.factory/skills/.factory/skillsand readsAGENTS.md. -
install.shnow covers Gemini and Codex (gemini,codextargets) so a single command installs every documented platform.
Fixed
- Gemini CLI manual install was broken — the old
cp -r skills/* ~/.gemini/skills/brooks-lint/nested everySKILL.mdtwo levels deep, and Gemini only discovers skills one level deep, so none of the six skills were found. Corrected to a flat~/.gemini/skills/install (EN + zh-CN READMEs). Also flattened the Codex manual install to match the skill-installer layout.
Changed
AGENTS.mdnow describes brooks-lint as a portable Agent-Skills tool (runs on anyAGENTS.md/SKILL.md-compatible agent) rather than a Codex-CLI-specific plugin.
[1.3.0] - 2026-05-24
Added
- Codex marketplace icon — created
assets/logo.svgand addedcomposerIconfield to.codex-plugin/plugin.jsonfor marketplace display. - Codex interface metadata — added
interfaceconfiguration to.codex-plugin/plugin.jsonfor richer marketplace listing.
Fixed
brooks-sweepdebt scoring — inlined the Pain × Spread severity rubric directly intosweep-guide.md(7–9 Critical, 4–6 Warning, 1–3 Suggestion), removing an implicit cross-skill dependency on../brooks-debt/debt-guide.md.
Changed
CLAUDE.md— fixed 4 stale facts and added skill authoring / eval guidance.
[1.2.3] - 2026-05-13
Added
scripts/bump-version.mjs— new script that propagates the version frompackage.jsonto all manifests (.claude-plugin/plugin.json,.claude-plugin/marketplace.json,.codex-plugin/plugin.json,gemini-extension.json) and the README badge in one command. Addednpm run bumpshortcut topackage.json.
Changed
CLAUDE.md— Slash commands gotcha now enumerates all short forms inline (/brooks-review,/brooks-audit,/brooks-debt,/brooks-test,/brooks-health,/brooks-sweep) instead of showing only one example.
[1.2.2] - 2026-04-29
Aggressive token reduction across all skill guides and shared framework files. Net result: ~212 lines removed (~9% of total guide content), with no behavioral change.
Changed
skills/_shared/common.md— condensed Iron Law and Output sections; removed redundant YAML config example.skills/_shared/decay-risks.md,test-decay-risks.md— tightened per-risk introductions to single-line format.skills/_shared/source-coverage.md— removed redundant prose; frontmatter source list unchanged (validator derives book count from it).skills/brooks-audit/architecture-guide.md,brooks-debt/debt-guide.md,brooks-health/health-guide.md,brooks-review/pr-review-guide.md,brooks-sweep/sweep-guide.md,brooks-test/test-guide.md— condensed verbose procedural prose to terse arrow-flow notation throughout.skills/brooks-review/SKILL.md— removed 2 redundant lines.
[1.2.1] - 2026-04-28
Fix Codex CLI compatibility: skill descriptions exceeded the 1024-character limit enforced by Codex CLI's OpenAI function description spec. All six skill descriptions now measure 698–950 chars.
Fixed
skills/brooks-audit/SKILL.md,brooks-debt/SKILL.md,brooks-health/SKILL.md,brooks-test/SKILL.md— removed verbose keyword trigger lists ("Also triggers when user mentions: …") and proactive-use hints ("Use this skill proactively when…") that pushed descriptions over the limit. Core description,Triggers when:, and requiredDo NOT trigger for:clauses are preserved.
[1.2.0] - 2026-04-24
brooks-sweep pipeline rewritten from a single-pass unified scan into a sequential,
fully autonomous audit-and-fix loop. Inputs and report format are unchanged; the
methodology between consent and report is different. Existing /brooks-sweep
invocations continue to work — users see more automation and a new iteration history
in the report.
Changed
skills/brooks-sweep/sweep-guide.mdrewritten as a 9-Phase pipeline (Step 0 consent → Step 1 scope + state → Steps 2–5 four-dimension sequence: review → test → debt → audit → Step 6 iteration loop → Steps 7–8 residual + report). Each dimension scans, classifies, applies Safe + Extended-Safe fixes, and verifies via the project test command before the next dimension starts.skills/brooks-sweep/SKILL.mdProcess skeleton aligned to the new Phase structure.- Fix-Class taxonomy: previous
Auto / Confirm / Manualreplaced bySafe / Extended-Safe / Residual. Multi-file changes with test coverage and no public API break now auto-apply (was: always required confirmation). After the Step 0 consent gate there are no further user prompts during execution — risky findings are recorded in the Residual report instead of waiting on a mid-pipeline confirmation. - Iteration loop re-scans modified files + same-module + static consumers and
converges on clean rounds. Findings that fail 3 fix attempts are retired to an
unresolvableset and never re-queued. Non-critical rounds cap at 3 (configurable viasweep.max_iterationsin.brooks-lint.yaml). - User interaction: one consent gate at Step 0. After consent, the pipeline runs hands-free until the final report.
[1.1.0] - 2026-04-22
New skill: brooks-sweep — full-sweep auto-fix mode. Runs a unified analysis across all
quality dimensions in a single pass, then applies fixes directly: safe changes are
auto-applied, risky changes require confirmation, architectural decisions are flagged as
manual. No changes to any existing skill logic.
Added
brooks-sweepskill (skills/brooks-sweep/) — orchestrates production decay scan (R1–R6), test decay scan (T1–T6), and architecture analysis in one pass, then classifies findings into Auto / Confirm / Manual fix classes and applies them.commands/brooks-sweep.md— short-form/brooks-sweepcommand wrapper (auto-installed by session-start hook).SKILL_GUIDESconstant invalidate-repo.mjs— replaces three previously separate mode arrays with a single source of truth; future skill additions require only one array entry.- Session-start hook updated to advertise six skills (was five).
[1.0.1] - 2026-04-21
Documentation and consistency patch. No behavior or API changes — all skill logic is unchanged. Existing users on v1.0.0 can upgrade at any time with no migration risk.
Fixed
README.mdManual Install commands —cp -r skills/ ~/.claude/skills/brooks-lintsilently created abrooks-lint/skills/nested directory; fixed tomkdir -p ~/.claude/skills/brooks-lint && cp -r skills/* ~/.claude/skills/brooks-lint/. Same fix applied to the Gemini CLI Manual Install block.pr-review-guide.mdstructural ordering — the## Outputsection appeared before Step 7, leaving the Analysis Process non-contiguous. Step 7 is now the last analysis step and## Outputfollows.test-guide.mdCharacterization Tests citation —Ch. 8corrected toCh. 13: Characterization Tests(matchestest-decay-risks.md:246and Feathers' Working Effectively with Legacy Code).decay-risks.mdRisk 4 over-engineering source — removed incorrect "Evils of Duplication (YAGNI corollary)" reference (Evils of Duplication is DRY, not YAGNI); replaced withTopic 4: Good-Enough Softwarefrom The Pragmatic Programmer.architecture-guide.mdStep 2 pointer — circular-dependency instruction now cites the actual-.->|circular|Mermaid edge in the example, replacing the stale ⚠️ symbol that never appeared in the map.test-decay-risks.mdT6 source —Test suite design principles(vague) tightened to Meszaros'Slow Tests (p. 253);test-guide.mdslow-suite source aligned to the same citation.GEMINI.mdfictional command —gemini skills reloadremoved; replaced withexit the Gemini CLI (/quit) and relaunch.GEMINI.mdandAGENTS.mdboth statenpm run evals/npm run evals:liveas the eval runners (was "No automated runner").common.mdAuto Scope Detection — added the missing Health Dashboard branch; replaced the hard-coded"PR Review Step 7"reference with the named"Quick Test Check"step so step renumbering no longer rots the text.debt-guide.mdstep numbering — promotedStep 2b: Classify Debt IntenttoStep 3, renumberedGroup by Decay RisktoStep 4, and updated the"three steps" -> "four steps"preamble.CONTRIBUTING.mdstructure —"Three Ways to Contribute"->"Four Ways to Contribute";Adding a new decay riskpromoted to numbered §4 and moved after §3 for logical difficulty progression (1→2→3→4); fixed broken list rendering where"In your PR..."was missing a blank line and rendered as a list-item continuation..github/ISSUE_TEMPLATE/bug_report.md— added Health Dashboard to theReview modeoptions; replaced brokencat ~/.claude/plugins/.../package.jsonplaceholder with/plugin listguidance.docs/gallery.mdself-contradictions —"Critical / Scheduled"cell in the Debt Summary Table (a single-cell two-way classification that didn't fit the schema) now reads"Mixed (1 Critical + 1 Scheduled)";~9 minutes/~542 secondstime references harmonized; preamble changed from "no manual editing" to "lightly abridged — some Consequence lines trimmed" for honesty.
Changed
- SKILL.md Process convention —
SKILL.mdProcess sections are now a high-level skeleton (3–6 items) that cites guideStepranges inline (e.g.Scan decay risks (Steps 1–7 of the guide)) rather than mirroring the guide's full step list 1:1. The guide owns the detailed numbered steps; the skeleton is for orientation. Counts no longer need to match —CLAUDE.md,AGENTS.md, andGEMINI.mdall document the new rule.npm run validatestill enforces guide step continuity (sub-steps like2a/6ballowed) and SKILL.md Process-section presence. All fiveSKILL.mdProcess sections updated to the new skeleton+citation format. commands/*.mdfrontmatter — all five short-form command wrappers now declareallowed-tools: Skill, so the command turn can only dispatch the skill (the skill itself has full tool access once invoked).- Typographic consistency — unified
Pain × Spread(Unicode × with spaces) acrossdebt/SKILL.md,health-guide.md,evals.json, anddocs/gallery.md; unifiedCh. Xchapter citations (with the ASCII space after the period) acrosstest-decay-risks.md,test-guide.md,architecture-guide.md, andpr-review-guide.md. README.mdRoadmap — added a "Current state" callout above the version-by- version history so early entries like "v0.3: Eight Brooks dimensions" and "v0.4: Six-book framework" aren't misread as the current feature set.health-guide.mddashboard template — added the**Mode:** Health Dashboardfield and standard---section dividers to align with the report templates used by the other four skills.
[1.0.0] - 2026-04-16
Added
- F9: Eval Automation — live eval runner via Anthropic SDK:
- New
scripts/run-evals-live.mjs: executes all 49 benchmark scenarios against Claude API; classifies results as pass / partial / fail / false-positive-pass / error; reports per-risk accuracy (e.g.,R1: 6/7 (85%)); sharesassembleSystemPromptwithci-review.mjsfor consistent prompt assembly - Flags:
--id N,--risk R1,--mode review,--model claude-opus-4-6for subset runs; system prompts are cached per mode to avoid re-reading files for each scenario evals/evals.json: all 49 scenarios gain amodefield ("review"|"audit"|"debt"|"test"|"health")scripts/run-evals.mjs:modeadded toREQUIRED_FIELDS; valid mode values enforcedpackage.json:"evals:live"script wired torun-evals-live.mjs
- New
- F10: Custom Decay Risk Extension —
Cxcodes for project-specific risks:- New
skills/_shared/custom-risks-guide.md: loading validation, scanning instructions, Iron Law integration (Source: "[Project-defined risk] — <name>"), and Health Score inclusion rules; custom findings appear under ### Project-Specific Risks skills/_shared/common.mdConfig section: one-line trigger to loadcustom-risks-guide.mdwhencustom_risksmap is present; Config Validation updated to acceptCxcodes indisable,focus, andseverity.brooks-lint.example.yaml: commentedcustom_risksexample withC1(Security Debt) andC2(Accessibility Debt) entries showing all required fields
- New
Changed
- Skill descriptions — all five
SKILL.mddescriptions now lead with purpose and concrete user trigger phrases instead of the book list; each includes a strengthened "Do NOT trigger for:" guardrail to prevent false activation - Eval classification flags — replaced fragile name-substring detection with explicit
boolean fields:
no_risk_codes: true(18 false-positive scenarios) andno_health_score: true(2 boundary scenarios); the two flags are mutually exclusive - CLAUDE.md — updated to reflect five skills (added
brooks-health), corrected eval count (43 → 49), completedscripts/listing, addedbrooks-healthdev command, documented GitHub Action, custom risks, and VS Code exclusion
Fixed
gemini-extension.json— added missingbrooks-healthskill and command entries; all four manifests now list five analysis modes- Removed VS Code references from
README.md(Mermaid render list); VS Code Extension marked out of scope in roadmap spec andCLAUDE.md
[0.9.5] - 2026-04-16
Added
- F7: Team Onboarding Report —
brooks-auditnow supports--onboardingmode:- New file
skills/brooks-audit/onboarding-guide.mdwith a 6-step orientation process (territory map, reading-order dependency graph, conventions, danger zones, domain glossary, suggested first tasks) - Mermaid graph colored by reading order (blue = start, purple = next, gray = last) using a DISTINCT palette from the severity palette to avoid confusion
- No Health Score or Iron Law format — this mode explains, not diagnoses
brooks-audit/SKILL.mdupdated: description includes onboarding triggers; Process section routes--onboardingrequests toonboarding-guide.md- 2 new benchmark evals (IDs 48–49): one normal onboarding request, one boundary check verifying the absence of Health Score and Iron Law findings
- New file
- F8: GitHub Action — automated PR review via Anthropic SDK:
- New
.github/actions/brooks-lint/action.yml: composite action withmode,anthropic-api-key,fail-below, andmodelinputs; posts review as PR comment; outputsscorefor downstream steps - New
scripts/assemble-prompt.mjs: shared utility that assembles the system prompt for any mode by concatenatingcommon.md,source-coverage.md, the correct decay-risks files, and the mode-specific guide; shared with the future eval runner - New
scripts/ci-review.mjs: CLI entry point for CI — reads git diff, assembles prompt, calls Claude API, outputs JSON{ report, score, mode, scope, trend } - New
docs/github-action-example.yml: ready-to-copy workflow template - Trend integration: if
.brooks-lint-history.jsonexists in the project root, the PR comment includes a delta line (e.g., "85 → 82 (−3) over last 3 runs") @anthropic-ai/sdkadded as devDependency;evals:livescript placeholder added
- New
[0.9.4] - 2026-04-16
Added
- F6:
--fixRemedy Mode (Phase 1) — newskills/_shared/remedy-guide.md:- Actionable remedies with Target (file path + function), Action (specific refactoring), and Rationale fields
- Fixability tiers:
[quick-fix](single-file mechanical),[guided](design choice required),[manual](cross-module, team discussion needed) - Fix Summary table appended to report when
--fixis active common.mdupdated with a one-line "## Remedy Mode" trigger
- F5: Interactive Triage Mode —
common.mdupdated with "## Post-Report Triage" section:- Post-report workflow: accept / dismiss (suppress) / defer (suppress with expiry) / skip
- Suppress entries auto-appended to
.brooks-lint.yamlwith requiredreasonfield - CI guard: triage is skipped in non-interactive/headless sessions
- Config schema:
suppressfield —.brooks-lint.example.yamlupdated with commented suppress example includingrisk,pattern,reason,date, andexpiresfields - Validator: added check that
.brooks-lint.example.yamlincludes a commented suppress example - 2 new benchmark evals (IDs 46–47):
--fixactive (verify tier labels + Fix Summary) and--fixnot active (verify normal behavior)
[0.9.3] - 2026-04-16
Added
- F3:
/brooks-healthskill — combined health dashboard across all four dimensions:- New
skills/brooks-health/directory withSKILL.mdandhealth-guide.md - Three-step process: lightweight scan (PR/Architecture/Debt/Test), weighted composite scoring (0.25/0.30/0.25/0.20 with dynamic redistribution when PR dimension skipped), and dashboard report with Mermaid dependency graph
hooks/session-startupdated: "four" → "five independent skills";brooks-healthline added- New command wrapper
commands/brooks-health.md - Validator:
brooks-healthadded tomodesandguidesarrays incheckSkillsContent()andcheckStepAlignment() - 2 new benchmark evals (IDs 44–45): healthy codebase (high composite score) and multi-problem codebase (multiple dimensions flagged)
- New
- F4: Health Score Trend Tracking — new
scripts/history.mjs:readHistory,appendHistory,getTrendutility functions (exported; shared with CI)common.mdupdated with "## History Tracking" section (append record after each run; display trend delta if prior runs exist for the same mode).brooks-lint.example.yamlupdated with.brooks-lint-history.jsongitignore commentpackage.jsonscripts: added"history"entry- 10 unit tests added to
validate-repo.test.mjscovering all three utility functions
[0.9.2] - 2026-04-16
Added
- F1: Step Numbering Auto-Validation —
validate-repo.mjs:extractGuideStepLabels()moved toscripts/frontmatter.mjsas a named export (shared between validator and tests)checkStepAlignment()added: validates guide step sequences (no gaps, no duplicates, sequential main step numbers) and verifies eachSKILL.mdhas a## Processsection with at least one numbered itemCLAUDE.mdgotcha updated: step numbering alignment is now automated vianpm run validate- 7 unit tests added to
validate-repo.test.mjsforextractGuideStepLabels
- F2: Auto-Diff / Incremental Mode —
skills/_shared/common.md:- New "## Auto Scope Detection" section: git diff cascade (staged → unstaged →
branch vs main → ask), incremental audit via
--since=<ref>, co-located test file detection for test mode - All five
SKILL.mdProcess sections updated with conditional auto-scope block - Scope line added to all report templates
- New "## Auto Scope Detection" section: git diff cascade (staged → unstaged →
branch vs main → ask), incremental audit via
[0.9.1] - 2026-04-15
Changed
- Hyrum's Law and Orthogonality promoted to named symptoms in R2 (Change Propagation):
both are now explicit named bullet points in
decay-risks.mdinstead of being buried in generic descriptions, making them easier to cite in findings. - PR Review guide deepened (
pr-review-guide.md):- Scope calibration table added: analysis depth now adapts to PR size (<50 / 50–300 / >300 lines)
- Step 6 split into 6a (Dependency Disorder) and 6b (Domain Model Distortion) for independent scanning
- Severity calibration reframed as a tiebreaker referencing per-risk guides in
decay-risks.md
- Architecture Audit guide deepened (
architecture-guide.md):- New Step 5: Testability Seam Assessment — scans for missing or collapsed seam boundaries using Feathers's Seam Model (Working Effectively with Legacy Code, Ch. 4)
- Mermaid Phase A/B simplified to a linear instruction with an explicit post-Step-4 reminder
- Conway's Law check (now Step 6) includes concrete calibration examples for all three severity tiers
- Tech Debt Assessment guide deepened (
debt-guide.md):- Pain and Spread scores each have concrete calibration examples
- New Step 2b: classify each finding as intentional vs accidental debt (Cunningham's original definition); Debt Summary Table gains an Intent column
- Test Quality Review guide deepened (
test-guide.md):- Step 2 split into 2a (Test Brittleness) and 2b (Mock Abuse) with per-step severity thresholds; sampling instruction merged to a single pass to avoid reading test files twice
- Characterization Test template added (Feathers, Ch. 8) with inline usage guidance
- Test suite performance structured into three tiers: >10 min (Warning), >30 min or unknown (Critical)
- Trigger descriptions improved across all four
SKILL.mdfiles:- Natural-language triggers added (e.g., "tests keep breaking" instead of "over-mocking")
- "Do NOT trigger for:" clauses added to every skill, fixing false triggering on HTTP health
checks (
brooks-debt), from-scratch code writing (brooks-test), and similar boundary cases
- GEMINI.md corrected: book count fixed from ten to twelve; eval count updated from 37 to 43;
source-coverage.mdadded to Project Structure listing - AGENTS.md updated: step numbering alignment and trigger description conventions documented
- CLAUDE.md updated: step numbering and trigger description conventions added to Gotchas;
simplifyskill name corrected (wascode-simplifier:code-simplifier); pre-commit workflow revised —code-review:code-reviewnow runs post-PR-creation only,simplifyhandles pre-commit
[0.9.0] - 2026-04-12
Added
- Flag Arguments and Primitive Obsession — two high-frequency Fowler smells now encoded in R1 (Cognitive Overload) with symptoms and source entries in the decay risk reference.
- Information Leakage (Ousterhout) — added as an R2 (Change Propagation) symptom: design decisions encoded in multiple modules create coupling even without explicit imports.
- ISP violation (Martin) — Interface Segregation Principle added as an R5 (Dependency Disorder) symptom: fat interfaces force callers to depend on methods they do not use.
- LSP violation (Martin) — Liskov Substitution Principle added as an R6 (Domain Model Distortion) symptom: subclasses that break their parent's behavioral contract.
- Value Object vs Entity confusion (Evans) — added to R6: value concepts given mutable identity instead of being treated as immutable, replaceable types.
- Erratic Test / flaky test (Meszaros) — added to T2 (Test Brittleness): tests producing non-deterministic results due to shared state, time dependence, or ordering assumptions.
Changed
source-coverage.md"Encoded today" sections deepened for all 12 books:- McConnell: defensive programming and error-handling discipline
- Martin: ISP, LSP, SRP/OCP (previously only DIP/ADP/SDP/SAP)
- Ousterhout: Information Leakage
- Winters et al.: code sustainability and backward compatibility
- Meszaros: Erratic Test
- Fowler: Flag Arguments, Primitive Obsession
- Evans: Entity vs Value Object, Aggregate Root
- Risk description prose tightened across all six production and six test decay risks (~15% token reduction with no loss of diagnostic content).
CLAUDE.md: added Release Process section documenting the 4-step version bump workflow.
[0.8.5] - 2026-04-12
Changed
- Single source of truth for book inventory —
skills/_shared/source-coverage.mdnow carries a YAML frontmatterbooks:list;validate-repo.mjsderives the count dynamically, eliminating Shotgun Surgery when adding new books. - Validation refactored into named check functions —
scripts/validate-repo.mjsreorganized from a flat script into 12 named category functions (checkVersionConsistency,checkSkillsContent,checkEvalSuite, etc.) for clarity and maintainability. - Named constants for risk counts —
PRODUCTION_RISK_COUNTandTEST_RISK_COUNTreplace magic numbers in bothvalidate-repo.mjsandrun-evals.mjs; adding a new risk category requires updating one constant in each script. - Skills content CI — validator now asserts every SKILL.md has
## Setupand## Processsections, and every mode guide references the Iron Law. - Manifest description consistency — validator checks all four plugin manifests have identical descriptions; fixed
gemini-extension.jsonto match canonical.
Added
scripts/frontmatter.mjs— sharedparseFrontmatterBooks()utility, importable without validator side effects.scripts/run-evals.mjs— structural validator forevals/evals.json: checks sequential IDs, required fields, and risk code presence inexpected_output.scripts/validate-repo.test.mjs— 10 unit tests forparseFrontmatterBooksusing Node.js built-inassert; runnable vianpm test.npm run evalsandnpm testscripts inpackage.json.
[0.8.4] - 2026-04-11
Added
- 12-book source coverage matrix —
skills/_shared/source-coverage.mdmaps every source book to encoded concepts, important nuances, false-positive guards, and review questions. - Judgment guardrails in shared risk references —
decay-risks.mdandtest-decay-risks.mdnow include explicit "What Not to Flag" sections to reduce template-driven over-reporting. - Benchmark suite expanded to 43 scenarios — added tradeoff and false-positive cases covering deep modules, Hyrum's Law, justified protocol switches, composition roots, acceptable transaction scripts, and risk-shaped legacy test portfolios.
Changed
- All four skills now read the source coverage matrix before risk-specific references, making book-level scope and exceptions part of the default workflow.
- README, AGENTS.md, CLAUDE.md, and CONTRIBUTING.md now document the source coverage matrix and the expanded benchmark suite, and surface
node scripts/validate-repo.mjsas a first-class consistency gate.
[0.8.3] - 2026-04-11
Fixed
- Version drift removed —
README.md,CHANGELOG.md, andhooks/session-startnow align with package version0.8.2. The session-start hook no longer hardcodes a version string; it reads frompackage.jsonbefore computing the wrapper sentinel path. - Config examples corrected — all coverage-related examples now point to
T5(Coverage Illusion) instead ofT3, which is reserved for Test Duplication. - Security policy refreshed — SECURITY.md now describes the repository as a multi-platform plugin/skill package and includes a concrete vulnerability reporting email.
Added
- Repository validation script —
scripts/validate-repo.mjschecks manifest/doc version sync, validates hook JSON output, verifies the latest changelog version, and catches risk-code example drift in config documentation. - CI consistency gate — GitHub Actions now runs the repository validation script before the Codex plugin scanner.
Changed
- Release process documentation — CLAUDE.md and CONTRIBUTING.md now document
package.jsonas the canonical version source and point contributors to the validation script.
[0.8.1] - 2026-04-09
Fixed
- Short-form slash commands now work —
/brooks-review,/brooks-audit,/brooks-debt,/brooks-testare auto-installed to~/.claude/commands/on first session start. Previously these commands were only registered as namespaced/brooks-lint:brooks-reviewetc., which is a Claude Code plugin system limitation (all plugin skills/commands carry apluginname:prefix). The session-start hook now copies thin wrapper files fromcommands/to~/.claude/commands/, enabling the short-form/brooks-reviewslash commands without namespace prefix. - Versioned sentinel file — command wrappers auto-refresh on plugin upgrade. The sentinel
file at
~/.claude/commands/.brooks-lint-v{version}encodes the plugin version, so upgrading from e.g. 0.8.1 to 0.8.2 will re-copy the wrappers automatically. Old sentinel files are cleaned up on upgrade. - macOS bash 3.2 compatibility — replaced
declare -A(bash 4+ only) withcasestatement in session-start hook. macOS ships/bin/bash3.2 by default; the hook now works regardless of which bash versionenv bashresolves to. - Single source of truth for command wrappers — the hook now copies canonical files from
commands/directory instead of regenerating from an inline template, eliminating content drift between the two sources.
Changed
commands/*.md— simplified from verbose multi-paragraph instructions to thin one-line wrappers that delegate to the correspondingbrooks-lint:brooks-*plugin skill via the Skill tool. This matches what the hook installs to~/.claude/commands/.hooks/session-start— added auto-install block with versioned sentinel,casestatement for descriptions, andcpfromcommands/directory. Context injection updated to show namespaced skill names (brooks-lint:brooks-reviewetc.).- Documentation updated across 8 files — CLAUDE.md, README.md, CONTRIBUTING.md, AGENTS.md,
GEMINI.md, and pr-review-guide.md all updated to reflect both command forms (short-form
/brooks-reviewand full-form/brooks-lint:brooks-review). README slash commands table now shows both forms with a note about auto-installation. - README version badge updated to 0.8.1
- All five version files synchronized to 0.8.1
[0.8.0] - 2026-04-09
Changed
- Independent skill architecture — split monolithic
skills/brooks-lint/into four independent skill directories, each with its ownSKILL.mdentry point:skills/brooks-review/— PR Review (Mode 1)skills/brooks-audit/— Architecture Audit (Mode 2)skills/brooks-debt/— Tech Debt Assessment (Mode 3)skills/brooks-test/— Test Quality Review (Mode 4)
- Shared framework extracted —
skills/_shared/now holdscommon.md(Iron Law, Project Config, Report Template, Health Score),decay-risks.md, andtest-decay-risks.md. Each skill's SKILL.md references these shared files via relative paths. common.mdcreated — consolidated the Iron Law, Project Config loader, Report Template, and Health Score rules (previously embedded in the monolithic SKILL.md) into a single shared file that all four skills reference.
Removed
skills/brooks-lint/— the monolithic skill directory. All content migrated to the four independent skill directories and_shared/.
[0.7.0] - 2026-04-09
Added
.brooks-lint.yamlproject config — teams can customize review behavior per-project:disable(skip risk codes),severity(override tiers),ignore(file globs),focus(evaluate only listed risks). Includes.brooks-lint.example.yamltemplate.- Mode 2 proactive context — Architecture Audit (Step 0) now scans the codebase automatically before analysis, gathering module structure, dependency patterns, and configuration files without requiring the user to paste code.
- 10-book expansion — added four new source books to the framework:
- A Philosophy of Software Design (Ousterhout) — contributes to R1, R4
- Software Engineering at Google (Winters et al.) — contributes to R2, R5
- Working Effectively with Legacy Code (Feathers) — contributes to T4, T5, T6
- xUnit Test Patterns (Meszaros) — contributes to T1, T2, T3, T4
- CI quality gate — Codex plugin scanner workflow (GitHub Actions) for manifest linting
- Community health files — SECURITY.md, issue templates, PR template, GitHub Discussions
Changed
- README: updated from "six books" to "ten books" throughout, expanded book table, refreshed decay risk source attributions
- All version references synchronized to 0.7.0
[0.6.2] - 2026-04-03
Added
- Language matching — report output now matches the user's conversation language
- Eval benchmark suite expanded to 37 scenarios — all 12 decay risks (6 production + 6 test) across Python, TypeScript, Go, and Java at Critical / Warning / Clean severity levels
- Gallery page (
docs/gallery.md) — 7 curated real brooks-lint outputs organized by Mode, including Mermaid dependency graphs for Architecture Audit - README: added "See More Examples" section with link to gallery page
Changed
- CLAUDE.md: added Multi-Platform Support, Eval Suite, and Development Commands sections; refreshed directory tree and Roadmap
[0.6.1] - 2026-04-01
Added
- Codex CLI support — brooks-lint now works as a Codex CLI plugin
.codex-plugin/plugin.json: Plugin manifest for Codex CLIAGENTS.md: Project instructions file for Codex CLI sessions- README updated with triple-platform installation and usage docs
[0.6.0] - 2026-03-31
Added
- Mermaid Dependency Graph in Architecture Audit (Mode 2) — the plain-text ASCII dependency map is replaced with a Mermaid diagram that renders as a visual graph in GitHub, Notion, and other Markdown environments
- Node color coding by severity: red (Critical), yellow (Warning), green (clean)
- Automatic grouping by project folder structure using Mermaid subgraphs
- Circular dependencies visually marked with dotted labeled edges
- Graph appears at the top of the audit report for immediate architectural overview
Changed
architecture-guide.md: Step 1 now produces Mermaid syntax instead of ASCII arrows; added color scheme reference, node limit constraint (~50), and rendering order noteSKILL.md: Mode 2 steps updated (7 steps, up from 6); Report Template includes "Module Dependency Graph" section for Mode 2- All version references bumped to 0.6.0
[0.5.2] - 2026-03-31
Added
- Gemini CLI support — brooks-lint now works as a Gemini CLI extension
GEMINI.md: Project guidance file for Gemini CLI sessionsgemini-extension.json: Extension manifest for/extensions install- README updated with dual-platform installation, slash commands, and usage docs
Changed
- README: Claude Code restored as recommended install method; Gemini CLI listed as secondary
- README: Usage sections unified with inline dual-platform command examples
- All version references synchronized to 0.5.2
[0.5.0] - 2026-03-28
Added
- Mode 4: Test Quality Review — new dedicated mode for diagnosing test suite health,
triggered by
/brooks-lint:brooks-testor automatically when test files are shared test-decay-risks.md: Six test-space decay risks mirroring the six production decay risks, sourced from four classic testing books:- T1: Test Obscurity (Meszaros — Assertion Roulette, Mystery Guest)
- T2: Test Brittleness (Meszaros — Eager Test; Osherove — isolation principle)
- T3: Test Duplication (Meszaros — Lazy Test; Hunt & Thomas — DRY)
- T4: Mock Abuse (Osherove — mock guidelines; Meszaros — Hard-Coded Test Data)
- T5: Coverage Illusion (Feathers — "legacy code = no tests"; Google — coverage strategy)
- T6: Architecture Mismatch (Google — 70:20:10 pyramid; Feathers — Seam Model)
test-guide.md: Mode 4 five-step analysis process with test suite mapcommands/brooks-test.md:/brooks-lint:brooks-testslash command- PR Review Step 7: Quick Test Check — lightweight three-signal test scan appended to every Mode 1 review (Coverage Illusion, Mock Abuse, Test Obscurity signals)
Changed
SKILL.md: Added Mode 4 to mode detection table, trigger words, slash command list, and Reference Files tablepr-review-guide.md: Added Step 7 Quick Test Check; updated "six steps" → "seven steps"CLAUDE.md: Updated architecture description, directory tree, "How the skill works" steps, and Roadmap to reflect v0.5 state
Source Books Added (Test Quality Framework)
- Gerard Meszaros — xUnit Test Patterns (2007)
- Roy Osherove — The Art of Unit Testing (2009, 3rd ed. 2023)
- Google Engineering — How Google Tests Software (2012)
- Michael Feathers — Working Effectively with Legacy Code (2004)
[0.4.0] - 2026-03-27
Documentation & Benchmark
- README: Full rewrite with persuasion-funnel structure — benchmark data (94% vs 16%), real eval output showcase, four-column comparison table (vs ESLint/Copilot/Plain Claude)
- CONTRIBUTING.md: New file — three contribution paths, local testing guide, PR conventions
- evals/evals.json: Benchmark test suite added to repository (3 real-world scenarios)
Changed
- Framework redesign: Replaced eight Brooks-only scoring dimensions with six cross-book decay risk dimensions synthesized from six classic engineering books
- Behavioral model: Replaced dimension scoring (1–5) with diagnosis chain (Symptom → Source → Consequence → Remedy) and severity labels (🔴/🟡/🟢)
- Health score: Replaced weighted average of dimension scores with deduction-based score (100 − 15×Critical − 5×Warning − 1×Suggestion)
- SKILL.md: Rewrote entry point with strengthened Iron Law and new report template
- pr-review-guide.md: Rewrote with six-risk scan process ordered by PR-relevance
- architecture-guide.md: Rewrote with six-risk audit process + Conway's Law check
- debt-guide.md: Rewrote with Pain×Spread priority formula and Debt Summary Table
- commands/*.md: Updated descriptions to reference six-book framework
Added
decay-risks.md: New core knowledge file — six decay risks with full symptom lists, source attributions for all six books, and severity guides- Six new source books: Code Complete (McConnell), Refactoring (Fowler), Clean Architecture (Martin), The Pragmatic Programmer (Hunt & Thomas), Domain-Driven Design (Evans)
Removed
brooks-principles.md: Replaced bydecay-risks.md- Eight-dimension scoring table from output format
[0.2.0] - 2026-03-26
Added
.claude-plugin/infrastructure for marketplace installation (/plugin install brooks-lint)hooks/session-start— SessionStart hook that injects brooks-lint awareness into every Claude sessioncommands/brooks-review.md—/brooks-reviewslash command for forced PR review modecommands/brooks-audit.md—/brooks-auditslash command for forced architecture audit modecommands/brooks-debt.md—/brooks-debtslash command for forced tech debt assessment modeskills/brooks-lint/brooks-principles.md— Scoring rubrics for all 7 Brooks dimensionsskills/brooks-lint/pr-review-guide.md— Detailed PR review checklist (Mode 1)skills/brooks-lint/architecture-guide.md— Architecture audit framework with dependency graph template (Mode 2)skills/brooks-lint/debt-guide.md— 5-category tech debt classification framework (Mode 3)
Changed
SKILL.mdmoved from root toskills/brooks-lint/SKILL.mdand fully rewritten- Skill now follows superpowers mode-switch pattern with explicit mode detection
- Reference files reorganized from
references/intoskills/brooks-lint/and split by mode - Skill is now fully prompt-driven (no external script dependencies)
Removed
scripts/complexity_analyzer.py— replaced by Claude's native analysis capabilityreferences/directory — content migrated toskills/brooks-lint/- Root
SKILL.md— replaced byskills/brooks-lint/SKILL.md
[0.1.0] - 2026-03-26
Added
- Initial release: SKILL.md, references/, scripts/complexity_analyzer.py, assets/logo.svg