把可机器判定的硬红线从"投喂"升级为"硬拦截",并补上事后/工具无关/压缩三个缺口: - .claude/hooks/check-redlines.js:校验「可编辑范围」(路径级,禁改平台/ vendor/00_Surface/02_Input/server 平台,app.js 例外) 与「严格 ES5」(运行时 .js 禁箭头/模板串/class/let/const,去注释与字符串后高信号匹配)。双模式: PreToolUse 读工具入参、命中即 deny 阻止写入;--staged 扫暂存文件、命中即 非零退出阻断提交。 - settings.json:PreToolUse 增挂 check-redlines(在 remind 之前);新增 PostCompact 钩子清空 .spec-injected,使压缩后下次编辑重新全量注入规范。 - .githooks/pre-commit + core.hooksPath=.githooks:提交边界硬闸,工具无关 (Claude Code/别的编辑器/人手改都过)。 - 已校准:81 个现有运行时 js 零 ES5 误报(可编辑的 framework 25 文件全过), 平台文件正确判为禁改;真违规(箭头/模板/const/class/改 vendor/改 class)全拦、 合法 ES5 与注释里的 => 全放行;pre-commit 实测拦住 ES5 违规提交。 判断类规范(职责单一/数据权威设计/房间隔离)机器判不了,不在本层,仍靠投喂 +(可选)改后复审 agent。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
44 lines
999 B
JSON
44 lines
999 B
JSON
{
|
|
"hooks": {
|
|
"SessionStart": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "rm -rf \"$CLAUDE_PROJECT_DIR/.claude/.spec-injected\""
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"PostCompact": [
|
|
{
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "rm -rf \"$CLAUDE_PROJECT_DIR/.claude/.spec-injected\""
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"PreToolUse": [
|
|
{
|
|
"matcher": "Edit|Write|MultiEdit",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/hooks/check-redlines.js\"",
|
|
"timeout": 10,
|
|
"statusMessage": "校验机械红线…"
|
|
},
|
|
{
|
|
"type": "command",
|
|
"command": "node \"$CLAUDE_PROJECT_DIR/.claude/hooks/remind-docs.js\"",
|
|
"timeout": 15,
|
|
"statusMessage": "注入/校验开发规范…"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|