Engagements and planning
The portfolio, engagements, phases, milestones and decisions.
The portfolio, engagements, phases, milestones and decisions. On your own computer, pmo help <command> prints the same text, for example pmo help milestone show.
pmo milestone show
One milestone in full, with its features and activities done.
pmo milestone show <id> --eng <slug>Example
pmo milestone show cp-ms-readout --eng cross-pmopmo phase create
Create a phase on an engagement.
pmo phase create --eng <slug> --name "<name>" --as person:<id>pmo milestone create
Create a milestone on an engagement.
pmo milestone create --eng <slug> --name "<name>" --type <type> --date <iso> --as person:<id>pmo milestone set
Replace the features a milestone lists.
pmo milestone set <id> features=<a,b> | name="<plain name>" --eng <slug> --as person:<id>Example
pmo milestone set cp-ms-readout features=cp-feat-factory-parity,cp-feat-board \
--eng cross-pmo --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo milestone feature add
List one more feature under a milestone.
pmo milestone feature add <id> <feature-id> --eng <slug> --as person:<id>Example
pmo milestone feature add cp-ms-readout cp-feat-board --eng cross-pmo --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo milestone feature remove
Stop listing one feature under a milestone.
pmo milestone feature remove <id> <feature-id> --eng <slug> --as person:<id>Example
pmo milestone feature remove cp-ms-readout cp-feat-board --eng cross-pmo --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo decision create
Record a decision on an engagement.
pmo decision create --eng <slug> --text "<what was decided>" [--date <iso>] [--by <id>] --as person:<id>Example
pmo decision create --eng accelerator --text "Postgres is canonical; the YAML is an export" \
--date 2026-09-10 --by you --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo portfolio
The shape, then the exceptions — live from the store.
pmo portfolio — the whole portfolio: the shape, then the exceptionspmo engagement list
The engagements, filtered.
pmo engagement list [<word>] [--client <id>] [--stage <v>] [--status <s>] [--health <h>] [--owner <id>] [--q <text>] [--all]Example
pmo engagement list --health red
`pmo help filters` prints these filters in full, and the bare-word search.pmo engagement show
One engagement in full: modules, projects and open risks.
pmo engagement show <slug> [--history] [--json]Example
pmo engagement show accelerator --historypmo engagement create
Open a new engagement from the schema's skeleton.
pmo engagement create --client <id> --slug <slug> --name "<name>" [--type billable|internal|pursuit] [--status pursuit|active|paused|closed]Example
pmo engagement create --client example --slug example-phase-4 --name "example Phase 4" \
--type billable --status pursuit --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo engagement set
Write an engagement field: status, stage, health, summary, last_reconciled, name, client_id, id_prefix, pm, tech_lead, client_lead, client_code, project_code.
pmo engagement set <slug> <field=value> [<field=value>…] [--note "<why>"]Example
pmo engagement set accelerator health=yellow summary="Blessed at 0.725" \
--note "after the 2026-09-08 eval runs" --as agent:rag
pmo engagement set cady stage=presales --as person:you
pmo engagement set big-leagues stage=proof_of_concept --as person:you
pmo engagement set american-dental-institute id_prefix=adi --as person:you # once: permanent after the first id
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo engagement channel add
List a Slack room on an engagement.
pmo engagement channel add <slug> --workspace <w> --channel <name> --channel-id <id> --audience internal|client|mixed|external [--notes "<why it is shared>"]Example
pmo engagement channel add cross-pmo --workspace crosssystemsgroup \
--channel project-internal-vault --channel-id C0B0FSGBW94 --audience internal --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo engagement channel remove
Take a Slack room off an engagement — the fix for one room claimed by two.
pmo engagement channel remove <slug> <channel-id> [--note "<why>"]Example
pmo engagement channel remove accelerator C0B0FSGBW94 \
--note "the room belongs to cross-pmo" --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo engagement risk add
Raise a risk on an engagement.
pmo engagement risk add <slug> --title "<one line>" --severity yellow|red [--detail "<what is wrong>"] [--source <pointer>]Example
pmo engagement risk add example-client --title "Databricks has no route to AWS" \
--severity red --detail "Azure-to-AWS network routing is unconfigured" --as agent:rag
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo engagement risk resolve
Close a risk — it leaves current_risks and lands in the history.
pmo engagement risk resolve <slug> <risk-id> [--note "<what closed it>"]Example
pmo engagement risk resolve example-client risk-data-lakehouse-cicd \
--note "sandbox approved 2026-09-09" --as agent:rag
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo engagement risk set
Correct a risk already raised: its owner, severity, title or detail.
pmo engagement risk set <slug> <risk-id> <field=value> [<field=value>…] [--note "<why>"]Example
pmo engagement risk set american-dental-institute bus-factor-one owner=erik-de-paula \
--note "named after the 2026-09-12 review" --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo engagement report
The customer view: every module as a client reads it, grouped and numbered.
pmo engagement report <slug> [--json]Example
pmo engagement report example-client
pmo engagement report example-client --json # what the client portal readspmo engagement timeleft
How much work is left and when it lands: built by, signed off, by group and module.
pmo engagement timeleft <slug> [--json]Example
pmo engagement timeleft example-client
pmo engagement timeleft example-client --json # what the board's Time left section readspmo engagement timeleft show-settings
The settings time left is computed with — the team, overhead, the client's review — and the holidays.
pmo engagement timeleft show-settings <slug> [--json]Example
pmo engagement timeleft show-settings example-clientpmo engagement timeleft set
Change the settings time left is computed with — a Manager's, recorded in its history.
pmo engagement timeleft set <slug> overhead=20 contingency=20 review_days=14 fix_days=14 fix_days_high=28 group_floor=120 capacity="<role>:<hours>,…" seed=7 history_start=<YYYY-MM-DD>|none show_to_client=false --as person:<id>Example
pmo engagement timeleft set example-client overhead=20 contingency=20 capacity="AI Leader:87,Project Strategist:87,Data Engineer:173,Data Scientist:173" --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo engagement timeleft holiday
List a weekday the team does not work, or take one off — a Manager's.
pmo engagement timeleft holiday add|remove <slug> <YYYY-MM-DD> ["<label>"] --as person:<id>Example
pmo engagement timeleft holiday add example-client 2026-12-25 "Christmas" --as person:you
pmo engagement timeleft holiday remove example-client 2026-12-25 --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.pmo decision set
Correct a decision already filed: who made it, what it affects, its text or its date.
pmo decision set <id> <field=value> [<field=value>…] [--eng <slug>] [--note "<why>"]Example
pmo decision set dec-2026-05-12-uc2-focus decided_by=erik-de-paula \
affects=wine-appraisal,pricing-engine --eng example-client --as person:you
A write: it needs an identity (--as, or PMO_ACTOR) and PMO_WRITES=1.
`pmo whoami --grants` prints what this actor may do above the activity.