📦 deps(thirdparty): update snapshots

This commit is contained in:
ci[bot]
2026-09-03 08:57:39 +00:00
parent 0b2b056032
commit 3294e63c9f
98 changed files with 3411 additions and 467 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ Guidance for Claude Code when modifying this repository. For repo layout, instal
- `` field `commands` is not accepted `` — `"commands": []` is what stops the CLI from migrating `commands/*.md` into duplicate `source-command-brooks-*` skills (issue #22). Confirmed by installing both ways under an isolated `CODEX_HOME`: drop the field and Codex regenerates `.codex-plugin/migrated-command-skills/`. The CLI's `RawPluginManifest` accepts `commands`; only the ingestion schema rejects it.
- `` skill `_shared` is missing `SKILL.md` `` — the validator only skips dot-prefixed dirs, and `_shared/` is a shared-framework dir by design (see above). Renaming it to `.shared/` would also require changing `install.sh`'s `cp -R "$SRC"/*`, whose glob does not match dot-dirs.
- **GitHub Action cache:** `.github/actions/brooks-lint/action.yml` uses `actions/cache@v4` with built-in cache-hit guard — do NOT add a manual directory check.
- **Adding a platform is derived, not hardcoded:** create `docs/<name>-setup.md`, add the platform to `install.sh`'s `PLATFORMS` **and** both `global_dir()` / `project_dir()` case tables, then link the new guide from every `README*.md` and `docs/getting-started.md`. `npm run validate` derives both sides (`scripts/platforms.mjs`) and fails on any gap — a guide missing from one translation, or a `PLATFORMS` entry with no directory mapping. Do not add a hand-maintained platform list anywhere.
- **Adding a platform is derived, not hardcoded:** create `docs/<name>-setup.md`, add the platform to `install.sh`'s `PLATFORMS` **and** both `global_dir()` / `project_dir()` case tables, then link the new guide from every `README*.md` and `docs/getting-started.md` **and** add the name to each of those documents' `<platform> = …` enumeration (the `<平台> = …` line in the zh translations). That enumeration must list every `PLATFORMS` entry, `claude` included — it is the one spot a platform has to be spelled out, since a bare mention elsewhere is worthless as a check (`~/.bob/skills` in a table row already contains "bob"). `npm run validate` derives all three sides (`scripts/platforms.mjs`) and fails on any gap — a guide missing from one translation, a `PLATFORMS` entry with no directory mapping, or a platform absent from one document's enumeration. Do not add a hand-maintained platform list anywhere.
- **Star history is data-first, never hand-drawn:** `assets/star-history.json` (raw `starred_at` timestamps, no usernames) is the source of truth; `assets/star-history.svg` is a pure function of it. Never hand-edit the SVG — `npm run validate` re-renders and fails on any mismatch. `node scripts/gen-star-history.mjs` refetches (needs `GITHUB_TOKEN` or `gh auth`, since GitHub restricted the stargazers API to admins/collaborators on 2026-06-30); `--render-only` redraws offline from the committed data. The render must stay deterministic — anchoring the time axis to the clock would make the weekly workflow commit noise on every run.
- **Custom risks:** Teams add project-specific risk codes via `custom-risks-guide.md` in their project root. Template lives at `skills/_shared/custom-risks-guide.md`.
+6 -5
View File
@@ -69,7 +69,7 @@ Para el mapeo completo de fuente a skill, incluyendo excepciones y protecciones
/plugin marketplace add hyhmrright/brooks-lint
/plugin install brooks-lint@brooks-lint-marketplace
# Cualquier otra plataforma de Agent Skills — Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · …
# Cualquier otra plataforma de Agent Skills — Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · Bob
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <platform>
```
@@ -78,7 +78,7 @@ Luego solo pide ("revisa este PR", "audita la arquitectura"), o ejecuta uno de l
([qué hace cada uno](#comandos-de-barra)).
Cada hallazgo se devuelve como **Síntoma → Origen → Consecuencia → Remedio** con una cita de libro y
una puntuación de salud de 0 a 100. Las opciones completas de instalación (9 plataformas más) y la
una puntuación de salud de 0 a 100. Las opciones completas de instalación (10 plataformas más) y la
configuración de CI/CD están [más abajo](#instalación).
## Los doce libros
@@ -273,7 +273,7 @@ Install the brooks-lint skill from hyhmrright/brooks-lint # pídelo dentro
O usa el instalador de abajo: `./scripts/install.sh gemini` / `./scripts/install.sh codex`.
### Cualquier otra plataforma — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
### Cualquier otra plataforma — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness · IBM Bob
brooks-lint se distribuye como [Agent Skills](https://agentskills.io) estándar. **Cualquier agente que cargue Agent
Skills ejecuta los seis modos sin conversión alguna** — un solo comando los instala:
@@ -281,7 +281,7 @@ Skills ejecuta los seis modos sin conversión alguna** — un solo comando los i
```bash
# elige tu plataforma; --project instala en el repositorio actual en lugar de en tu configuración global
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <platform>
# <platform> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · agents
# <platform> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · claude · bob · agents
```
El instalador copia los skills **de forma plana** en la carpeta correcta, de modo que el framework compartido
@@ -299,11 +299,12 @@ El instalador copia los skills **de forma plana** en la carpeta correcta, de mod
| Kiro (AWS) | `~/.kiro/skills` | `AGENTS.md` | [configuración](docs/kiro-setup.md) |
| Factory Droid | `~/.factory/skills` | `AGENTS.md` | [configuración](docs/factory-droid-setup.md) |
| DeepSeek Harness (`dsh`) | `~/.dsh/skills` | `~/.agents/skills`, `AGENTS.md` | [configuración](docs/dsh-setup.md) |
| IBM Bob (`bob`) | `~/.bob/skills` | `AGENTS.md` | [configuración](docs/bob-setup.md) |
Kiro, Factory Droid y DeepSeek Harness también registran `/brooks-review` automáticamente. ¿Nuevo en los
skills, o usas un agente que no aparece aquí? Consulta **[docs/getting-started.md](docs/getting-started.md)**.
> **🧪 Estado de verificación.** Claude Code, Gemini CLI y Codex CLI están verificados por el mantenedor. Las nueve
> **🧪 Estado de verificación.** Claude Code, Gemini CLI y Codex CLI están verificados por el mantenedor. Las diez
> plataformas anteriores están documentadas a partir de la especificación oficial de skills de cada herramienta y verificadas a nivel
> de diseño de archivos (el instalador está probado), pero el mantenedor aún no las ha ejecutado de extremo a extremo en cada plataforma. ¿Probaste
> alguna — funciona **o** está rota? [Abre un issue](https://github.com/hyhmrright/brooks-lint/issues/new) con
+6 -5
View File
@@ -69,7 +69,7 @@
/plugin marketplace add hyhmrright/brooks-lint
/plugin install brooks-lint@brooks-lint-marketplace
# その他あらゆる Agent Skills プラットフォーム — Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · …
# その他あらゆる Agent Skills プラットフォーム — Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · Bob
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <platform>
```
@@ -78,7 +78,7 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
`/brooks-health``/brooks-sweep`[それぞれの機能](#スラッシュコマンド))。
すべての指摘は **症状 → 根源 → 結果 → 対策** の形式で、書籍の出典と 0〜100 の健全性スコアとともに
返されます。完全なインストール方法(さらに 9 つのプラットフォーム)と CI/CD のセットアップは
返されます。完全なインストール方法(さらに 10 のプラットフォーム)と CI/CD のセットアップは
[以下](#インストール)を参照してください。
## 十二冊の書籍
@@ -273,7 +273,7 @@ Install the brooks-lint skill from hyhmrright/brooks-lint # Codex セッ
または下記のインストーラーを使用:`./scripts/install.sh gemini` / `./scripts/install.sh codex`
### その他すべてのプラットフォーム — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
### その他すべてのプラットフォーム — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness · IBM Bob
brooks-lint は標準的な [Agent Skills](https://agentskills.io) として配布されています。**Agent
Skills を読み込むエージェントなら、どれも変換なしで六つすべてのモードを実行できます**——1 つのコマンドでインストールできます:
@@ -281,7 +281,7 @@ Skills を読み込むエージェントなら、どれも変換なしで六つ
```bash
# プラットフォームを選択;--project はグローバル設定ではなく現在のリポジトリにインストール
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <platform>
# <platform> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · agents
# <platform> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · claude · bob · agents
```
インストーラーはスキルをあなたのプラットフォームに適したフォルダへ**フラット**にコピーするため、共有フレームワーク
@@ -300,11 +300,12 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
| KiroAWS | `~/.kiro/skills` | `AGENTS.md` | [設定](docs/kiro-setup.md) |
| Factory Droid | `~/.factory/skills` | `AGENTS.md` | [設定](docs/factory-droid-setup.md) |
| DeepSeek Harness`dsh` | `~/.dsh/skills` | `~/.agents/skills``AGENTS.md` | [設定](docs/dsh-setup.md) |
| IBM Bob`bob` | `~/.bob/skills` | `AGENTS.md` | [設定](docs/bob-setup.md) |
Kiro、Factory Droid、DeepSeek Harness は `/brooks-review` も自動登録します。スキルが初めて、または
上記にないエージェントをお使いですか? **[docs/getting-started.md](docs/getting-started.md)** を参照してください。
> **🧪 検証状況。** Claude Code、Gemini CLI、Codex CLI はメンテナーによって検証済みです。上記の九つ
> **🧪 検証状況。** Claude Code、Gemini CLI、Codex CLI はメンテナーによって検証済みです。上記の
> プラットフォームは各ツールの公式スキル仕様から文書化され、ファイルレイアウトのレベルで検証されています
> (インストーラーはテスト済み)が、メンテナーがすべてのプラットフォームでエンドツーエンドに実行したわけ
> ではまだありません。どれかを試した——動いた **または** 壊れた? プラットフォーム、バージョン、見たこと
+6 -5
View File
@@ -69,7 +69,7 @@
/plugin marketplace add hyhmrright/brooks-lint
/plugin install brooks-lint@brooks-lint-marketplace
# Any other Agent Skills platform — Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · …
# Any other Agent Skills platform — Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · Bob
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <platform>
```
@@ -78,7 +78,7 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
`/brooks-sweep`[각각 하는 일](#슬래시-명령).
모든 진단은 도서 출처와 0–100 건강 점수와 함께 **증상 → 근원 → 결과 → 처방** 형태로 돌아옵니다. 전체
설치 옵션(추가 9개 플랫폼)과 CI/CD 설정은 [아래](#설치)를 참고하세요.
설치 옵션(추가 10개 플랫폼)과 CI/CD 설정은 [아래](#설치)를 참고하세요.
## 열두 권의 책
@@ -272,7 +272,7 @@ Install the brooks-lint skill from hyhmrright/brooks-lint # Codex 세션
또는 아래 설치기를 사용하세요: `./scripts/install.sh gemini` / `./scripts/install.sh codex`.
### 그 밖의 모든 플랫폼 — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
### 그 밖의 모든 플랫폼 — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness · IBM Bob
brooks-lint는 표준 [Agent Skills](https://agentskills.io) 형태로 배포됩니다. **Agent
Skills를 로드하는 모든 에이전트는 변환 없이 여섯 가지 모드를 모두 실행합니다** — 한 줄의 명령으로 설치됩니다:
@@ -280,7 +280,7 @@ Skills를 로드하는 모든 에이전트는 변환 없이 여섯 가지 모드
```bash
# 플랫폼을 고르세요; --project는 전역 설정 대신 현재 저장소에 설치합니다
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <platform>
# <platform> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · agents
# <platform> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · claude · bob · agents
```
설치기는 스킬을 당신의 플랫폼에 맞는 폴더로 **평평하게** 복사하므로, 공유 프레임워크(`../_shared/`)가
@@ -298,12 +298,13 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
| Kiro (AWS) | `~/.kiro/skills` | `AGENTS.md` | [설정](docs/kiro-setup.md) |
| Factory Droid | `~/.factory/skills` | `AGENTS.md` | [설정](docs/factory-droid-setup.md) |
| DeepSeek Harness (`dsh`) | `~/.dsh/skills` | `~/.agents/skills`, `AGENTS.md` | [설정](docs/dsh-setup.md) |
| IBM Bob (`bob`) | `~/.bob/skills` | `AGENTS.md` | [설정](docs/bob-setup.md) |
Kiro, Factory Droid, DeepSeek Harness는 `/brooks-review`도 자동 등록합니다. 스킬이 처음이거나 위
목록에 없는 에이전트를 쓰시나요? **[docs/getting-started.md](docs/getting-started.md)**를 참고하세요.
> **🧪 검증 상태.** Claude Code, Gemini CLI, Codex CLI는 메인테이너가 검증했습니다. 위
> 아홉 개 플랫폼은 각 도구의 공식 스킬 명세를 토대로 문서화되었고 파일 레이아웃
> 개 플랫폼은 각 도구의 공식 스킬 명세를 토대로 문서화되었고 파일 레이아웃
> 수준에서 검증되었으나(설치기는 테스트되었음), 메인테이너가 모든 플랫폼에서 end-to-end로 직접 실행해 보지는
> 못했습니다. 어떤 것을 시도해 보셨나요 — 잘 되든 **안 되든**? 플랫폼, 버전, 본 결과를 담아
> [이슈를 열어 주세요](https://github.com/hyhmrright/brooks-lint/issues/new).
+6 -5
View File
@@ -69,7 +69,7 @@ For the full source-to-skill mapping, including exceptions and false-positive gu
/plugin marketplace add hyhmrright/brooks-lint
/plugin install brooks-lint@brooks-lint-marketplace
# Any other Agent Skills platform — Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · …
# Any other Agent Skills platform — Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · Bob
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <platform>
```
@@ -78,7 +78,7 @@ Then just ask ("review this PR", "audit the architecture"), or run one of the si
([what each one does](#slash-commands)).
Every finding comes back as **Symptom → Source → Consequence → Remedy** with a book citation and a
0100 Health Score. Full install options (9 more platforms) and CI/CD setup are [below](#installation).
0100 Health Score. Full install options (10 more platforms) and CI/CD setup are [below](#installation).
## The Twelve Books
@@ -272,7 +272,7 @@ Install the brooks-lint skill from hyhmrright/brooks-lint # ask inside a C
Or use the installer below: `./scripts/install.sh gemini` / `./scripts/install.sh codex`.
### Every other platform — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
### Every other platform — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness · IBM Bob
brooks-lint ships as standard [Agent Skills](https://agentskills.io). **Any agent that loads Agent
Skills runs all six modes with no conversion** — one command installs them:
@@ -280,7 +280,7 @@ Skills runs all six modes with no conversion** — one command installs them:
```bash
# pick your platform; --project installs into the current repo instead of your global config
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <platform>
# <platform> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · agents
# <platform> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · claude · bob · agents
```
The installer copies the skills **flat** into the right folder, so the shared framework
@@ -298,12 +298,13 @@ The installer copies the skills **flat** into the right folder, so the shared fr
| Kiro (AWS) | `~/.kiro/skills` | `AGENTS.md` | [setup](docs/kiro-setup.md) |
| Factory Droid | `~/.factory/skills` | `AGENTS.md` | [setup](docs/factory-droid-setup.md) |
| DeepSeek Harness (`dsh`) | `~/.dsh/skills` | `~/.agents/skills`, `AGENTS.md` | [setup](docs/dsh-setup.md) |
| IBM Bob (`bob`) | `~/.bob/skills` | `AGENTS.md` | [setup](docs/bob-setup.md) |
Kiro, Factory Droid, and DeepSeek Harness also auto-register `/brooks-review`. New to skills, or
using an agent not listed? See **[docs/getting-started.md](docs/getting-started.md)**.
> **🧪 Verification status.** Claude Code, Gemini CLI, and Codex CLI are maintainer-verified. The
> nine platforms above are documented from each tool's official skill spec and verified at the
> ten platforms above are documented from each tool's official skill spec and verified at the
> file-layout level (the installer is tested), but not yet run end-to-end by the maintainer on every
> platform. Tried one — working **or** broken?
> [Open an issue](https://github.com/hyhmrright/brooks-lint/issues/new) with the platform, version,
+6 -5
View File
@@ -69,14 +69,14 @@
/plugin marketplace add hyhmrright/brooks-lint
/plugin install brooks-lint@brooks-lint-marketplace
# 其他任意 Agent Skills 平台 —— Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · …
# 其他任意 Agent Skills 平台 —— Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · Bob
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <平台>
```
装好后直接开口("审查这个 PR""审计架构"),或运行六个命令之一——`/brooks-review``/brooks-audit`
`/brooks-debt``/brooks-test``/brooks-health``/brooks-sweep`[各自的作用](#斜杠命令))。
每条诊断都以 **症状 → 根源 → 后果 → 对策** 返回,附书目出处和 0–100 健康分。完整安装方式(另外 9
每条诊断都以 **症状 → 根源 → 后果 → 对策** 返回,附书目出处和 0–100 健康分。完整安装方式(另外 10
平台)和 CI/CD 配置见[下文](#安装)。
## 十二本书
@@ -270,7 +270,7 @@ Install the brooks-lint skill from hyhmrright/brooks-lint # 在 Codex 会
或使用下面的安装器:`./scripts/install.sh gemini` / `./scripts/install.sh codex`
### 其它所有平台——OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
### 其它所有平台——OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness · IBM Bob
brooks-lint 以标准 [Agent Skills](https://agentskills.io) 形式分发。**任何加载 Agent Skills 的 agent
都能无需任何转换运行全部六种模式**——一条命令即可安装:
@@ -278,7 +278,7 @@ brooks-lint 以标准 [Agent Skills](https://agentskills.io) 形式分发。**
```bash
# 选择你的平台;加 --project 装进当前仓库而非全局配置
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <平台>
# <平台> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · agents
# <平台> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · claude · bob · agents
```
安装器会把技能**扁平**拷进该平台对应的文件夹,让共享框架(`../_shared/`)始终正确解析——你不可能装错布局。
@@ -295,11 +295,12 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
| KiroAWS | `~/.kiro/skills` | `AGENTS.md` | [配置](docs/kiro-setup.md) |
| Factory Droid | `~/.factory/skills` | `AGENTS.md` | [配置](docs/factory-droid-setup.md) |
| DeepSeek Harness`dsh` | `~/.dsh/skills` | `~/.agents/skills``AGENTS.md` | [配置](docs/dsh-setup.md) |
| IBM Bob`bob` | `~/.bob/skills` | `AGENTS.md` | [配置](docs/bob-setup.md) |
Kiro、Factory Droid 与 DeepSeek Harness 还会自动注册 `/brooks-review`。不熟悉 skills、或用的是上面
没列出的 agent?见 **[docs/getting-started.md](docs/getting-started.md)**。
> **🧪 验证状态。** Claude Code、Gemini CLI、Codex CLI 已由维护者验证。上面个平台依据各工具官方技能规范编写,
> **🧪 验证状态。** Claude Code、Gemini CLI、Codex CLI 已由维护者验证。上面个平台依据各工具官方技能规范编写,
> 并已在文件布局层面验证(安装器经过测试),但维护者尚未在每个平台端到端实跑。在某平台试过了——无论成功**还是**失败?
> 请[提一个 issue](https://github.com/hyhmrright/brooks-lint/issues/new),附上平台、版本和你看到的结果。
> 用的是其它兼容 Agent Skills 的 agent?它几乎肯定以同样方式工作——告诉我们,我们会补上。
+6 -5
View File
@@ -69,14 +69,14 @@
/plugin marketplace add hyhmrright/brooks-lint
/plugin install brooks-lint@brooks-lint-marketplace
# 其他任意 Agent Skills 平台 —— Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · …
# 其他任意 Agent Skills 平台 —— Cursor · Codex · Gemini · Copilot · Windsurf · OpenCode · Kiro · Bob
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <平台>
```
裝好後直接開口(「審查這個 PR」「稽核架構」),或執行六個命令之一——`/brooks-review``/brooks-audit`
`/brooks-debt``/brooks-test``/brooks-health``/brooks-sweep`[各自的作用](#斜線命令))。
每條診斷都以 **症狀 → 根源 → 後果 → 對策** 回傳,附書目出處和 0–100 健康分。完整安裝方式(另外 9
每條診斷都以 **症狀 → 根源 → 後果 → 對策** 回傳,附書目出處和 0–100 健康分。完整安裝方式(另外 10
平台)和 CI/CD 設定見[下文](#安裝)。
## 十二本書
@@ -270,7 +270,7 @@ Install the brooks-lint skill from hyhmrright/brooks-lint # 在 Codex 工
或使用下面的安裝器:`./scripts/install.sh gemini` / `./scripts/install.sh codex`
### 其他所有平台——OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
### 其他所有平台——OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness · IBM Bob
brooks-lint 以標準 [Agent Skills](https://agentskills.io) 形式散布。**任何載入 Agent Skills 的 agent
都能無需任何轉換執行全部六種模式**——一條命令即可安裝:
@@ -278,7 +278,7 @@ brooks-lint 以標準 [Agent Skills](https://agentskills.io) 形式散布。**
```bash
# 選擇你的平台;加 --project 裝進當前儲存庫而非全域設定
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <平台>
# <平台> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · agents
# <平台> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · claude · bob · agents
```
安裝器會把技能**扁平**複製進該平台對應的資料夾,讓共享框架(`../_shared/`)始終正確解析——你不可能裝錯佈局。
@@ -295,11 +295,12 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
| KiroAWS | `~/.kiro/skills` | `AGENTS.md` | [設定](docs/kiro-setup.md) |
| Factory Droid | `~/.factory/skills` | `AGENTS.md` | [設定](docs/factory-droid-setup.md) |
| DeepSeek Harness`dsh` | `~/.dsh/skills` | `~/.agents/skills``AGENTS.md` | [設定](docs/dsh-setup.md) |
| IBM Bob`bob` | `~/.bob/skills` | `AGENTS.md` | [設定](docs/bob-setup.md) |
Kiro、Factory Droid 與 DeepSeek Harness 還會自動註冊 `/brooks-review`。不熟悉 skills、或用的是上面
沒列出的 agent?見 **[docs/getting-started.md](docs/getting-started.md)**。
> **🧪 驗證狀態。** Claude Code、Gemini CLI、Codex CLI 已由維護者驗證。上面個平台依據各工具官方技能規範撰寫,
> **🧪 驗證狀態。** Claude Code、Gemini CLI、Codex CLI 已由維護者驗證。上面個平台依據各工具官方技能規範撰寫,
> 並已在檔案佈局層面驗證(安裝器經過測試),但維護者尚未在每個平台端到端實跑。在某平台試過了——無論成功**還是**失敗?
> 請[提一個 issue](https://github.com/hyhmrright/brooks-lint/issues/new),附上平台、版本和你看到的結果。
> 用的是其他相容 Agent Skills 的 agent?它幾乎肯定以同樣方式運作——告訴我們,我們會補上。
+2 -2
View File
@@ -1,8 +1,8 @@
# Source
- Repo: https://github.com/hyhmrright/brooks-lint
- Ref: 40d437e5af2919d28f87c9f39b9c02d0b9d5be2d
- Ref: 65bc7c42450f2ca9067cd6ada88a8bc188f4e7db
- Remove-Paths:
- Snapshot: 2026-08-30
- Snapshot: 2026-09-03
- Sync-Mode: copy_skill_dirs
- Notes: vendored into playbook branch thirdparty/skill
+28 -1
View File
@@ -1409,6 +1409,33 @@
"2026-08-23T02:19:00Z",
"2026-08-23T13:30:21Z",
"2026-08-23T14:42:55Z",
"2026-08-24T04:04:53Z"
"2026-08-24T04:04:53Z",
"2026-08-24T06:45:40Z",
"2026-08-24T09:30:21Z",
"2026-08-24T14:49:52Z",
"2026-08-25T00:41:43Z",
"2026-08-25T03:42:01Z",
"2026-08-25T08:54:54Z",
"2026-08-25T15:51:32Z",
"2026-08-25T17:41:36Z",
"2026-08-26T03:06:40Z",
"2026-08-27T01:59:16Z",
"2026-08-27T02:49:32Z",
"2026-08-27T10:58:36Z",
"2026-08-27T16:28:04Z",
"2026-08-27T22:56:26Z",
"2026-08-28T01:58:02Z",
"2026-08-28T11:11:52Z",
"2026-08-28T17:23:57Z",
"2026-08-28T19:21:58Z",
"2026-08-29T13:29:09Z",
"2026-08-30T01:29:09Z",
"2026-08-30T02:18:03Z",
"2026-08-30T05:16:37Z",
"2026-08-30T06:17:53Z",
"2026-08-30T20:50:55Z",
"2026-08-31T02:44:50Z",
"2026-08-31T03:54:58Z",
"2026-08-31T08:15:24Z"
]
}
+10 -10
View File
@@ -1,4 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="400" viewBox="0 0 800 400" role="img" aria-label="Star history for hyhmrright/brooks-lint: 1409 stars">
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="400" viewBox="0 0 800 400" role="img" aria-label="Star history for hyhmrright/brooks-lint: 1436 stars">
<style>
.bg { fill: #ffffff; }
.title { fill: #111827; font: 600 16px -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; }
@@ -31,15 +31,15 @@
<line x1="64" y1="44.0" x2="776" y2="44.0" class="grid"/><text x="54" y="48.0" class="tick" text-anchor="end">1,500</text>
</g>
<line x1="64" y1="352" x2="776" y2="352" class="axis"/>
<path d="M64.0 351.8L82.4 350.8L91.8 349.7L98.3 348.7L115.0 347.7L123.8 346.7L154.2 345.6L166.3 344.6L175.3 343.6L183.6 342.6L191.6 341.5L194.9 340.5L202.5 339.5L208.6 338.4L212.3 337.4L214.7 336.4L218.7 335.4L223.1 334.3L225.0 333.3L235.6 332.3L241.9 331.3L252.6 330.2L254.4 329.2L263.2 328.2L274.6 327.2L285.3 326.1L290.7 325.1L297.9 324.1L306.2 323.0L312.5 322.0L316.5 321.0L324.4 320.0L338.1 318.9L343.0 317.9L348.4 316.9L353.0 315.9L365.2 314.8L379.1 313.8L396.3 312.8L405.1 311.8L405.2 310.7L405.3 309.7L405.3 308.7L405.4 307.6L405.4 306.6L405.4 305.6L405.4 304.6L405.5 303.5L405.5 302.5L405.5 301.5L405.5 300.5L405.6 299.4L405.6 298.4L405.7 297.4L405.7 296.4L405.7 295.3L405.7 294.3L405.8 293.3L405.8 292.2L405.8 291.2L405.9 290.2L406.0 289.2L406.0 288.1L406.1 287.1L406.1 286.1L406.1 285.1L406.1 284.0L406.2 283.0L406.2 282.0L406.2 281.0L406.3 279.9L406.3 278.9L406.3 277.9L406.4 276.8L406.4 275.8L406.4 274.8L406.4 273.8L406.4 272.7L406.4 271.7L406.5 270.7L406.5 269.7L406.5 268.6L406.5 267.6L406.5 266.6L406.6 265.6L406.6 264.5L406.6 263.5L406.6 262.5L406.7 261.4L406.7 260.4L406.8 259.4L406.8 258.4L406.8 257.3L406.8 256.3L406.9 255.3L406.9 254.3L406.9 253.2L407.0 252.2L407.0 251.2L407.0 250.2L407.1 249.1L407.1 248.1L407.1 247.1L407.1 246.0L407.2 245.0L407.2 244.0L407.2 243.0L407.2 241.9L407.2 240.9L407.3 239.9L407.3 238.9L407.3 237.8L407.3 236.8L407.3 235.8L407.4 234.8L407.4 233.7L407.4 232.7L407.4 231.7L407.5 230.6L407.5 229.6L407.6 228.6L407.7 227.6L407.7 226.5L407.8 225.5L407.8 224.5L408.0 223.5L408.1 222.4L408.3 221.4L408.4 220.4L408.5 219.4L408.6 218.3L408.7 217.3L408.7 216.3L408.8 215.2L408.9 214.2L408.9 213.2L409.0 212.2L409.0 211.1L409.1 210.1L409.2 209.1L409.2 208.1L409.3 207.0L409.4 206.0L409.4 205.0L409.5 204.0L409.6 202.9L409.6 201.9L409.8 200.9L409.9 199.8L410.0 198.8L410.2 197.8L410.2 196.8L410.3 195.7L410.4 194.7L410.6 193.7L410.7 192.7L410.8 191.6L410.9 190.6L411.0 189.6L411.1 188.6L411.2 187.5L411.3 186.5L411.5 185.5L411.6 184.4L411.6 183.4L411.8 182.4L411.8 181.4L411.9 180.3L412.0 179.3L412.2 178.3L412.6 177.3L413.3 176.2L414.0 175.2L414.7 174.2L415.0 173.2L415.4 172.1L417.2 171.1L418.6 170.1L420.0 169.0L421.7 168.0L425.2 167.0L428.2 166.0L429.3 164.9L430.4 163.9L433.0 162.9L433.1 161.9L433.2 160.8L433.3 159.8L433.5 158.8L433.6 157.8L433.7 156.7L433.9 155.7L434.1 154.7L434.4 153.6L434.6 152.6L434.7 151.6L434.9 150.6L435.2 149.5L435.3 148.5L435.5 147.5L435.6 146.5L435.7 145.4L435.7 144.4L435.8 143.4L436.1 142.4L436.7 141.3L437.3 140.3L437.5 139.3L438.0 138.2L438.4 137.2L439.2 136.2L442.8 135.2L443.3 134.1L443.9 133.1L445.0 132.1L448.2 131.1L450.5 130.0L453.3 129.0L454.2 128.0L458.4 127.0L463.4 125.9L468.9 124.9L471.9 123.9L475.7 122.8L482.1 121.8L483.2 120.8L490.8 119.8L494.7 118.7L497.8 117.7L506.9 116.7L509.3 115.7L512.7 114.6L516.3 113.6L520.6 112.6L524.1 111.6L531.2 110.5L540.0 109.5L547.5 108.5L549.3 107.4L553.6 106.4L562.8 105.4L566.1 104.4L575.3 103.3L576.9 102.3L580.9 101.3L591.1 100.3L607.4 99.2L617.6 98.2L621.2 97.2L642.2 96.2L643.8 95.1L648.5 94.1L656.8 93.1L657.7 92.0L661.1 91.0L672.6 90.0L682.9 89.0L701.8 87.9L709.4 86.9L716.2 85.9L730.7 84.9L731.1 83.8L731.9 82.8L732.5 81.8L733.0 80.8L733.7 79.7L734.3 78.7L734.6 77.7L735.3 76.6L736.1 75.6L737.8 74.6L738.6 73.6L740.2 72.5L743.4 71.5L745.6 70.5L748.2 69.5L752.5 68.4L753.7 67.4L757.7 66.4L761.1 65.4L763.3 64.3L770.9 63.3L776.0 62.7L776.0 352.0L64.0 352.0Z" fill="url(#fade)"/>
<path d="M64.0 351.8L82.4 350.8L91.8 349.7L98.3 348.7L115.0 347.7L123.8 346.7L154.2 345.6L166.3 344.6L175.3 343.6L183.6 342.6L191.6 341.5L194.9 340.5L202.5 339.5L208.6 338.4L212.3 337.4L214.7 336.4L218.7 335.4L223.1 334.3L225.0 333.3L235.6 332.3L241.9 331.3L252.6 330.2L254.4 329.2L263.2 328.2L274.6 327.2L285.3 326.1L290.7 325.1L297.9 324.1L306.2 323.0L312.5 322.0L316.5 321.0L324.4 320.0L338.1 318.9L343.0 317.9L348.4 316.9L353.0 315.9L365.2 314.8L379.1 313.8L396.3 312.8L405.1 311.8L405.2 310.7L405.3 309.7L405.3 308.7L405.4 307.6L405.4 306.6L405.4 305.6L405.4 304.6L405.5 303.5L405.5 302.5L405.5 301.5L405.5 300.5L405.6 299.4L405.6 298.4L405.7 297.4L405.7 296.4L405.7 295.3L405.7 294.3L405.8 293.3L405.8 292.2L405.8 291.2L405.9 290.2L406.0 289.2L406.0 288.1L406.1 287.1L406.1 286.1L406.1 285.1L406.1 284.0L406.2 283.0L406.2 282.0L406.2 281.0L406.3 279.9L406.3 278.9L406.3 277.9L406.4 276.8L406.4 275.8L406.4 274.8L406.4 273.8L406.4 272.7L406.4 271.7L406.5 270.7L406.5 269.7L406.5 268.6L406.5 267.6L406.5 266.6L406.6 265.6L406.6 264.5L406.6 263.5L406.6 262.5L406.7 261.4L406.7 260.4L406.8 259.4L406.8 258.4L406.8 257.3L406.8 256.3L406.9 255.3L406.9 254.3L406.9 253.2L407.0 252.2L407.0 251.2L407.0 250.2L407.1 249.1L407.1 248.1L407.1 247.1L407.1 246.0L407.2 245.0L407.2 244.0L407.2 243.0L407.2 241.9L407.2 240.9L407.3 239.9L407.3 238.9L407.3 237.8L407.3 236.8L407.3 235.8L407.4 234.8L407.4 233.7L407.4 232.7L407.4 231.7L407.5 230.6L407.5 229.6L407.6 228.6L407.7 227.6L407.7 226.5L407.8 225.5L407.8 224.5L408.0 223.5L408.1 222.4L408.3 221.4L408.4 220.4L408.5 219.4L408.6 218.3L408.7 217.3L408.7 216.3L408.8 215.2L408.9 214.2L408.9 213.2L409.0 212.2L409.0 211.1L409.1 210.1L409.2 209.1L409.2 208.1L409.3 207.0L409.4 206.0L409.4 205.0L409.5 204.0L409.6 202.9L409.6 201.9L409.8 200.9L409.9 199.8L410.0 198.8L410.2 197.8L410.2 196.8L410.3 195.7L410.4 194.7L410.6 193.7L410.7 192.7L410.8 191.6L410.9 190.6L411.0 189.6L411.1 188.6L411.2 187.5L411.3 186.5L411.5 185.5L411.6 184.4L411.6 183.4L411.8 182.4L411.8 181.4L411.9 180.3L412.0 179.3L412.2 178.3L412.6 177.3L413.3 176.2L414.0 175.2L414.7 174.2L415.0 173.2L415.4 172.1L417.2 171.1L418.6 170.1L420.0 169.0L421.7 168.0L425.2 167.0L428.2 166.0L429.3 164.9L430.4 163.9L433.0 162.9L433.1 161.9L433.2 160.8L433.3 159.8L433.5 158.8L433.6 157.8L433.7 156.7L433.9 155.7L434.1 154.7L434.4 153.6L434.6 152.6L434.7 151.6L434.9 150.6L435.2 149.5L435.3 148.5L435.5 147.5L435.6 146.5L435.7 145.4L435.7 144.4L435.8 143.4L436.1 142.4L436.7 141.3L437.3 140.3L437.5 139.3L438.0 138.2L438.4 137.2L439.2 136.2L442.8 135.2L443.3 134.1L443.9 133.1L445.0 132.1L448.2 131.1L450.5 130.0L453.3 129.0L454.2 128.0L458.4 127.0L463.4 125.9L468.9 124.9L471.9 123.9L475.7 122.8L482.1 121.8L483.2 120.8L490.8 119.8L494.7 118.7L497.8 117.7L506.9 116.7L509.3 115.7L512.7 114.6L516.3 113.6L520.6 112.6L524.1 111.6L531.2 110.5L540.0 109.5L547.5 108.5L549.3 107.4L553.6 106.4L562.8 105.4L566.1 104.4L575.3 103.3L576.9 102.3L580.9 101.3L591.1 100.3L607.4 99.2L617.6 98.2L621.2 97.2L642.2 96.2L643.8 95.1L648.5 94.1L656.8 93.1L657.7 92.0L661.1 91.0L672.6 90.0L682.9 89.0L701.8 87.9L709.4 86.9L716.2 85.9L730.7 84.9L731.1 83.8L731.9 82.8L732.5 81.8L733.0 80.8L733.7 79.7L734.3 78.7L734.6 77.7L735.3 76.6L736.1 75.6L737.8 74.6L738.6 73.6L740.2 72.5L743.4 71.5L745.6 70.5L748.2 69.5L752.5 68.4L753.7 67.4L757.7 66.4L761.1 65.4L763.3 64.3L770.9 63.3L776.0 62.7" fill="none" stroke="#3b82f6" stroke-width="2.5" stroke-linejoin="round" stroke-linecap="round"/>
<circle cx="776.0" cy="62.7" r="4" fill="#3b82f6"/>
<text x="764.0" y="66.7" class="total" text-anchor="end">1,409</text>
<path d="M64.0 351.8L81.5 350.8L90.6 349.7L96.7 348.7L112.7 347.7L121.1 346.7L150.1 345.6L161.6 344.6L170.2 343.6L178.1 342.6L185.8 341.5L188.9 340.5L196.2 339.5L201.9 338.4L205.5 337.4L207.8 336.4L211.6 335.4L215.8 334.3L217.6 333.3L227.8 332.3L233.8 331.3L244.0 330.2L245.7 329.2L254.1 328.2L264.9 327.2L275.1 326.1L280.4 325.1L287.2 324.1L295.1 323.0L301.1 322.0L305.0 321.0L312.5 320.0L325.5 318.9L330.3 317.9L335.4 316.9L339.8 315.9L351.4 314.8L364.6 313.8L381.1 312.8L389.5 311.8L389.6 310.7L389.7 309.7L389.7 308.7L389.8 307.6L389.8 306.6L389.8 305.6L389.8 304.6L389.9 303.5L389.9 302.5L389.9 301.5L389.9 300.5L389.9 299.4L390.0 298.4L390.0 297.4L390.1 296.4L390.1 295.3L390.1 294.3L390.1 293.3L390.2 292.2L390.2 291.2L390.2 290.2L390.3 289.2L390.4 288.1L390.4 287.1L390.4 286.1L390.5 285.1L390.5 284.0L390.5 283.0L390.6 282.0L390.6 281.0L390.6 279.9L390.6 278.9L390.7 277.9L390.7 276.8L390.7 275.8L390.7 274.8L390.8 273.8L390.8 272.7L390.8 271.7L390.8 270.7L390.8 269.7L390.8 268.6L390.9 267.6L390.9 266.6L390.9 265.6L390.9 264.5L390.9 263.5L391.0 262.5L391.0 261.4L391.0 260.4L391.1 259.4L391.1 258.4L391.1 257.3L391.2 256.3L391.2 255.3L391.2 254.3L391.2 253.2L391.3 252.2L391.3 251.2L391.3 250.2L391.4 249.1L391.4 248.1L391.4 247.1L391.4 246.0L391.5 245.0L391.5 244.0L391.5 243.0L391.5 241.9L391.5 240.9L391.6 239.9L391.6 238.9L391.6 237.8L391.6 236.8L391.6 235.8L391.7 234.8L391.7 233.7L391.7 232.7L391.7 231.7L391.8 230.6L391.8 229.6L391.8 228.6L392.0 227.6L392.0 226.5L392.0 225.5L392.1 224.5L392.2 223.5L392.4 222.4L392.5 221.4L392.7 220.4L392.7 219.4L392.8 218.3L392.9 217.3L392.9 216.3L393.0 215.2L393.1 214.2L393.1 213.2L393.2 212.2L393.2 211.1L393.3 210.1L393.4 209.1L393.4 208.1L393.5 207.0L393.6 206.0L393.6 205.0L393.7 204.0L393.8 202.9L393.8 201.9L394.0 200.9L394.1 199.8L394.2 198.8L394.3 197.8L394.4 196.8L394.5 195.7L394.6 194.7L394.7 193.7L394.8 192.7L394.9 191.6L395.0 190.6L395.1 189.6L395.2 188.6L395.3 187.5L395.4 186.5L395.6 185.5L395.7 184.4L395.7 183.4L395.8 182.4L395.9 181.4L396.0 180.3L396.1 179.3L396.3 178.3L396.7 177.3L397.3 176.2L398.0 175.2L398.7 174.2L398.9 173.2L399.3 172.1L401.0 171.1L402.4 170.1L403.7 169.0L405.3 168.0L408.7 167.0L411.5 166.0L412.6 164.9L413.6 163.9L416.2 162.9L416.2 161.9L416.3 160.8L416.4 159.8L416.6 158.8L416.7 157.8L416.8 156.7L417.0 155.7L417.1 154.7L417.5 153.6L417.6 152.6L417.7 151.6L418.0 150.6L418.2 149.5L418.3 148.5L418.5 147.5L418.6 146.5L418.7 145.4L418.7 144.4L418.8 143.4L419.1 142.4L419.6 141.3L420.2 140.3L420.4 139.3L420.9 138.2L421.3 137.2L422.0 136.2L425.4 135.2L426.0 134.1L426.5 133.1L427.6 132.1L430.6 131.1L432.8 130.0L435.5 129.0L436.3 128.0L440.3 127.0L445.1 125.9L450.4 124.9L453.2 123.9L456.9 122.8L463.0 121.8L464.0 120.8L471.3 119.8L475.0 118.7L477.9 117.7L486.6 116.7L488.9 115.7L492.1 114.6L495.6 113.6L499.7 112.6L503.1 111.6L509.8 110.5L518.3 109.5L525.4 108.5L527.1 107.4L531.2 106.4L540.0 105.4L543.1 104.4L551.9 103.3L553.4 102.3L557.2 101.3L566.9 100.3L582.6 99.2L592.3 98.2L595.7 97.2L615.8 96.2L617.3 95.1L621.7 94.1L629.6 93.1L630.5 92.0L633.7 91.0L644.8 90.0L654.6 89.0L672.7 87.9L679.9 86.9L686.3 85.9L700.2 84.9L700.6 83.8L701.3 82.8L701.9 81.8L702.4 80.8L703.1 79.7L703.6 78.7L703.9 77.7L704.6 76.6L705.3 75.6L706.9 74.6L707.8 73.6L709.2 72.5L712.3 71.5L714.4 70.5L716.9 69.5L721.0 68.4L722.2 67.4L726.0 66.4L729.2 65.4L731.3 64.3L738.5 63.3L744.4 62.3L750.2 61.2L758.4 60.2L764.1 59.2L770.9 58.2L776.0 57.1L776.0 352.0L64.0 352.0Z" fill="url(#fade)"/>
<path d="M64.0 351.8L81.5 350.8L90.6 349.7L96.7 348.7L112.7 347.7L121.1 346.7L150.1 345.6L161.6 344.6L170.2 343.6L178.1 342.6L185.8 341.5L188.9 340.5L196.2 339.5L201.9 338.4L205.5 337.4L207.8 336.4L211.6 335.4L215.8 334.3L217.6 333.3L227.8 332.3L233.8 331.3L244.0 330.2L245.7 329.2L254.1 328.2L264.9 327.2L275.1 326.1L280.4 325.1L287.2 324.1L295.1 323.0L301.1 322.0L305.0 321.0L312.5 320.0L325.5 318.9L330.3 317.9L335.4 316.9L339.8 315.9L351.4 314.8L364.6 313.8L381.1 312.8L389.5 311.8L389.6 310.7L389.7 309.7L389.7 308.7L389.8 307.6L389.8 306.6L389.8 305.6L389.8 304.6L389.9 303.5L389.9 302.5L389.9 301.5L389.9 300.5L389.9 299.4L390.0 298.4L390.0 297.4L390.1 296.4L390.1 295.3L390.1 294.3L390.1 293.3L390.2 292.2L390.2 291.2L390.2 290.2L390.3 289.2L390.4 288.1L390.4 287.1L390.4 286.1L390.5 285.1L390.5 284.0L390.5 283.0L390.6 282.0L390.6 281.0L390.6 279.9L390.6 278.9L390.7 277.9L390.7 276.8L390.7 275.8L390.7 274.8L390.8 273.8L390.8 272.7L390.8 271.7L390.8 270.7L390.8 269.7L390.8 268.6L390.9 267.6L390.9 266.6L390.9 265.6L390.9 264.5L390.9 263.5L391.0 262.5L391.0 261.4L391.0 260.4L391.1 259.4L391.1 258.4L391.1 257.3L391.2 256.3L391.2 255.3L391.2 254.3L391.2 253.2L391.3 252.2L391.3 251.2L391.3 250.2L391.4 249.1L391.4 248.1L391.4 247.1L391.4 246.0L391.5 245.0L391.5 244.0L391.5 243.0L391.5 241.9L391.5 240.9L391.6 239.9L391.6 238.9L391.6 237.8L391.6 236.8L391.6 235.8L391.7 234.8L391.7 233.7L391.7 232.7L391.7 231.7L391.8 230.6L391.8 229.6L391.8 228.6L392.0 227.6L392.0 226.5L392.0 225.5L392.1 224.5L392.2 223.5L392.4 222.4L392.5 221.4L392.7 220.4L392.7 219.4L392.8 218.3L392.9 217.3L392.9 216.3L393.0 215.2L393.1 214.2L393.1 213.2L393.2 212.2L393.2 211.1L393.3 210.1L393.4 209.1L393.4 208.1L393.5 207.0L393.6 206.0L393.6 205.0L393.7 204.0L393.8 202.9L393.8 201.9L394.0 200.9L394.1 199.8L394.2 198.8L394.3 197.8L394.4 196.8L394.5 195.7L394.6 194.7L394.7 193.7L394.8 192.7L394.9 191.6L395.0 190.6L395.1 189.6L395.2 188.6L395.3 187.5L395.4 186.5L395.6 185.5L395.7 184.4L395.7 183.4L395.8 182.4L395.9 181.4L396.0 180.3L396.1 179.3L396.3 178.3L396.7 177.3L397.3 176.2L398.0 175.2L398.7 174.2L398.9 173.2L399.3 172.1L401.0 171.1L402.4 170.1L403.7 169.0L405.3 168.0L408.7 167.0L411.5 166.0L412.6 164.9L413.6 163.9L416.2 162.9L416.2 161.9L416.3 160.8L416.4 159.8L416.6 158.8L416.7 157.8L416.8 156.7L417.0 155.7L417.1 154.7L417.5 153.6L417.6 152.6L417.7 151.6L418.0 150.6L418.2 149.5L418.3 148.5L418.5 147.5L418.6 146.5L418.7 145.4L418.7 144.4L418.8 143.4L419.1 142.4L419.6 141.3L420.2 140.3L420.4 139.3L420.9 138.2L421.3 137.2L422.0 136.2L425.4 135.2L426.0 134.1L426.5 133.1L427.6 132.1L430.6 131.1L432.8 130.0L435.5 129.0L436.3 128.0L440.3 127.0L445.1 125.9L450.4 124.9L453.2 123.9L456.9 122.8L463.0 121.8L464.0 120.8L471.3 119.8L475.0 118.7L477.9 117.7L486.6 116.7L488.9 115.7L492.1 114.6L495.6 113.6L499.7 112.6L503.1 111.6L509.8 110.5L518.3 109.5L525.4 108.5L527.1 107.4L531.2 106.4L540.0 105.4L543.1 104.4L551.9 103.3L553.4 102.3L557.2 101.3L566.9 100.3L582.6 99.2L592.3 98.2L595.7 97.2L615.8 96.2L617.3 95.1L621.7 94.1L629.6 93.1L630.5 92.0L633.7 91.0L644.8 90.0L654.6 89.0L672.7 87.9L679.9 86.9L686.3 85.9L700.2 84.9L700.6 83.8L701.3 82.8L701.9 81.8L702.4 80.8L703.1 79.7L703.6 78.7L703.9 77.7L704.6 76.6L705.3 75.6L706.9 74.6L707.8 73.6L709.2 72.5L712.3 71.5L714.4 70.5L716.9 69.5L721.0 68.4L722.2 67.4L726.0 66.4L729.2 65.4L731.3 64.3L738.5 63.3L744.4 62.3L750.2 61.2L758.4 60.2L764.1 59.2L770.9 58.2L776.0 57.1" fill="none" stroke="#3b82f6" stroke-width="2.5" stroke-linejoin="round" stroke-linecap="round"/>
<circle cx="776.0" cy="57.1" r="4" fill="#3b82f6"/>
<text x="764.0" y="61.1" class="total" text-anchor="end">1,436</text>
<g>
<text x="85.2" y="374" class="tick" text-anchor="middle">Apr 2026</text>
<text x="227.9" y="374" class="tick" text-anchor="middle">May</text>
<text x="375.4" y="374" class="tick" text-anchor="middle">Jun</text>
<text x="518.2" y="374" class="tick" text-anchor="middle">Jul</text>
<text x="665.7" y="374" class="tick" text-anchor="middle">Aug</text>
<text x="84.2" y="374" class="tick" text-anchor="middle">Apr 2026</text>
<text x="220.4" y="374" class="tick" text-anchor="middle">May</text>
<text x="361.2" y="374" class="tick" text-anchor="middle">Jun</text>
<text x="497.4" y="374" class="tick" text-anchor="middle">Jul</text>
<text x="638.2" y="374" class="tick" text-anchor="middle">Aug</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

+53
View File
@@ -0,0 +1,53 @@
# IBM Bob Setup
[IBM Bob](https://bob.ibm.com) (`bob`) is IBM's AI-powered developer agent — an "everything is a
skill" architecture with a chat interface and IDE integrations. It natively loads
[Agent Skills](https://agentskills.io) and reads `AGENTS.md`, so all six brooks-lint modes run with
no conversion.
## Install
```bash
# simplest — one command (global)
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- bob
# from a clone
./scripts/install.sh bob # global: ~/.bob/skills
./scripts/install.sh bob --project # this repo: ./.bob/skills
```
Prefer a manual copy? Clone the repo and `cp -r skills/* ~/.bob/skills/` — the contents, not the
`skills/` folder itself, so `_shared/` lands as a sibling of the `brooks-*` folders.
Bob scans these skill roots, highest priority first, so an existing vendor-neutral install is picked
up automatically:
| Root | Notes |
|---|---|
| `<projectRoot>/.bob/skills` | what `--project` writes |
| `~/.bob/skills` | what the global install writes |
When the same skill name appears in two roots, the project-level skill takes precedence.
## Invoke
Just ask — Bob routes to a skill from its `description`:
- "review this PR" → `brooks-review`
- "audit the architecture" → `brooks-audit`
- "where's our worst tech debt?" → `brooks-debt`
For explicit invocation, type `/` followed by the skill token in the chat prompt, or type it by
hand: `/brooks-review`, `/brooks-audit`, `/brooks-debt`, `/brooks-test`, `/brooks-health`,
`/brooks-sweep`. The repo's `AGENTS.md` carries the Iron Law (Symptom → Source →
Consequence → Remedy) and the Health Score rules; Bob also loads `~/.bob/AGENTS.md` plus every
`AGENTS.md` from the project root down to your working directory.
## Notes
- IBM Bob is available at [bob.ibm.com](https://bob.ibm.com); download and sign-in instructions
are on that page.
- 🧪 Documented per IBM's [Skills](https://bob.ibm.com/docs/ide/features/skills) and
[Configuring](https://bob.ibm.com/docs/shell/configuration/configuring) pages; community
end-to-end verification welcome —
[open an issue](https://github.com/hyhmrright/brooks-lint/issues/new).
+3 -2
View File
@@ -33,7 +33,7 @@ layout wrong:
curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <platform>
```
`<platform>``opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh ·
`<platform>``opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · bob ·
gemini · codex · claude · agents`. Add `--project` to install into the current repo instead of your
global config. `agents` targets the vendor-neutral `~/.agents/skills` folder that Cursor, Copilot, pi,
Gemini, Codex, and DeepSeek Harness all read.
@@ -51,6 +51,7 @@ Gemini, Codex, and DeepSeek Harness all read.
| Kiro | [kiro-setup.md](kiro-setup.md) | `.kiro/skills`, `~/.kiro/skills` | ✅ |
| Factory Droid | [factory-droid-setup.md](factory-droid-setup.md) | `~/.factory/skills`, `.factory/skills`, `.agent/skills` | ✅ |
| DeepSeek Harness | [dsh-setup.md](dsh-setup.md) | `.dsh/skills`, `.agents/skills`, `~/.dsh/skills`, `~/.agents/skills` | ✅ |
| IBM Bob | [bob-setup.md](bob-setup.md) | `.bob/skills`, `~/.bob/skills` | ✅ |
For Claude Code, Gemini CLI, and Codex CLI, see the [README install section](../README.md#installation).
`./scripts/install.sh gemini` and `./scripts/install.sh codex` also work and use the flat layout these
@@ -69,7 +70,7 @@ If your agent accepts a skills folder or an instruction file, brooks-lint works:
## Verification status
The marketplace-installed platforms (Claude Code, Gemini CLI, Codex CLI) are maintainer-verified. The
nine Agent-Skills platforms above are documented from each tool's official skill spec and verified at
ten Agent-Skills platforms above are documented from each tool's official skill spec and verified at
the file-layout level (the installer is tested), but not yet end-to-end run by the maintainer on every
platform. **Tried one? Tell us** — [open an issue](https://github.com/hyhmrright/brooks-lint/issues/new)
with the platform, version, and what you saw, working or broken.
+4 -2
View File
@@ -13,7 +13,7 @@
# ./scripts/install.sh <platform> [--project]
# curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts/install.sh | bash -s -- <platform>
#
# Platforms: opencode cursor windsurf antigravity pi kiro copilot droid dsh gemini codex claude agents
# Platforms: opencode cursor windsurf antigravity pi kiro copilot droid dsh gemini codex claude agents bob
# agents = the vendor-neutral ~/.agents/skills folder (read by Cursor, Copilot, pi, Gemini,
# Codex, and DeepSeek Harness)
#
@@ -25,7 +25,7 @@
set -euo pipefail
REPO_URL="https://github.com/hyhmrright/brooks-lint.git"
PLATFORMS="opencode cursor windsurf antigravity pi kiro copilot droid dsh gemini codex claude agents"
PLATFORMS="opencode cursor windsurf antigravity pi kiro copilot droid dsh gemini codex claude agents bob"
err() { printf '\033[31merror:\033[0m %s\n' "$*" >&2; }
info() { printf '\033[36m\033[0m %s\n' "$*"; }
@@ -66,6 +66,7 @@ global_dir() {
codex) printf '%s' "$HOME/.codex/skills" ;;
claude) printf '%s' "$HOME/.claude/skills" ;;
agents) printf '%s' "$HOME/.agents/skills" ;;
bob) printf '%s' "$HOME/.bob/skills" ;;
*) return 1 ;;
esac
}
@@ -85,6 +86,7 @@ project_dir() {
codex) printf '%s' "$PWD/.codex/skills" ;;
claude) printf '%s' "$PWD/.claude/skills" ;;
agents) printf '%s' "$PWD/.agents/skills" ;;
bob) printf '%s' "$PWD/.bob/skills" ;;
*) return 1 ;;
esac
}
+23
View File
@@ -42,6 +42,29 @@ export function linkedSetupGuides(text) {
return [...new Set([...links].map((match) => match[1]))].sort();
}
/**
* The `<platform> = …` line that tells a reader what `install.sh` accepts, plus
* the line after it, since the getting-started copy wraps mid-list. Returns ""
* when the document has no such line.
*
* This is the one place a platform has to be spelled out; a mere mention
* anywhere in the document is worthless as a check, because most platforms are
* named by their own install path (`~/.bob/skills` contains "bob") in a table
* row that checkPlatformDocs already requires.
*/
export function platformEnumeration(text) {
return text.match(/^.*<(?:platform|平台)>.*?[=∈].*(?:\n.*)?/m)?.[0] ?? "";
}
/**
* Whether some text names a platform as a whole token rather than a substring,
* so `pi` does not match "piper" and `bob` does not match "bob-setup.md". Splits
* rather than building a regex out of PLATFORMS, which is unvalidated text.
*/
export function namesPlatform(text, platform) {
return text.split(/[^a-z0-9-]+/).includes(platform);
}
/**
* The installer's platform list plus the platforms each directory-mapping
* function actually handles. A platform in PLATFORMS with no case arm fails
+26 -4
View File
@@ -15,7 +15,14 @@ import {
} from "./frontmatter.mjs";
import { GUIDE_BY_MODE, VALID_MODES } from "./assemble-prompt.mjs";
import { versionRefs } from "./version-refs.mjs";
import { platformDocs, setupGuides, linkedSetupGuides, parseInstallerPlatforms } from "./platforms.mjs";
import {
platformDocs,
setupGuides,
linkedSetupGuides,
parseInstallerPlatforms,
platformEnumeration,
namesPlatform,
} from "./platforms.mjs";
import { render as renderStarHistory, readStamps as readStarStamps } from "./gen-star-history.mjs";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -328,20 +335,35 @@ function checkAgentsDocs() {
}
// Every docs/<name>-setup.md must be linked from all six READMEs and the
// getting-started table. A platform added to one language and forgotten in the
// others was previously caught only by hand.
// getting-started table, and every platform the installer accepts must appear in
// each document's `<platform> = …` list. Linking alone was not enough: IBM Bob
// arrived with its setup guide linked everywhere and its name missing from every
// enumeration but the English one.
function checkPlatformDocs() {
const guides = setupGuides(root);
const { declared } = parseInstallerPlatforms(readText("scripts/install.sh"));
check(guides.length > 0, "docs/ should contain at least one <platform>-setup.md guide");
for (const file of platformDocs(root)) {
const linked = linkedSetupGuides(readText(file));
const text = readText(file);
const linked = linkedSetupGuides(text);
for (const guide of guides) {
check(linked.includes(guide), `${file} is missing an install-table link to docs/${guide}`);
}
for (const link of linked) {
check(guides.includes(link), `${file} links to docs/${link}, which does not exist`);
}
const enumeration = platformEnumeration(text);
if (enumeration === "") {
check(false, `${file} has no '<platform> = …' list of the installer's platforms`);
continue;
}
for (const platform of declared) {
check(
namesPlatform(enumeration, platform),
`${file} omits '${platform}' from its '<platform> = …' list, which scripts/install.sh accepts`,
);
}
}
}
+40 -1
View File
@@ -31,7 +31,12 @@ import { reportToSarif } from "./sarif.mjs";
import { severityBreached, isRegression } from "./ci-gate.mjs";
import { summarize } from "./benchmark.mjs";
import { versionRefs } from "./version-refs.mjs";
import { linkedSetupGuides, parseInstallerPlatforms } from "./platforms.mjs";
import {
linkedSetupGuides,
parseInstallerPlatforms,
platformEnumeration,
namesPlatform,
} from "./platforms.mjs";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
@@ -922,6 +927,40 @@ test("returns an empty array when no guide is linked", () => {
assert.deepEqual(linkedSetupGuides("no links here"), []);
});
console.log("\nplatformEnumeration");
test("picks the enumeration line, not the earlier <platform> placeholder", () => {
const text = "bash -s -- <platform>\n# <platform> = opencode · kiro\n```";
assert.equal(platformEnumeration(text), "# <platform> = opencode · kiro\n```");
});
test("keeps the continuation line, since getting-started wraps mid-list", () => {
const text = "`<platform>` ∈ `opencode · dsh ·\ngemini · agents`. Add `--project` to …";
assert.ok(platformEnumeration(text).includes("agents"));
});
test("matches the localized <平台> form", () => {
assert.ok(platformEnumeration("# <平台> = opencode · kiro").includes("kiro"));
});
test("returns an empty string when the document has no enumeration", () => {
assert.equal(platformEnumeration("bash -s -- <platform>\n"), "");
});
console.log("\nnamesPlatform");
test("matches a platform delimited by list separators", () => {
assert.ok(namesPlatform("opencode · bob · agents", "bob"));
});
test("does not match a platform buried in a hyphenated filename", () => {
assert.equal(namesPlatform("[setup](docs/bob-setup.md)", "bob"), false);
});
test("does not match a platform that is only a substring", () => {
assert.equal(namesPlatform("opencode · piper", "pi"), false);
});
console.log("\nparseInstallerPlatforms");
const INSTALLER_FIXTURE = [