新增 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 纳入版本控制,忽略运行时状态文件
92 lines
4.2 KiB
Bash
92 lines
4.2 KiB
Bash
#!/usr/bin/env bash
|
|
# SessionStart hook: 启动时输出项目关键上下文和提醒
|
|
# 不阻止会话启动,仅输出提示信息
|
|
set -euo pipefail
|
|
|
|
PROJECT_DIR="${AGENT_PROJECT_DIR:-$(pwd)}"
|
|
cd "$PROJECT_DIR"
|
|
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo " 万事宜 (Everything Is Suitable) — 项目上下文"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
# 当前分支
|
|
BRANCH=$(git branch --show-current 2>/dev/null || echo "未知")
|
|
echo " 分支: $BRANCH"
|
|
|
|
# 变更文件统计
|
|
STAGED=$(git diff --cached --name-only 2>/dev/null | wc -l | tr -d ' ')
|
|
UNSTAGED=$(git diff --name-only 2>/dev/null | wc -l | tr -d ' ')
|
|
echo " 变更: ${STAGED} 个暂存, ${UNSTAGED} 个未暂存"
|
|
|
|
# 检测关键文件变更
|
|
CHANGED_FILES=$(git diff --name-only HEAD 2>/dev/null; git diff --cached --name-only 2>/dev/null; git ls-files --others --exclude-standard 2>/dev/null | sort -u)
|
|
HAS_ALGORITHM_CHANGE=""
|
|
HAS_TEST_CHANGE=""
|
|
HAS_LOCALE_CHANGE=""
|
|
HAS_COMPONENT_CHANGE=""
|
|
|
|
while IFS= read -r f; do
|
|
[ -z "$f" ] && continue
|
|
case "$f" in
|
|
*/algorithms/*) HAS_ALGORITHM_CHANGE="yes" ;;
|
|
*/__tests__/*|*.spec.*|*.test.*) HAS_TEST_CHANGE="yes" ;;
|
|
*/locales/*) HAS_LOCALE_CHANGE="yes" ;;
|
|
*/components/*) HAS_COMPONENT_CHANGE="yes" ;;
|
|
esac
|
|
done <<< "$CHANGED_FILES"
|
|
|
|
# 变更提醒
|
|
if [ -n "$HAS_ALGORITHM_CHANGE" ]; then
|
|
echo ""
|
|
echo " ⚠️ 检测到算法文件变更,请确保:"
|
|
echo " ┌─ 测试覆盖 ─────────────────────────────────┐"
|
|
echo " │ npx vitest run algorithms/__tests__/ │"
|
|
echo " ├─ 交叉验证 ─────────────────────────────────┤"
|
|
echo " │ 算法结果须与传统典籍/已知实现交叉验证 │"
|
|
echo " └────────────────────────────────────────────────┘"
|
|
echo ""
|
|
fi
|
|
|
|
if [ -n "$HAS_TEST_CHANGE" ]; then
|
|
echo " ⚠️ 检测到测试文件变更,请确保:"
|
|
echo " ┌─ 运行验证 ─────────────────────────────────┐"
|
|
echo " │ npm test │"
|
|
echo " ├─ Flaky 检查 ────────────────────────────────┤"
|
|
echo " │ 新增测试至少连续运行 3 次确认稳定性 │"
|
|
echo " └────────────────────────────────────────────────┘"
|
|
echo ""
|
|
fi
|
|
|
|
if [ -n "$HAS_LOCALE_CHANGE" ]; then
|
|
echo " ⚠️ 检测到国际化文件变更,请确保同步所有语言:"
|
|
echo " locales/zh-CN.ts locales/en.ts locales/ja.ts ..."
|
|
echo ""
|
|
fi
|
|
|
|
if [ -n "$HAS_COMPONENT_CHANGE" ]; then
|
|
echo " ⚠️ 检测到组件变更,请确保:"
|
|
echo " ┌─ 单元测试 ─────────────────────────────────┐"
|
|
echo " │ npx vitest run components/ │"
|
|
echo " ├─ E2E 测试 ──────────────────────────────────┤"
|
|
echo " │ npm run test:e2e │"
|
|
echo " └────────────────────────────────────────────────┘"
|
|
echo ""
|
|
fi
|
|
|
|
# Skill 推荐
|
|
echo " 🎯 Skill 推荐(基于变更类型):"
|
|
if [ -n "$HAS_ALGORITHM_CHANGE" ]; then
|
|
echo " 算法 → TDD / systematic-debugging"
|
|
fi
|
|
if [ -n "$HAS_TEST_CHANGE" ]; then
|
|
echo " 测试 → TDD / systematic-debugging"
|
|
fi
|
|
if [ -n "$HAS_COMPONENT_CHANGE" ]; then
|
|
echo " 组件 → frontend-design / impeccable"
|
|
fi
|
|
echo ""
|
|
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo "" |