Files
everything-is-suitable/.trae/hooks/check-completeness.sh
T
zhangxiang 5445c343b3 chore: 参考 novavis 优化 Agent 配置体系
新增 AGENTS.md 规则(§1-§22)、Hook 脚本和可复用工具脚本:

- 重构 AGENTS.md:新增 16 条规则(任务分解、双轨验证、骨架占位禁止、
  测试命令退出码保留、工具脚本可复用、完成前验证门禁、Flaky 测试门禁等)
- 新增 .trae/hooks/:session-start / pre-agent-check / check-completeness / stop-check
- 新增 .trae/settings.json:关联 4 个 Hook 到 SessionStart/PreToolUse/PostToolUse/Stop
- 新增 scripts/:flaky-scan.sh / check-task-checklist.sh / check-issue-checklist.sh
- 调整 .gitignore:保留 hooks/settings 纳入版本控制,忽略运行时状态文件
2026-08-12 22:07:22 +08:00

56 lines
1.8 KiB
Bash

#!/usr/bin/env bash
# PostToolUse hook: 检查单个编辑文件中的未完成标记
# 在 Write/Edit 操作后对修改的文件运行
set -euo pipefail
PROJECT_DIR="${AGENT_PROJECT_DIR:-$(pwd)}"
# Suppress during brainstorming / exploratory sessions
if [ -f "${PROJECT_DIR}/.trae/.suppress-hooks" ]; then
exit 0
fi
f="${AGENT_EDITED_FILE:-$AGENT_FILE}"
if [ ! -f "$f" ]; then
exit 0
fi
issues=()
ext="${f##*.}"
basename=$(basename "$f")
# ============================================================
# PART 1: Unfinished markers scan
# ============================================================
if [[ "$ext" =~ ^(ts|tsx|js|jsx|vue)$ ]]; then
while IFS=: read -r line_no content; do
[ -z "$line_no" ] && continue
trimmed=$(echo "$content" | sed 's/^[[:space:]]*//')
if echo "$trimmed" | grep -qE '^\s*(TODO|FIXME|HACK|XXX):'; then
issues+=(" L${line_no}: TODO/FIXME ${trimmed:0:100}")
elif echo "$trimmed" | grep -qi 'not implemented' && echo "$trimmed" | grep -qi 'throw'; then
issues+=(" L${line_no}: [SKELETON] ${trimmed:0:100}")
elif echo "$trimmed" | grep -qE 'function [a-zA-Z_][a-zA-Z0-9_]*\s*\(\s*\)\s*\{\s*\}'; then
if ! echo "$trimmed" | grep -q 'return'; then
issues+=(" L${line_no}: [EMPTY FN] ${trimmed:0:100}")
fi
fi
done < <(grep -nE 'TODO:|FIXME:|HACK:|XXX:|not implemented|function [a-zA-Z_][a-zA-Z0-9_]*\s*\(\s*\)\s*\{\s*\}' "$f" 2>/dev/null || true)
fi
# ============================================================
# REPORT
# ============================================================
if [ ${#issues[@]} -gt 0 ]; then
echo ""
echo "[COMPLETENESS] $(basename "$f") 检查发现 ${#issues[@]} 个问题:"
for issue in "${issues[@]:0:20}"; do
echo "$issue"
done
if [ ${#issues[@]} -gt 20 ]; then
echo " ... 及其他 $((${#issues[@]} - 20)) 处"
fi
echo ""
fi