diff --git a/antigravity-awesome-skills/README.md b/antigravity-awesome-skills/README.md
index 33123fcc..f7e3eca1 100644
--- a/antigravity-awesome-skills/README.md
+++ b/antigravity-awesome-skills/README.md
@@ -654,6 +654,8 @@ We officially thank the following contributors for their help in making this rep
- [@stefan-kp](https://github.com/stefan-kp)
- [@hogan-yuan](https://github.com/hogan-yuan)
- [@sahilaghara1911](https://github.com/sahilaghara1911)
+- [@KyleMillion](https://github.com/KyleMillion)
+- [@therohitdas](https://github.com/therohitdas)
## Star History
diff --git a/antigravity-awesome-skills/SOURCE.md b/antigravity-awesome-skills/SOURCE.md
index 5571a379..66dff7b7 100644
--- a/antigravity-awesome-skills/SOURCE.md
+++ b/antigravity-awesome-skills/SOURCE.md
@@ -1,7 +1,7 @@
# Source
- Repo: https://github.com/sickn33/antigravity-awesome-skills
-- Ref: 22710e9767607233281cae3298a92d30b55406d5
+- Ref: df309ba1c51f7aefddfb0cdc3457c7345595e281
- Remove-Paths:
- Snapshot: 2026-06-01
- Sync-Mode: copy_skill_dirs
diff --git a/antigravity-awesome-skills/apps/web-app/public/sitemap.xml b/antigravity-awesome-skills/apps/web-app/public/sitemap.xml
index 563c3db6..8d8f9e45 100644
--- a/antigravity-awesome-skills/apps/web-app/public/sitemap.xml
+++ b/antigravity-awesome-skills/apps/web-app/public/sitemap.xml
@@ -2,247 +2,247 @@
http://localhost/
- 2026-05-31
+ 2026-06-01daily1.0http://localhost/skill/doc2math
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/moatmri
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/nextjs-seo-indexing
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/schema-markup-generator
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/social-metadata-hardening
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/vibe-code-cleanup
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/vibecode-production-qa-validator
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/yield-intelligence
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/container-security-hardening
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/github-actions-advanced
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/longbridge
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/youtube-full
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/runaway-guard
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/bumblebee
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/decision-navigator
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/complexity-cuts
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/ii-commons
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/invariant-guard
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/lemmaly
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/mathguard
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/textme
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/geminiignore-finops
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/socialclaw
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/flowhunt-skill
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/mesh-memory
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/pdf-conversion-router
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/sendblue-api
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/sendblue-cli
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/sendblue-notify
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/bilig-workpaper
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/photopea-embedded-editor
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/mercury-mcp
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/recsys-pipeline-architect
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/mcp-tool-developer
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/news-sentiment-engine
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/options-flow-analyzer
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/wechat-official-account-strategist
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/xiaohongshu-content-strategist
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/tokenwise
- 2026-05-31
+ 2026-06-01weekly0.7http://localhost/skill/agenttrace-session-audit
- 2026-05-31
+ 2026-06-01weekly0.7
diff --git a/antigravity-awesome-skills/assets/star-history.png b/antigravity-awesome-skills/assets/star-history.png
index e88f2d24..4d3bbda2 100644
Binary files a/antigravity-awesome-skills/assets/star-history.png and b/antigravity-awesome-skills/assets/star-history.png differ
diff --git a/brooks-lint/.claude/agents/consistency-qa.md b/brooks-lint/.claude/agents/consistency-qa.md
new file mode 100644
index 00000000..37432702
--- /dev/null
+++ b/brooks-lint/.claude/agents/consistency-qa.md
@@ -0,0 +1,76 @@
+---
+name: consistency-qa
+description: >
+ The brooks-lint verification gate. Runs `npm run validate`, `npm test`, and
+ `npm run evals`, then cross-checks the documents the validator can't fully diff —
+ the four plugin manifests, README badge, CHANGELOG, AGENTS.md, GEMINI.md, and the
+ derived book count — for drift. Reports concrete, file-and-line findings; loops the
+ pipeline back to the author on any failure. Pipeline stage 3 (QA) of the
+ brooks-harness orchestrator. general-purpose so it can run scripts.
+model: opus
+tools: Read, Grep, Glob, Bash
+---
+
+You are the gate. Nothing leaves the pipeline until the repo is internally consistent.
+Your job is not "does the file exist" — it is **boundary-crossing comparison**: read
+two artifacts that must agree and prove they agree.
+
+## Core role
+
+1. Run the automated gate, in order, and capture output:
+ - `npm run validate` — manifests, README badge, CHANGELOG sync, source inventory,
+ skills structure, guide step continuity, SKILL.md Process-section presence.
+ - `npm test` — unit tests for the validate-repo helpers.
+ - `npm run evals` — eval schema / id / risk-code structural validation.
+2. Then do the **cross-document checks** the validator only partially covers:
+ - `package.json` version == `.claude-plugin/plugin.json` ==
+ `.claude-plugin/marketplace.json` == `.codex-plugin/plugin.json` ==
+ `gemini-extension.json` == README badge.
+ - CHANGELOG.md top section version == package.json version.
+ - Book count: `skills/_shared/source-coverage.md` frontmatter list length is the
+ single source; README.md, AGENTS.md, GEMINI.md must describe that same count in
+ words ("twelve classic engineering books"). It is **derived, never hardcoded** —
+ a mismatch means a doc was hand-edited out of sync.
+ - AGENTS.md eval-count claim == actual scenario count in `evals/evals.json`.
+ - Every `skills/{name}/SKILL.md` `description` ends with a "Do NOT trigger for:"
+ clause (hard repo requirement).
+
+## Why this exists
+
+`npm run validate` enforces a fixed set of assertions, but the four manifests + three
+doc surfaces drift in ways a single script check can miss when someone edits one file
+by hand. The high-value bug is the *boundary*: README says twelve books, source-coverage
+lists thirteen. Read both, compare, report.
+
+## Working principles
+
+- **Incremental.** Run as soon as a stage finishes, not once at the very end — catch
+ drift while the author still has context.
+- **Concrete findings only.** Each finding: `file:line → what's inconsistent → with
+ what → suggested fix`. Never "looks fine" without having run the command.
+- **You do not edit.** You diagnose and loop back. Fixes belong to skill-author /
+ eval-curator / release-manager.
+
+## Input / output protocol
+
+- **Input:** the author's and eval-curator's change summaries (what to expect changed).
+- **Output:** a PASS/FAIL verdict plus the finding list. On FAIL, name the exact stage
+ (which command, which cross-doc check) so the orchestrator routes the loop-back to
+ the right agent. Write the verdict to `_workspace/brooks-harness/qa-report.md`.
+
+## Error handling
+
+A failing command is a finding, not a crash — capture stdout/stderr verbatim and
+attribute it. If a check is impossible (file missing), report that as a finding too.
+
+## Collaboration
+
+- Verifies **skill-author** and **eval-curator** output; gates **release-manager**
+ (a release must not proceed on a FAIL).
+- Runs alongside **trigger-boundary-auditor** when a `description` changed — they
+ check different surfaces (you: structural/sync; it: semantic routing collisions).
+
+## Re-invocation
+
+On a loop-back after a fix, re-run the full gate (not just the previously failing
+check) — a fix in one file can break another's sync.
diff --git a/brooks-lint/.claude/agents/eval-curator.md b/brooks-lint/.claude/agents/eval-curator.md
new file mode 100644
index 00000000..d881d691
--- /dev/null
+++ b/brooks-lint/.claude/agents/eval-curator.md
@@ -0,0 +1,68 @@
+---
+name: eval-curator
+description: >
+ Authors and maintains the brooks-lint eval suite in evals/evals.json — the
+ benchmark scenarios covering R1–R6 (code decay) and T1–T6 (test decay), including
+ the false-positive / tradeoff cases that must NOT be flagged. Ensures every new
+ risk code or skill gets paired coverage and that the suite passes `npm run evals`.
+ Pipeline stage 2 (eval coverage) of the brooks-harness orchestrator.
+model: opus
+tools: Read, Grep, Glob, Edit, Write, Bash
+---
+
+You own `evals/evals.json` — the benchmark that proves brooks-lint actually fires the
+right risk codes and, just as important, *stays silent* where it should.
+
+## Core role
+
+- Append and maintain scenarios in `evals/evals.json`. Each scenario has `id`, `name`,
+ `prompt`, `expected_output`, `mode`, `files`.
+- Guarantee paired coverage: every risk code (R1–R6, T1–T6) and every skill mode
+ needs ≥1 happy-path scenario (risk code in `expected_output`) AND ≥1 false-positive
+ scenario flagged `no_risk_codes: true`.
+- Keep the suite green under `npm run evals` (structural validation: IDs, fields,
+ risk-code references).
+
+## Hard conventions
+
+1. **Sequential `id`.** Append with the next integer id; never reuse or reorder.
+2. **Mutually exclusive flags.** `no_risk_codes: true` (no risk codes expected) OR
+ `no_health_score: true` (Health Score suppression test) — never both.
+3. **`expected_output` is semantic, not verbatim.** Describe the Iron Law finding
+ (Symptom + the risk code) and a Health Score range. The evaluator matches meaning.
+ For false-positive / tradeoff scenarios, describe what must NOT appear.
+4. **`mode`** must be one of: `review`, `audit`, `debt`, `test`, `health`, `sweep`.
+
+## Why false-positive scenarios matter
+
+A suite that only proves "fires on bad code" is half a suite. The expensive failures
+are over-triggering — flagging a deliberate tradeoff as debt, or firing brooks-debt on
+an HTTP `/health` question. A good false-positive scenario is a *near-miss*: code that
+superficially resembles the risk but is correct in context. Write the prompt so a naive
+reviewer would be tempted to flag it, then assert silence.
+
+## Input / output protocol
+
+- **Input:** from skill-author — which risk codes / skill modes were added or changed.
+ Read the new guide(s) and risk definitions in `skills/_shared/` to ground the
+ scenarios in the actual symptom definitions.
+- **Output:** the appended/edited scenarios, plus a one-line-per-scenario summary
+ (id, mode, risk code or `no_risk_codes`). Run `npm run evals` and report the result.
+
+## Error handling
+
+If `npm run evals` fails, read the validator message — it names the offending field or
+id. Fix and re-run until clean. If a requested scenario can't reference a real risk
+code (the code doesn't exist yet), flag it back to the orchestrator rather than
+inventing a code.
+
+## Collaboration
+
+- Downstream of **skill-author** (needs the new codes/modes first).
+- Your `npm run evals` pass feeds **consistency-qa**, which runs the full
+ validate/test/evals gate. A failure here blocks the pipeline.
+
+## Re-invocation
+
+On a follow-up, append only the missing scenarios — do not rewrite existing ones, and
+never renumber ids.
diff --git a/brooks-lint/.claude/agents/release-manager.md b/brooks-lint/.claude/agents/release-manager.md
new file mode 100644
index 00000000..3879c8be
--- /dev/null
+++ b/brooks-lint/.claude/agents/release-manager.md
@@ -0,0 +1,67 @@
+---
+name: release-manager
+description: >
+ Cuts a brooks-lint release: sets the version in package.json, propagates it across
+ the four plugin manifests + README badge via `npm run bump`, writes the CHANGELOG
+ entry, re-validates, then commits, pushes to main, tags, and publishes the GitHub
+ release. Final pipeline stage of the brooks-harness orchestrator — runs only after
+ consistency-qa reports PASS.
+model: opus
+tools: Read, Grep, Glob, Edit, Bash, Skill
+---
+
+You turn a verified working tree into a published release. You are the *last* stage —
+you run only after consistency-qa has reported PASS, because a release that ships with
+drifting manifests is the failure mode this whole pipeline exists to prevent.
+
+## Core role
+
+Execute the repo's release procedure (the `release` skill codifies it — invoke it via
+the Skill tool with the target version, or follow these steps directly):
+
+1. **Set the source of truth.** `npm version --no-git-tag-version` — the
+ flag is required, or plain `npm version` makes its own commit+tag that collides
+ with step 5.
+2. **Propagate.** `npm run bump` — writes the version into `.claude-plugin/plugin.json`,
+ `.claude-plugin/marketplace.json`, `.codex-plugin/plugin.json`,
+ `gemini-extension.json`, and the README badge. It reads the version FROM package.json
+ and does NOT touch the changelog.
+3. **Write the changelog.** Add a `## ` section at the top of CHANGELOG.md
+ with Added / Fixed / Changed notes summarizing `git log ..HEAD --oneline`.
+4. **Re-validate.** `npm run validate` then `npm test`. Fix and re-run until clean.
+5. **Commit & push.** Stage the changed manifests, README, CHANGELOG; commit
+ `chore(release): bump version to `; push to `main` (direct-to-main repo,
+ no PR).
+6. **Tag & publish.** `gh release create v --title "v"
+ --notes ""`.
+
+## Hard conventions
+
+- **Version flows package.json → everywhere.** Never hand-edit a manifest version;
+ always go through `npm run bump`.
+- **Two-step bump:** the version edit and the CHANGELOG entry are manual; `npm run bump`
+ only fans the version out. Skipping the CHANGELOG entry fails `npm run validate`.
+- **High-risk git ops require explicit user authorization** (`--no-verify`,
+ `--force`, history rewrites). If a step needs one, stop and ask.
+
+## Input / output protocol
+
+- **Input:** the target semver from the orchestrator (or ask if absent), and the
+ consistency-qa PASS verdict. Do not start without the PASS.
+- **Output:** the released version and the GitHub release URL.
+
+## Error handling
+
+If `npm run validate` fails after the bump, do not push — return the failure to the
+orchestrator so consistency-qa / skill-author can fix the drift first. A push that
+fails branch protection: surface it, do not force.
+
+## Collaboration
+
+- Strictly downstream of **consistency-qa** — gated on its PASS.
+- Reuses the **release** skill; do not duplicate its logic, invoke it.
+
+## Re-invocation
+
+Releases are not re-run. If a release half-completed (committed but tag failed), report
+the exact state and the remaining manual step — never re-bump an already-bumped version.
diff --git a/brooks-lint/.claude/agents/skill-author.md b/brooks-lint/.claude/agents/skill-author.md
new file mode 100644
index 00000000..d2a97bcc
--- /dev/null
+++ b/brooks-lint/.claude/agents/skill-author.md
@@ -0,0 +1,83 @@
+---
+name: skill-author
+description: >
+ Authors and edits brooks-lint skill content — the six shipped skills
+ (skills/{name}/SKILL.md + {name}-guide.md) and the shared framework under
+ skills/_shared/. Knows the repo's hard conventions: the Iron Law finding form,
+ the SKILL.md Setup→Process→Mode-line shape, guide step continuity, and the
+ mandatory "Do NOT trigger for:" clause. Pipeline stage 1 (content) of the
+ brooks-harness orchestrator.
+model: opus
+tools: Read, Grep, Glob, Edit, Write, Bash, Skill
+---
+
+You write and revise the markdown that *is* brooks-lint. The skills are not code —
+they are instructions Claude follows at runtime — so precision of wording and strict
+adherence to repo conventions matter more than cleverness.
+
+## Core role
+
+- Create or edit `skills/{name}/SKILL.md` and `skills/{name}/{name}-guide.md`.
+- Edit shared framework files under `skills/_shared/` (common.md, decay-risks.md,
+ test-decay-risks.md, remedy-guide.md, source-coverage.md, custom-risks-guide.md).
+- For a brand-new skill, prefer the `new-skill` scaffold skill (invoke via the Skill
+ tool with the kebab-case name) rather than hand-writing the boilerplate — it
+ produces a structure that passes `npm run validate` on the first try.
+
+## Hard conventions (violating these fails `npm run validate`)
+
+1. **Iron Law.** Every finding the skill emits follows **Symptom → Source →
+ Consequence → Remedy**. Guides must reference the Iron Law.
+2. **SKILL.md shape.** Frontmatter `name` + `description`, then a `## Setup` section
+ that Reads the relevant `_shared/` files (they are NOT auto-loaded), a `## Process`
+ section of 3–6 numbered items that cite the guide's step ranges inline
+ (e.g. `Scan decay risks (Steps 1–6 of the guide)`), and a `Mode line` note.
+3. **"Do NOT trigger for:" clause is mandatory** in every `description`. Without it
+ false triggering occurs (e.g. brooks-debt firing on an HTTP `/health` question).
+ The clause must carve the skill away from its *siblings*, not just unrelated topics.
+4. **Guide step continuity.** `### Step N` headings must be sequential — no gaps, no
+ duplicates. Sub-steps like `Step 2a`, `Step 6b` are allowed. brooks-audit's guide
+ is 0-indexed; the others are 1-indexed. When you renumber or rename guide steps,
+ update any Step-range citations in that SKILL.md's Process section.
+5. **Book count is derived, never hardcoded.** Adding a book = edit the
+ `source-coverage.md` frontmatter list + add its section; the validator adapts.
+
+## Working principles
+
+- **Touch only what the task requires.** Match the surrounding skill's voice and
+ structure (imperative mood, "Symptom/Source/Consequence/Remedy"). The Process
+ skeleton and the guide do NOT need to match 1:1 — skeleton orients, guide executes.
+- **Generalize, don't overfit.** A guide step should state the principle so Claude
+ judges novel inputs correctly, not enumerate one example.
+- **Lean.** SKILL.md bodies stay tight; push long material into the guide or
+ `_shared/`. The context window is a shared resource.
+
+## Input / output protocol
+
+- **Input:** a task contract from the orchestrator — what to create/change and why.
+ If a `_workspace/brooks-harness/` run note exists from a prior stage, read it first.
+- **Output:** the edited files, plus a short summary listing every file touched and
+ the convention-relevant choices made (new risk codes, new Step numbers, description
+ trigger phrases). Hand this summary to the eval-curator and consistency-qa stages.
+- Do NOT run the full release flow and do NOT register slash commands — short forms
+ are auto-installed by the session-start hook.
+
+## Error handling
+
+If a requested change would break a hard convention (e.g. a description with no
+sibling-carving "Do NOT trigger for:" clause, or a guide gap), do not silently
+comply — implement the closest convention-compliant version and flag the deviation
+in your summary so the orchestrator can confirm.
+
+## Collaboration
+
+- Pair with **eval-curator**: any new risk code or new skill needs ≥1 happy-path
+ eval + ≥1 false-positive eval. Tell eval-curator which codes you added.
+- Your output is verified by **consistency-qa** (runs `npm run validate`/`test`/
+ `evals`) and, when you changed a `description`, by **trigger-boundary-auditor**.
+ Expect a loop-back if QA finds drift — fix and resubmit.
+
+## Re-invocation
+
+If invoked on a follow-up with prior output present, read the existing files and
+apply only the requested delta — do not rewrite from scratch.
diff --git a/brooks-lint/.claude/skills/brooks-harness/SKILL.md b/brooks-lint/.claude/skills/brooks-harness/SKILL.md
new file mode 100644
index 00000000..53876546
--- /dev/null
+++ b/brooks-lint/.claude/skills/brooks-harness/SKILL.md
@@ -0,0 +1,138 @@
+---
+name: brooks-harness
+description: >
+ Maintenance orchestrator for the brooks-lint plugin itself. Runs a sequential
+ subagent pipeline — author → eval → QA → trigger-audit → release — to add or
+ edit a skill, refresh the eval suite, keep the four manifests + README + CHANGELOG
+ + AGENTS/GEMINI in sync, audit trigger boundaries, and cut releases. Drives the
+ five agents in .claude/agents/ (skill-author, eval-curator, consistency-qa,
+ trigger-boundary-auditor, release-manager).
+ Triggers when the maintainer asks to work ON brooks-lint itself: "add a new skill",
+ "edit the brooks-debt guide", "update the eval suite", "fix the trigger
+ descriptions", "make this change and validate it", "release brooks-lint", "bump and
+ publish", and follow-ups: "re-run", "re-validate", "update that skill", "redo the
+ audit", "do the X part again".
+ Do NOT trigger for: USING the brooks-lint analysis skills on some target codebase
+ (that's brooks-review / brooks-audit / brooks-debt / brooks-test / brooks-health /
+ brooks-sweep); generic questions about brooks-lint that don't ask to change it; or
+ maintenance of a different plugin.
+disable-model-invocation: false
+---
+
+# brooks-lint — Maintenance Harness (Orchestrator)
+
+This skill orchestrates work **on the brooks-lint repo itself**. It runs a sequential
+subagent pipeline: each stage is a dedicated agent defined in `.claude/agents/`. Spawn
+each with the `Agent` tool, `subagent_type` set to the agent name, and **always
+`model: "opus"`**. Stages depend on each other in order, so this is a pipeline, not a
+parallel team.
+
+## Pipeline
+
+```
+[orchestrator]
+ Phase 0 context check
+ Phase 1 classify request → select stages
+ Phase 2 run selected stages in order, with a QA loop-back:
+ skill-author → eval-curator → consistency-qa ─(FAIL)→ back to author
+ │ PASS
+ ▼
+ trigger-boundary-auditor (only if a description changed)
+ ▼
+ release-manager (only if release requested)
+ Phase 3 report + collect feedback
+```
+
+## Phase 0 — Context check
+
+Determine the run mode before doing anything:
+
+- `_workspace/brooks-harness/` exists + maintainer asks to redo part of a prior run →
+ **partial re-run**: invoke only the affected stage(s), reusing prior notes.
+- `_workspace/brooks-harness/` exists + a fresh request → **new run**: move the old
+ folder to `_workspace/brooks-harness_prev/`, start clean.
+- No `_workspace/brooks-harness/` → **initial run**: create it.
+
+Run notes and the QA report live under `_workspace/brooks-harness/`. The *real*
+artifacts are the repo files themselves — agents edit `skills/`, `evals/`, manifests
+directly; `_workspace/` only holds the run's notes and the PASS/FAIL verdict for audit.
+
+## Phase 1 — Classify the request
+
+Pick the minimal set of stages. The QA stage is **never skipped** — every change is
+gated.
+
+| Request | author | eval | QA | trigger-audit | release |
+|---------|:------:|:----:|:--:|:-------------:|:-------:|
+| Add a new skill | ✓ (via `new-skill` scaffold) | ✓ | ✓ | ✓ | — |
+| Edit skill / guide content | ✓ | if codes changed | ✓ | if `description` changed | — |
+| Edit `_shared/` framework | ✓ | if risk defs changed | ✓ | — | — |
+| Eval suite only | — | ✓ | ✓ | — | — |
+| Fix trigger descriptions | ✓ | — | ✓ | ✓ | — |
+| Release | — | — | ✓ | — | ✓ |
+| Full: change + release | ✓ | as needed | ✓ | if applicable | ✓ |
+
+## Phase 2 — Run the pipeline
+
+Spawn each selected stage as a subagent in order. Pass each agent (a) the task
+contract and (b) the previous stage's summary. Agents write their summaries to
+`_workspace/brooks-harness/`; read them between stages.
+
+1. **skill-author** — creates/edits the content. For a brand-new skill it invokes the
+ `new-skill` scaffold. Returns the list of files touched + convention-relevant
+ choices (new risk codes, new Step numbers, changed `description` trigger phrases).
+2. **eval-curator** — if `skill-author` reported new/changed risk codes or modes, adds
+ the paired happy-path + false-positive scenarios and runs `npm run evals`.
+3. **consistency-qa** *(gate — never skipped)* — runs `npm run validate` + `npm test` +
+ `npm run evals`, then the cross-document sync checks (manifests, README badge,
+ CHANGELOG, AGENTS/GEMINI book count, eval count). Writes a PASS/FAIL verdict.
+ **On FAIL: loop back to the agent named in the verdict (author or eval-curator),
+ fix, then re-run QA. Repeat once; if it still fails, stop and report to the
+ maintainer.**
+4. **trigger-boundary-auditor** — run **only if a `description` field changed**. It
+ read-only audits the six shipped skills' trigger surfaces for false-triggering and
+ routing collisions. Surface its findings; if it flags a real collision, loop back to
+ skill-author.
+5. **release-manager** — run **only if a release was requested**, and **only after QA
+ PASS**. Cuts the release via the `release` skill.
+
+## Phase 3 — Report & feedback
+
+Report: stages run, files changed, QA verdict, trigger-audit findings (if any), and the
+release URL (if any). Then offer the maintainer a feedback opening: "Anything to adjust
+in the result, the agent roles, or the pipeline order?" Record accepted changes in the
+CLAUDE.md harness change-log table.
+
+## Conventions this harness enforces
+
+- **All `Agent` calls use `model: "opus"`** — harness quality tracks agent reasoning.
+- **consistency-qa must be `general-purpose`** (it runs npm scripts); the
+ trigger-boundary-auditor is read-only.
+- **No slash commands are created** — short forms are auto-installed by the
+ session-start hook.
+- **Direct-to-main**: changes push to `main` without a PR (per repo CLAUDE.md); the
+ global simplify→review→commit gate still applies to non-doc edits, but skill/guide
+ content is markdown and follows the validate gate instead.
+
+## Error handling
+
+- A stage that fails once is retried once with its error as input; a second failure
+ stops the pipeline and reports to the maintainer (no silent skip).
+- QA FAIL never proceeds to release.
+- Conflicting data is reported with provenance, not deleted.
+- High-risk git ops (`--no-verify`, `--force`, history rewrites) require explicit
+ maintainer authorization — release-manager stops and asks.
+
+## Test scenarios
+
+**Normal flow — "add a brooks-security skill":** Phase 1 selects author+eval+QA+audit.
+skill-author runs `new-skill brooks-security`, creates SKILL.md (with a sibling-carving
+"Do NOT trigger for:" clause) + guide; eval-curator adds an S-code happy-path + a
+false-positive scenario; consistency-qa runs the gate → PASS; trigger-boundary-auditor
+confirms no collision with brooks-review/audit. Report lists files + PASS.
+
+**Error flow — QA FAIL on book-count drift:** maintainer adds a thirteenth book but
+edits only `source-coverage.md`. consistency-qa's cross-doc check finds README still
+says "twelve" → FAIL, attributed to skill-author. Orchestrator loops back; skill-author
+updates README/AGENTS/GEMINI wording; QA re-runs → PASS. No release was requested, so
+the pipeline ends at Phase 3.
diff --git a/brooks-lint/.gitignore b/brooks-lint/.gitignore
index 57e3d107..cb0477b0 100644
--- a/brooks-lint/.gitignore
+++ b/brooks-lint/.gitignore
@@ -26,3 +26,6 @@ docs/superpowers/
# Maintainer-local Claude Code config (hooks, permissions)
.claude/settings.local.json
+
+# brooks-harness orchestrator run notes (runtime artifacts, not the plugin)
+_workspace/
diff --git a/brooks-lint/CLAUDE.md b/brooks-lint/CLAUDE.md
index f0c786b0..94cc4924 100644
--- a/brooks-lint/CLAUDE.md
+++ b/brooks-lint/CLAUDE.md
@@ -6,6 +6,17 @@ Guidance for Claude Code when modifying this repository. For repo layout, instal
**brooks-lint** is a Claude Code Plugin for code-quality diagnosis grounded in twelve classic software engineering books. Six independent skills under `skills/` (PR Review, Architecture Audit, Tech Debt, Test Quality, Health Dashboard, Full Sweep) each produce findings in the Iron Law form: **Symptom → Source → Consequence → Remedy**.
+## Harness: brooks-lint maintenance
+
+**Goal:** drive changes *to brooks-lint itself* through a verified pipeline so manifests, evals, docs, and trigger boundaries never drift.
+
+**Trigger:** when working ON the plugin — add/edit a skill or guide, refresh the eval suite, fix trigger descriptions, or cut a release — use the `brooks-harness` skill. It runs a sequential subagent pipeline (`.claude/agents/`): **skill-author → eval-curator → consistency-qa → trigger-boundary-auditor → release-manager**. Simple questions, or *using* the analysis skills on some target codebase, do not trigger it.
+
+**Change history:**
+| Date | Change | Target | Reason |
+|------|--------|--------|--------|
+| 2026-06-01 | Initial harness: 5-stage pipeline orchestrator + 4 new agents (skill-author, eval-curator, consistency-qa, release-manager), reusing trigger-boundary-auditor | `.claude/agents/`, `.claude/skills/brooks-harness/` | Pre-existing dev tools (new-skill, release, trigger-boundary-auditor) had no orchestrator wiring them together |
+
## Workflow Conventions
- **Direct-to-main workflow:** Pushes go to `main` without a PR. After Edit/Write, the global rule's `agent-skills:code-simplify` + `agent-skills:review` steps still run before commit; only the optional PR-only `code-review:code-review` step is skipped.
diff --git a/brooks-lint/README.md b/brooks-lint/README.md
index fc915a1d..0bb3e696 100644
--- a/brooks-lint/README.md
+++ b/brooks-lint/README.md
@@ -9,6 +9,10 @@
Consistent. Traceable. Actionable.
+
---
> *"The bearing of a child takes nine months, no matter how many women are assigned."*
diff --git a/brooks-lint/README.zh-CN.md b/brooks-lint/README.zh-CN.md
new file mode 100644
index 00000000..39f13039
--- /dev/null
+++ b/brooks-lint/README.zh-CN.md
@@ -0,0 +1,525 @@
+
Symptom: email overwritten before the != check — dead branch.
+
Source: McConnell — Code Complete — Ch.17
+
Remedy: capture old_email before any mutation.
+
+
+
🔴 R5 — Dependency Disorder + SQL injection ×2
+
+
+
+
+
Every finding: Symptom → Source → Consequence → Remedy
+
+
+
diff --git a/brooks-lint/docs/.nojekyll b/brooks-lint/docs/.nojekyll
new file mode 100644
index 00000000..e69de29b
diff --git a/brooks-lint/docs/demo.gif b/brooks-lint/docs/demo.gif
new file mode 100644
index 00000000..7bc6c46b
Binary files /dev/null and b/brooks-lint/docs/demo.gif differ
diff --git a/brooks-lint/docs/gallery.html b/brooks-lint/docs/gallery.html
new file mode 100644
index 00000000..8152f7cd
--- /dev/null
+++ b/brooks-lint/docs/gallery.html
@@ -0,0 +1,495 @@
+
+
+
+
+
+Gallery — brooks-lint
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The Gallery
+
Real diagnostic output from brooks-lint — generated by running the skill, then lightly abridged. Four languages, four review modes, every finding in the Iron Law form.
+
+ 8 worked examples
+ 4 review modes
+ 4 languages
+ Python · TypeScript · Go · Java
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
PR Review Mode 1
+
Diagnoses a diff against the six production decay risks (R1–R6).
+
+
+
+ TypeScript
+
Seven-service payment processor
+ 55 / 100
+
+
A single method orchestrates seven services, creating a structural coupling trap where any change to payment, fraud, inventory, or notification touches the same method.
Remedy: Define thin adapters at each context boundary.
+
+
+
+
+
+ Java
+
Textbook Clean Architecture
+ 98 / 100
+
+
Dependencies flow inward, infra implements domain ports, no cycles. brooks-lint reports clean code as clean — and still offers one forward-looking suggestion.
Remedy: Use Currency.getSymbol(Locale) in MoneyFormatter; remove all "$" literals.
+
+
+
🔴 Domain Model Distortion — No Money type exists Pain × Spread: 9
+
Symptom: All price/amount fields are raw double.
+
Source: Evans — DDD — Domain Model; Fowler — Refactoring — Data Class
+
Remedy: Introduce record Money(BigDecimal amount, Currency currency).
+
+
Recommended focus: All three Critical findings share one root cause — the absence of a Money value object. One intervention collapses three findings.
+
+
+
+
+
+
Test Quality Review Mode 4
+
Audits an existing suite against six test-space decay risks (T1–T6).
+
+
+
+ TypeScript
+
Mock abuse
+ 60 / 100
+
+
Seven mocks per test, 14 lines of setup vs 6 of assertions — the service is never tested against a real collaborator, and the return value is never checked.
AI code reviews grounded in twelve classic engineering books
+
+ Most tools count lines and complexity. brooks-lint diagnoses your code against twelve decay risks synthesized from the classics — every finding cited, scored, and remedied.
+
+
+ “The bearing of a child takes nine months, no matter how many women are assigned.”
+ — Frederick Brooks, The Mythical Man-Month (1975)
+
Same messy method, two of the eight findings brooks-lint produces — each one cited and actionable.
+
+
+
Health Score: 28/100
+
+ This method concentrates four unrelated business responsibilities, hides a logic bug that silently suppresses email notifications, and is wide open to SQL injection.
+
+
+
+
🔴 R2 — One method changes for four unrelated reasons
+
Symptom:
+ update_profile does field updates, email notifications, loyalty recalculation, and cache invalidation in one body.
Consequence:
+ Users are never notified when their email changes. A business rule is silently violated while the system looks fine.
+
Remedy:
+ Capture old_email before any mutation. Compare against old_email, not the already-overwritten value.
+
+
+
+
+
+
+
+
+
+
Consistency is the point
+
Tested across PR review, architecture audit, and tech debt scenarios. The gap isn't what Claude can find — it's what it finds every single time, with evidence.
+
+
+
+
+
+
Criterion
+
brooks-lint
+
Claude alone
+
+
+
+
Structured Symptom→Source→Consequence→Remedy
100%
0%
+
Book citation per finding
100%
0%
+
Consistent severity labels 🔴🟡🟢
100%
0%
+
Health Score (0–100)
100%
0%
+
Overall pass rate
94%
16%
+
+
+
+
+
+
+
+
+
+
+
Standing on twelve giants
+
The decay risks are our synthesis of their ideas, applied to modern code quality.
+
+
+ The Mythical Man-Month · Brooks
+ Code Complete · McConnell
+ Refactoring · Fowler
+ Clean Architecture · Martin
+ The Pragmatic Programmer · Hunt & Thomas
+ Domain-Driven Design · Evans
+ A Philosophy of Software Design · Ousterhout
+ Software Engineering at Google · Winters et al.
+ The Art of Unit Testing · Osherove
+ How Google Tests Software · Whittaker et al.
+ Working Effectively with Legacy Code · Feathers
+ xUnit Test Patterns · Meszaros
+
+
+
+
+
+
+
+
+
Get started in seconds
+
Pick your tool. Then just ask it to review your code, audit your architecture, or assess tech debt.
+
+
+
Claude Code
+
+# add the marketplace, then install
+/plugin marketplace add hyhmrright/brooks-lint
+/plugin install brooks-lint@brooks-lint-marketplace