#!/usr/bin/env bash # PreToolUse hook: 写操作前根据文件路径输出 Skill 提示 # 不阻止操作,仅输出提示信息 set -euo pipefail f="${AGENT_EDITED_FILE:-$AGENT_FILE}" [ -z "$f" ] && exit 0 [ ! -f "$f" ] && [ ! -e "$f" ] && exit 0 basename=$(basename "$f") # Skill 提示: 命中时输出,供 agent 决策(AGENTS.md §3 Skill-First) skill_hint() { local name="$1"; shift echo " → [SKILL] $name: $*" } # 检查 1: 算法文件 → 提示 TDD + 交叉验证 if [[ "$f" == *"/algorithms/"* ]]; then echo "" echo "[PRE-CHECK] 算法变更: $basename" skill_hint "tdd" "RED-GREEN-REFACTOR 测试优先" skill_hint "systematic-debugging" "算法结果须与传统典籍/已知实现交叉验证" echo "" exit 0 fi # 检查 2: 测试文件 → 提示测试相关 skill if [[ "$basename" == *.test.* || "$basename" == *.spec.* || "$f" == *"/__tests__/"* ]]; then echo "" echo "[PRE-CHECK] 测试文件变更: $basename" skill_hint "tdd" "RED-GREEN-REFACTOR 测试优先" skill_hint "systematic-debugging" "测试失败先定位根因再修复" echo "" exit 0 fi # 检查 3: 组件文件 → 提示前端设计 skill if [[ "$f" == *"/components/"* && "$basename" == *.vue ]]; then echo "" echo "[PRE-CHECK] 组件变更: $basename" skill_hint "frontend-design" "UniApp 组件设计最佳实践" skill_hint "impeccable" "UI 审查与视觉打磨" echo "" exit 0 fi # 检查 4: 页面文件 → 提示全链路验证 if [[ "$f" == *"/pages/"* && "$basename" == *.vue ]]; then echo "" echo "[PRE-CHECK] 页面变更: $basename" skill_hint "frontend-design" "页面布局与交互设计" echo "" exit 0 fi # 检查 5: 国际化文件 → 提示同步所有语言 if [[ "$f" == *"/locales/"* && "$basename" == *.ts ]]; then echo "" echo "[PRE-CHECK] 国际化变更: $basename" echo " → 确保同步更新所有 locales/*.ts 文件" echo "" exit 0 fi # 检查 6: 文档/注释类 → 中文文档规范 if [[ "$basename" == *.md || "$basename" == *.adoc ]]; then echo "" echo "[PRE-CHECK] 文档变更: $basename" skill_hint "chinese-documentation" "中文排版/术语/结构规范" echo "" exit 0 fi