diff --git a/brooks-lint/.claude-plugin/marketplace.json b/brooks-lint/.claude-plugin/marketplace.json
index fb7242c5..2365bdf0 100644
--- a/brooks-lint/.claude-plugin/marketplace.json
+++ b/brooks-lint/.claude-plugin/marketplace.json
@@ -9,7 +9,7 @@
{
"name": "brooks-lint",
"description": "AI code reviews grounded in twelve classic engineering books — decay risk diagnostics with book citations, severity labels, and six analysis modes (PR review, architecture audit, tech debt, test quality, health dashboard, full-sweep auto-fix)",
- "version": "1.4.3",
+ "version": "1.5.0",
"source": "./",
"author": {
"name": "hyhmrright",
diff --git a/brooks-lint/.claude-plugin/plugin.json b/brooks-lint/.claude-plugin/plugin.json
index 91840c4c..f5f12a18 100644
--- a/brooks-lint/.claude-plugin/plugin.json
+++ b/brooks-lint/.claude-plugin/plugin.json
@@ -1,7 +1,7 @@
{
"name": "brooks-lint",
"description": "AI code reviews grounded in twelve classic engineering books — decay risk diagnostics with book citations, severity labels, and six analysis modes (PR review, architecture audit, tech debt, test quality, health dashboard, full-sweep auto-fix)",
- "version": "1.4.3",
+ "version": "1.5.0",
"author": {
"name": "hyhmrright",
"email": "hyhmrright@gmail.com"
diff --git a/brooks-lint/.codex-plugin/plugin.json b/brooks-lint/.codex-plugin/plugin.json
index 75d6b288..a6d64025 100644
--- a/brooks-lint/.codex-plugin/plugin.json
+++ b/brooks-lint/.codex-plugin/plugin.json
@@ -1,6 +1,6 @@
{
"name": "brooks-lint",
- "version": "1.4.3",
+ "version": "1.5.0",
"description": "AI code reviews grounded in twelve classic engineering books — decay risk diagnostics with book citations, severity labels, and six analysis modes (PR review, architecture audit, tech debt, test quality, health dashboard, full-sweep auto-fix)",
"author": {
"name": "hyhmrright",
diff --git a/brooks-lint/.github/actions/brooks-lint/action.yml b/brooks-lint/.github/actions/brooks-lint/action.yml
index 73977da3..8bee998f 100644
--- a/brooks-lint/.github/actions/brooks-lint/action.yml
+++ b/brooks-lint/.github/actions/brooks-lint/action.yml
@@ -24,6 +24,9 @@ inputs:
model:
description: "Claude model to use"
default: "claude-sonnet-4-6"
+ api-base-url:
+ description: "Anthropic-compatible /v1/messages endpoint to call instead of api.anthropic.com (empty = Anthropic)"
+ default: ""
outputs:
score:
@@ -71,10 +74,17 @@ runs:
shell: bash
env:
ANTHROPIC_API_KEY: ${{ inputs.anthropic-api-key }}
+ API_BASE_URL: ${{ inputs.api-base-url }}
SARIF_FILE: ${{ inputs.sarif-file }}
MODE: ${{ inputs.mode }}
MODEL: ${{ inputs.model }}
run: |
+ # Exported only when the input is set: naming ANTHROPIC_BASE_URL in the
+ # env block above would blank out one inherited from the job env. The
+ # SDK reads the variable itself, so nothing downstream needs a flag.
+ if [ -n "$API_BASE_URL" ]; then
+ export ANTHROPIC_BASE_URL="$API_BASE_URL"
+ fi
sarif_arg=()
if [ -n "$SARIF_FILE" ]; then
sarif_arg=(--sarif-out "$SARIF_FILE")
diff --git a/brooks-lint/.github/workflows/star-history.yml b/brooks-lint/.github/workflows/star-history.yml
new file mode 100644
index 00000000..13d705de
--- /dev/null
+++ b/brooks-lint/.github/workflows/star-history.yml
@@ -0,0 +1,40 @@
+name: Star history
+
+# GitHub restricted the stargazers API to a repo's own admins and collaborators,
+# so no third-party service can chart this repo any more. GITHUB_TOKEN can read
+# it, so we regenerate the committed SVG here instead.
+on:
+ schedule:
+ - cron: "17 3 * * 1" # Mondays, 03:17 UTC
+ workflow_dispatch:
+
+concurrency:
+ group: star-history
+ cancel-in-progress: true
+
+jobs:
+ refresh:
+ runs-on: ubuntu-latest
+ timeout-minutes: 10
+ permissions:
+ contents: write
+ steps:
+ - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
+ - name: Set up Node.js
+ uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4
+ with:
+ node-version: 22
+ - name: Regenerate the chart
+ run: node scripts/gen-star-history.mjs
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Commit when the chart moved
+ run: |
+ if git diff --quiet -- assets/star-history.svg assets/star-history.json; then
+ echo "No change."
+ exit 0
+ fi
+ git config user.name "github-actions[bot]"
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
+ git commit -m "chore: refresh the star history chart" -- assets/star-history.svg assets/star-history.json
+ git push
diff --git a/brooks-lint/CHANGELOG.md b/brooks-lint/CHANGELOG.md
index 44e27723..6c9250e2 100644
--- a/brooks-lint/CHANGELOG.md
+++ b/brooks-lint/CHANGELOG.md
@@ -2,6 +2,28 @@
All notable changes to brooks-lint are documented here.
+## [1.5.0] - 2026-08-14
+
+### Added
+
+- **DeepSeek Harness (`dsh`) support** — DeepSeek AI's open-source agent harness
+ loads standard Agent Skills through `packages/skill/skill-filesystem`, so all
+ six modes run with no conversion. `./scripts/install.sh dsh` installs into
+ `$DSH_HOME/skills` (default `~/.dsh/skills`); `--project` targets
+ `./.dsh/skills`. dsh also scans `~/.agents/skills`, so the existing
+ vendor-neutral `install.sh agents` install already covered it. New guide at
+ [`docs/dsh-setup.md`](docs/dsh-setup.md), with the platform added to the README
+ install table in all six languages and to `docs/getting-started.md`.
+
+ Three details of dsh's loader matter and are documented in the guide: discovery
+ is one level deep (`
-
+
@@ -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 (8 plataformas más) y la
+una puntuación de salud de 0 a 100. Las opciones completas de instalación (9 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
+### Cualquier otra plataforma — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
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 --
-
+
@@ -78,7 +78,7 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
`/brooks-health`、`/brooks-sweep`([それぞれの機能](#スラッシュコマンド))。
すべての指摘は **症状 → 根源 → 結果 → 対策** の形式で、書籍の出典と 0〜100 の健全性スコアとともに
-返されます。完全なインストール方法(さらに 8 つのプラットフォーム)と CI/CD のセットアップは
+返されます。完全なインストール方法(さらに 9 つのプラットフォーム)と 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
+### その他すべてのプラットフォーム — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
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 --
-
+
@@ -78,7 +78,7 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
`/brooks-sweep`([각각 하는 일](#슬래시-명령)).
모든 진단은 도서 출처와 0–100 건강 점수와 함께 **증상 → 근원 → 결과 → 처방** 형태로 돌아옵니다. 전체
-설치 옵션(추가 8개 플랫폼)과 CI/CD 설정은 [아래](#설치)를 참고하세요.
+설치 옵션(추가 9개 플랫폼)과 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
+### 그 밖의 모든 플랫폼 — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
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 --
-
+
@@ -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
-0–100 Health Score. Full install options (8 more platforms) and CI/CD setup are [below](#installation).
+0–100 Health Score. Full install options (9 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
+### Every other platform — OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
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 --
-
+
@@ -76,7 +76,7 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
装好后直接开口("审查这个 PR""审计架构"),或运行六个命令之一——`/brooks-review`、`/brooks-audit`、
`/brooks-debt`、`/brooks-test`、`/brooks-health`、`/brooks-sweep`([各自的作用](#斜杠命令))。
-每条诊断都以 **症状 → 根源 → 后果 → 对策** 返回,附书目出处和 0–100 健康分。完整安装方式(另外 8 个
+每条诊断都以 **症状 → 根源 → 后果 → 对策** 返回,附书目出处和 0–100 健康分。完整安装方式(另外 9 个
平台)和 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
+### 其它所有平台——OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
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 · gemini · codex · agents
+# <平台> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · agents
```
安装器会把技能**扁平**拷进该平台对应的文件夹,让共享框架(`../_shared/`)始终正确解析——你不可能装错布局。
@@ -294,11 +294,12 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
| GitHub Copilot | `.github/skills`(`--project`) | `.claude/skills`、`AGENTS.md` | [配置](docs/copilot-setup.md) |
| 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) |
-Kiro 与 Factory Droid 还会自动注册 `/brooks-review`。不熟悉 skills、或用的是上面没列出的 agent?
-见 **[docs/getting-started.md](docs/getting-started.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?它几乎肯定以同样方式工作——告诉我们,我们会补上。
@@ -316,9 +317,10 @@ Kiro 与 Factory Droid 还会自动注册 `/brooks-review`。不熟悉 skills、
**各平台语法。** Claude Code 也接受带命名空间的完整形式 `/brooks-lint:brooks-review`——短命令由
session-start 钩子在首次会话启动时自动安装。Codex CLI 用 `$brooks-review`。Gemini CLI 直接用上表。
-OpenCode、Cursor、Antigravity、pi 依据每个技能的 `description` 自动调用 Agent Skills,直接提问即可
-("审查这个 PR"、"我们最糟的技术债在哪");需要显式调用时用各平台自己的语法(pi 把每个技能注册为
-`/skill:brooks-review`)。在所有平台上,当你讨论代码质量、架构或测试健康时,这些技能也会自动触发。
+OpenCode、Cursor、Antigravity、pi、DeepSeek Harness 依据每个技能的 `description` 自动调用 Agent
+Skills,直接提问即可("审查这个 PR"、"我们最糟的技术债在哪");需要显式调用时用各平台自己的语法
+(pi 把每个技能注册为 `/skill:brooks-review`;dsh 直接用上表,可从 `/` 菜单选或手打)。在所有平台上,
+当你讨论代码质量、架构或测试健康时,这些技能也会自动触发。
> PR 审查会自动包含一个轻量的第 7 步快速测试检查(对纯文档 diff 会跳过)。需要完整的测试审查请用
> `/brooks-test`;需要某个维度的深度诊断时,请用该维度的专项技能,而不是 `/brooks-health`。
@@ -437,6 +439,18 @@ jobs:
`fail-on-regression` 读取 `.brooks-lint-history.json`,因此提交该文件即可强制"无新增回归"。设置 `sarif-file` 会让诊断直接显示在 PR 的 **Files changed** 标签页,并需要 job 具备 `security-events: write` 权限。
+**自定义 API 端点。** `api-base-url` 让 action 改为调用任意 Anthropic 兼容的 `/v1/messages` 端点 —— 自建代理、LLM 网关或区域镜像 —— 而不是 `api.anthropic.com`。把该端点的密钥作为 `anthropic-api-key` 传入,把它期望的模型 id 作为 `model` 传入:
+
+```yaml
+ with:
+ mode: review
+ api-base-url: https://your-gateway.example.com
+ anthropic-api-key: ${{ secrets.GATEWAY_API_KEY }}
+ model: gateway-model-id
+```
+
+brooks-lint 会把你的 diff 发送到这里填写的主机,因此只应指向你信任其接触源码的一方。自己运行 `scripts/ci-review.mjs` 完全不需要参数 —— Anthropic SDK 会直接读取 `ANTHROPIC_BASE_URL`。
+
**成本:** 每次 PR 运行约 $0.05–0.15,取决于 diff 大小和模型。建议仅在 `pull_request` 事件上运行。
## 路线图
@@ -472,7 +486,7 @@ MIT License——详见 [LICENSE](LICENSE)。
## Star 历史
-[](https://star-history.com/#hyhmrright/brooks-lint&Date)
+[](https://github.com/hyhmrright/brooks-lint/stargazers)
---
diff --git a/brooks-lint/README.zh-TW.md b/brooks-lint/README.zh-TW.md
index 123a0d4e..a18df48c 100644
--- a/brooks-lint/README.zh-TW.md
+++ b/brooks-lint/README.zh-TW.md
@@ -27,7 +27,7 @@
-
+
@@ -76,7 +76,7 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
裝好後直接開口(「審查這個 PR」「稽核架構」),或執行六個命令之一——`/brooks-review`、`/brooks-audit`、
`/brooks-debt`、`/brooks-test`、`/brooks-health`、`/brooks-sweep`([各自的作用](#斜線命令))。
-每條診斷都以 **症狀 → 根源 → 後果 → 對策** 回傳,附書目出處和 0–100 健康分。完整安裝方式(另外 8 個
+每條診斷都以 **症狀 → 根源 → 後果 → 對策** 回傳,附書目出處和 0–100 健康分。完整安裝方式(另外 9 個
平台)和 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
+### 其他所有平台——OpenCode · Cursor · Windsurf · Antigravity · pi · Copilot · Kiro · Factory Droid · DeepSeek Harness
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 · gemini · codex · agents
+# <平台> = opencode · cursor · windsurf · antigravity · pi · kiro · copilot · droid · dsh · gemini · codex · agents
```
安裝器會把技能**扁平**複製進該平台對應的資料夾,讓共享框架(`../_shared/`)始終正確解析——你不可能裝錯佈局。
@@ -294,11 +294,12 @@ curl -fsSL https://raw.githubusercontent.com/hyhmrright/brooks-lint/main/scripts
| GitHub Copilot | `.github/skills`(`--project`) | `.claude/skills`、`AGENTS.md` | [設定](docs/copilot-setup.md) |
| 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) |
-Kiro 與 Factory Droid 還會自動註冊 `/brooks-review`。不熟悉 skills、或用的是上面沒列出的 agent?
-見 **[docs/getting-started.md](docs/getting-started.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?它幾乎肯定以同樣方式運作——告訴我們,我們會補上。
@@ -316,9 +317,10 @@ Kiro 與 Factory Droid 還會自動註冊 `/brooks-review`。不熟悉 skills、
**各平台語法。** Claude Code 也接受帶命名空間的完整形式 `/brooks-lint:brooks-review`——短命令由
session-start 鉤子在首次工作階段啟動時自動安裝。Codex CLI 用 `$brooks-review`。Gemini CLI 直接用上表。
-OpenCode、Cursor、Antigravity、pi 依據每個技能的 `description` 自動呼叫 Agent Skills,直接提問即可
-(「審查這個 PR」、「我們最糟的技術債在哪」);需要顯式呼叫時用各平台自己的語法(pi 把每個技能註冊為
-`/skill:brooks-review`)。在所有平台上,當你討論程式碼品質、架構或測試健康時,這些技能也會自動觸發。
+OpenCode、Cursor、Antigravity、pi、DeepSeek Harness 依據每個技能的 `description` 自動呼叫 Agent
+Skills,直接提問即可(「審查這個 PR」、「我們最糟的技術債在哪」);需要顯式呼叫時用各平台自己的語法
+(pi 把每個技能註冊為 `/skill:brooks-review`;dsh 直接用上表,可從 `/` 選單挑或手打)。在所有平台上,
+當你討論程式碼品質、架構或測試健康時,這些技能也會自動觸發。
> PR 審查會自動包含一個輕量的第 7 步快速測試檢查(對純文件 diff 會跳過)。需要完整的測試稽核請用
> `/brooks-test`;需要某個維度的深度診斷時,請用該維度的專項技能,而不是 `/brooks-health`。
@@ -437,6 +439,18 @@ jobs:
`fail-on-regression` 讀取 `.brooks-lint-history.json`,因此提交該檔案即可強制「無新增回歸」。設定 `sarif-file` 會讓診斷直接顯示在 PR 的 **Files changed** 分頁,並需要 job 具備 `security-events: write` 權限。
+**自訂 API 端點。** `api-base-url` 讓 action 改為呼叫任意 Anthropic 相容的 `/v1/messages` 端點 —— 自建代理、LLM 閘道或區域鏡像 —— 而不是 `api.anthropic.com`。把該端點的金鑰作為 `anthropic-api-key` 傳入,把它預期的模型 id 作為 `model` 傳入:
+
+```yaml
+ with:
+ mode: review
+ api-base-url: https://your-gateway.example.com
+ anthropic-api-key: ${{ secrets.GATEWAY_API_KEY }}
+ model: gateway-model-id
+```
+
+brooks-lint 會把你的 diff 傳送到這裡填寫的主機,因此只應指向你信任其接觸原始碼的一方。自己執行 `scripts/ci-review.mjs` 完全不需要參數 —— Anthropic SDK 會直接讀取 `ANTHROPIC_BASE_URL`。
+
**成本:** 每次 PR 執行約 $0.05–0.15,取決於 diff 大小和模型。建議僅在 `pull_request` 事件上執行。
## 路線圖
@@ -472,7 +486,7 @@ MIT License——詳見 [LICENSE](LICENSE)。
## Star 歷史
-[](https://star-history.com/#hyhmrright/brooks-lint&Date)
+[](https://github.com/hyhmrright/brooks-lint/stargazers)
---
diff --git a/brooks-lint/SOURCE.md b/brooks-lint/SOURCE.md
index cf23c268..ab5ece00 100644
--- a/brooks-lint/SOURCE.md
+++ b/brooks-lint/SOURCE.md
@@ -1,8 +1,8 @@
# Source
- Repo: https://github.com/hyhmrright/brooks-lint
-- Ref: 814174cd5b340bc0d8b0161b6d8288980428a44d
+- Ref: e9acf5c6100d2d786ed58f0fb7b9566a6218926a
- Remove-Paths:
-- Snapshot: 2026-08-12
+- Snapshot: 2026-08-24
- Sync-Mode: copy_skill_dirs
- Notes: vendored into playbook branch thirdparty/skill
diff --git a/brooks-lint/assets/star-history.json b/brooks-lint/assets/star-history.json
new file mode 100644
index 00000000..6fd8c553
--- /dev/null
+++ b/brooks-lint/assets/star-history.json
@@ -0,0 +1,1398 @@
+{
+ "repo": "hyhmrright/brooks-lint",
+ "starredAt": [
+ "2026-03-27T13:19:06Z",
+ "2026-03-28T01:08:24Z",
+ "2026-03-28T13:27:36Z",
+ "2026-03-28T15:36:18Z",
+ "2026-03-29T02:57:00Z",
+ "2026-03-31T09:52:26Z",
+ "2026-03-31T13:37:15Z",
+ "2026-04-01T01:49:10Z",
+ "2026-04-01T02:55:57Z",
+ "2026-04-02T01:43:43Z",
+ "2026-04-02T09:41:26Z",
+ "2026-04-02T15:14:20Z",
+ "2026-04-03T09:27:23Z",
+ "2026-04-03T09:36:36Z",
+ "2026-04-03T11:50:57Z",
+ "2026-04-03T18:20:42Z",
+ "2026-04-05T18:44:36Z",
+ "2026-04-06T05:43:40Z",
+ "2026-04-06T07:25:08Z",
+ "2026-04-07T05:45:43Z",
+ "2026-04-07T06:42:39Z",
+ "2026-04-08T06:35:35Z",
+ "2026-04-08T13:33:05Z",
+ "2026-04-08T16:58:05Z",
+ "2026-04-09T02:31:24Z",
+ "2026-04-09T03:03:07Z",
+ "2026-04-10T07:25:09Z",
+ "2026-04-10T10:18:53Z",
+ "2026-04-13T03:14:44Z",
+ "2026-04-13T13:02:36Z",
+ "2026-04-15T12:09:04Z",
+ "2026-04-16T03:50:11Z",
+ "2026-04-16T07:35:33Z",
+ "2026-04-16T08:35:56Z",
+ "2026-04-16T16:28:37Z",
+ "2026-04-18T01:07:28Z",
+ "2026-04-18T09:33:08Z",
+ "2026-04-18T13:43:17Z",
+ "2026-04-18T17:18:03Z",
+ "2026-04-19T12:20:11Z",
+ "2026-04-19T22:49:33Z",
+ "2026-04-20T03:01:30Z",
+ "2026-04-20T11:58:02Z",
+ "2026-04-21T03:28:54Z",
+ "2026-04-21T14:28:20Z",
+ "2026-04-21T16:32:36Z",
+ "2026-04-22T04:09:22Z",
+ "2026-04-22T07:37:08Z",
+ "2026-04-22T08:54:11Z",
+ "2026-04-23T04:33:43Z",
+ "2026-04-23T08:54:47Z",
+ "2026-04-23T10:35:24Z",
+ "2026-04-23T12:38:05Z",
+ "2026-04-23T14:21:25Z",
+ "2026-04-24T00:46:23Z",
+ "2026-04-24T01:16:57Z",
+ "2026-04-24T01:35:47Z",
+ "2026-04-24T12:06:40Z",
+ "2026-04-25T10:37:12Z",
+ "2026-04-25T15:43:58Z",
+ "2026-04-25T15:49:44Z",
+ "2026-04-26T00:51:24Z",
+ "2026-04-26T05:23:02Z",
+ "2026-04-26T12:19:16Z",
+ "2026-04-26T21:37:01Z",
+ "2026-04-26T22:21:08Z",
+ "2026-04-26T23:40:11Z",
+ "2026-04-27T01:39:05Z",
+ "2026-04-27T12:30:27Z",
+ "2026-04-27T14:30:12Z",
+ "2026-04-27T17:06:30Z",
+ "2026-04-27T17:57:45Z",
+ "2026-04-27T21:36:52Z",
+ "2026-04-27T22:38:49Z",
+ "2026-04-28T02:29:38Z",
+ "2026-04-28T05:19:11Z",
+ "2026-04-28T08:21:36Z",
+ "2026-04-28T14:22:52Z",
+ "2026-04-28T15:13:02Z",
+ "2026-04-28T20:39:42Z",
+ "2026-04-29T01:18:16Z",
+ "2026-04-29T03:08:10Z",
+ "2026-04-29T12:36:16Z",
+ "2026-04-29T20:32:59Z",
+ "2026-04-29T21:02:22Z",
+ "2026-04-29T23:32:38Z",
+ "2026-04-30T02:32:27Z",
+ "2026-04-30T05:56:21Z",
+ "2026-04-30T06:18:27Z",
+ "2026-04-30T08:14:10Z",
+ "2026-04-30T09:17:56Z",
+ "2026-04-30T13:48:50Z",
+ "2026-04-30T14:46:42Z",
+ "2026-05-01T01:06:56Z",
+ "2026-05-01T10:39:07Z",
+ "2026-05-02T14:45:26Z",
+ "2026-05-03T17:20:22Z",
+ "2026-05-03T18:37:50Z",
+ "2026-05-03T18:57:17Z",
+ "2026-05-03T19:58:38Z",
+ "2026-05-03T22:32:52Z",
+ "2026-05-04T13:53:56Z",
+ "2026-05-05T04:36:46Z",
+ "2026-05-05T05:43:17Z",
+ "2026-05-06T01:09:41Z",
+ "2026-05-06T04:36:44Z",
+ "2026-05-06T05:24:10Z",
+ "2026-05-06T07:14:44Z",
+ "2026-05-06T10:58:06Z",
+ "2026-05-06T12:09:13Z",
+ "2026-05-06T13:34:29Z",
+ "2026-05-07T01:57:16Z",
+ "2026-05-07T07:06:16Z",
+ "2026-05-07T13:46:52Z",
+ "2026-05-08T00:20:27Z",
+ "2026-05-08T09:44:44Z",
+ "2026-05-09T10:19:01Z",
+ "2026-05-09T15:14:28Z",
+ "2026-05-09T15:38:18Z",
+ "2026-05-10T01:48:03Z",
+ "2026-05-10T19:20:12Z",
+ "2026-05-11T06:48:27Z",
+ "2026-05-11T11:56:29Z",
+ "2026-05-12T15:13:51Z",
+ "2026-05-13T00:50:56Z",
+ "2026-05-13T01:13:57Z",
+ "2026-05-13T04:22:39Z",
+ "2026-05-13T11:56:48Z",
+ "2026-05-13T21:16:47Z",
+ "2026-05-14T04:04:04Z",
+ "2026-05-14T04:46:40Z",
+ "2026-05-14T09:23:49Z",
+ "2026-05-14T10:02:26Z",
+ "2026-05-14T23:30:30Z",
+ "2026-05-15T10:07:56Z",
+ "2026-05-15T16:59:59Z",
+ "2026-05-16T01:16:11Z",
+ "2026-05-16T06:30:16Z",
+ "2026-05-16T08:47:10Z",
+ "2026-05-16T14:09:22Z",
+ "2026-05-17T10:42:11Z",
+ "2026-05-17T17:29:47Z",
+ "2026-05-18T00:50:19Z",
+ "2026-05-18T11:57:24Z",
+ "2026-05-18T18:05:59Z",
+ "2026-05-18T18:34:27Z",
+ "2026-05-19T02:55:00Z",
+ "2026-05-19T03:23:28Z",
+ "2026-05-19T14:18:07Z",
+ "2026-05-19T14:49:30Z",
+ "2026-05-19T14:56:51Z",
+ "2026-05-20T14:55:37Z",
+ "2026-05-20T19:12:17Z",
+ "2026-05-21T02:51:05Z",
+ "2026-05-21T04:02:05Z",
+ "2026-05-21T06:40:26Z",
+ "2026-05-21T20:11:23Z",
+ "2026-05-21T23:01:41Z",
+ "2026-05-22T01:43:51Z",
+ "2026-05-22T07:31:27Z",
+ "2026-05-24T03:36:07Z",
+ "2026-05-24T10:24:49Z",
+ "2026-05-24T12:15:55Z",
+ "2026-05-25T00:23:19Z",
+ "2026-05-25T00:23:46Z",
+ "2026-05-25T04:34:44Z",
+ "2026-05-25T05:07:12Z",
+ "2026-05-25T20:42:56Z",
+ "2026-05-26T01:41:04Z",
+ "2026-05-26T06:37:12Z",
+ "2026-05-26T07:49:22Z",
+ "2026-05-26T13:39:23Z",
+ "2026-05-26T19:31:06Z",
+ "2026-05-27T01:52:43Z",
+ "2026-05-27T03:03:26Z",
+ "2026-05-27T07:01:14Z",
+ "2026-05-28T02:59:49Z",
+ "2026-05-28T09:01:19Z",
+ "2026-05-28T13:01:35Z",
+ "2026-05-29T14:18:24Z",
+ "2026-05-29T20:19:44Z",
+ "2026-05-30T09:14:29Z",
+ "2026-05-31T03:19:55Z",
+ "2026-06-01T12:47:11Z",
+ "2026-06-01T16:06:44Z",
+ "2026-06-01T18:13:01Z",
+ "2026-06-01T18:40:49Z",
+ "2026-06-02T01:38:32Z",
+ "2026-06-02T18:10:46Z",
+ "2026-06-03T03:51:49Z",
+ "2026-06-05T08:58:54Z",
+ "2026-06-06T03:11:07Z",
+ "2026-06-06T04:02:50Z",
+ "2026-06-06T14:53:20Z",
+ "2026-06-06T20:26:36Z",
+ "2026-06-07T05:31:32Z",
+ "2026-06-07T05:40:38Z",
+ "2026-06-07T05:47:48Z",
+ "2026-06-07T05:59:54Z",
+ "2026-06-07T06:06:27Z",
+ "2026-06-07T06:13:44Z",
+ "2026-06-07T06:14:09Z",
+ "2026-06-07T06:17:51Z",
+ "2026-06-07T06:22:14Z",
+ "2026-06-07T06:26:15Z",
+ "2026-06-07T06:29:27Z",
+ "2026-06-07T06:31:46Z",
+ "2026-06-07T06:33:03Z",
+ "2026-06-07T06:34:34Z",
+ "2026-06-07T06:34:40Z",
+ "2026-06-07T06:46:33Z",
+ "2026-06-07T06:47:50Z",
+ "2026-06-07T06:48:44Z",
+ "2026-06-07T06:49:53Z",
+ "2026-06-07T06:54:33Z",
+ "2026-06-07T06:57:01Z",
+ "2026-06-07T06:57:54Z",
+ "2026-06-07T06:58:28Z",
+ "2026-06-07T06:59:23Z",
+ "2026-06-07T06:59:35Z",
+ "2026-06-07T07:03:16Z",
+ "2026-06-07T07:04:45Z",
+ "2026-06-07T07:05:06Z",
+ "2026-06-07T07:09:54Z",
+ "2026-06-07T07:10:11Z",
+ "2026-06-07T07:11:58Z",
+ "2026-06-07T07:12:08Z",
+ "2026-06-07T07:13:56Z",
+ "2026-06-07T07:15:10Z",
+ "2026-06-07T07:15:51Z",
+ "2026-06-07T07:18:51Z",
+ "2026-06-07T07:19:23Z",
+ "2026-06-07T07:24:08Z",
+ "2026-06-07T07:25:51Z",
+ "2026-06-07T07:26:56Z",
+ "2026-06-07T07:28:31Z",
+ "2026-06-07T07:28:32Z",
+ "2026-06-07T07:28:48Z",
+ "2026-06-07T07:30:29Z",
+ "2026-06-07T07:31:28Z",
+ "2026-06-07T07:33:45Z",
+ "2026-06-07T07:36:11Z",
+ "2026-06-07T07:36:45Z",
+ "2026-06-07T07:37:48Z",
+ "2026-06-07T07:40:56Z",
+ "2026-06-07T07:44:05Z",
+ "2026-06-07T07:44:07Z",
+ "2026-06-07T07:45:28Z",
+ "2026-06-07T07:46:08Z",
+ "2026-06-07T07:46:12Z",
+ "2026-06-07T07:48:28Z",
+ "2026-06-07T07:48:36Z",
+ "2026-06-07T07:51:58Z",
+ "2026-06-07T07:52:21Z",
+ "2026-06-07T07:53:47Z",
+ "2026-06-07T07:58:01Z",
+ "2026-06-07T08:00:21Z",
+ "2026-06-07T08:02:31Z",
+ "2026-06-07T08:02:35Z",
+ "2026-06-07T08:03:51Z",
+ "2026-06-07T08:08:09Z",
+ "2026-06-07T08:09:32Z",
+ "2026-06-07T08:14:01Z",
+ "2026-06-07T08:17:09Z",
+ "2026-06-07T08:22:58Z",
+ "2026-06-07T08:24:12Z",
+ "2026-06-07T08:26:15Z",
+ "2026-06-07T08:27:33Z",
+ "2026-06-07T08:27:40Z",
+ "2026-06-07T08:30:16Z",
+ "2026-06-07T08:31:50Z",
+ "2026-06-07T08:33:33Z",
+ "2026-06-07T08:37:54Z",
+ "2026-06-07T08:40:59Z",
+ "2026-06-07T08:41:24Z",
+ "2026-06-07T08:42:09Z",
+ "2026-06-07T08:42:20Z",
+ "2026-06-07T08:42:57Z",
+ "2026-06-07T08:45:17Z",
+ "2026-06-07T08:45:48Z",
+ "2026-06-07T08:47:24Z",
+ "2026-06-07T08:48:06Z",
+ "2026-06-07T08:48:57Z",
+ "2026-06-07T08:49:16Z",
+ "2026-06-07T08:49:49Z",
+ "2026-06-07T08:50:48Z",
+ "2026-06-07T08:52:48Z",
+ "2026-06-07T08:56:37Z",
+ "2026-06-07T08:57:38Z",
+ "2026-06-07T08:59:16Z",
+ "2026-06-07T09:03:52Z",
+ "2026-06-07T09:05:57Z",
+ "2026-06-07T09:07:06Z",
+ "2026-06-07T09:09:42Z",
+ "2026-06-07T09:11:21Z",
+ "2026-06-07T09:16:07Z",
+ "2026-06-07T09:22:32Z",
+ "2026-06-07T09:25:39Z",
+ "2026-06-07T09:28:19Z",
+ "2026-06-07T09:28:27Z",
+ "2026-06-07T09:28:44Z",
+ "2026-06-07T09:31:00Z",
+ "2026-06-07T09:45:22Z",
+ "2026-06-07T09:47:55Z",
+ "2026-06-07T09:50:31Z",
+ "2026-06-07T09:52:36Z",
+ "2026-06-07T09:58:31Z",
+ "2026-06-07T09:59:21Z",
+ "2026-06-07T10:06:45Z",
+ "2026-06-07T10:08:43Z",
+ "2026-06-07T10:08:44Z",
+ "2026-06-07T10:13:47Z",
+ "2026-06-07T10:13:58Z",
+ "2026-06-07T10:18:48Z",
+ "2026-06-07T10:20:54Z",
+ "2026-06-07T10:22:24Z",
+ "2026-06-07T10:26:41Z",
+ "2026-06-07T10:26:57Z",
+ "2026-06-07T10:28:20Z",
+ "2026-06-07T10:31:46Z",
+ "2026-06-07T10:36:06Z",
+ "2026-06-07T10:36:34Z",
+ "2026-06-07T10:37:18Z",
+ "2026-06-07T10:37:22Z",
+ "2026-06-07T10:39:35Z",
+ "2026-06-07T10:41:00Z",
+ "2026-06-07T10:43:07Z",
+ "2026-06-07T10:44:16Z",
+ "2026-06-07T10:47:52Z",
+ "2026-06-07T10:48:25Z",
+ "2026-06-07T10:49:09Z",
+ "2026-06-07T10:50:11Z",
+ "2026-06-07T10:52:34Z",
+ "2026-06-07T10:52:36Z",
+ "2026-06-07T10:52:36Z",
+ "2026-06-07T10:56:08Z",
+ "2026-06-07T10:57:56Z",
+ "2026-06-07T10:59:51Z",
+ "2026-06-07T11:04:31Z",
+ "2026-06-07T11:08:08Z",
+ "2026-06-07T11:09:40Z",
+ "2026-06-07T11:10:18Z",
+ "2026-06-07T11:14:20Z",
+ "2026-06-07T11:15:45Z",
+ "2026-06-07T11:17:33Z",
+ "2026-06-07T11:19:38Z",
+ "2026-06-07T11:19:55Z",
+ "2026-06-07T11:20:48Z",
+ "2026-06-07T11:25:07Z",
+ "2026-06-07T11:26:12Z",
+ "2026-06-07T11:28:55Z",
+ "2026-06-07T11:30:47Z",
+ "2026-06-07T11:32:51Z",
+ "2026-06-07T11:32:51Z",
+ "2026-06-07T11:33:02Z",
+ "2026-06-07T11:33:27Z",
+ "2026-06-07T11:34:38Z",
+ "2026-06-07T11:40:32Z",
+ "2026-06-07T11:40:49Z",
+ "2026-06-07T11:42:27Z",
+ "2026-06-07T11:44:44Z",
+ "2026-06-07T11:44:53Z",
+ "2026-06-07T11:47:45Z",
+ "2026-06-07T11:51:38Z",
+ "2026-06-07T11:54:25Z",
+ "2026-06-07T11:55:47Z",
+ "2026-06-07T11:55:49Z",
+ "2026-06-07T11:57:42Z",
+ "2026-06-07T11:58:07Z",
+ "2026-06-07T11:58:37Z",
+ "2026-06-07T11:59:12Z",
+ "2026-06-07T11:59:57Z",
+ "2026-06-07T12:05:01Z",
+ "2026-06-07T12:06:34Z",
+ "2026-06-07T12:07:08Z",
+ "2026-06-07T12:08:44Z",
+ "2026-06-07T12:10:07Z",
+ "2026-06-07T12:10:12Z",
+ "2026-06-07T12:10:20Z",
+ "2026-06-07T12:11:45Z",
+ "2026-06-07T12:12:47Z",
+ "2026-06-07T12:14:03Z",
+ "2026-06-07T12:14:11Z",
+ "2026-06-07T12:15:24Z",
+ "2026-06-07T12:15:48Z",
+ "2026-06-07T12:17:11Z",
+ "2026-06-07T12:17:20Z",
+ "2026-06-07T12:17:36Z",
+ "2026-06-07T12:18:37Z",
+ "2026-06-07T12:19:13Z",
+ "2026-06-07T12:20:49Z",
+ "2026-06-07T12:22:30Z",
+ "2026-06-07T12:22:58Z",
+ "2026-06-07T12:24:38Z",
+ "2026-06-07T12:25:30Z",
+ "2026-06-07T12:25:59Z",
+ "2026-06-07T12:26:37Z",
+ "2026-06-07T12:27:10Z",
+ "2026-06-07T12:27:23Z",
+ "2026-06-07T12:28:10Z",
+ "2026-06-07T12:28:19Z",
+ "2026-06-07T12:30:50Z",
+ "2026-06-07T12:32:03Z",
+ "2026-06-07T12:32:15Z",
+ "2026-06-07T12:33:22Z",
+ "2026-06-07T12:33:32Z",
+ "2026-06-07T12:34:43Z",
+ "2026-06-07T12:35:37Z",
+ "2026-06-07T12:36:40Z",
+ "2026-06-07T12:44:25Z",
+ "2026-06-07T12:45:39Z",
+ "2026-06-07T12:45:53Z",
+ "2026-06-07T12:46:45Z",
+ "2026-06-07T12:47:00Z",
+ "2026-06-07T12:47:23Z",
+ "2026-06-07T12:49:01Z",
+ "2026-06-07T12:50:13Z",
+ "2026-06-07T12:51:40Z",
+ "2026-06-07T12:52:38Z",
+ "2026-06-07T12:54:26Z",
+ "2026-06-07T12:56:34Z",
+ "2026-06-07T12:56:45Z",
+ "2026-06-07T13:00:43Z",
+ "2026-06-07T13:02:25Z",
+ "2026-06-07T13:02:51Z",
+ "2026-06-07T13:07:13Z",
+ "2026-06-07T13:08:53Z",
+ "2026-06-07T13:11:51Z",
+ "2026-06-07T13:11:55Z",
+ "2026-06-07T13:12:19Z",
+ "2026-06-07T13:13:00Z",
+ "2026-06-07T13:14:41Z",
+ "2026-06-07T13:18:26Z",
+ "2026-06-07T13:20:41Z",
+ "2026-06-07T13:21:17Z",
+ "2026-06-07T13:21:23Z",
+ "2026-06-07T13:23:47Z",
+ "2026-06-07T13:25:19Z",
+ "2026-06-07T13:26:10Z",
+ "2026-06-07T13:26:19Z",
+ "2026-06-07T13:28:05Z",
+ "2026-06-07T13:31:41Z",
+ "2026-06-07T13:34:54Z",
+ "2026-06-07T13:35:01Z",
+ "2026-06-07T13:35:01Z",
+ "2026-06-07T13:43:10Z",
+ "2026-06-07T13:52:36Z",
+ "2026-06-07T13:53:16Z",
+ "2026-06-07T13:54:02Z",
+ "2026-06-07T13:54:48Z",
+ "2026-06-07T13:54:58Z",
+ "2026-06-07T13:57:23Z",
+ "2026-06-07T14:04:02Z",
+ "2026-06-07T14:09:23Z",
+ "2026-06-07T14:09:53Z",
+ "2026-06-07T14:12:20Z",
+ "2026-06-07T14:15:35Z",
+ "2026-06-07T14:15:39Z",
+ "2026-06-07T14:17:13Z",
+ "2026-06-07T14:17:33Z",
+ "2026-06-07T14:18:30Z",
+ "2026-06-07T14:19:12Z",
+ "2026-06-07T14:20:30Z",
+ "2026-06-07T14:20:41Z",
+ "2026-06-07T14:21:46Z",
+ "2026-06-07T14:22:36Z",
+ "2026-06-07T14:24:17Z",
+ "2026-06-07T14:24:28Z",
+ "2026-06-07T14:24:51Z",
+ "2026-06-07T14:27:16Z",
+ "2026-06-07T14:27:34Z",
+ "2026-06-07T14:30:21Z",
+ "2026-06-07T14:30:44Z",
+ "2026-06-07T14:34:37Z",
+ "2026-06-07T14:38:16Z",
+ "2026-06-07T14:38:24Z",
+ "2026-06-07T14:38:52Z",
+ "2026-06-07T14:41:34Z",
+ "2026-06-07T14:41:53Z",
+ "2026-06-07T14:42:01Z",
+ "2026-06-07T14:44:10Z",
+ "2026-06-07T14:47:27Z",
+ "2026-06-07T14:50:13Z",
+ "2026-06-07T14:50:40Z",
+ "2026-06-07T14:52:47Z",
+ "2026-06-07T14:53:41Z",
+ "2026-06-07T14:57:30Z",
+ "2026-06-07T14:58:06Z",
+ "2026-06-07T15:00:50Z",
+ "2026-06-07T15:04:49Z",
+ "2026-06-07T15:06:55Z",
+ "2026-06-07T15:07:04Z",
+ "2026-06-07T15:08:54Z",
+ "2026-06-07T15:09:19Z",
+ "2026-06-07T15:11:40Z",
+ "2026-06-07T15:11:41Z",
+ "2026-06-07T15:12:02Z",
+ "2026-06-07T15:17:34Z",
+ "2026-06-07T15:18:52Z",
+ "2026-06-07T15:23:45Z",
+ "2026-06-07T15:26:39Z",
+ "2026-06-07T15:29:40Z",
+ "2026-06-07T15:29:53Z",
+ "2026-06-07T15:30:04Z",
+ "2026-06-07T15:32:56Z",
+ "2026-06-07T15:33:48Z",
+ "2026-06-07T15:36:58Z",
+ "2026-06-07T15:37:39Z",
+ "2026-06-07T15:41:25Z",
+ "2026-06-07T15:41:25Z",
+ "2026-06-07T15:41:27Z",
+ "2026-06-07T15:41:51Z",
+ "2026-06-07T15:43:08Z",
+ "2026-06-07T15:44:17Z",
+ "2026-06-07T15:46:40Z",
+ "2026-06-07T15:50:56Z",
+ "2026-06-07T15:51:21Z",
+ "2026-06-07T15:53:05Z",
+ "2026-06-07T15:54:30Z",
+ "2026-06-07T15:55:49Z",
+ "2026-06-07T15:57:26Z",
+ "2026-06-07T15:58:39Z",
+ "2026-06-07T16:00:05Z",
+ "2026-06-07T16:03:03Z",
+ "2026-06-07T16:04:48Z",
+ "2026-06-07T16:05:04Z",
+ "2026-06-07T16:08:02Z",
+ "2026-06-07T16:08:15Z",
+ "2026-06-07T16:08:35Z",
+ "2026-06-07T16:10:04Z",
+ "2026-06-07T16:10:05Z",
+ "2026-06-07T16:11:59Z",
+ "2026-06-07T16:12:16Z",
+ "2026-06-07T16:13:09Z",
+ "2026-06-07T16:14:20Z",
+ "2026-06-07T16:14:47Z",
+ "2026-06-07T16:17:28Z",
+ "2026-06-07T16:17:29Z",
+ "2026-06-07T16:19:53Z",
+ "2026-06-07T16:20:53Z",
+ "2026-06-07T16:20:53Z",
+ "2026-06-07T16:21:56Z",
+ "2026-06-07T16:23:16Z",
+ "2026-06-07T16:25:34Z",
+ "2026-06-07T16:26:49Z",
+ "2026-06-07T16:26:52Z",
+ "2026-06-07T16:28:46Z",
+ "2026-06-07T16:29:35Z",
+ "2026-06-07T16:31:13Z",
+ "2026-06-07T16:32:26Z",
+ "2026-06-07T16:32:43Z",
+ "2026-06-07T16:33:40Z",
+ "2026-06-07T16:33:43Z",
+ "2026-06-07T16:37:35Z",
+ "2026-06-07T16:38:31Z",
+ "2026-06-07T16:39:45Z",
+ "2026-06-07T16:39:49Z",
+ "2026-06-07T16:39:52Z",
+ "2026-06-07T16:41:09Z",
+ "2026-06-07T16:42:59Z",
+ "2026-06-07T16:45:04Z",
+ "2026-06-07T16:46:08Z",
+ "2026-06-07T16:46:16Z",
+ "2026-06-07T16:48:51Z",
+ "2026-06-07T16:51:32Z",
+ "2026-06-07T16:52:42Z",
+ "2026-06-07T16:52:42Z",
+ "2026-06-07T16:57:08Z",
+ "2026-06-07T16:58:08Z",
+ "2026-06-07T16:58:20Z",
+ "2026-06-07T16:58:20Z",
+ "2026-06-07T17:00:40Z",
+ "2026-06-07T17:01:27Z",
+ "2026-06-07T17:01:46Z",
+ "2026-06-07T17:04:09Z",
+ "2026-06-07T17:04:37Z",
+ "2026-06-07T17:05:49Z",
+ "2026-06-07T17:08:46Z",
+ "2026-06-07T17:12:24Z",
+ "2026-06-07T17:16:18Z",
+ "2026-06-07T17:17:37Z",
+ "2026-06-07T17:18:20Z",
+ "2026-06-07T17:19:55Z",
+ "2026-06-07T17:21:33Z",
+ "2026-06-07T17:21:45Z",
+ "2026-06-07T17:23:53Z",
+ "2026-06-07T17:24:24Z",
+ "2026-06-07T17:26:51Z",
+ "2026-06-07T17:32:47Z",
+ "2026-06-07T17:32:49Z",
+ "2026-06-07T17:33:43Z",
+ "2026-06-07T17:36:32Z",
+ "2026-06-07T17:47:46Z",
+ "2026-06-07T17:48:35Z",
+ "2026-06-07T17:50:54Z",
+ "2026-06-07T17:52:31Z",
+ "2026-06-07T17:52:42Z",
+ "2026-06-07T17:53:30Z",
+ "2026-06-07T17:58:42Z",
+ "2026-06-07T18:00:00Z",
+ "2026-06-07T18:00:13Z",
+ "2026-06-07T18:06:29Z",
+ "2026-06-07T18:10:37Z",
+ "2026-06-07T18:10:44Z",
+ "2026-06-07T18:11:02Z",
+ "2026-06-07T18:33:55Z",
+ "2026-06-07T18:36:59Z",
+ "2026-06-07T18:42:41Z",
+ "2026-06-07T18:43:14Z",
+ "2026-06-07T18:44:12Z",
+ "2026-06-07T18:44:41Z",
+ "2026-06-07T18:46:37Z",
+ "2026-06-07T18:47:05Z",
+ "2026-06-07T18:52:25Z",
+ "2026-06-07T18:52:26Z",
+ "2026-06-07T18:56:44Z",
+ "2026-06-07T19:03:33Z",
+ "2026-06-07T19:05:45Z",
+ "2026-06-07T19:07:43Z",
+ "2026-06-07T19:23:49Z",
+ "2026-06-07T19:24:04Z",
+ "2026-06-07T19:32:27Z",
+ "2026-06-07T19:35:55Z",
+ "2026-06-07T19:46:14Z",
+ "2026-06-07T19:49:43Z",
+ "2026-06-07T19:59:43Z",
+ "2026-06-07T20:03:16Z",
+ "2026-06-07T20:14:50Z",
+ "2026-06-07T20:36:33Z",
+ "2026-06-07T20:39:56Z",
+ "2026-06-07T20:43:36Z",
+ "2026-06-07T20:48:10Z",
+ "2026-06-07T20:59:06Z",
+ "2026-06-07T21:29:21Z",
+ "2026-06-07T21:30:18Z",
+ "2026-06-07T21:37:37Z",
+ "2026-06-07T21:44:36Z",
+ "2026-06-07T21:45:21Z",
+ "2026-06-07T21:45:26Z",
+ "2026-06-07T22:03:01Z",
+ "2026-06-07T22:16:42Z",
+ "2026-06-07T22:25:34Z",
+ "2026-06-07T22:30:55Z",
+ "2026-06-07T22:32:19Z",
+ "2026-06-07T22:37:02Z",
+ "2026-06-07T22:40:38Z",
+ "2026-06-07T22:48:13Z",
+ "2026-06-07T22:52:27Z",
+ "2026-06-07T22:53:25Z",
+ "2026-06-07T23:08:32Z",
+ "2026-06-07T23:09:33Z",
+ "2026-06-07T23:20:14Z",
+ "2026-06-07T23:20:47Z",
+ "2026-06-07T23:23:39Z",
+ "2026-06-07T23:24:39Z",
+ "2026-06-07T23:28:35Z",
+ "2026-06-07T23:30:34Z",
+ "2026-06-07T23:40:37Z",
+ "2026-06-07T23:42:10Z",
+ "2026-06-07T23:44:11Z",
+ "2026-06-07T23:45:33Z",
+ "2026-06-07T23:47:17Z",
+ "2026-06-07T23:52:40Z",
+ "2026-06-07T23:53:10Z",
+ "2026-06-07T23:53:31Z",
+ "2026-06-08T00:05:06Z",
+ "2026-06-08T00:09:28Z",
+ "2026-06-08T00:14:11Z",
+ "2026-06-08T00:23:59Z",
+ "2026-06-08T00:25:40Z",
+ "2026-06-08T00:33:32Z",
+ "2026-06-08T00:33:42Z",
+ "2026-06-08T00:37:25Z",
+ "2026-06-08T00:37:46Z",
+ "2026-06-08T00:42:42Z",
+ "2026-06-08T00:44:27Z",
+ "2026-06-08T00:51:40Z",
+ "2026-06-08T00:52:43Z",
+ "2026-06-08T00:54:12Z",
+ "2026-06-08T00:59:27Z",
+ "2026-06-08T01:00:32Z",
+ "2026-06-08T01:01:18Z",
+ "2026-06-08T01:03:43Z",
+ "2026-06-08T01:08:20Z",
+ "2026-06-08T01:10:18Z",
+ "2026-06-08T01:12:26Z",
+ "2026-06-08T01:24:48Z",
+ "2026-06-08T01:29:34Z",
+ "2026-06-08T01:33:45Z",
+ "2026-06-08T01:35:32Z",
+ "2026-06-08T01:40:10Z",
+ "2026-06-08T01:44:17Z",
+ "2026-06-08T01:46:06Z",
+ "2026-06-08T01:50:34Z",
+ "2026-06-08T02:02:03Z",
+ "2026-06-08T02:07:10Z",
+ "2026-06-08T02:10:49Z",
+ "2026-06-08T02:20:01Z",
+ "2026-06-08T02:20:11Z",
+ "2026-06-08T02:22:26Z",
+ "2026-06-08T02:23:40Z",
+ "2026-06-08T02:28:34Z",
+ "2026-06-08T02:30:56Z",
+ "2026-06-08T02:31:02Z",
+ "2026-06-08T02:39:13Z",
+ "2026-06-08T02:39:42Z",
+ "2026-06-08T02:40:27Z",
+ "2026-06-08T02:46:08Z",
+ "2026-06-08T02:46:18Z",
+ "2026-06-08T03:09:40Z",
+ "2026-06-08T03:11:22Z",
+ "2026-06-08T03:12:11Z",
+ "2026-06-08T03:13:30Z",
+ "2026-06-08T03:14:02Z",
+ "2026-06-08T03:17:07Z",
+ "2026-06-08T03:21:56Z",
+ "2026-06-08T03:30:10Z",
+ "2026-06-08T03:30:38Z",
+ "2026-06-08T03:33:49Z",
+ "2026-06-08T03:39:09Z",
+ "2026-06-08T03:47:08Z",
+ "2026-06-08T03:53:29Z",
+ "2026-06-08T04:04:28Z",
+ "2026-06-08T04:09:42Z",
+ "2026-06-08T04:11:28Z",
+ "2026-06-08T04:14:41Z",
+ "2026-06-08T04:18:10Z",
+ "2026-06-08T04:25:36Z",
+ "2026-06-08T04:25:54Z",
+ "2026-06-08T04:26:12Z",
+ "2026-06-08T04:29:47Z",
+ "2026-06-08T05:01:35Z",
+ "2026-06-08T05:03:23Z",
+ "2026-06-08T05:03:28Z",
+ "2026-06-08T05:18:08Z",
+ "2026-06-08T05:18:55Z",
+ "2026-06-08T05:19:38Z",
+ "2026-06-08T05:29:07Z",
+ "2026-06-08T05:34:46Z",
+ "2026-06-08T05:41:20Z",
+ "2026-06-08T05:42:48Z",
+ "2026-06-08T05:52:33Z",
+ "2026-06-08T05:55:26Z",
+ "2026-06-08T05:57:02Z",
+ "2026-06-08T06:15:52Z",
+ "2026-06-08T06:30:58Z",
+ "2026-06-08T06:36:30Z",
+ "2026-06-08T06:37:26Z",
+ "2026-06-08T06:45:11Z",
+ "2026-06-08T06:59:58Z",
+ "2026-06-08T07:03:50Z",
+ "2026-06-08T07:04:26Z",
+ "2026-06-08T07:05:11Z",
+ "2026-06-08T07:13:42Z",
+ "2026-06-08T07:16:52Z",
+ "2026-06-08T07:26:04Z",
+ "2026-06-08T07:40:52Z",
+ "2026-06-08T07:45:56Z",
+ "2026-06-08T07:49:53Z",
+ "2026-06-08T07:50:00Z",
+ "2026-06-08T07:55:24Z",
+ "2026-06-08T07:59:38Z",
+ "2026-06-08T08:11:53Z",
+ "2026-06-08T08:14:44Z",
+ "2026-06-08T08:17:48Z",
+ "2026-06-08T08:30:35Z",
+ "2026-06-08T08:39:50Z",
+ "2026-06-08T08:40:19Z",
+ "2026-06-08T08:45:21Z",
+ "2026-06-08T09:01:54Z",
+ "2026-06-08T09:05:30Z",
+ "2026-06-08T09:14:11Z",
+ "2026-06-08T09:18:18Z",
+ "2026-06-08T09:19:29Z",
+ "2026-06-08T09:33:57Z",
+ "2026-06-08T09:36:05Z",
+ "2026-06-08T09:46:26Z",
+ "2026-06-08T09:47:01Z",
+ "2026-06-08T09:59:59Z",
+ "2026-06-08T10:13:31Z",
+ "2026-06-08T10:20:49Z",
+ "2026-06-08T10:42:58Z",
+ "2026-06-08T10:46:38Z",
+ "2026-06-08T10:49:18Z",
+ "2026-06-08T10:50:19Z",
+ "2026-06-08T10:50:30Z",
+ "2026-06-08T10:51:08Z",
+ "2026-06-08T10:53:09Z",
+ "2026-06-08T10:58:10Z",
+ "2026-06-08T11:01:40Z",
+ "2026-06-08T11:16:54Z",
+ "2026-06-08T11:26:54Z",
+ "2026-06-08T11:27:09Z",
+ "2026-06-08T11:31:03Z",
+ "2026-06-08T11:37:24Z",
+ "2026-06-08T11:40:17Z",
+ "2026-06-08T11:41:15Z",
+ "2026-06-08T11:48:23Z",
+ "2026-06-08T11:54:41Z",
+ "2026-06-08T11:54:51Z",
+ "2026-06-08T12:05:46Z",
+ "2026-06-08T12:16:11Z",
+ "2026-06-08T12:16:59Z",
+ "2026-06-08T12:30:52Z",
+ "2026-06-08T12:35:29Z",
+ "2026-06-08T12:42:07Z",
+ "2026-06-08T12:45:09Z",
+ "2026-06-08T13:24:36Z",
+ "2026-06-08T13:25:16Z",
+ "2026-06-08T13:39:44Z",
+ "2026-06-08T13:40:22Z",
+ "2026-06-08T13:41:51Z",
+ "2026-06-08T14:01:20Z",
+ "2026-06-08T14:02:23Z",
+ "2026-06-08T14:04:35Z",
+ "2026-06-08T14:07:32Z",
+ "2026-06-08T14:07:55Z",
+ "2026-06-08T14:12:19Z",
+ "2026-06-08T14:16:49Z",
+ "2026-06-08T14:29:20Z",
+ "2026-06-08T14:31:16Z",
+ "2026-06-08T14:31:38Z",
+ "2026-06-08T14:41:39Z",
+ "2026-06-08T14:50:03Z",
+ "2026-06-08T15:01:27Z",
+ "2026-06-08T15:06:40Z",
+ "2026-06-08T15:07:07Z",
+ "2026-06-08T15:13:24Z",
+ "2026-06-08T15:23:52Z",
+ "2026-06-08T15:28:13Z",
+ "2026-06-08T15:30:53Z",
+ "2026-06-08T15:30:55Z",
+ "2026-06-08T15:37:50Z",
+ "2026-06-08T15:41:09Z",
+ "2026-06-08T15:43:19Z",
+ "2026-06-08T15:48:06Z",
+ "2026-06-08T15:49:17Z",
+ "2026-06-08T15:56:36Z",
+ "2026-06-08T15:58:14Z",
+ "2026-06-08T16:21:02Z",
+ "2026-06-08T16:27:27Z",
+ "2026-06-08T16:33:25Z",
+ "2026-06-08T16:48:05Z",
+ "2026-06-08T17:04:31Z",
+ "2026-06-08T17:23:06Z",
+ "2026-06-08T17:24:19Z",
+ "2026-06-08T17:30:42Z",
+ "2026-06-08T18:00:42Z",
+ "2026-06-08T18:15:34Z",
+ "2026-06-08T18:35:34Z",
+ "2026-06-08T19:28:02Z",
+ "2026-06-08T20:32:42Z",
+ "2026-06-08T21:52:36Z",
+ "2026-06-08T22:49:21Z",
+ "2026-06-08T22:51:40Z",
+ "2026-06-08T22:53:31Z",
+ "2026-06-09T00:24:21Z",
+ "2026-06-09T01:50:46Z",
+ "2026-06-09T02:03:11Z",
+ "2026-06-09T02:07:50Z",
+ "2026-06-09T02:16:47Z",
+ "2026-06-09T02:44:35Z",
+ "2026-06-09T03:35:04Z",
+ "2026-06-09T03:54:08Z",
+ "2026-06-09T05:05:53Z",
+ "2026-06-09T06:11:04Z",
+ "2026-06-09T06:23:43Z",
+ "2026-06-09T06:31:29Z",
+ "2026-06-09T06:46:59Z",
+ "2026-06-09T07:11:53Z",
+ "2026-06-09T07:19:10Z",
+ "2026-06-09T08:34:03Z",
+ "2026-06-09T08:35:26Z",
+ "2026-06-09T08:38:07Z",
+ "2026-06-09T08:49:32Z",
+ "2026-06-09T09:33:37Z",
+ "2026-06-09T09:45:09Z",
+ "2026-06-09T09:54:56Z",
+ "2026-06-09T12:46:42Z",
+ "2026-06-09T17:24:16Z",
+ "2026-06-09T18:26:44Z",
+ "2026-06-09T18:47:06Z",
+ "2026-06-09T21:05:21Z",
+ "2026-06-10T00:39:33Z",
+ "2026-06-10T01:34:02Z",
+ "2026-06-10T01:52:39Z",
+ "2026-06-10T02:28:45Z",
+ "2026-06-10T02:31:32Z",
+ "2026-06-10T05:45:36Z",
+ "2026-06-10T08:06:41Z",
+ "2026-06-10T08:42:16Z",
+ "2026-06-10T09:48:55Z",
+ "2026-06-10T09:53:10Z",
+ "2026-06-10T12:50:50Z",
+ "2026-06-10T13:44:03Z",
+ "2026-06-10T17:01:17Z",
+ "2026-06-11T02:18:38Z",
+ "2026-06-11T02:59:53Z",
+ "2026-06-11T07:34:36Z",
+ "2026-06-11T09:47:19Z",
+ "2026-06-11T10:51:55Z",
+ "2026-06-11T16:39:17Z",
+ "2026-06-11T16:48:25Z",
+ "2026-06-11T20:37:32Z",
+ "2026-06-12T01:17:33Z",
+ "2026-06-12T01:55:07Z",
+ "2026-06-12T02:07:37Z",
+ "2026-06-12T03:47:56Z",
+ "2026-06-12T05:11:26Z",
+ "2026-06-12T05:47:08Z",
+ "2026-06-12T07:40:46Z",
+ "2026-06-12T08:51:56Z",
+ "2026-06-12T09:26:25Z",
+ "2026-06-12T10:08:45Z",
+ "2026-06-12T10:40:05Z",
+ "2026-06-12T12:59:01Z",
+ "2026-06-12T14:15:21Z",
+ "2026-06-12T15:29:28Z",
+ "2026-06-13T01:45:44Z",
+ "2026-06-13T02:12:17Z",
+ "2026-06-13T02:27:44Z",
+ "2026-06-13T02:31:22Z",
+ "2026-06-13T02:36:07Z",
+ "2026-06-13T02:38:08Z",
+ "2026-06-13T02:39:21Z",
+ "2026-06-13T02:40:20Z",
+ "2026-06-13T03:04:59Z",
+ "2026-06-13T03:05:30Z",
+ "2026-06-13T03:10:30Z",
+ "2026-06-13T03:11:09Z",
+ "2026-06-13T03:16:42Z",
+ "2026-06-13T03:18:06Z",
+ "2026-06-13T03:20:09Z",
+ "2026-06-13T03:25:12Z",
+ "2026-06-13T03:29:35Z",
+ "2026-06-13T03:33:28Z",
+ "2026-06-13T03:47:34Z",
+ "2026-06-13T03:51:56Z",
+ "2026-06-13T04:30:43Z",
+ "2026-06-13T04:34:14Z",
+ "2026-06-13T04:38:49Z",
+ "2026-06-13T04:43:13Z",
+ "2026-06-13T04:43:30Z",
+ "2026-06-13T04:52:14Z",
+ "2026-06-13T05:01:55Z",
+ "2026-06-13T05:07:15Z",
+ "2026-06-13T05:27:06Z",
+ "2026-06-13T05:35:55Z",
+ "2026-06-13T05:48:50Z",
+ "2026-06-13T05:57:51Z",
+ "2026-06-13T05:57:55Z",
+ "2026-06-13T06:00:15Z",
+ "2026-06-13T06:10:01Z",
+ "2026-06-13T06:21:45Z",
+ "2026-06-13T06:33:54Z",
+ "2026-06-13T06:49:21Z",
+ "2026-06-13T06:49:30Z",
+ "2026-06-13T06:51:18Z",
+ "2026-06-13T06:57:22Z",
+ "2026-06-13T07:23:25Z",
+ "2026-06-13T07:38:41Z",
+ "2026-06-13T07:39:47Z",
+ "2026-06-13T07:52:57Z",
+ "2026-06-13T08:14:57Z",
+ "2026-06-13T08:34:48Z",
+ "2026-06-13T09:29:45Z",
+ "2026-06-13T09:31:31Z",
+ "2026-06-13T09:41:20Z",
+ "2026-06-13T09:56:49Z",
+ "2026-06-13T10:09:53Z",
+ "2026-06-13T10:17:29Z",
+ "2026-06-13T10:19:39Z",
+ "2026-06-13T10:21:03Z",
+ "2026-06-13T10:25:14Z",
+ "2026-06-13T10:49:24Z",
+ "2026-06-13T10:51:43Z",
+ "2026-06-13T11:18:26Z",
+ "2026-06-13T11:27:47Z",
+ "2026-06-13T11:32:48Z",
+ "2026-06-13T11:57:20Z",
+ "2026-06-13T12:04:19Z",
+ "2026-06-13T12:19:06Z",
+ "2026-06-13T13:02:04Z",
+ "2026-06-13T13:03:28Z",
+ "2026-06-13T13:15:50Z",
+ "2026-06-13T13:19:17Z",
+ "2026-06-13T13:31:16Z",
+ "2026-06-13T13:37:41Z",
+ "2026-06-13T13:51:52Z",
+ "2026-06-13T13:57:16Z",
+ "2026-06-13T13:58:15Z",
+ "2026-06-13T14:24:26Z",
+ "2026-06-13T14:30:34Z",
+ "2026-06-13T14:38:15Z",
+ "2026-06-13T14:39:35Z",
+ "2026-06-13T14:40:13Z",
+ "2026-06-13T14:40:56Z",
+ "2026-06-13T14:46:04Z",
+ "2026-06-13T14:52:16Z",
+ "2026-06-13T14:56:36Z",
+ "2026-06-13T15:18:58Z",
+ "2026-06-13T15:28:32Z",
+ "2026-06-13T15:30:23Z",
+ "2026-06-13T15:36:08Z",
+ "2026-06-13T15:39:02Z",
+ "2026-06-13T15:39:42Z",
+ "2026-06-13T15:50:35Z",
+ "2026-06-13T15:51:20Z",
+ "2026-06-13T15:55:31Z",
+ "2026-06-13T15:55:55Z",
+ "2026-06-13T15:56:46Z",
+ "2026-06-13T16:03:45Z",
+ "2026-06-13T16:04:51Z",
+ "2026-06-13T16:08:45Z",
+ "2026-06-13T16:11:43Z",
+ "2026-06-13T16:12:06Z",
+ "2026-06-13T16:26:41Z",
+ "2026-06-13T16:47:11Z",
+ "2026-06-13T17:21:07Z",
+ "2026-06-13T17:39:43Z",
+ "2026-06-13T17:53:06Z",
+ "2026-06-13T18:00:19Z",
+ "2026-06-13T18:23:22Z",
+ "2026-06-13T19:20:52Z",
+ "2026-06-13T19:36:57Z",
+ "2026-06-13T20:55:17Z",
+ "2026-06-13T21:14:53Z",
+ "2026-06-13T21:56:04Z",
+ "2026-06-13T22:31:25Z",
+ "2026-06-13T23:43:29Z",
+ "2026-06-13T23:58:44Z",
+ "2026-06-14T00:31:52Z",
+ "2026-06-14T00:33:12Z",
+ "2026-06-14T00:39:49Z",
+ "2026-06-14T00:45:36Z",
+ "2026-06-14T01:09:53Z",
+ "2026-06-14T02:06:33Z",
+ "2026-06-14T02:07:16Z",
+ "2026-06-14T02:53:08Z",
+ "2026-06-14T02:55:13Z",
+ "2026-06-14T03:22:57Z",
+ "2026-06-14T03:29:03Z",
+ "2026-06-14T03:32:31Z",
+ "2026-06-14T04:14:15Z",
+ "2026-06-14T04:16:51Z",
+ "2026-06-14T05:39:27Z",
+ "2026-06-14T05:42:10Z",
+ "2026-06-14T06:14:23Z",
+ "2026-06-14T07:11:14Z",
+ "2026-06-14T08:56:54Z",
+ "2026-06-14T09:19:43Z",
+ "2026-06-14T15:24:45Z",
+ "2026-06-15T00:30:28Z",
+ "2026-06-15T03:15:21Z",
+ "2026-06-15T03:19:25Z",
+ "2026-06-15T03:28:22Z",
+ "2026-06-15T03:44:56Z",
+ "2026-06-15T04:18:28Z",
+ "2026-06-15T04:24:25Z",
+ "2026-06-15T05:41:40Z",
+ "2026-06-15T06:27:31Z",
+ "2026-06-15T06:44:13Z",
+ "2026-06-15T07:16:54Z",
+ "2026-06-15T07:36:24Z",
+ "2026-06-15T08:19:19Z",
+ "2026-06-15T09:14:56Z",
+ "2026-06-15T09:53:58Z",
+ "2026-06-15T11:13:27Z",
+ "2026-06-15T12:11:39Z",
+ "2026-06-15T12:40:32Z",
+ "2026-06-15T14:58:51Z",
+ "2026-06-15T16:22:45Z",
+ "2026-06-15T17:54:34Z",
+ "2026-06-16T02:04:28Z",
+ "2026-06-16T03:47:06Z",
+ "2026-06-16T06:42:16Z",
+ "2026-06-16T08:17:43Z",
+ "2026-06-16T12:05:36Z",
+ "2026-06-16T12:27:07Z",
+ "2026-06-16T15:27:22Z",
+ "2026-06-16T18:35:30Z",
+ "2026-06-16T21:17:32Z",
+ "2026-06-17T07:06:41Z",
+ "2026-06-17T07:26:58Z",
+ "2026-06-17T07:51:50Z",
+ "2026-06-17T08:42:10Z",
+ "2026-06-17T09:06:42Z",
+ "2026-06-17T09:44:16Z",
+ "2026-06-17T10:43:41Z",
+ "2026-06-17T11:41:48Z",
+ "2026-06-17T13:04:47Z",
+ "2026-06-17T14:44:08Z",
+ "2026-06-17T14:53:06Z",
+ "2026-06-17T23:48:48Z",
+ "2026-06-18T04:09:53Z",
+ "2026-06-18T10:12:26Z",
+ "2026-06-18T14:04:37Z",
+ "2026-06-18T20:11:33Z",
+ "2026-06-19T09:20:58Z",
+ "2026-06-19T11:10:56Z",
+ "2026-06-19T11:34:37Z",
+ "2026-06-20T05:07:46Z",
+ "2026-06-20T06:06:04Z",
+ "2026-06-20T10:01:29Z",
+ "2026-06-20T11:13:29Z",
+ "2026-06-20T15:31:51Z",
+ "2026-06-20T16:38:29Z",
+ "2026-06-20T17:29:45Z",
+ "2026-06-21T00:34:28Z",
+ "2026-06-21T01:50:46Z",
+ "2026-06-21T06:29:34Z",
+ "2026-06-21T08:18:34Z",
+ "2026-06-21T08:55:15Z",
+ "2026-06-21T10:10:45Z",
+ "2026-06-21T17:48:33Z",
+ "2026-06-22T01:47:25Z",
+ "2026-06-22T05:54:02Z",
+ "2026-06-22T07:12:14Z",
+ "2026-06-23T06:46:48Z",
+ "2026-06-23T07:40:50Z",
+ "2026-06-23T09:53:00Z",
+ "2026-06-23T10:34:24Z",
+ "2026-06-23T12:26:46Z",
+ "2026-06-23T12:43:37Z",
+ "2026-06-23T14:45:55Z",
+ "2026-06-23T15:30:33Z",
+ "2026-06-24T02:03:52Z",
+ "2026-06-24T02:36:19Z",
+ "2026-06-24T04:46:05Z",
+ "2026-06-24T09:34:45Z",
+ "2026-06-25T05:42:06Z",
+ "2026-06-25T06:06:21Z",
+ "2026-06-25T07:06:07Z",
+ "2026-06-25T15:40:15Z",
+ "2026-06-25T21:33:08Z",
+ "2026-06-26T01:38:16Z",
+ "2026-06-26T05:30:29Z",
+ "2026-06-26T07:50:32Z",
+ "2026-06-26T11:17:55Z",
+ "2026-06-26T13:49:41Z",
+ "2026-06-26T16:49:13Z",
+ "2026-06-26T19:03:03Z",
+ "2026-06-27T17:11:00Z",
+ "2026-06-28T06:06:14Z",
+ "2026-06-28T11:20:48Z",
+ "2026-06-28T14:48:43Z",
+ "2026-06-28T19:43:49Z",
+ "2026-06-28T21:40:12Z",
+ "2026-06-29T02:03:05Z",
+ "2026-06-29T02:42:01Z",
+ "2026-06-29T02:57:56Z",
+ "2026-06-29T03:18:47Z",
+ "2026-06-29T03:51:48Z",
+ "2026-06-29T05:53:52Z",
+ "2026-06-29T08:18:52Z",
+ "2026-06-29T20:05:49Z",
+ "2026-06-29T22:22:41Z",
+ "2026-06-30T01:18:04Z",
+ "2026-06-30T05:30:02Z",
+ "2026-06-30T10:06:06Z",
+ "2026-06-30T14:26:38Z",
+ "2026-06-30T17:18:01Z",
+ "2026-06-30T20:05:48Z",
+ "2026-07-01T02:09:58Z",
+ "2026-07-01T03:26:56Z",
+ "2026-07-01T12:01:36Z",
+ "2026-07-01T12:26:28Z",
+ "2026-07-02T02:53:34Z",
+ "2026-07-02T03:45:33Z",
+ "2026-07-02T05:23:11Z",
+ "2026-07-02T05:56:30Z",
+ "2026-07-02T08:14:27Z",
+ "2026-07-03T13:26:02Z",
+ "2026-07-03T13:54:41Z",
+ "2026-07-03T14:44:07Z",
+ "2026-07-03T17:35:07Z",
+ "2026-07-04T06:01:01Z",
+ "2026-07-04T15:11:29Z",
+ "2026-07-04T18:23:14Z",
+ "2026-07-05T10:28:34Z",
+ "2026-07-05T14:03:23Z",
+ "2026-07-06T05:16:32Z",
+ "2026-07-06T08:24:25Z",
+ "2026-07-06T09:29:02Z",
+ "2026-07-06T18:58:31Z",
+ "2026-07-07T03:41:04Z",
+ "2026-07-07T03:55:02Z",
+ "2026-07-07T06:37:28Z",
+ "2026-07-07T06:50:54Z",
+ "2026-07-07T07:47:33Z",
+ "2026-07-07T13:00:09Z",
+ "2026-07-07T14:07:34Z",
+ "2026-07-08T05:21:07Z",
+ "2026-07-08T07:28:29Z",
+ "2026-07-08T08:33:55Z",
+ "2026-07-08T10:33:58Z",
+ "2026-07-09T01:43:12Z",
+ "2026-07-09T02:22:14Z",
+ "2026-07-09T09:36:30Z",
+ "2026-07-09T13:46:47Z",
+ "2026-07-10T09:00:05Z",
+ "2026-07-10T14:07:24Z",
+ "2026-07-10T14:40:20Z",
+ "2026-07-10T15:19:20Z",
+ "2026-07-10T15:38:21Z",
+ "2026-07-11T01:34:03Z",
+ "2026-07-12T00:24:51Z",
+ "2026-07-12T13:11:52Z",
+ "2026-07-12T13:15:06Z",
+ "2026-07-12T19:08:35Z",
+ "2026-07-13T00:00:11Z",
+ "2026-07-13T03:46:59Z",
+ "2026-07-13T04:12:17Z",
+ "2026-07-13T06:04:08Z",
+ "2026-07-13T07:07:30Z",
+ "2026-07-13T07:54:20Z",
+ "2026-07-13T10:33:38Z",
+ "2026-07-13T15:09:18Z",
+ "2026-07-13T17:48:28Z",
+ "2026-07-14T03:44:33Z",
+ "2026-07-14T03:56:41Z",
+ "2026-07-14T05:58:32Z",
+ "2026-07-14T14:44:44Z",
+ "2026-07-15T02:57:54Z",
+ "2026-07-16T01:40:29Z",
+ "2026-07-16T07:23:36Z",
+ "2026-07-16T12:25:14Z",
+ "2026-07-17T16:14:08Z",
+ "2026-07-18T03:33:19Z",
+ "2026-07-18T05:35:40Z",
+ "2026-07-19T17:53:29Z",
+ "2026-07-20T06:23:01Z",
+ "2026-07-20T08:43:21Z",
+ "2026-07-21T00:27:17Z",
+ "2026-07-21T02:28:14Z",
+ "2026-07-21T21:16:33Z",
+ "2026-07-22T03:24:23Z",
+ "2026-07-22T03:30:40Z",
+ "2026-07-22T06:48:17Z",
+ "2026-07-22T07:49:01Z",
+ "2026-07-22T15:11:10Z",
+ "2026-07-23T01:20:19Z",
+ "2026-07-24T02:42:53Z",
+ "2026-07-24T05:48:23Z",
+ "2026-07-24T20:07:12Z",
+ "2026-07-27T01:20:17Z",
+ "2026-07-27T02:30:38Z",
+ "2026-07-27T03:35:12Z",
+ "2026-07-27T06:09:57Z",
+ "2026-07-27T07:13:03Z",
+ "2026-07-27T09:35:58Z",
+ "2026-07-27T14:33:25Z",
+ "2026-07-27T16:16:25Z",
+ "2026-07-27T16:54:04Z",
+ "2026-07-28T01:20:43Z",
+ "2026-07-28T08:59:41Z",
+ "2026-07-28T10:35:52Z",
+ "2026-07-28T11:44:30Z",
+ "2026-07-28T17:58:30Z",
+ "2026-07-30T00:47:50Z",
+ "2026-07-30T02:46:24Z",
+ "2026-07-30T02:48:38Z",
+ "2026-07-30T02:55:36Z",
+ "2026-07-30T03:25:07Z",
+ "2026-07-30T06:42:41Z",
+ "2026-07-30T07:18:39Z",
+ "2026-07-30T07:28:42Z",
+ "2026-07-30T08:15:33Z",
+ "2026-07-30T10:14:52Z",
+ "2026-07-30T22:34:40Z",
+ "2026-07-31T00:25:54Z",
+ "2026-07-31T01:56:20Z",
+ "2026-08-01T09:41:00Z",
+ "2026-08-01T15:00:51Z",
+ "2026-08-02T09:59:55Z",
+ "2026-08-02T10:37:17Z",
+ "2026-08-03T03:22:57Z",
+ "2026-08-03T12:02:26Z",
+ "2026-08-03T13:53:59Z",
+ "2026-08-04T03:53:09Z",
+ "2026-08-04T14:29:53Z",
+ "2026-08-05T14:47:27Z",
+ "2026-08-06T11:51:40Z",
+ "2026-08-06T12:54:13Z",
+ "2026-08-07T11:40:11Z",
+ "2026-08-08T14:03:01Z",
+ "2026-08-08T23:48:13Z",
+ "2026-08-09T03:27:26Z",
+ "2026-08-09T11:16:59Z",
+ "2026-08-09T20:24:28Z",
+ "2026-08-10T04:15:26Z",
+ "2026-08-10T05:01:57Z",
+ "2026-08-10T14:16:07Z",
+ "2026-08-11T01:23:41Z",
+ "2026-08-11T05:17:49Z",
+ "2026-08-11T14:22:58Z",
+ "2026-08-12T07:03:08Z",
+ "2026-08-12T20:30:14Z",
+ "2026-08-14T15:13:42Z",
+ "2026-08-14T15:36:43Z",
+ "2026-08-14T15:41:37Z",
+ "2026-08-14T16:16:06Z",
+ "2026-08-14T16:22:33Z",
+ "2026-08-14T16:46:47Z",
+ "2026-08-14T17:25:03Z",
+ "2026-08-14T17:48:10Z",
+ "2026-08-14T18:10:19Z",
+ "2026-08-14T18:28:43Z",
+ "2026-08-14T19:14:43Z",
+ "2026-08-14T20:52:18Z",
+ "2026-08-14T21:34:47Z",
+ "2026-08-14T21:44:12Z",
+ "2026-08-15T00:20:05Z",
+ "2026-08-15T00:20:28Z",
+ "2026-08-15T00:37:22Z",
+ "2026-08-15T00:53:48Z",
+ "2026-08-15T01:37:39Z",
+ "2026-08-15T01:42:43Z",
+ "2026-08-15T02:38:58Z",
+ "2026-08-15T02:53:51Z",
+ "2026-08-15T03:17:09Z",
+ "2026-08-15T03:26:20Z",
+ "2026-08-15T03:56:00Z",
+ "2026-08-15T04:44:16Z",
+ "2026-08-15T06:00:32Z",
+ "2026-08-15T06:50:30Z",
+ "2026-08-15T07:42:17Z",
+ "2026-08-15T07:58:46Z",
+ "2026-08-15T08:56:35Z",
+ "2026-08-15T09:18:41Z",
+ "2026-08-15T09:46:42Z",
+ "2026-08-15T09:49:39Z",
+ "2026-08-15T10:36:36Z",
+ "2026-08-15T10:37:02Z",
+ "2026-08-15T10:57:44Z",
+ "2026-08-15T11:13:50Z",
+ "2026-08-15T12:01:53Z",
+ "2026-08-15T13:15:36Z",
+ "2026-08-15T13:17:28Z",
+ "2026-08-15T14:36:12Z",
+ "2026-08-15T14:39:05Z",
+ "2026-08-15T15:22:31Z",
+ "2026-08-15T16:31:51Z",
+ "2026-08-15T16:36:24Z",
+ "2026-08-15T17:58:25Z",
+ "2026-08-15T18:43:29Z",
+ "2026-08-15T20:37:03Z",
+ "2026-08-15T20:38:04Z",
+ "2026-08-15T21:07:46Z",
+ "2026-08-16T01:41:39Z",
+ "2026-08-16T03:15:41Z",
+ "2026-08-16T03:50:45Z",
+ "2026-08-16T05:05:29Z",
+ "2026-08-16T05:36:56Z",
+ "2026-08-16T06:03:00Z",
+ "2026-08-16T07:39:40Z",
+ "2026-08-16T08:09:44Z",
+ "2026-08-16T09:22:52Z",
+ "2026-08-16T12:03:01Z",
+ "2026-08-16T12:09:48Z",
+ "2026-08-16T15:19:06Z",
+ "2026-08-17T02:23:23Z",
+ "2026-08-17T03:11:50Z",
+ "2026-08-17T03:12:53Z",
+ "2026-08-17T07:21:56Z",
+ "2026-08-17T07:37:46Z",
+ "2026-08-17T08:17:35Z",
+ "2026-08-17T09:35:14Z",
+ "2026-08-17T14:21:48Z",
+ "2026-08-17T16:39:04Z",
+ "2026-08-17T18:33:30Z",
+ "2026-08-17T22:04:03Z",
+ "2026-08-17T23:28:37Z",
+ "2026-08-18T01:06:59Z",
+ "2026-08-18T03:08:36Z",
+ "2026-08-18T07:41:29Z",
+ "2026-08-18T07:49:14Z",
+ "2026-08-18T09:19:24Z",
+ "2026-08-18T12:46:57Z",
+ "2026-08-18T21:04:03Z",
+ "2026-08-19T05:48:10Z",
+ "2026-08-19T05:55:15Z",
+ "2026-08-19T06:35:34Z",
+ "2026-08-19T07:44:16Z",
+ "2026-08-19T07:58:58Z",
+ "2026-08-19T11:50:06Z",
+ "2026-08-19T19:30:18Z",
+ "2026-08-19T21:42:56Z",
+ "2026-08-20T03:08:13Z",
+ "2026-08-20T03:45:56Z",
+ "2026-08-20T07:57:30Z",
+ "2026-08-20T09:08:40Z",
+ "2026-08-20T13:43:15Z"
+ ]
+}
diff --git a/brooks-lint/assets/star-history.svg b/brooks-lint/assets/star-history.svg
new file mode 100644
index 00000000..ce337dbd
--- /dev/null
+++ b/brooks-lint/assets/star-history.svg
@@ -0,0 +1,45 @@
+
diff --git a/brooks-lint/docs/dsh-setup.md b/brooks-lint/docs/dsh-setup.md
new file mode 100644
index 00000000..5e4ad66d
--- /dev/null
+++ b/brooks-lint/docs/dsh-setup.md
@@ -0,0 +1,60 @@
+# DeepSeek Harness (dsh) Setup
+
+[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`) is DeepSeek AI's
+open-source agent harness — an "everything is a plugin" architecture with a Web UI, started with
+`npx @deepseek-ai/dsh web`. 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 -- dsh
+
+# from a clone
+./scripts/install.sh dsh # global: ~/.dsh/skills (or $DSH_HOME/skills)
+./scripts/install.sh dsh --project # this repo: ./.dsh/skills
+```
+
+Prefer a manual copy? Clone the repo and `cp -r skills/* ~/.dsh/skills/` — the contents, not the
+`skills/` folder itself, so `_shared/` lands as a sibling of the `brooks-*` folders.
+
+dsh scans these skill roots, highest priority first, so an existing vendor-neutral install is picked
+up automatically:
+
+| Root | Notes |
+|---|---|
+| `