Files
everything-is-suitable/.trae/hooks/session-start.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

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 ""