execution-manager

- 读取 meta.yaml 获取所有待执行部分

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "execution-manager" with this command: npx skills add blueif16/amazing-claude-code-plugins/blueif16-amazing-claude-code-plugins-execution-manager

执行管理器

所有者: 仅主协调器

职责

  • 读取 meta.yaml 获取所有待执行部分

  • 为每个部分创建 git worktree

  • 为每个 worktree 生成 tmux 会话

  • 在每个会话中初始化子协调器,传递:

  • section_path(部分目录路径,如 docs/prds/reddit-bot/sections/auth )

  • 分支名称

  • 工作空间路径

  • 生成后立即更新 meta.yaml 中的部分状态

  • 监控完成信号

  • 完成/失败时清理

重要约束

主协调器代码修复规则:

当需要修复主协调器(当前 agent 所在环境)中的代码时,必须先询问人工。

主协调器的职责范围:

  • ✅ 协调和生成 tmux 会话

  • ✅ 管理 git worktree

  • ✅ 检查各部分进度

  • ✅ 简洁地调用 skills

  • ❌ 不应思考具体执行计划

  • ❌ 不应直接修改业务代码

所有具体的执行计划和代码实现应由子协调器在各自的 tmux 会话中完成。

生成模式

读取 meta.yaml 获取项目信息

project_name=$(yq '.project' meta.yaml) sections=$(yq '.sections | keys' meta.yaml)

对每个部分:

for section in $sections; do branch="${project_name}/${section}" section_path="docs/prds/${project_name}/sections/${section}"

创建 worktree

git worktree add ../worktrees/${section} -b ${branch}

创建 tmux 会话并初始化子协调器

tmux new-session -d -s ${section} -c ../worktrees/${section}
claude "You are Sub Coordinator for ${section}. Read fix-engine skill. Task files in .task/ directory. Begin."

更新 meta.yaml 状态

yq -i ".sections.${section}.status = "in_progress"" meta.yaml done

强制 Worktree 规则

所有部分必须在各自的 worktree 中执行,无例外。

生成前验证:

  • 验证 worktree 存在:git worktree list | grep {section-id}

  • 验证 tmux 会话在 worktree 中运行:-c ../worktrees/{section-id}

  • 永远不要在主仓库中为部分工作生成 Claude

监控循环 (REQUIRED)

生成所有会话后,必须继续监控。不要交给人工处理。

监控状态变量

all_done=false check_interval=30 # 秒

while [ "$all_done" = false ]; do echo "检查所有部分状态..."

completed_count=0 blocked_count=0 in_progress_count=0 total_sections=$(yq '.sections | length' meta.yaml)

检查每个部分的状态

for section in $(yq '.sections | keys | .[]' meta.yaml); do status=$(yq ".sections.${section}.status" meta.yaml)

case "$status" in
  completed)
    ((completed_count++))
    echo "✅ $section: COMPLETE"
    ;;
  blocked)
    ((blocked_count++))
    echo "❌ $section: BLOCKED"
    ;;
  in_progress)
    ((in_progress_count++))
    # 检查 tmux 会话是否还在运行
    if ! tmux has-session -t "$section" 2>/dev/null; then
      echo "⚠️ $section: tmux 会话异常退出"
      yq -i ".sections.${section}.status = \"blocked\"" meta.yaml
    else
      # 检查最近输出
      last_output=$(tmux capture-pane -t "$section" -p | tail -20)
      echo "🔄 $section: WORKING"
    fi
    ;;
esac

done

检查是否所有部分都完成或阻塞

if [ $((completed_count + blocked_count)) -eq $total_sections ]; then all_done=true echo "" echo "所有部分已完成或阻塞,准备合并..." echo "- 已完成: $completed_count" echo "- 已阻塞: $blocked_count" echo ""

# 自动调用 merge-resolver
if [ $completed_count -gt 0 ]; then
  echo "调用 merge-resolver 处理已完成的部分..."
  # 这里 Claude 会调用 merge-resolver skill
  # 人工只需在 merge-resolver 完成后看到最终报告
else
  echo "没有已完成的部分可以合并"
  echo "所有部分都被阻塞,需要人工干预"
fi

else echo "" echo "状态摘要: $completed_count 完成, $in_progress_count 进行中, $blocked_count 阻塞" echo "等待 ${check_interval} 秒后再次检查..." sleep $check_interval fi done

监控期间的响应策略

每 30-60 秒检查每个会话:

  • WORKING → 继续监控

  • COMPLETE → 更新 meta.yaml,继续监控其他部分

  • STUCK → 读取 error-report.md,决定:

  • 通过 tmux send-keys 提供额外上下文

  • 或升级到人工(标记为 blocked)

  • 5分钟以上无输出 → 检查是否卡住,发送提示: tmux send-keys -t {section-id} "状态更新?" Enter

对问题做出反应:

  • 如果 tmux 需要任何权限或询问,通常只需同意并指向正确的选择

  • 如果需要外部信息 → 获取并注入: tmux send-keys -t {section-id} "额外上下文:..." Enter

仅在以下情况停止监控:

  • 所有部分 COMPLETE 或 BLOCKED → 调用 merge-resolver

  • merge-resolver 完成 → 向人工报告最终摘要

  • 多个部分出现致命错误 → 升级并提供完整报告

不要只是生成后就离开。你负责监控循环直到所有部分完成并调用 merge-resolver。

完成触发器

当监控循环检测到所有部分都是 completed 或 blocked 状态时:

如果有任何 blocked 部分:

  • 报告阻塞的部分给人工

  • 询问:"是否继续合并已完成的部分? (y/n)"

  • 如果 30 秒内无响应,默认为 YES

调用 merge-resolver:

  • 传递所有 completed 部分的列表

  • merge-resolver 会处理合并、冲突解决、测试和报告

merge-resolver 返回后:

  • 如果所有合并成功且测试通过 → 报告成功

  • 如果有冲突 → 报告冲突文件和解决步骤

  • 如果测试失败 → 报告失败原因

只有在 merge-resolver 完成后才返回控制权给人工

永不提前退出原则

execution-manager 的职责是完整的端到端执行管理:

  • ✅ 生成所有 tmux 会话

  • ✅ 监控所有部分直到完成

  • ✅ 自动调用 merge-resolver

  • ✅ 等待 merge-resolver 完成

  • ✅ 向人工报告最终结果

不要:

  • ❌ 生成会话后就返回

  • ❌ 部分完成时就返回

  • ❌ 让人工手动触发合并

  • ❌ 在 merge-resolver 运行时返回

人工只应看到:

  • 初始 PRD 输入

  • 最终执行报告(成功或需要处理的冲突)

监控状态说明

定期检查 meta.yaml 中各部分的状态:

  • completed

  • 部分完成,等待所有部分完成后触发 merge-resolver

  • blocked

  • 已升级到人工,暂停该部分

  • in_progress

  • 继续监控

同时监控 tmux 会话是否异常退出。

清理

tmux kill-session -t {section-id} git worktree remove ../worktrees/{section-id} git branch -d {section-id} # 仅在合并后

主协调器必备命令

tmux 会话管理

列出所有工作会话

tmux ls

查看工作输出(最后50行,非阻塞)

tmux capture-pane -t {section-id} -p | tail -50

向工作会话发送后续指令

tmux send-keys -t {section-id} "Also handle edge case X" Enter

附加到会话实时观察(Ctrl+B D 分离)

tmux attach -t {section-id}

终止卡住的工作会话

tmux kill-session -t {section-id}

git worktree 管理

创建带新分支的 worktree

git worktree add ../worktrees/{section-id} -b {section-id}

列出所有 worktrees

git worktree list

删除 worktree(合并后)

git worktree remove ../worktrees/{section-id}

清理过期的 worktree 引用

git worktree prune

从主分支合并完成的部分

git merge {section-id} --no-ff -m "Merge {section-id}"

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

create-skill

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

merge-resolver

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

init-plugin

No summary provided by upstream source.

Repository SourceNeeds Review