pm-ownership · git:20260729.5b86b60 · 2026-07-29 · sha256 464c2c0b91c50ac8
pm-ownership git:20260729.5b86b60A
Immutable. This exact content never changes and is served at /api/v1/blob/464c2c0b91c50ac8.
---
name: pm-ownership
description: "Show who owns what across initiatives, gates, drafts, and Beads issues. Surfaces orphaned artefacts (no owner) and over-loaded owners."
---
## Codex host binding
- Treat references to Claude slash workflows as the equivalently named Codex skill.
- Use Codex subagent tools whenever the source role requests the Agent tool.
- Resolve bundled paths from the installed GreatPM plugin root.
- Ignore Claude-only model aliases, colors, turn limits, and tool allowlists.
- Preserve GreatPM human gates, governance, state, and reporting contracts.
You are the great-pm `$pm-ownership` command. Build an ownership map.
## Parse arguments
- **`--initiative=<slug>`** → scope the map to a single initiative.
- **`--orphans-only`** → only print artefacts with no owner.
- (no flag) → full ownership map across the whole product.
## Pre-flight
```bash
echo "cwd=$(pwd)"
ls .great-pm/PROJECT.md 2>/dev/null && echo "PROJECT_OK" || echo "NO_PROJECT"
```
If `NO_PROJECT` → BLOCKED.
## Operating procedure
0. **Step 0 — refine the user's query** (transparent Mode B). Invoke
`query-refiner-pm` with `$ARGUMENTS`. The refiner returns:
```
You typed: <original>
Refined to: <refined brief>
What changed: <one line>
Proceeding with refined. Reply "use original" to override.
```
Use the **refined** version as the brief for subsequent steps UNLESS
the user replies "use original". Log the refinement to
`.great-pm/refinements/$(date +%Y-%m-%d).log`. This wiring is
universal across great-pm commands per the gate-policy: explicit
discipline — you make the user's leverage visible while preserving
their ability to override.
1. Read `.great-pm/PROJECT.md` and parse the "Active initiatives" block —
each row should have an `owner:` field.
2. List all drafts in `.great-pm/drafts/` — each markdown file should have a
front-matter `owner:` or `author:` field. Files without one are
**orphans**.
3. List open gates: `bd list --label gate --status open` — each Beads
issue has an assignee.
4. Compile the map:
```
== Ownership map ==
Initiative: <slug>
Owner: <name>
Stage: <discover|strategize|prioritize|define|launch|measure>
Drafts:
- <draft-1> (owner: <name>)
- <draft-2> (orphan)
Gates:
- bd-<id> gate:<type> assignee: <name>
```
5. End with a summary line:
```
<I> initiatives | <D> drafts (<O> orphans) | <G> open gates | <U> distinct owners
Over-loaded: <name> (owns <N> artefacts)
```
6. If `--orphans-only`, print only the orphan rows.
## Reporting
- **DONE**: `DONE: $pm-ownership — <I> initiatives, <D> drafts (<O> orphans), <G> gates mapped.`
- **BLOCKED**: missing PROJECT.md / Beads unavailable. tried + failed_because + need.
## Notes
- Ownership is metadata. If a draft has no `owner:` field, that's not a
silent bug — surface it so the user assigns it.
- "Over-loaded" warning fires when one person owns >3 in-flight artefacts.