playbook/brooks-lint/CHANGELOG.md

41 KiB
Raw Blame History

Changelog

All notable changes to brooks-lint are documented here.

[Unreleased]

Added

  • One-command multi-platform installerscripts/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 via curl … | bash -s -- <platform>; --project targets the current repo.

  • Per-platform setup guidesdocs/getting-started.md plus docs/{opencode,cursor,windsurf,antigravity,pi,copilot,kiro}-setup.md, with install, invocation, gotchas, and source links for each. Modeled on the addyosmani/agent-skills docs 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 droid to the installer and a docs/factory-droid-setup.md guide. Droid natively loads SKILL.md from ~/.factory/skills / .factory/skills and reads AGENTS.md.

  • install.sh now covers Gemini and Codex (gemini, codex targets) 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 every SKILL.md two 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.md now describes brooks-lint as a portable Agent-Skills tool (runs on any AGENTS.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.svg and added composerIcon field to .codex-plugin/plugin.json for marketplace display.
  • Codex interface metadata — added interface configuration to .codex-plugin/plugin.json for richer marketplace listing.

Fixed

  • brooks-sweep debt scoring — inlined the Pain × Spread severity rubric directly into sweep-guide.md (79 Critical, 46 Warning, 13 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 from package.json to all manifests (.claude-plugin/plugin.json, .claude-plugin/marketplace.json, .codex-plugin/plugin.json, gemini-extension.json) and the README badge in one command. Added npm run bump shortcut to package.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 698950 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 required Do 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.md rewritten as a 9-Phase pipeline (Step 0 consent → Step 1 scope + state → Steps 25 four-dimension sequence: review → test → debt → audit → Step 6 iteration loop → Steps 78 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.md Process skeleton aligned to the new Phase structure.
  • Fix-Class taxonomy: previous Auto / Confirm / Manual replaced by Safe / 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 unresolvable set and never re-queued. Non-critical rounds cap at 3 (configurable via sweep.max_iterations in .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-sweep skill (skills/brooks-sweep/) — orchestrates production decay scan (R1R6), test decay scan (T1T6), 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-sweep command wrapper (auto-installed by session-start hook).
  • SKILL_GUIDES constant in validate-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.md Manual Install commandscp -r skills/ ~/.claude/skills/brooks-lint silently created a brooks-lint/skills/ nested directory; fixed to mkdir -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.md structural ordering — the ## Output section appeared before Step 7, leaving the Analysis Process non-contiguous. Step 7 is now the last analysis step and ## Output follows.
  • test-guide.md Characterization Tests citationCh. 8 corrected to Ch. 13: Characterization Tests (matches test-decay-risks.md:246 and Feathers' Working Effectively with Legacy Code).
  • decay-risks.md Risk 4 over-engineering source — removed incorrect "Evils of Duplication (YAGNI corollary)" reference (Evils of Duplication is DRY, not YAGNI); replaced with Topic 4: Good-Enough Software from The Pragmatic Programmer.
  • architecture-guide.md Step 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.md T6 sourceTest suite design principles (vague) tightened to Meszaros' Slow Tests (p. 253); test-guide.md slow-suite source aligned to the same citation.
  • GEMINI.md fictional commandgemini skills reload removed; replaced with exit the Gemini CLI (/quit) and relaunch. GEMINI.md and AGENTS.md both state npm run evals / npm run evals:live as the eval runners (was "No automated runner").
  • common.md Auto 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.md step numbering — promoted Step 2b: Classify Debt Intent to Step 3, renumbered Group by Decay Risk to Step 4, and updated the "three steps" -> "four steps" preamble.
  • CONTRIBUTING.md structure"Three Ways to Contribute" -> "Four Ways to Contribute"; Adding a new decay risk promoted 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 the Review mode options; replaced broken cat ~/.claude/plugins/.../package.json placeholder with /plugin list guidance.
  • docs/gallery.md self-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 seconds time references harmonized; preamble changed from "no manual editing" to "lightly abridged — some Consequence lines trimmed" for honesty.

Changed

  • SKILL.md Process conventionSKILL.md Process sections are now a high-level skeleton (36 items) that cites guide Step ranges inline (e.g. Scan decay risks (Steps 17 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, and GEMINI.md all document the new rule. npm run validate still enforces guide step continuity (sub-steps like 2a/6b allowed) and SKILL.md Process-section presence. All five SKILL.md Process sections updated to the new skeleton+citation format.
  • commands/*.md frontmatter — all five short-form command wrappers now declare allowed-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) across debt/SKILL.md, health-guide.md, evals.json, and docs/gallery.md; unified Ch. X chapter citations (with the ASCII space after the period) across test-decay-risks.md, test-guide.md, architecture-guide.md, and pr-review-guide.md.
  • README.md Roadmap — 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.md dashboard template — added the **Mode:** Health Dashboard field 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%)); shares assembleSystemPrompt with ci-review.mjs for consistent prompt assembly
    • Flags: --id N, --risk R1, --mode review, --model claude-opus-4-6 for subset runs; system prompts are cached per mode to avoid re-reading files for each scenario
    • evals/evals.json: all 49 scenarios gain a mode field ("review" | "audit" | "debt" | "test" | "health")
    • scripts/run-evals.mjs: mode added to REQUIRED_FIELDS; valid mode values enforced
    • package.json: "evals:live" script wired to run-evals-live.mjs
  • F10: Custom Decay Risk ExtensionCx codes 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.md Config section: one-line trigger to load custom-risks-guide.md when custom_risks map is present; Config Validation updated to accept Cx codes in disable, focus, and severity
    • .brooks-lint.example.yaml: commented custom_risks example with C1 (Security Debt) and C2 (Accessibility Debt) entries showing all required fields

Changed

  • Skill descriptions — all five SKILL.md descriptions 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) and no_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), completed scripts/ listing, added brooks-health dev command, documented GitHub Action, custom risks, and VS Code exclusion

Fixed

  • gemini-extension.json — added missing brooks-health skill 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 and CLAUDE.md

[0.9.5] - 2026-04-16

Added

  • F7: Team Onboarding Reportbrooks-audit now supports --onboarding mode:
    • New file skills/brooks-audit/onboarding-guide.md with 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.md updated: description includes onboarding triggers; Process section routes --onboarding requests to onboarding-guide.md
    • 2 new benchmark evals (IDs 4849): one normal onboarding request, one boundary check verifying the absence of Health Score and Iron Law findings
  • F8: GitHub Action — automated PR review via Anthropic SDK:
    • New .github/actions/brooks-lint/action.yml: composite action with mode, anthropic-api-key, fail-below, and model inputs; posts review as PR comment; outputs score for downstream steps
    • New scripts/assemble-prompt.mjs: shared utility that assembles the system prompt for any mode by concatenating common.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.json exists in the project root, the PR comment includes a delta line (e.g., "85 → 82 (3) over last 3 runs")
    • @anthropic-ai/sdk added as devDependency; evals:live script placeholder added

[0.9.4] - 2026-04-16

Added

  • F6: --fix Remedy Mode (Phase 1) — new skills/_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 --fix is active
    • common.md updated with a one-line "## Remedy Mode" trigger
  • F5: Interactive Triage Modecommon.md updated with "## Post-Report Triage" section:
    • Post-report workflow: accept / dismiss (suppress) / defer (suppress with expiry) / skip
    • Suppress entries auto-appended to .brooks-lint.yaml with required reason field
    • CI guard: triage is skipped in non-interactive/headless sessions
  • Config schema: suppress field.brooks-lint.example.yaml updated with commented suppress example including risk, pattern, reason, date, and expires fields
  • Validator: added check that .brooks-lint.example.yaml includes a commented suppress example
  • 2 new benchmark evals (IDs 4647): --fix active (verify tier labels + Fix Summary) and --fix not active (verify normal behavior)

[0.9.3] - 2026-04-16

Added

  • F3: /brooks-health skill — combined health dashboard across all four dimensions:
    • New skills/brooks-health/ directory with SKILL.md and health-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-start updated: "four" → "five independent skills"; brooks-health line added
    • New command wrapper commands/brooks-health.md
    • Validator: brooks-health added to modes and guides arrays in checkSkillsContent() and checkStepAlignment()
    • 2 new benchmark evals (IDs 4445): healthy codebase (high composite score) and multi-problem codebase (multiple dimensions flagged)
  • F4: Health Score Trend Tracking — new scripts/history.mjs:
    • readHistory, appendHistory, getTrend utility functions (exported; shared with CI)
    • common.md updated with "## History Tracking" section (append record after each run; display trend delta if prior runs exist for the same mode)
    • .brooks-lint.example.yaml updated with .brooks-lint-history.json gitignore comment
    • package.json scripts: added "history" entry
    • 10 unit tests added to validate-repo.test.mjs covering all three utility functions

[0.9.2] - 2026-04-16

Added

  • F1: Step Numbering Auto-Validationvalidate-repo.mjs:
    • extractGuideStepLabels() moved to scripts/frontmatter.mjs as a named export (shared between validator and tests)
    • checkStepAlignment() added: validates guide step sequences (no gaps, no duplicates, sequential main step numbers) and verifies each SKILL.md has a ## Process section with at least one numbered item
    • CLAUDE.md gotcha updated: step numbering alignment is now automated via npm run validate
    • 7 unit tests added to validate-repo.test.mjs for extractGuideStepLabels
  • F2: Auto-Diff / Incremental Modeskills/_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.md Process sections updated with conditional auto-scope block
    • Scope line added to all report templates

[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.md instead 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 / 50300 / >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.md files:
    • 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.md added 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; simplify skill name corrected (was code-simplifier:code-simplifier); pre-commit workflow revised — code-review:code-review now runs post-PR-creation only, simplify handles 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 inventoryskills/_shared/source-coverage.md now carries a YAML frontmatter books: list; validate-repo.mjs derives the count dynamically, eliminating Shotgun Surgery when adding new books.
  • Validation refactored into named check functionsscripts/validate-repo.mjs reorganized from a flat script into 12 named category functions (checkVersionConsistency, checkSkillsContent, checkEvalSuite, etc.) for clarity and maintainability.
  • Named constants for risk countsPRODUCTION_RISK_COUNT and TEST_RISK_COUNT replace magic numbers in both validate-repo.mjs and run-evals.mjs; adding a new risk category requires updating one constant in each script.
  • Skills content CI — validator now asserts every SKILL.md has ## Setup and ## Process sections, and every mode guide references the Iron Law.
  • Manifest description consistency — validator checks all four plugin manifests have identical descriptions; fixed gemini-extension.json to match canonical.

Added

  • scripts/frontmatter.mjs — shared parseFrontmatterBooks() utility, importable without validator side effects.
  • scripts/run-evals.mjs — structural validator for evals/evals.json: checks sequential IDs, required fields, and risk code presence in expected_output.
  • scripts/validate-repo.test.mjs — 10 unit tests for parseFrontmatterBooks using Node.js built-in assert; runnable via npm test.
  • npm run evals and npm test scripts in package.json.

[0.8.4] - 2026-04-11

Added

  • 12-book source coverage matrixskills/_shared/source-coverage.md maps every source book to encoded concepts, important nuances, false-positive guards, and review questions.
  • Judgment guardrails in shared risk referencesdecay-risks.md and test-decay-risks.md now 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.mjs as a first-class consistency gate.

[0.8.3] - 2026-04-11

Fixed

  • Version drift removedREADME.md, CHANGELOG.md, and hooks/session-start now align with package version 0.8.2. The session-start hook no longer hardcodes a version string; it reads from package.json before computing the wrapper sentinel path.
  • Config examples corrected — all coverage-related examples now point to T5 (Coverage Illusion) instead of T3, 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 scriptscripts/validate-repo.mjs checks 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.json as 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-test are auto-installed to ~/.claude/commands/ on first session start. Previously these commands were only registered as namespaced /brooks-lint:brooks-review etc., which is a Claude Code plugin system limitation (all plugin skills/commands carry a pluginname: prefix). The session-start hook now copies thin wrapper files from commands/ to ~/.claude/commands/, enabling the short-form /brooks-review slash 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) with case statement in session-start hook. macOS ships /bin/bash 3.2 by default; the hook now works regardless of which bash version env bash resolves 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 corresponding brooks-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, case statement for descriptions, and cp from commands/ directory. Context injection updated to show namespaced skill names (brooks-lint:brooks-review etc.).
  • 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-review and 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 own SKILL.md entry 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 extractedskills/_shared/ now holds common.md (Iron Law, Project Config, Report Template, Health Score), decay-risks.md, and test-decay-risks.md. Each skill's SKILL.md references these shared files via relative paths.
  • common.md created — 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.yaml project 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.yaml template.
  • 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 CLI
    • AGENTS.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 note
  • SKILL.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 sessions
    • gemini-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-test or 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 map
  • commands/brooks-test.md: /brooks-lint:brooks-test slash 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 table
  • pr-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 (15) 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 by decay-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 session
  • commands/brooks-review.md/brooks-review slash command for forced PR review mode
  • commands/brooks-audit.md/brooks-audit slash command for forced architecture audit mode
  • commands/brooks-debt.md/brooks-debt slash command for forced tech debt assessment mode
  • skills/brooks-lint/brooks-principles.md — Scoring rubrics for all 7 Brooks dimensions
  • skills/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.md moved from root to skills/brooks-lint/SKILL.md and fully rewritten
  • Skill now follows superpowers mode-switch pattern with explicit mode detection
  • Reference files reorganized from references/ into skills/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 capability
  • references/ directory — content migrated to skills/brooks-lint/
  • Root SKILL.md — replaced by skills/brooks-lint/SKILL.md

[0.1.0] - 2026-03-26

Added

  • Initial release: SKILL.md, references/, scripts/complexity_analyzer.py, assets/logo.svg