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)
This commit was merged in pull request #57.
This commit is contained in:
2026-08-04 12:02:12 +08:00
parent 4ba4af2f53
commit 5c65139fd8
14 changed files with 888 additions and 2 deletions
+69
View File
@@ -0,0 +1,69 @@
#!/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