Install any skill in seconds. Free to start, no credit card required.
Get Started Free →AI code reviewer grounded in classic software engineering books for catching design smells, coupling issues, and architectural risks.
.claude/skills/lingxling-brooks-lint/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 412% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 299% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 512% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 675% | 0% |
| case-09 | ✓→✗ | ▼ Worse | 11% | 0% |
Brooks Lint is a Claude Code skill that reviews your code through the lens of 12 classic software engineering books. Instead of checking style rules, it asks: "What would the authors of The Pragmatic Programmer, Clean Code, and Designing Data-Intensive Applications say about this code?"
It synthesizes the principles from landmark engineering books into actionable, structured feedback — catching design smells, tight coupling, missing abstractions, and architectural risks that linters and AI tools typically miss.
Named after Fred Brooks, author of The Mythical Man-Month — because the hardest bugs are conceptual, not syntactic.
| Book | Key Principles Applied | |------|----------------------| | The Pragmatic Programmer | DRY, orthogonality, tracer bullets | | Clean Code | Naming, function size, comment clarity | | The Mythical Man-Month | Conceptual integrity, second-system effect | | Designing Data-Intensive Applications | Data consistency, fault tolerance, scalability | | A Philosophy of Software Design | Deep modules, information hiding, complexity | | Refactoring | Code smells, extract method, encapsulation | | Working Effectively with Legacy Code | Seams, characterization tests, dependency breaking | | Domain-Driven Design | Ubiquitous language, bounded contexts, aggregates | | Release It! | Stability patterns, timeouts, bulkheads, circuit breakers | | Structure and Interpretation of Computer Programs | Abstraction, recursion, metalinguistic abstraction | | The Art of UNIX Programming | Modularity, composability, rule of least surprise | | Extreme Programming Explained | YAGNI, simple design, collective ownership |
Brooks Lint applies each book's core principles as a review lens:
bash# Install via Claude Code plugin marketplace # Search: "brooks-lint" in Claude Code > Extensions # Or install via NPX (Antigravity) npx antigravity-awesome-skills --claude # Then invoke: @brooks-lint
@brooks-lint review src/services/PaymentService.tsBrooks Lint output:
[Pragmatic Programmer] DRY violation: payment validation logic duplicated in 3 places
[Clean Code] Method processPayment() does 4 things — violates Single Responsibility
[Release It!] No timeout on external payment gateway call — risk of cascade failure
[DDIA] No idempotency key — retry on network error will double-charge
[APOSD] PaymentService knows too much about UserRepository — high coupling@brooks-lint analyze the overall architecture of this codebase@brooks-lint what are the biggest design smells in this module before I refactor it?| Category | Books Applied | What It Catches | |----------|--------------|-----------------| | DRY / Duplication | PP, Refactoring | Copy-paste code, shared logic not extracted | | Naming | Clean Code, DDD | Unclear names, domain language violations | | Coupling | APOSD, PP | Tight dependencies, missing interfaces | | Stability | Release It! | Missing timeouts, no retry logic, no circuit breakers | | Data Integrity | DDIA | Race conditions, non-idempotent operations | | Complexity | APOSD, SICP | Over-engineering, unnecessary abstraction | | Legacy Debt | WELC | Hard-to-test code, missing seams | | Domain Clarity | DDD, XP | Anemic models, missing bounded contexts |
@brooks-lint after writing new service layers or data pipelines@logic-lens for full coverage: logic bugs + design smells@brooks-lint analyze architecture weekly on growing codebases@logic-lens — Complementary: catches logic bugs; brooks-lint catches design issues@security-auditor — Specialized security-only deep scan@lint-and-validate — Style/syntax linting to run alongside design reviewUse this skill only when the task clearly matches the scope described above (design review and architectural analysis). Brooks Lint applies AI-powered analysis grounded in established engineering principles. It should complement — not replace — human design review for production-critical decisions. Results reflect the principles of the 12 source books and may not apply to all architectural styles or domains.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | 24,493 | 4,434 | -82% | 1 | 1 | 0% | 3,598 | 1,932 | -46% | 0 | 0 | — |
case-03 | fail→pass | 4,577 | 15,597 | +241% | 1 | 1 | 0% | 747 | 3,822 | +412% | 0 | 0 | — |
case-08 | fail→fail | 8,963 | 10,141 | +13% | 1 | 1 | 0% | 1,284 | 1,679 | +31% | 0 | 0 | — |
case-01 | fail→fail | 14,554 | 17,042 | +17% | 1 | 1 | 0% | 2,197 | 2,059 | -6% | 0 | 0 | — |
case-04 | pass→pass | 31,936 | 13,840 | -57% | 1 | 1 | 0% | 2,799 | 3,130 | +12% | 0 | 0 | — |
case-05 | pass→pass | 21,622 | 35,502 | +64% | 1 | 1 | 0% | 2,594 | 6,153 | +137% | 0 | 0 | — |
case-06 | fail→fail | 10,381 | 31,707 | +205% | 1 | 1 | 0% | 1,396 | 4,197 | +201% | 0 | 0 | — |
case-07 | pass→pass | 21,466 | 39,179 | +83% | 1 | 1 | 0% | 3,156 | 7,002 | +122% | 0 | 0 | — |
case-09 | pass→fail | 12,757 | 6,119 | -52% | 1 | 1 | 0% | 1,428 | 1,578 | +11% | 0 | 0 | — |
case-10 | fail→pass | 8,569 | 27,415 | +220% | 1 | 1 | 0% | 1,182 | 4,717 | +299% | 0 | 0 | — |
case-11 | fail→fail | 5,993 | 7,672 | +28% | 1 | 1 | 0% | 888 | 1,769 | +99% | 0 | 0 | — |
case-12 | pass→pass | 40,968 | 25,398 | -38% | 1 | 1 | 0% | 2,704 | 4,624 | +71% | 0 | 0 | — |
case-13 | pass→pass | 36,135 | 26,675 | -26% | 1 | 1 | 0% | 2,825 | 6,042 | +114% | 0 | 0 | — |
case-14 | fail→fail | 7,783 | 7,347 | -6% | 1 | 1 | 0% | 1,153 | 1,644 | +43% | 0 | 0 | — |
case-15 | fail→pass | 6,861 | 37,300 | +444% | 1 | 1 | 0% | 1,024 | 6,269 | +512% | 0 | 0 | — |
case-16 | pass→pass | 127,470 | 58,637 | -54% | 1 | 1 | 0% | 2,761 | 4,654 | +69% | 0 | 0 | — |
case-17 | fail→pass | 3,844 | 18,309 | +376% | 1 | 1 | 0% | 512 | 3,966 | +675% | 0 | 0 | — |
case-18 | fail→fail | 7,276 | 5,822 | -20% | 1 | 1 | 0% | 893 | 1,551 | +74% | 0 | 0 | — |
case-19 | fail→fail | 7,284 | 6,239 | -14% | 1 | 1 | 0% | 1,026 | 1,691 | +65% | 0 | 0 | — |
case-20 | fail→fail | 6,939 | 8,369 | +21% | 1 | 1 | 0% | 800 | 2,830 | +254% | 0 | 0 | — |
case-21 | fail→fail | 5,295 | 13,975 | +164% | 1 | 1 | 0% | 769 | 2,429 | +216% | 0 | 0 | — |
case-22 | pass→pass | 15,695 | 22,360 | +42% | 1 | 1 | 0% | 2,372 | 4,502 | +90% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 16 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.