coordinator-patterns

本 skill 定义了所有 coordinator agents 共享的通用模式,包括:

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 "coordinator-patterns" with this command: npx skills add penkzhou/swiss-army-knife-plugin/penkzhou-swiss-army-knife-plugin-coordinator-patterns

Coordinator 通用模式

本 skill 定义了所有 coordinator agents 共享的通用模式,包括:

  • Phase 验证逻辑

  • 错误处理模式

  • TodoWrite 管理

  • 状态说明

Phase 验证逻辑

所有 master-coordinator 必须在初始化时验证 phase 参数:

def validate_phase(phase_arg, valid_phases): """ 验证 phase 参数

Args:
    phase_arg: 用户传入的 phase 参数(如 "0,1,2" 或 "all")
    valid_phases: 有效 phase 列表(如 ["0", "1", "2", "3", "4", "5", "all"])

Returns:
    (is_valid, result): 如果有效,result 是 phase 列表;如果无效,result 是错误响应
"""
if phase_arg == "all":
    # 返回所有数字 phases(排除 "all")
    return True, sorted([p for p in valid_phases if p != "all"], key=int)

phases = phase_arg.split(",")
invalid_phases = [p for p in phases if p not in valid_phases]

if invalid_phases:
    return False, {
        "status": "failed",
        "error": {
            "code": "INVALID_PHASE",
            "message": f"无效的 phase 参数: {invalid_phases}",
            "valid_values": valid_phases,
            "received": phase_arg,
            "suggestion": f"有效值: 0-{len(valid_phases)-2} 的数字或 'all',多个用逗号分隔"
        }
    }

return True, sorted(set(phases), key=int)

各工作流的有效 Phases

工作流 有效 Phases 说明

Bugfix 0-5 6 阶段

PR Review 0-7 8 阶段

CI Job 0-6 7 阶段

Execute Plan 0-5 6 阶段

错误处理模式

所有 coordinator 必须处理以下错误类型:

JSON 解析错误

当 agent 返回的内容无法解析为有效 JSON 时:

try: result = json.loads(agent_output) except json.JSONDecodeError as e: return { "status": "failed", "error": { "code": "JSON_PARSE_ERROR", "message": "Agent 输出无法解析为 JSON", "phase": current_phase, "agent": agent_name, "parse_error": str(e), "raw_output_preview": agent_output[:500], # 前 500 字符供调试 "suggestion": "检查 agent 是否正确返回 JSON 格式,或重试命令" } }

Agent 执行超时

if agent_result.error.code == "TIMEOUT": return { "status": "failed", "error": { "code": "AGENT_TIMEOUT", "message": f"Agent {agent_name} 执行超时", "phase": current_phase, "timeout_ms": agent_result.error.timeout_ms, "suggestion": "任务可能过于复杂,建议拆分或简化输入" } }

响应截断

当 agent 输出超过长度限制被截断时:

if agent_result.truncated: # 记录警告但尝试继续 warnings.append({ "code": "OUTPUT_TRUNCATED", "message": f"Agent {agent_name} 输出被截断", "original_length": agent_result.original_length, "truncated_length": agent_result.truncated_length, "impact": "可能丢失部分诊断信息" }) # 如果关键字段缺失,则停止 if not validate_required_fields(agent_result): return { "status": "failed", "error": { "code": "TRUNCATION_DATA_LOSS", "message": "输出截断导致关键数据丢失", "missing_fields": get_missing_fields(agent_result), "suggestion": "请简化输入或分批处理" } }

用户取消

if user_choice in ["取消", "停止"]: return { "status": "user_cancelled", "phase": current_phase, "reason": "用户选择停止执行", "completed_work": {...} # 已完成的工作 }

Agent 调用失败(通用)

if agent_result.status == "failed": return { "status": "failed", "error": { "phase": current_phase, "agent": agent_name, "code": agent_result.error.code, "message": agent_result.error.message } }

错误恢复机制(可选)

对于支持错误恢复的 coordinator:

可恢复错误类型

RECOVERABLE_ERRORS = { "TIMEOUT": True, # 超时可重试 "RATE_LIMIT": True, # 限流可重试 "OUTPUT_TRUNCATED": True, # 截断可简化输入重试 }

MAX_RETRIES = 2 # 最多重试 2 次

def is_recoverable(error): """判断错误是否可恢复""" return RECOVERABLE_ERRORS.get(error.code, False)

TodoWrite 管理

所有 coordinator 必须使用 TodoWrite 跟踪执行进度:

初始化 Todo 列表

def create_phase_todos(phases, phase_descriptions): """ 创建 Phase 任务列表

Args:
    phases: Phase 列表(如 ["0", "1", "2"])
    phase_descriptions: Phase 描述映射(如 {"0": ("问题收集", "收集中"), ...})

Returns:
    todos 列表
"""
todos = []
for i, phase in enumerate(phases):
    desc, active_form = phase_descriptions.get(phase, (f"Phase {phase}", f"执行 Phase {phase}"))
    todos.append({
        "content": f"Phase {phase}: {desc}",
        "status": "in_progress" if i == 0 else "pending",
        "activeForm": active_form
    })
return todos

更新 Todo 状态

def on_phase_complete(todos, phase_index): """完成 Phase 后更新状态""" todos[phase_index]["status"] = "completed" if phase_index + 1 < len(todos): todos[phase_index + 1]["status"] = "in_progress" return todos

各工作流的 Phase 描述

Bugfix 工作流:

BUGFIX_PHASES = { "0": ("问题收集与分类", "收集中"), "1": ("诊断分析", "分析中"), "2": ("方案设计", "设计中"), "3": ("方案文档化", "文档化中"), "4": ("实施执行", "执行中"), "5": ("验证与审查", "审查中") }

PR Review 工作流:

PR_REVIEW_PHASES = { "0": ("初始化", "初始化中"), "1": ("评论获取", "获取评论中"), "2": ("评论过滤", "过滤评论中"), "3": ("评论分类", "分类评论中"), "4": ("修复协调", "协调修复中"), "5": ("回复生成", "生成回复中"), "6": ("回复提交", "提交回复中"), "7": ("审查与汇总", "审查汇总中") }

CI Job 工作流:

CI_JOB_PHASES = { "0": ("初始化", "初始化中"), "1": ("日志获取", "获取日志中"), "2": ("失败分类", "分类失败中"), "3": ("根因分析", "分析根因中"), "4": ("修复执行", "执行修复中"), "5": ("验证与审查", "验证审查中"), "6": ("汇总报告", "生成报告中") }

Execute Plan 工作流:

EXECUTE_PLAN_PHASES = { "0": ("初始化与计划解析", "初始化中"), "1": ("计划验证", "验证中"), "2": ("方案细化", "细化方案中"), "3": ("批次执行", "执行中"), "4": ("Review 审查", "审查中"), "5": ("汇总报告", "生成报告中") }

状态说明

所有 coordinator 输出的 status 字段使用统一的语义:

status 含义 适用场景

success

所有 Phase 成功完成 正常完成

failed

某个 Phase 失败且无法继续 不可恢复错误

partial

部分任务失败,但流程完成 有剩余问题

user_cancelled

用户选择停止 用户主动取消

dry_run_complete

Dry run 模式完成分析 --dry-run 模式

必填输出字段

每个 coordinator 的 JSON 输出必须包含:

{ "status": "success|failed|partial|user_cancelled|dry_run_complete", "agent": "xxx-master-coordinator", "phases_completed": ["phase_0", "phase_1", ...], "errors": [], "warnings": [] }

关键原则

  • 闭环执行:所有逻辑在 agent 内部完成,不依赖命令层

  • 状态透明:每个 Phase 的输出都保存并传递到下一 Phase

  • 用户控制:关键决策点使用 AskUserQuestion 询问用户

  • 进度可见:使用 TodoWrite 让用户了解执行进度

  • 错误隔离:单个任务失败不应影响其他独立任务

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.

Automation

bugfix-workflow

No summary provided by upstream source.

Repository SourceNeeds Review
General

elements-of-style

No summary provided by upstream source.

Repository SourceNeeds Review
General

frontend-bugfix

No summary provided by upstream source.

Repository SourceNeeds Review
Research

pr-review-analysis

No summary provided by upstream source.

Repository SourceNeeds Review