# Engagements and planning

> The portfolio, engagements, phases, milestones and decisions.

Source: https://docs.crossbot.io/pmo/cli/reference/planning
Product: pmo · Kind: reference · Status: live · Last verified: 2026-10-21

{/* Generated by scripts/gen-pmo-cli-reference.mjs from `pmo help`. Do not edit by hand. */}
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.

```sh
pmo milestone show <id> --eng <slug>
```

**Example**

```sh
pmo milestone show cp-ms-readout --eng cross-pmo
```

## `pmo phase create`

Create a phase on an engagement.

```sh
pmo phase create --eng <slug> --name "<name>" --as person:<id>
```

## `pmo milestone create`

Create a milestone on an engagement.

```sh
pmo milestone create --eng <slug> --name "<name>" --type <type> --date <iso> --as person:<id>
```

## `pmo milestone set`

Replace the features a milestone lists.

```sh
pmo milestone set <id> features=<a,b> | name="<plain name>" --eng <slug> --as person:<id>
```

**Example**

```sh
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.

```sh
pmo milestone feature add <id> <feature-id> --eng <slug> --as person:<id>
```

**Example**

```sh
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.

```sh
pmo milestone feature remove <id> <feature-id> --eng <slug> --as person:<id>
```

**Example**

```sh
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.

```sh
pmo decision create --eng <slug> --text "<what was decided>" [--date <iso>] [--by <id>] --as person:<id>
```

**Example**

```sh
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.

```sh
pmo portfolio — the whole portfolio: the shape, then the exceptions
```

## `pmo engagement list`

The engagements, filtered.

```sh
pmo engagement list [<word>] [--client <id>] [--stage <v>] [--status <s>] [--health <h>] [--owner <id>] [--q <text>] [--all]
```

**Example**

```sh
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.

```sh
pmo engagement show <slug> [--history] [--json]
```

**Example**

```sh
pmo engagement show accelerator --history
```

## `pmo engagement create`

Open a new engagement from the schema's skeleton.

```sh
pmo engagement create --client <id> --slug <slug> --name "<name>" [--type billable|internal|pursuit] [--status pursuit|active|paused|closed]
```

**Example**

```sh
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.

```sh
pmo engagement set <slug> <field=value> [<field=value>…] [--note "<why>"]
```

**Example**

```sh
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.

```sh
pmo engagement channel add <slug> --workspace <w> --channel <name> --channel-id <id> --audience internal|client|mixed|external [--notes "<why it is shared>"]
```

**Example**

```sh
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.

```sh
pmo engagement channel remove <slug> <channel-id> [--note "<why>"]
```

**Example**

```sh
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.

```sh
pmo engagement risk add <slug> --title "<one line>" --severity yellow|red [--detail "<what is wrong>"] [--source <pointer>]
```

**Example**

```sh
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.

```sh
pmo engagement risk resolve <slug> <risk-id> [--note "<what closed it>"]
```

**Example**

```sh
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.

```sh
pmo engagement risk set <slug> <risk-id> <field=value> [<field=value>…] [--note "<why>"]
```

**Example**

```sh
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.

```sh
pmo engagement report <slug> [--json]
```

**Example**

```sh
pmo engagement report example-client
pmo engagement report example-client --json    # what the client portal reads
```

## `pmo engagement timeleft`

How much work is left and when it lands: built by, signed off, by group and module.

```sh
pmo engagement timeleft <slug> [--json]
```

**Example**

```sh
pmo engagement timeleft example-client
pmo engagement timeleft example-client --json    # what the board's Time left section reads
```

## `pmo engagement timeleft show-settings`

The settings time left is computed with — the team, overhead, the client's review — and the holidays.

```sh
pmo engagement timeleft show-settings <slug> [--json]
```

**Example**

```sh
pmo engagement timeleft show-settings example-client
```

## `pmo engagement timeleft set`

Change the settings time left is computed with — a Manager's, recorded in its history.

```sh
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**

```sh
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.

```sh
pmo engagement timeleft holiday add|remove <slug> <YYYY-MM-DD> ["<label>"] --as person:<id>
```

**Example**

```sh
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.

```sh
pmo decision set <id> <field=value> [<field=value>…] [--eng <slug>] [--note "<why>"]
```

**Example**

```sh
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.
```
