Skip to content

Commit fd4b089

Browse files
committed
fix: disable skills-loader by default
1 parent 9f1de93 commit fd4b089

7 files changed

Lines changed: 18 additions & 16 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Rules use **negative constraints** ("X does not exist") to implicitly guide AI
5353

5454
### 2. Hooks — Real-Time Interception
5555

56-
No manual steps needed. Hooks trigger automatically during AI operations:
56+
Most hooks trigger automatically during AI operations; `skills-loader` remains an optional manual hook:
5757

5858
| Scenario | Hook | Result |
5959
|----------|------|--------|
@@ -252,7 +252,7 @@ codex:
252252
| Profile | Hooks Installed | Use Case |
253253
|---------|----------------|----------|
254254
| `minimal` | pre-write, pre-edit, pre-bash | Lightweight — only critical interception |
255-
| `core` (default) | minimal + post-edit, post-write, skills-loader, analysis-paralysis | Standard development |
255+
| `core` (default) | minimal + post-edit, post-write, post-guard-check, analysis-paralysis | Standard development |
256256
| `full` | core + stop-guard, learn-evaluator, post-build-check | Full defense + learning |
257257
| `strict` | full + all hooks active at runtime | Maximum enforcement |
258258

README_CN.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ VibeGuard 通过两条路径注入规则:
5858

5959
### 2. Hooks 实时拦截(写代码时自动触发)
6060

61-
不需要手动运行,AI 操作时自动拦截:
61+
大多数 Hook 不需要手动运行,AI 操作时自动拦截`skills-loader` 为保留的可选脚本
6262

6363
| 场景 | 触发 | 结果 |
6464
|------|------|------|
@@ -69,7 +69,7 @@ VibeGuard 通过两条路径注入规则:
6969
| AI 编辑后新增了 `console.log` / `print()` 调试语句 | `post-edit-guard` | **警告** — 提示使用 logger |
7070
| AI 新建文件后存在重复定义或同名文件 | `post-write-guard` | **警告** — 检测重复定义 |
7171
| AI 编辑后构建检查失败(`full` profile) | `post-build-check` | **警告** — 自动运行对应语言构建检查 |
72-
| 会话首次工具调用时 | `skills-loader` | **加载**自动匹配并加载相关 Skill |
72+
| 需要时手动启用 | `skills-loader` | **可选**首次 Read 时输出 Skill/学习提示,默认不启用 |
7373
| `git commit`| `pre-commit-guard` | **拦截** — 质量检查 + 构建检查,10s 超时硬限 |
7474
| AI 想结束但有未验证的源码变更(`full` profile) | `stop-guard` | **门禁** — 提醒完成验证后再结束 |
7575
| 会话结束时 | `learn-evaluator` | **评估** — 采集指标 + 检测纠正信号,有信号时建议 /learn |
@@ -411,7 +411,7 @@ vibeguard/
411411
│ ├── post-write-guard.sh # 新文件重复检测
412412
│ ├── post-build-check.sh # 构建检查(full profile)
413413
│ ├── post-guard-check.sh # MCP guard_check 后处理
414-
│ ├── skills-loader.sh # 会话首次自动加载 Skill
414+
│ ├── skills-loader.sh # 可选的首次 Read Skill/学习提示脚本(默认不启用)
415415
│ ├── stop-guard.sh # 完成前验证门禁
416416
│ └── learn-evaluator.sh # 会话结束学习评估
417417
├── guards/ # 静态检查脚本(支持 // vibeguard:ignore 行内排除)

docs/how/learning-skill-generation.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ VibeGuard 的学习系统对标 OpenAI Harness 的反馈循环,实现"操作
6262
| pre-bash-guard | 命令前 | 危险命令拦截 |
6363
| post-edit-guard | 编辑后 | unwrap/console.log/硬编码/Go error 丢弃/超大 diff |
6464
| post-write-guard | 新建后 | 重复定义检测 |
65-
| skills-loader | 首次 Read | Skill 匹配加载(不写日志) |
65+
| skills-loader | 手动可选的首次 Read | Skill/学习提示加载(默认不注册,不写日志) |
6666
| learn-evaluator | Stop | 会话指标聚合 |
6767

6868
### Session ID 机制
@@ -264,7 +264,8 @@ date: YYYY-MM-DD
264264

265265
## Skill 自动复用
266266

267-
新会话第一次 `Read` 操作时,`skills-loader.sh`(PreToolUse Hook)自动触发两件事:
267+
`skills-loader.sh` 现在保留为可选脚本,默认不会由 setup 自动注册。
268+
如需手动挂到 `PreToolUse(Read)`,它会在新会话第一次 `Read` 操作时触发两件事:
268269

269270
```
270271
新会话 → 首次 Read
@@ -275,8 +276,8 @@ date: YYYY-MM-DD
275276
276277
├─ [Skill 匹配] 扫描 ~/.claude/skills/ 和 .claude/skills/
277278
│ ├─ 读取每个 SKILL.md 的 frontmatter(name + description)
278-
│ ├─ 打分:语言匹配 +2,项目名匹配 +3,触发关键词匹配 +1
279-
│ └─ 输出 top 5 匹配 Skill 到会话上下文
279+
│ ├─ 打分:语言匹配 +2,项目名匹配 +3
280+
│ └─ 输出 top 5 匹配 Skill 提示
280281
281282
└─ 创建 flag 文件,本会话不再重复加载
282283
```
@@ -383,7 +384,7 @@ Hook 升级(强制警告,打断 Agent 循环)
383384
|------|------|
384385
| `hooks/log.sh` | 日志基础设施,提供 vg_log 函数 |
385386
| `hooks/learn-evaluator.sh` | Stop 事件时会话指标采集 |
386-
| `hooks/skills-loader.sh` | 首次 Read 时加载匹配 Skill |
387+
| `hooks/skills-loader.sh` | 可选的首次 Read Skill/学习提示脚本(默认不启用) |
387388
| `hooks/post-build-check.sh` | 构建检查 + 连续失败升级(U-25 机械化) |
388389
| `scripts/gc-scheduled.sh` | GC 定期学习(跨会话模式识别) |
389390
| `.claude/commands/vibeguard/learn.md` | /vibeguard:learn 命令(双模式路由) |
@@ -397,6 +398,6 @@ Hook 升级(强制警告,打断 Agent 循环)
397398
| GC 后台定期学习 | gc-scheduled.sh 学习阶段(跨项目信号汇总) |
398399
| Skill 手动提取 | /vibeguard:learn 模式 B |
399400
| 失败驱动改进 | /vibeguard:learn 模式 A(5-Why + 守卫生成) |
400-
| 上下文自动加载 | skills-loader.sh(PreToolUse Read 触发|
401+
| 可选提示加载 | skills-loader.sh(可手动挂到 PreToolUse Read) |
401402
| 知识去重 | 去重决策表(5 种处理路径) |
402403
| 质量门控 | 4 条标准(可复用、非平凡、具体、已验证) |

hooks/CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Claude Code hooks 脚本,在 AI 操作前后自动触发。
1515
| `post-write-guard.sh` | PostToolUse(Write) | 新文件创建后检测重复定义和同名文件 |
1616
| `post-build-check.sh` | PostToolUse(Edit/Write) | 编辑后自动运行语言对应的构建检查 |
1717
| `post-guard-check.sh` | PostToolUse(guard_check) | MCP guard_check 调用后的处理 |
18-
| `skills-loader.sh` | PreToolUse(Read) | 会话首次工具调用时自动加载匹配的 Skill(每会话一次) |
18+
| `skills-loader.sh` | 手动可选 | 可选的首次 Read 提示脚本;默认不注册到 hooks |
1919
| `stop-guard.sh` | Stop | 完成前验证门禁,检查未提交的源码变更 |
2020
| `learn-evaluator.sh` | Stop | 会话结束时采集指标 + 检测纠正信号(高 warn 率、文件 churn、escalate),有信号时建议 /learn |
2121
| `pre-commit-guard.sh` | git pre-commit | 提交前自动守卫:质量检查 + 构建检查,10s 超时硬限 |

hooks/skills-loader.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/env bash
2-
# VibeGuard Skills Loader — 会话首次工具调用时加载匹配 Skill
2+
# VibeGuard Skills Loader — 可选的 Skill/学习提示加载器
33
#
4-
# 挂在 PreToolUse(Read) 上,每会话只触发一次。
4+
# 默认不注册;如需启用,可手动挂在 PreToolUse(Read) 上,每会话只触发一次。
55
# 扫描 ~/.claude/skills/ 和 .claude/skills/ 中的 SKILL.md,
66
# 按项目语言和当前目录匹配,输出相关 Skill 摘要。
77
#

scripts/lib/settings_json.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ def has_pre_hooks(data: dict[str, Any]) -> bool:
4545
any(_entry_contains(entry, "pre-write-guard") for entry in pre)
4646
and any(_entry_contains(entry, "pre-bash-guard") for entry in pre)
4747
and any(_entry_contains(entry, "pre-edit-guard") for entry in pre)
48-
and any(_entry_contains(entry, "skills-loader") for entry in pre)
4948
)
5049

5150

@@ -171,7 +170,7 @@ def cmd_upsert_vibeguard(args: argparse.Namespace) -> int:
171170
upsert_hook(hooks, args.repo_dir, "PreToolUse", "Write", "pre-write-guard.sh", state)
172171
upsert_hook(hooks, args.repo_dir, "PreToolUse", "Bash", "pre-bash-guard.sh", state)
173172
upsert_hook(hooks, args.repo_dir, "PreToolUse", "Edit", "pre-edit-guard.sh", state)
174-
upsert_hook(hooks, args.repo_dir, "PreToolUse", "Read", "skills-loader.sh", state)
173+
upsert_hook(hooks, args.repo_dir, "PostToolUse", "mcp__vibeguard__guard_check", "post-guard-check.sh", state)
175174
upsert_hook(hooks, args.repo_dir, "PostToolUse", "Edit", "post-edit-guard.sh", state)
176175
upsert_hook(hooks, args.repo_dir, "PostToolUse", "Write", "post-write-guard.sh", state)
177176
# analysis-paralysis-guard for core and above

tests/test_setup.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ assert_cmd "安装后 Codex MCP 已配置" python3 "${CODEX_MCP_HELPER}" check -
104104
assert_cmd "settings helper 检测 mcp 已配置" python3 "${SETTINGS_HELPER}" check --settings-file "${HOME}/.claude/settings.json" --target mcp
105105
assert_cmd "settings helper 检测 pre hooks 已配置" python3 "${SETTINGS_HELPER}" check --settings-file "${HOME}/.claude/settings.json" --target pre-hooks
106106
assert_cmd "settings helper 检测 post hooks 已配置" python3 "${SETTINGS_HELPER}" check --settings-file "${HOME}/.claude/settings.json" --target post-hooks
107+
assert_cmd "默认安装启用 post-guard-check" grep -q "post-guard-check.sh" "${HOME}/.claude/settings.json"
108+
assert_cmd "默认安装不启用 skills-loader" bash -c "! grep -q 'skills-loader.sh' '${HOME}/.claude/settings.json'"
107109
assert_cmd "默认 core profile 不启用 full hooks" bash -c "python3 '${SETTINGS_HELPER}' check --settings-file '${HOME}/.claude/settings.json' --target full-hooks >/dev/null 2>&1; test \$? -ne 0"
108110

109111
header "setup --clean"

0 commit comments

Comments
 (0)