Skip to content

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 为例):
    bash
    brew install jaq ruff uv
    uv sync --all-extras
  2. 启动 Claude Code(在 Plankton 目录下):
    bash
    claude

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

集成到自有项目

  1. 复制 .claude/hooks/ 目录到你的项目
  2. 复制 .claude/settings.json(Hook 配置)
  3. 复制各语言 Linter 配置文件(如 .ruff.tomlbiome.json
  4. 安装各语言 Linter 工具(见下表)
语言必需工具可选工具(增强)
Pythonruff, uvty, vulture, bandit
TypeScriptbiomeoxlint, semgrep, knip
Shellshellcheck, shfmt
YAMLyamllint
Markdownmarkdownlint-cli2
Dockerfilehadolint (>=2.12.0)
TOMLtaplo
JSONjaq

配置与定制

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

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 双重机制阻止和检测配置文件变更,发现违规会阻断流程并提示人工审核。