Files
VibeEngineering/.claude/hooks/session-start.sh

80 lines
2.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# .claude/hooks/session-start.sh
# VibeEngineering V2 - SessionStart Hook
# 只有存在 last_task_context.jsonl 才触发恢复提示
# 不使用严格模式,避免 Windows 环境兼容问题
# 检查是否存在恢复上下文文件(当前目录已由调用者设置)
if [[ ! -f ".vibe/last_task_context.jsonl" ]]; then
exit 0
fi
if [[ ! -f ".vibe/session.yml" ]]; then
exit 0
fi
# 读取 task_list_id使用 grep + sed 替代 yq兼容性更好
TASK_LIST_ID=$(grep 'task_list_id:' .vibe/session.yml | sed 's/task_list_id: *//' | tr -d '"' | tr -d "'")
TASK_DIR="$HOME/.claude/tasks/$TASK_LIST_ID"
cat << 'PROMPT'
## 【系统提示:检测到跨 Compact 恢复 - VibeEngineering V2 执行阶段】
你正在从 Compact 后恢复执行上下文。请严格按以下顺序读取信息:
### Step 1: 读取执行流程定义
```
Read .claude/commands/vibe-execute.md
```
了解 Phase 2 执行循环的完整流程。
### Step 2: 读取 subagent-driven-development skill
```
Read .claude/skills/subagent-driven-development/SKILL.md
```
了解子代理派发模板Implementer、Spec Reviewer、Code Quality Reviewer
### Step 3: 读取设计文档
```
Read .vibe/session.yml
```
获取 design_doc 路径,然后读取设计文档了解需求。
### Step 4: 读取所有 Task JSON
PROMPT
echo '```'
echo "Glob pattern='*.json' path='$TASK_DIR'"
echo "然后 Read 每个返回的 JSON 文件"
echo '```'
cat << 'PROMPT'
从 Task JSON 了解:
- 所有任务列表subject和详细信息description
- 任务状态status: pending / in_progress / completed
- **已完成任务的 metadata**files_modified, errors_encountered, git_commit, test_results
### Step 5: 读取上一窗口执行上下文
```
Read .vibe/last_task_context.jsonl
```
从 last_task_context.jsonl 了解:
- 当前任务执行到哪一步
- Claude 的思考过程和决策
- 用户的纠正指令(如有)
- 子代理派发的任务和返回结果
### 恢复后行为
1. 找到第一个 status 为 pending 或 in_progress 的 Task
2. 如果有 in_progress 的 Task结合 last_task_context.jsonl 从中断点继续
3. 如果上一个 Task 已 completed从下一个 pending Task 开始
4. **按照 vibe-execute.md Phase 2 和 subagent-driven-development skill 执行**
- 业务 Task派发 Implementer → Spec Reviewer → Code Quality Reviewer → 标记完成
- 校验 Task执行 Step 0-5 固定流程
5. 所有 Task 完成后,校验 Task 保存快照并标记完成
PROMPT
exit 0