REST API设计模式,包括资源命名、状态码、分页、过滤、错误响应、版本控制和生产API的速率限制。
日本語の概要は準備中です。原文の説明を表示しています。
使用 Plankton 实现编写时代码质量强制执行 —— 通过钩子在每次文件编辑时进行自动格式化、代码检查,并由 Claude 驱动自动修复。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Plankton(感谢 @alxfazio)的集成参考,这是一个针对 Claude Code 的编写时(Write-time)代码质量强制执行系统。Plankton 通过工具调用后钩子(PostToolUse hooks)在每次文件编辑时运行格式化程序和 Linter,然后启动 Claude 子进程(Subprocess)来修复智能体(Agent)未捕捉到的违规项。
每当 Claude Code 编辑或写入文件时,Plankton 的 multi_linter.sh 工具调用后钩子(PostToolUse hook)就会运行:
阶段 1: 自动格式化 (静默)
├─ 运行格式化程序 (ruff format, biome, shfmt, taplo, markdownlint)
├─ 静默修复 40-50% 的问题
└─ 不向主智能体输出任何内容
阶段 2: 收集违规项 (JSON)
├─ 运行 Linter 并收集无法自动修复的违规项
├─ 返回结构化 JSON: {line, column, code, message, linter}
└─ 仍不向主智能体输出任何内容
阶段 3: 委派 + 验证
├─ 启动带有违规 JSON 的 claude -p 子进程
├─ 根据违规复杂性路由到不同层级的模型:
│ ├─ Haiku: 格式化、导入、样式 (E/W/F 代码) — 120s 超时
│ ├─ Sonnet: 复杂性、重构 (C901, PLR 代码) — 300s 超时
│ └─ Opus: 类型系统、深度推理 (unresolved-attribute) — 600s 超时
├─ 重新运行阶段 1+2 以验证修复结果
└─ 如果清理完成则 Exit 0,如果仍存在违规项则 Exit 2(报告给主智能体)
| 场景 | 智能体看到的内容 | 钩子退出码 |
|---|---|---|
| 无违规项 | 无 | 0 |
| 子进程修复了所有问题 | 无 | 0 |
| 子进程处理后仍存在违规 | [hook] N violation(s) remain | 2 |
| 建议性信息 (重复、旧工具) | [hook:advisory] ... | 0 |
主智能体只看到子进程无法修复的问题。大多数质量问题都会被透明地解决。
LLM 有时会尝试修改 .ruff.toml 或 biome.json 来禁用规则,而不是修复代码。Plankton 通过三层防护来阻止这种情况:
protect_linter_configs.sh 在修改发生前阻止对所有 Linter 配置的编辑。stop_config_guardian.sh 在会话结束时通过 git diff 检测配置更改。.ruff.toml, biome.json, .shellcheckrc, .yamllint, .hadolint.yaml 等。Bash 上的工具调用前钩子(PreToolUse hook)会阻止使用旧版包管理器:
pip, pip3, poetry, pipenv → 已阻止 (请使用 uv)npm, yarn, pnpm → 已阻止 (请使用 bun)npm audit, npm view, npm publish# 将 Plankton 克隆到你的项目(或共享位置)
# 注: Plankton 由 @alxfazio 开发
git clone https://github.com/alexfazio/plankton.git
cd plankton
# 安装核心依赖
brew install jaq ruff uv
# 安装 Python linter
uv sync --all-extras
# 启动 Claude Code — 钩子将自动激活
claude
无需安装命令,无需插件配置。当你向在 Plankton 目录中运行 Claude Code 时,.claude/settings.json 中的钩子会自动被加载。
要在你自己的项目中使用 Plankton 钩子:
.claude/hooks/ 目录复制到你的项目。.claude/settings.json 中的钩子配置。.ruff.toml, biome.json 等)。| 语言 | 必需 | 可选 |
|---|---|---|
| Python | ruff, uv | ty (类型), vulture (死代码), bandit (安全) |
| TypeScript/JS | biome | oxlint, semgrep, knip (死导出) |
| Shell | shellcheck, shfmt | — |
| YAML | yamllint | — |
| Markdown | markdownlint-cli2 | — |
| Dockerfile | hadolint (>= 2.12.0) | — |
| TOML | taplo | — |
| JSON | jaq | — |
| 关注点 | ECC | Plankton |
|---|---|---|
| 代码质量强制执行 | 工具调用后钩子 (Prettier, tsc) | 工具调用后钩子 (20+ Linter + 子进程修复) |
| 安全扫描 | AgentShield, security-reviewer 智能体 | Bandit (Python), Semgrep (TypeScript) |
| 配置保护 | — | 工具调用前钩子阻止 + 停止钩子检测 |
| 包管理器 | 检测 + 设置 | 强制执行 (阻止旧版包管理器) |
| CI 集成 | — | 用于 git 的 Pre-commit 钩子 |
| 模型路由 | 手动 (/model opus) | 自动 (违规复杂性 → 相应层级) |
如果同时运行 ECC 和 Plankton 钩子:
Plankton 的 .claude/hooks/config.json 控制所有行为:
{
"languages": {
"python": true,
"shell": true,
"yaml": true,
"json": true,
"toml": true,
"dockerfile": true,
"markdown": true,
"typescript": {
"enabled": true,
"js_runtime": "auto",
"biome_nursery": "warn",
"semgrep": true
}
},
"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
}
}
关键设置:
volume_threshold — 违规数超过此值将自动升级到更高级别的模型。subprocess_delegation: false — 完全跳过阶段 3(仅报告违规项)。| 变量 | 用途 |
|---|---|
HOOK_SKIP_SUBPROCESS=1 | 跳过阶段 3,直接报告违规项 |
HOOK_SUBPROCESS_TIMEOUT=N | 覆盖模型层级的超时时间 |
HOOK_DEBUG_MODEL=1 | 记录模型选择决策 |
HOOK_SKIP_PM=1 | 绕过包管理器强制执行 |
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
REST API设计模式,包括资源命名、状态码、分页、过滤、错误响应、版本控制和生产API的速率限制。
日本語の概要は準備中です。原文の説明を表示しています。
生产级 API 的 REST API 设计模式,包括资源命名、状态码、分页、过滤、错误响应、版本控制和速率限制。
日本語の概要は準備中です。原文の説明を表示しています。
撰写文章、指南、博客、教程、时事通讯等长篇内容,并根据提供的示例或品牌指南呈现独特的语言风格。当用户需要篇幅超过一段的精炼文字,且重视风格一致性、结构和可信度时,请使用此技能。
日本語の概要は準備中です。原文の説明を表示しています。
根据提供的示例或品牌指导,以独特的语气撰写文章、指南、博客帖子、教程、新闻简报等长篇内容。当用户需要超过一段的精致书面内容时使用,尤其是当语气一致性、结构和可信度至关重要时。
日本語の概要は準備中です。原文の説明を表示しています。
编写文章、指南、博客帖子、教程、新闻通讯(newsletter)以及其他长篇内容。这些内容具有从提供的示例或品牌指南中提取出的独特语气。当用户需要比段落更长的精美文案,且对语气一致性、结构和可信度有要求时,请使用此技能(Skill)。
日本語の概要は準備中です。原文の説明を表示しています。
编写文章、指南、博客、教程、时事通讯(Newsletter)等长内容,支持从示例或品牌指南中提取独特的语感语调。适用于需要撰写超过一个段落的精炼文本,尤其是对语气一致性、结构和可信度有较高要求时。
日本語の概要は準備中です。原文の説明を表示しています。