Plankton Code Quality Skill 是 Claude Code 的写时代码质量守护方案。它通过 PostToolUse Hook,在每次文件编辑后自动运行格式化与 Lint 工具,并针对未能自动修复的代码问题,调用 Claude 多模型分级修复,极大提升了多语言项目的代码一致性和安全性。Plankton 还内置配置防篡改机制,防止 AI 通过修改 Linter 配置“蒙混过关”,为 AI 辅助编程提供了生产级的质量底座。

Everything Claude Code Plankton Code Quality Skill:每次文件编辑时通过 Hook 自动 Lint 并 Claude 修复

在 AI 辅助编程时代,代码质量控制不能只依赖开发者自觉或提交前的人工检查。Plankton Code Quality Skill 正是为 Claude Code 这类 AI 编程助手量身打造的“写时自动质量守护”能力。它通过自动化 Hook,将格式化、Lint、AI 修复与配置保护无缝集成到每一次文件编辑流程,极大降低了技术债和低质量代码混入主干的风险。

Plankton Code Quality Skill 能解决什么问题?

传统的 Lint/格式化方案通常只在 commit、push 或 CI 阶段生效,AI 助手生成代码时很容易绕过质量门控,甚至通过修改 Linter 配置文件(如 .ruff.tomlbiome.json)来“消灭”报错而不是修复代码本身。这会导致:

  • 低质量/不规范代码无声混入主干
  • 配置被 AI 篡改,规则失效
  • 多语言项目难以统一质量标准
  • Lint/格式化问题只能靠人工补救

Plankton Skill 通过三重机制解决上述痛点:

  1. 写时自动格式化与 Lint:每次文件编辑后即刻运行多语言格式化+Lint,第一时间发现问题。
  2. Claude 分级自动修复:未能自动修复的复杂问题,自动调用 Claude 子进程,按问题复杂度路由到 Haiku/Sonnet/Opus 等模型分级修复。
  3. 配置防篡改保护:多层 Hook 防止 AI 修改 Linter 配置文件,杜绝“规则游戏”。

触发条件与自动化流程

Plankton Skill 依赖于 Everything Claude Code 的 Hook 体系,主要通过 PostToolUse、PreToolUse、Stop 三类事件自动触发。具体流程如下:

1. 文件编辑后自动触发(PostToolUse Hook)

每当 Claude Code 编辑或写入文件时,Plankton 的 multi_linter.sh 会自动执行三阶段流程:

Phase 1:静默自动格式化

  • 运行 ruff formatbiomeshfmttaplomarkdownlint 等格式化工具
  • 能自动修复的问题直接修复,无需人工介入

Phase 2:收集未修复的 Lint 违规

  • 运行各类 Linter,收集无法自动修复的违规项
  • 以结构化 JSON 输出(包含行号、列号、错误码、信息、Linter 名称)

Phase 3:Claude 分级修复

  • 生成违规 JSON,自动调用 Claude 子进程
  • 根据问题复杂度,自动分配到不同模型:
    • Haiku:简单格式/风格/导入问题(如 E/W/F 类)——120 秒超时
    • Sonnet:复杂逻辑/重构问题(如 C901、PLR 类)——300 秒超时
    • Opus:类型系统/深层推理(如 unresolved-attribute)——600 秒超时
  • 修复后自动回到 Phase 1+2 验证,直至无违规或超时

输出示例

  • 全部修复:主 Agent 无感知,流程静默通过
  • 部分未修复:主 Agent 收到 [hook] N violation(s) remain
  • 配置被篡改:主 Agent 收到 [hook:advisory] 配置文件被修改,需人工审核

2. 配置文件保护(PreToolUse & Stop Hook)

  • PreToolUseprotect_linter_configs.sh 阻止对 .ruff.tomlbiome.json 等 Linter 配置的编辑
  • Stopstop_config_guardian.sh 检查整个会话期间配置文件是否被修改,若有变更则阻断合并

3. 包管理器强制(PreToolUse)

  • 阻止使用传统包管理器(如 pip、npm、yarn),强制使用 uv/bun 等现代工具,避免依赖污染和安全隐患

实际项目中的使用流程(Step by Step)

快速上手

  1. 安装依赖(以 macOS 为例):
    brew install jaq ruff uv
    uv sync --all-extras
  2. 启动 Claude Code(在 Plankton 目录下):
    claude

    Plankton 的 Hook 会自动激活,无需额外配置。

集成到自有项目

  1. 复制 .claude/hooks/ 目录到你的项目
  2. 复制 .claude/settings.json(Hook 配置)
  3. 复制各语言 Linter 配置文件(如 .ruff.tomlbiome.json
  4. 安装各语言 Linter 工具(见下表)
语言 必需工具 可选工具(增强)
Python ruff, uv ty, vulture, bandit
TypeScript biome oxlint, semgrep, knip
Shell shellcheck, shfmt
YAML yamllint
Markdown markdownlint-cli2
Dockerfile hadolint (>=2.12.0)
TOML taplo
JSON jaq

配置与定制

Plankton 的 .claude/hooks/config.json 支持灵活定制:

{
  "languages": {
    "python": true,
    "typescript": { "enabled": true, "biome_nursery": "warn" },
    ...
  },
  "phases": {
    "auto_format": true,
    "subprocess_delegation": true
  },
  "subprocess": {
    "tiers": {
      "haiku":  { "timeout": 120, "max_turns": 10 },
      "sonnet": { "timeout": 300, "max_turns": 10 },
      "opus":   { "timeout": 600, "max_turns": 15 }
    },
    "volume_threshold": 5
  }
}
  • 关闭不需要的语言可加速 Hook
  • volume_threshold 控制违规数量大于多少时自动升级模型
  • subprocess_delegation: false 可跳过 AI 修复,仅报告违规

典型输出示例

1. 全部自动修复

# Agent 无输出,流程静默通过

2. 仍有未修复违规

[hook] 3 violation(s) remain

3. 检测到配置文件被修改

[hook:advisory] biome.json 被修改,需人工审核

常见配套 Agent 与 Skill 协作

与其他 Hook/Skill 的协作与冲突

  • 与 ECC Prettier Hook:Plankton 的 biome 格式化能力覆盖更广,建议关闭 ECC 的 Prettier PostToolUse Hook,避免 JS/TS 文件重复格式化。
  • 多语言项目:Plankton 可与 ECC 并行运行,ECC 处理 Plankton 未覆盖的文件类型。
  • CI 集成:本地 Hook 与 CI 可共用同一套格式化/Lint/修复流程,保证一致性。

进阶用法与环境变量

  • HOOK_SKIP_SUBPROCESS=1:跳过 AI 修复,直接报告违规
  • HOOK_SUBPROCESS_TIMEOUT=N:自定义子进程超时时间
  • HOOK_DEBUG_MODEL=1:输出模型分级决策日志
  • HOOK_SKIP_PM=1:跳过包管理器强制

健康度与质量度量

Plankton 支持统计:

  • 被质量门控拦截的编辑次数
  • 平均修复耗时
  • 违规类型分布与重复率
  • 因质量门控阻断的合并次数

推荐最佳实践

  1. 先安装 Everything Claude Code 插件,激活 Agent/Skill/Rules 体系
  2. 集成 Plankton Hook,获得写时自动质量守护
  3. 结合 Verification Loop 作为 PR 前最终质量关卡
  4. 开启配置防篡改和包管理器强制,提升团队协作安全性

FAQ

Q: Plankton Skill 会影响 AI 生成代码的速度吗?
A: 写时自动格式化和 Lint 会带来极小延迟,大部分问题可静默修复,仅遇到复杂违规时才调用 Claude 子进程,整体体验流畅。

Q: 可以只用 Plankton 的部分功能吗?
A: 可以。你可在配置文件中关闭某些语言、禁用 AI 子进程修复,仅保留格式化或 Lint 功能,按需裁剪。

Q: 如何防止 AI 篡改 Linter 配置文件?
A: Plankton 通过 PreToolUse 和 Stop Hook 双重机制阻止和检测配置文件变更,发现违规会阻断流程并提示人工审核。