Files
gym-manage/.agents/hooks/stop-check.sh
T
zhangxiang 5c65139fd8 chore(config): 参考 novavis 完善 Agent 配置体系
- AGENTS.md: 新增 §20 工具脚本复用 / §21 分析结论复用 / §22 Flaky 门禁,更新文档配置表
- .pi/: 新增 settings.json、rules/guardrails.md、prompts/{debug,review,ship}-gym-manage.md
- .agents/: 新增 Hook 配置与 4 个 Hook 脚本(session-start/pre-agent-check/check-completeness/stop-check)
  及 protocols/systematic-debugging.md(check-completeness 含接口链缺口检测)
- scripts/flaky-scan.sh: vitest shuffle 稳定性扫描(gym-manage-web)
- .gitignore: 追踪 AGENTS.md 与 .pi 配置,忽略运行时缓存(todos/taskflows-runs/tokenomy/sessions)
2026-08-04 12:02:12 +08:00

70 lines
2.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# Stop hook: runs quick quality checks and outputs JSON result.
# 轻量检查(<15s),不编译后端 — 重型检查留给 pre-push 和 CI。
# 残留扫描由 check-completeness.shPostToolUse)按文件处理,此处不重复。
# Outputs diagnostic info to stderr, final JSON status to stdout.
set -euo pipefail
cd "${AGENT_PROJECT_DIR:-$(pwd)}"
# Suppress during brainstorming / exploratory sessions
if [ -f ".agents/.suppress-hooks" ]; then
echo '{"status":"ok","mode":"suppressed"}'
exit 0
fi
HAS_ERRORS=0
# All diagnostics go to stderr
{
echo '=== [STOP HOOK QUALITY GATE] ==='
# ---- 1/2: 变更文件残留扫描(未完成标记 + 调试遗留)----
echo '[1/2] 变更文件残留扫描...'
CHANGED=$( { git diff --name-only HEAD 2>/dev/null; git diff --cached --name-only 2>/dev/null; } | sort -u )
LEFTOVERS=""
while IFS= read -r f; do
[ -z "$f" ] && continue
[ -f "$f" ] || continue
case "$f" in
gym-manage-web/src/*|gym-manage-uniapp/**|gym-manage-coach-uniapp/**|*.java|*.ts|*.tsx|*.js|*.vue)
if grep -nE '\.only\(|\.skip\(' "$f" 2>/dev/null | grep -qE '\.(only|skip)\('; then
LEFTOVERS="${LEFTOVERS} [LEFTOVER] ${f}: .only()/.skip() 残留\n"
fi
if grep -nE 'console\.log' "$f" 2>/dev/null | grep -qv 'console\.log(`' 2>/dev/null; then
LEFTOVERS="${LEFTOVERS} [LEFTOVER] ${f}: console.log 残留\n"
fi
;;
esac
done <<< "$CHANGED"
if [ -n "$LEFTOVERS" ]; then
printf '%b' "$LEFTOVERS"
echo " ⚠️ 存在调试/测试残留(未阻断,提交前请清理)"
else
echo ' 残留扫描: PASS'
fi
# ---- 2/2: 未提交任务状态检查 ----
echo '[2/2] 任务状态检查...'
if [ -d ".pi/todos" ]; then
OPEN=$(ls .pi/todos/*.md 2>/dev/null | wc -l | tr -d ' ')
echo " 打开的任务: ${OPEN}(如需关闭请使用 todo 工具或手动更新)"
else
echo ' 任务目录: 不存在'
fi
# ---- Summary ----
if [ "$HAS_ERRORS" -eq 0 ]; then
echo '=== [STOP HOOK: ALL PASS] ==='
else
echo '=== [STOP HOOK: ERRORS FOUND] ==='
fi
} >&2
# Output final status as JSON
if [ "$HAS_ERRORS" -eq 0 ]; then
echo '{"status":"ok"}'
else
echo '{"status":"error"}'
fi