task-graph-mcp 0.2.0

MCP server for agent task workflows with phases, prompts, gates, and multi-agent coordination
Documentation
# Unified workflow configuration for states, phases, and prompts

settings:
  initial_state: pending
  disconnect_state: pending
  blocking_states: [pending, assigned, working]
  unknown_phase: warn

states:
  pending:
    exits: [assigned, working, cancelled]
    timed: false

  assigned:
    exits: [working, pending, cancelled]
    timed: false
    prompts:
      enter: |

        A task has been assigned to you. Review and claim when ready.

  working:
    exits: [completed, failed, pending]
    timed: true
    prompts:
      enter: |

        You are now actively working on this task. Keep your thinking updated regularly using the `thinking` tool to show progress and allow coordination with other agents.

        ## Valid Next States

        From `{{current_status}}` you can transition to:
        {{valid_exits}}

        Use `update(status="completed")` when done, `update(status="failed")` if blocked, or `update(status="pending")` to release without completing.

        ## Phase

        Current phase: {{current_phase}}

        Valid phases: {{valid_phases}}

        Set a phase with `update(phase="implement")` to categorize the type of work you're doing.
      exit: |

        Before leaving working state:
        - [ ] Unmark any files you marked
        - [ ] Attach results or notes
        - [ ] Log costs with `log_metrics()`

  completed:
    exits: [pending]
    timed: false
    prompts:
      enter: |

        Task completed. Results should be attached.

  failed:
    exits: [pending]
    timed: false
    prompts:
      enter: |

        Task failed. Please document:
        - What was attempted
        - What blocked progress
        - Suggested next steps

  cancelled:
    exits: []
    timed: false

phases:
  explore:
    prompts:
      exit: |

        Capture exploration findings before moving on.
        Attach discoveries to parent task for sibling agents.

  implement:
    prompts:
      enter: |

        Implementation phase. Mark files before editing.

  review:
    prompts:
      enter: |

        ## Code Review Checklist
        - [ ] Tests pass
        - [ ] No new warnings
        - [ ] Documentation updated

  test:
    prompts:
      enter: |

        Testing phase. Verify the implementation works correctly.

  security:
    prompts:
      enter: |

        ## Security Review
        - [ ] Input validation
        - [ ] Auth/authz checks
        - [ ] No secrets in code

  # Phases without prompts
  deliver: {}
  triage: {}
  diagnose: {}
  design: {}
  plan: {}
  doc: {}
  integrate: {}
  deploy: {}
  monitor: {}
  optimize: {}

# State+Phase specific prompts
combos:
  working+implement:
    enter: |

      You're implementing. Focus on:
      - Follow existing patterns
      - Write tests alongside code
      - Keep commits atomic

  working+review:
    enter: |

      Code review in progress:
      - Check for correctness
      - Look for edge cases
      - Verify test coverage

# =============================================================================
# ATTACHMENT GUIDANCE
# =============================================================================
# Recommended attachment types for task-graph workflows. These types are
# pre-defined in config.yaml with appropriate MIME types and default modes.
#
# Use these standard types for consistency across workflows. Each type has a
# configured MIME type and mode (append vs replace).

attachments:
  # Core documentation types
  documentation:
    note:
      mime: text/plain
      mode: append
      description: General observations, comments, and context
      when: Any time you want to record information for yourself or others
      example: |

        attach(task=id, type="note", content="Found existing helper in utils.rs")

    plan:
      mime: text/markdown
      mode: replace
      description: Design documents, approach outlines, specifications
      when: Planning phase, design decisions, structured documentation
      example: |

        attach(task=id, type="plan", content="## Approach\n1. Refactor X\n2. Add Y")

    context:
      mime: text/plain
      mode: replace
      description: Essential context needed to understand or resume work
      when: Handoffs, pausing work, or providing background
      example: |

        attach(task=id, type="context", content="Entry point is main.rs:42")

    log:
      mime: text/plain
      mode: append
      description: Chronological record of activities
      when: Audit trails, long-running tasks, activity history
      example: |

        attach(task=id, type="log", content="10:30 - Started investigation")

  # Structured data types
  structured:
    result:
      mime: application/json
      mode: replace
      description: Structured outcome data
      when: Task completion, recording measurable outcomes
      example: |

        attach(task=id, type="result", content='{"status": "success", "items_processed": 42}')

    meta:
      mime: application/json
      mode: replace
      description: Task metadata, estimates, tracking data
      when: Recording metrics, estimates, or custom fields
      example: |

        attach(task=id, type="meta", content='{"estimated_hours": 4}')

  # Code and version control
  code:
    commit:
      mime: text/git.hash
      mode: append
      description: Git commit hash references
      when: Linking tasks to commits
      example: |

        attach(task=id, type="commit", content="abc123f")

    checkin:
      mime: text/p4.changelist
      mode: append
      description: Perforce changelist references
      when: Linking tasks to P4 changelists
      example: |

        attach(task=id, type="checkin", content="CL 12345")

    diff:
      mime: text/x-diff
      mode: append
      description: Code diffs for review or reference
      when: Showing changes, review preparation
      example: |

        attach(task=id, type="diff", content="--- a/file.rs\n+++ b/file.rs\n...")

    changelist:
      mime: text/plain
      mode: append
      description: List of files modified
      when: Summarizing scope of changes
      example: |

        attach(task=id, type="changelist", content="src/lib.rs\nsrc/main.rs")

  # Operational types
  operational:
    output:
      mime: text/plain
      mode: append
      description: Command or tool output
      when: Test results, build output, diagnostics
      example: |

        attach(task=id, type="output", content="cargo test: 42 passed")

    error:
      mime: text/plain
      mode: append
      description: Error messages and failure information
      when: Recording failures, blockers, issues
      example: |

        attach(task=id, type="error", content="Build failed: missing dependency")

  # Workflow gates (for workflows with gate requirements)
  gates:
    gate/tests:
      mime: text/plain
      mode: append
      description: Evidence that tests pass
      when: Satisfying test gate requirements
      example: |

        attach(task=id, type="gate/tests", content="All tests passing")

    gate/commit:
      mime: text/plain
      mode: append
      description: Evidence of committed code
      when: Satisfying commit gate requirements
      example: |

        attach(task=id, type="gate/commit", content="abc123f merged to main")

    gate/review:
      mime: text/plain
      mode: append
      description: Evidence of review approval
      when: Satisfying review gate requirements
      example: |

        attach(task=id, type="gate/review", content="Approved by reviewer")