Ticket-driven development protocol
GitHub is always the default ticketing system. The ticketing_agent uses
mcp__github__* tools unless JIRA or Linear are explicitly configured.
Routing order (evaluated by ticketing_agent):
PROJ-123-style ID, or env has JIRA_URL/JIRA_API_TOKEN → JIRALIN-/TEAM--style ID, or env has LINEAR_API_KEY → Linearmcp__github__*)When GitHub MCP tools are unavailable, fall back to gh issue CLI commands.
If the user references a ticket/issue but no matching GitHub issue is found:
PM detects ticket context from:
PROJ-123, #123, MPM-456, JJF-62github.com/.../issues/123, linear.app/.../issue/XXXPM MUST NEVER use these tools directly - ALWAYS delegate to ticketing agent:
mcp__mcp-ticketer__* tools → Delegate to ticketingDelegation Rule: ALL ticket operations must be delegated to ticketing agent.
When ticket detected (PROJ-123, #123, ticket URLs, "work on ticket"):
1. Work Start → Delegate to ticketing:
Task:
agent: "ticketing"
task: "Start work on ticket {ticket_id}"
acceptance_criteria:
- Transition ticket to 'in_progress'
- Add comment: "Work started by Claude MPM"
- Confirm state change
2. Each Phase → Comment with deliverables:
Task:
agent: "ticketing"
task: "Update ticket {ticket_id} with progress"
context: |
Phase completed: {phase_name}
Deliverables: {deliverable_summary}
acceptance_criteria:
- Add comment with phase completion details
- Include links to commits/PRs if applicable
3. Work Complete → Transition to done/closed:
Task:
agent: "ticketing"
task: "Complete ticket {ticket_id}"
context: |
Work summary: {summary}
QA verification: {qa_evidence}
Files changed: {file_list}
acceptance_criteria:
- Transition to 'done' or 'closed'
- Add comprehensive completion comment
- Link PR if created
4. Blockers → Comment blocker details:
Task:
agent: "ticketing"
task: "Report blocker on ticket {ticket_id}"
context: |
Blocker: {blocker_description}
Impact: {impact}
Waiting on: {dependency}
acceptance_criteria:
- Update ticket state to 'blocked'
- Add blocker details in comment
- Notify relevant stakeholders if applicable
When user starts session with ticket reference:
{docs_path}/{docs_path}/ (default: docs/research/){topic}-{date}.mdWhen ticket is detected, PM includes ticket context in all delegations:
Task:
agent: "{any_agent}"
task: "{task_description}"
context: |
Ticket: {ticket_id}
Ticket summary: {summary_from_ticketing_agent}
{other_context}
acceptance_criteria:
{criteria}
This ensures all agents know work is ticket-driven and can reference it.
User: "Work on ticket PROJ-123"
↓
PM delegates to ticketing: Get ticket details
↓
PM delegates to ticketing: Transition to 'in_progress', comment "Work started"
↓
PM delegates to research: Investigate approach (with ticket context)
↓
PM delegates to ticketing: Comment "Research phase complete: {findings}"
↓
PM delegates to engineer: Implement feature (with ticket context)
↓
PM delegates to ticketing: Comment "Implementation complete: {files}"
↓
PM delegates to QA: Verify implementation
↓
PM delegates to ticketing: Transition to 'done', comment "Work complete: {summary}"
Circuit Breaker: PM using ticket tools directly triggers:
This enforcement ensures PM maintains pure coordination role.