Project Management — Domain Orchestrator & Delivery Loop
This orchestrator does two jobs. Routing: fork context, classify a PM inquiry with
scripts/pm_goal_router.py, run exactly one of the 8 sub-skills, return a digest.
Looping: turn a delivery goal into a bounded agentic loop — pull live Jira data via the
bundled Atlassian MCP, bridge it into the domain's deterministic analytics tools, verify
every step with machine-run gates, and refuse to close until everything is verified or a
human waives it. The bundled .mcp.json wires the Atlassian Remote MCP
(https://mcp.atlassian.com/v1/sse, OAuth handled by Claude Code).
When to invoke
| Symptom |
Sub-skill |
| "Project/portfolio health, risk EMV, capacity" |
senior-pm |
| "Sprint velocity, retro follow-through, ceremony health, when-will-it-be-done" |
scrum-master |
| "JQL, Jira workflows, boards, automation" |
jira-expert |
| "Confluence spaces, page trees, content audits" |
confluence-expert |
| "Users, groups, permissions, SSO" |
atlassian-admin |
| "Reusable Jira/Confluence templates" |
atlassian-templates |
| "Meeting transcripts, talk time, action items" |
meeting-analyzer |
| "Status updates, 3P updates, stakeholder comms" |
team-communications |
Routing logic (deterministic)
Run the router — do not eyeball the table when a script can decide:
python3 scripts/pm_goal_router.py --text "<the goal>" --output json
Exit 0 → route_to names the sub-skill: load its SKILL.md and follow its workflow.
Exit 2 → ask ONE clarifying question naming the listed candidates, with a recommended
answer. Exit 3 → no signal: ask the user to restate the goal with the deliverable named.
Never guess silently; never silently chain a second sub-skill — digest first, confirm, then
chain.
The delivery loop (agentic)
For goals (not questions) — "get sprint 14 to a verified close", "produce a portfolio
health report from live Jira", "make our flow metrics visible weekly" — run the
loop-library contract (Observe → Choose → Act → Verify → Record → Repeat-or-stop):
- Observe — pull fresh state:
mcp__atlassian__searchJiraIssuesUsingJql (get
cloudId via getAccessibleAtlassianResources first), save the result JSON, then
bridge it:python3 scripts/jira_snapshot_bridge.py --input snapshot.json --to flow # WIP, throughput, cycle time p50/85/95, work-item age, SLE, aging alerts
python3 scripts/jira_snapshot_bridge.py --input snapshot.json --to sprint > s.json # scrum-master schema
python3 ../scrum-master/scripts/velocity_analyzer.py s.json # velocity + volatility + forecast
Add --forecast N for a seeded Monte Carlo "when will N items be done" answer
(refuses on < 10 completed items — thin history forecasts are lies).
- Choose — route the next task with
pm_goal_router.py; one task at a time.
- Act — execute with the routed sub-skill's own tools per its SKILL.md.
- Verify — gate the plan and every close with:
python3 scripts/delivery_loop_gate.py --plan plan.json --mode plan # exit 2 = blocked
python3 scripts/delivery_loop_gate.py --plan plan.json --mode close # exit 4 = close refused
Plus each sub-skill's own gates (scrum-master's ≥ 3-sprints rule, atlassian-admin's
VERIFY steps). Never adjudicate your own verification.
- Record / Repeat-or-stop — for multi-task goals, run the state through the repo-wide
harness (it enforces attempt caps, iteration budgets, and evidence logging):
python3 engineering/agent-harness/skills/agent-harness/scripts/goal_compiler.py \
--goal "<goal>" --manifest engineering/agent-harness/skills/agent-harness/assets/harnesses/project-management.json \
--out .agent-harness/plan.json
python3 engineering/agent-harness/skills/agent-harness/scripts/loop_controller.py init|next|record|verify|close ...
Terminal states: success, clean no-op, blocked, approval-required, exhausted,
stagnated. An exhausted budget is an escalation — never a success report.
Hard rules (agentic delegation governance)
- Agents are contributors, never owners (Linear model): every loop task carries a
named human owner; agent-executed tasks also carry a named human reviewer.
delivery_loop_gate.py enforces this (G1/G2).
- Acceptance must be machine-checkable — a command, or a criterion with a threshold.
"Looks good" is not a gate (G3).
- Every Jira/Confluence write is auditable and reversible-first (Rovo discipline):
never
transitionJiraIssue to Done without verify evidence; destructive/irreversible
actions (deletes, permission changes, org-wide admin) are approval-required terminal
states, not loop steps.
- Never modify a gate you are judged by — same locked-evaluator invariant as
autoresearch-agent.
- Forecasts are ranges with confidence, never dates — Monte Carlo percentiles
(p50/p70/p85/p95), per Vacanti. Single-date promises are the anti-pattern.
- Max 3 attempts per task, 12 loop iterations per goal — then escalate to the named
human with the evidence log.
Forcing-question library (grill-with-docs pattern)
One per turn, recommended answer, canon citation. Never run a sub-skill or start a loop
until the lane-defining decision is locked:
- SPRINT lane: "Do you want to measure flow (cycle time, WIP, throughput, age) or
forecast delivery? Recommended: measure first — a forecast off unmeasured flow is
noise. Canon: Kanban Guide (May 2025) four mandatory flow measures; Vacanti,
Actionable Agile Metrics."
- HEALTH lane: "Is your project status self-reported RAG or derived from signals?
Recommended: derive it (schedule variance, aging WIP, scope churn) and diff against the
self-report — that diff finds watermelon projects. Canon: Kanban Guide 2025;
DORA 2025 (AI amplifies, doesn't fix, weak signals)."
- JIRA lane: "Is this configuration change deployable to a test project first?
Recommended: always stage in a test project; jira-expert's workflow validator must exit
0 before production. Canon: jira-expert validation workflow."
- ADMIN lane: "Is this action reversible, and who approves it? Recommended: name the
approver before touching permissions — admin actions are approval-required terminal
states in any loop. Canon: atlassian-admin VERIFY discipline; loop-library stop states."
- LOOP intake: "What single observable outcome means DONE, and which command proves
it? Recommended: a named artifact + a command that exits 0 against it. Canon:
agent-harness verifier's law; Anthropic, Building Effective Agents (evaluator needs
clear criteria)."
- MEETINGS/COMMS lanes: "Could this meeting be an async written update? Recommended:
status-broadcast meetings convert to async 3P updates; decision meetings keep sync.
Canon: GitLab async-first handbook."
Assumptions
- The user has (or is preparing analysis for someone with) delivery authority.
- Jira/Confluence access goes through the bundled MCP; capabilities NOT in
project-management/references/atlassian-mcp-tools.md (project/sprint/board/space
creation, admin config) are done in the web UI — never invent tool names.
- Inputs may be partial — every tool ships
--sample so the shape is visible first.
Non-goals
- Not a replacement for the sub-skills — the orchestrator routes and loops; the
sub-skills do the work.
- Not the generic loop engine — that is
engineering/agent-harness; this orchestrator is
the PM-domain adapter (data bridge + governance gate + lane router).
- Does not decide what to build — that's
product-team.
Output artifacts
| Mode |
Artifact |
| Route |
Sub-skill's own artifact + ≤ 200-word digest with one canon-cited challenge |
| Flow report |
flow_metrics.json (bridge output) with SLE conformance + aging alerts |
| Delivery loop |
.agent-harness/plan.json + state.json + gate verdicts + close handoff |
Anti-patterns (do not)
- ❌ Run all 8 sub-skills "to be thorough" — route to one, digest, chain on confirmation
- ❌ Report sprint health or forecasts from hand-typed numbers when a Jira snapshot is one
MCP call away — bridge real data
- ❌ Close a loop with unverified tasks, or report an exhausted budget as success
- ❌ Let an agent be the assignee of record — humans own, agents contribute
- ❌ Auto-transition Jira issues or touch permissions inside a loop without the named
approver
References
- references/flow_forecasting_canon.md — Kanban
Guide 2025, Vacanti Monte Carlo, DORA 2025, EBM, SPACE
- references/agentic_delivery_governance.md —
Linear/Rovo delegation models, Anthropic agent patterns, audit discipline
- references/pm_loop_playbook.md — the five reusable PM
loops (sprint, health, retro-action, RAID-hygiene, comms) mapped to the loop contract
- Canonical MCP tool list:
project-management/references/atlassian-mcp-tools.md
- Loop engine:
engineering/agent-harness · Loop vocabulary: loop-library
Source: alirezarezvani/claude-skills → project-management/skills/pm-skills/SKILL.md
1---2name: pm-skills3description: Use when coordinating project-delivery work across the 8 project-management sub-skills — sprint/velocity analytics, portfolio health, Jira/JQL, Confluence, Atlassian admin, templates, meeting analysis, team comms. Triggers on 'our sprints feel off', 'project health report', 'audit our Jira permissions', 'when will it be done', 'run the delivery loop'. Forks context to route to one sub-skill via a deterministic signal router and returns a digest; can also drive a full goal→plan→execute→verify→close delivery loop through the repo-wide agent-harness with Jira MCP data bridged into the domain's analytics tools. Distinct from product-team (what to build vs how to deliver it), business-operations (internal ops), and engineering/agent-harness (the generic loop engine this orchestrator plugs into).4---5
6
7# Project Management — Domain Orchestrator & Delivery Loop
8
9This orchestrator does two jobs. **Routing:** fork context, classify a PM inquiry with
10`scripts/pm_goal_router.py`, run exactly one of the 8 sub-skills, return a digest.
11**Looping:** turn a delivery goal into a bounded agentic loop — pull live Jira data via the
12bundled Atlassian MCP, bridge it into the domain's deterministic analytics tools, verify
13every step with machine-run gates, and refuse to close until everything is verified or a
14human waives it. The bundled `.mcp.json` wires the Atlassian Remote MCP
15(`https://mcp.atlassian.com/v1/sse`, OAuth handled by Claude Code).
16
17## When to invoke
18
19| Symptom | Sub-skill |
20|---|---|
21| "Project/portfolio health, risk EMV, capacity" | `senior-pm` |
22| "Sprint velocity, retro follow-through, ceremony health, when-will-it-be-done" | `scrum-master` |
23| "JQL, Jira workflows, boards, automation" | `jira-expert` |
24| "Confluence spaces, page trees, content audits" | `confluence-expert` |
25| "Users, groups, permissions, SSO" | `atlassian-admin` |
26| "Reusable Jira/Confluence templates" | `atlassian-templates` |
27| "Meeting transcripts, talk time, action items" | `meeting-analyzer` |
28| "Status updates, 3P updates, stakeholder comms" | `team-communications` |
29
30## Routing logic (deterministic)
31
32Run the router — do not eyeball the table when a script can decide:
33
34```bash
35python3 scripts/pm_goal_router.py --text "<the goal>" --output json
36```
37
38Exit 0 → `route_to` names the sub-skill: load its SKILL.md and follow its workflow.
39Exit 2 → ask ONE clarifying question naming the listed candidates, with a recommended
40answer. Exit 3 → no signal: ask the user to restate the goal with the deliverable named.
41Never guess silently; never silently chain a second sub-skill — digest first, confirm, then
42chain.
43
44## The delivery loop (agentic)
45
46For goals (not questions) — "get sprint 14 to a verified close", "produce a portfolio
47health report from live Jira", "make our flow metrics visible weekly" — run the
48loop-library contract (Observe → Choose → Act → Verify → Record → Repeat-or-stop):
49
501. **Observe** — pull fresh state: `mcp__atlassian__searchJiraIssuesUsingJql` (get
51 `cloudId` via `getAccessibleAtlassianResources` first), save the result JSON, then
52 bridge it:
53 ```bash
54 python3 scripts/jira_snapshot_bridge.py --input snapshot.json --to flow # WIP, throughput, cycle time p50/85/95, work-item age, SLE, aging alerts
55 python3 scripts/jira_snapshot_bridge.py --input snapshot.json --to sprint > s.json # scrum-master schema
56 python3 ../scrum-master/scripts/velocity_analyzer.py s.json # velocity + volatility + forecast
57 ```
58 Add `--forecast N` for a seeded Monte Carlo "when will N items be done" answer
59 (refuses on < 10 completed items — thin history forecasts are lies).
602. **Choose** — route the next task with `pm_goal_router.py`; one task at a time.
613. **Act** — execute with the routed sub-skill's own tools per its SKILL.md.
624. **Verify** — gate the plan and every close with:
63 ```bash
64 python3 scripts/delivery_loop_gate.py --plan plan.json --mode plan # exit 2 = blocked
65 python3 scripts/delivery_loop_gate.py --plan plan.json --mode close # exit 4 = close refused
66 ```
67 Plus each sub-skill's own gates (scrum-master's ≥ 3-sprints rule, atlassian-admin's
68 VERIFY steps). Never adjudicate your own verification.
695. **Record / Repeat-or-stop** — for multi-task goals, run the state through the repo-wide
70 harness (it enforces attempt caps, iteration budgets, and evidence logging):
71 ```bash
72 python3 engineering/agent-harness/skills/agent-harness/scripts/goal_compiler.py \
73 --goal "<goal>" --manifest engineering/agent-harness/skills/agent-harness/assets/harnesses/project-management.json \
74 --out .agent-harness/plan.json
75 python3 engineering/agent-harness/skills/agent-harness/scripts/loop_controller.py init|next|record|verify|close ...
76 ```
77 Terminal states: success, clean no-op, blocked, approval-required, exhausted,
78 stagnated. An exhausted budget is an escalation — never a success report.
79
80## Hard rules (agentic delegation governance)
81
821. **Agents are contributors, never owners** (Linear model): every loop task carries a
83 named human owner; agent-executed tasks also carry a named human reviewer.
84 `delivery_loop_gate.py` enforces this (G1/G2).
852. **Acceptance must be machine-checkable** — a command, or a criterion with a threshold.
86 "Looks good" is not a gate (G3).
873. **Every Jira/Confluence write is auditable and reversible-first** (Rovo discipline):
88 never `transitionJiraIssue` to Done without verify evidence; destructive/irreversible
89 actions (deletes, permission changes, org-wide admin) are approval-required terminal
90 states, not loop steps.
914. **Never modify a gate you are judged by** — same locked-evaluator invariant as
92 autoresearch-agent.
935. **Forecasts are ranges with confidence, never dates** — Monte Carlo percentiles
94 (p50/p70/p85/p95), per Vacanti. Single-date promises are the anti-pattern.
956. **Max 3 attempts per task, 12 loop iterations per goal** — then escalate to the named
96 human with the evidence log.
97
98## Forcing-question library (grill-with-docs pattern)
99
100One per turn, recommended answer, canon citation. Never run a sub-skill or start a loop
101until the lane-defining decision is locked:
102
103- **SPRINT lane**: "Do you want to *measure* flow (cycle time, WIP, throughput, age) or
104 *forecast* delivery? Recommended: measure first — a forecast off unmeasured flow is
105 noise. Canon: Kanban Guide (May 2025) four mandatory flow measures; Vacanti,
106 *Actionable Agile Metrics*."
107- **HEALTH lane**: "Is your project status self-reported RAG or derived from signals?
108 Recommended: derive it (schedule variance, aging WIP, scope churn) and diff against the
109 self-report — that diff finds watermelon projects. Canon: Kanban Guide 2025;
110 DORA 2025 (AI amplifies, doesn't fix, weak signals)."
111- **JIRA lane**: "Is this configuration change deployable to a test project first?
112 Recommended: always stage in a test project; jira-expert's workflow validator must exit
113 0 before production. Canon: jira-expert validation workflow."
114- **ADMIN lane**: "Is this action reversible, and who approves it? Recommended: name the
115 approver before touching permissions — admin actions are approval-required terminal
116 states in any loop. Canon: atlassian-admin VERIFY discipline; loop-library stop states."
117- **LOOP intake**: "What single observable outcome means DONE, and which command proves
118 it? Recommended: a named artifact + a command that exits 0 against it. Canon:
119 agent-harness verifier's law; Anthropic, *Building Effective Agents* (evaluator needs
120 clear criteria)."
121- **MEETINGS/COMMS lanes**: "Could this meeting be an async written update? Recommended:
122 status-broadcast meetings convert to async 3P updates; decision meetings keep sync.
123 Canon: GitLab async-first handbook."
124
125## Assumptions
126
1271. The user has (or is preparing analysis for someone with) delivery authority.
1282. Jira/Confluence access goes through the bundled MCP; capabilities NOT in
129 `project-management/references/atlassian-mcp-tools.md` (project/sprint/board/space
130 creation, admin config) are done in the web UI — never invent tool names.
1313. Inputs may be partial — every tool ships `--sample` so the shape is visible first.
132
133## Non-goals
134
135- Not a replacement for the sub-skills — the orchestrator routes and loops; the
136 sub-skills do the work.
137- Not the generic loop engine — that is `engineering/agent-harness`; this orchestrator is
138 the PM-domain adapter (data bridge + governance gate + lane router).
139- Does not decide *what* to build — that's `product-team`.
140
141## Output artifacts
142
143| Mode | Artifact |
144|---|---|
145| Route | Sub-skill's own artifact + ≤ 200-word digest with one canon-cited challenge |
146| Flow report | `flow_metrics.json` (bridge output) with SLE conformance + aging alerts |
147| Delivery loop | `.agent-harness/plan.json` + `state.json` + gate verdicts + close handoff |
148
149## Anti-patterns (do not)
150
151- ❌ Run all 8 sub-skills "to be thorough" — route to one, digest, chain on confirmation
152- ❌ Report sprint health or forecasts from hand-typed numbers when a Jira snapshot is one
153 MCP call away — bridge real data
154- ❌ Close a loop with unverified tasks, or report an exhausted budget as success
155- ❌ Let an agent be the assignee of record — humans own, agents contribute
156- ❌ Auto-transition Jira issues or touch permissions inside a loop without the named
157 approver
158
159## References
160
161- [references/flow_forecasting_canon.md](references/flow_forecasting_canon.md) — Kanban
162 Guide 2025, Vacanti Monte Carlo, DORA 2025, EBM, SPACE
163- [references/agentic_delivery_governance.md](references/agentic_delivery_governance.md) —
164 Linear/Rovo delegation models, Anthropic agent patterns, audit discipline
165- [references/pm_loop_playbook.md](references/pm_loop_playbook.md) — the five reusable PM
166 loops (sprint, health, retro-action, RAID-hygiene, comms) mapped to the loop contract
167- Canonical MCP tool list: `project-management/references/atlassian-mcp-tools.md`
168- Loop engine: `engineering/agent-harness` · Loop vocabulary: `loop-library`
169
170---
171
172**Source:** [`alirezarezvani/claude-skills`](https://github.com/alirezarezvani/claude-skills) → `project-management/skills/pm-skills/SKILL.md`