Everyday work
Find your next task, record progress on it, and close it with evidence, using the pmo command line.
Every piece of work in PMO is a task (PMO's own word is "activity"), and most days you do the same five things with tasks: find yours, start one, write notes on it, mark it stuck if it is, and close it saying what proves it is finished. Your notes, status changes and evidence are what status reports and the client's view are built from, so a few words at the right moment save someone a meeting later. Everything you change is recorded under your name.
This page assumes this computer is already signed in.
Where a task sits
Every task has four levels above it. You work on the task; the others give it its context.
| Engagement | Module | Feature | Task | |
|---|---|---|---|---|
| Is | One piece of client work | A part of it, such as the data import | Something a person can use when it is finished | One piece of work towards a feature |
| Owns | Who may see and change everything under it | What the client report says about this part | What "finished" means, and its stage | Status, owner, notes, evidence |
| Short name looks like | example-client | example-project | example-project-f3 | example-project-12 |
Older tasks have short names like abc-176; they work everywhere the new ones do. In the examples below, example-project-12 stands for your own task's short name.
A task, from start to finish
See what is assigned to you
You get every open task assigned to you, across every engagement you can see, with its short name, status and title.
pmo list --mineOr just ask what to do next
pmo next hands back the one task to work on now: open, and not waiting on anything unfinished. With --mine it is chosen from your own work only. Adding --claim makes it yours if nobody had it.
pmo next --mine --claimRead it in full
pmo show prints everything about the task: its feature, the feature's definition of finished, its notes and who changed what. Read the definition of finished before you start; it is what "done" means.
pmo show example-project-12Start it
This moves it to "in progress", so the board and everyone else can see it is under way.
pmo start example-project-12Note what happens, and say when you are stuck
Add a note whenever something worth knowing happens: a decision, a finding, a link. If you cannot go on, mark it blocked with the reason; that is what tells your lead to act. Clear the block when it is resolved.
pmo note example-project-12 "Sample file loads; three columns need renaming"
pmo block example-project-12 --reason "Waiting on the client's sample export"
pmo unblock example-project-12Close it, with the evidence
Say what proves it is finished: a link to the merged change, a test result, the name of the person who accepted it. If it was the last open task on its feature, the feature is finished too.
pmo done example-project-12 --evidence "Merged: https://github.com/example-org/example-repo/pull/88"Give evidence even when you are not made to
A person can close a task with no evidence; only AI sessions are required to give it. Give it anyway: it is what lets the next reader believe "done" without asking you.
The commands
| Command | What it does |
|---|---|
pmo list --mine | Your open tasks. Narrow with --eng, --module, --feature, --status and more; pmo help filters lists them all. A word after list finds any task mentioning it, for example pmo list import --eng example-client. |
pmo next --mine | The one task to work on now, skipping any that wait on unfinished work. --eng example-client limits it to one engagement. |
pmo next --claim | Also makes the task yours, if it is still free when the claim lands. Otherwise it tries the next one, up to three times. |
pmo show <id> | Everything about a task. --history adds every change, with who made it and when. |
pmo start <id> | Moves it to "in progress". |
pmo note <id> "<one line>" | Adds one line to the task's notes. Earlier notes are kept. |
pmo block <id> --reason "<why>" | Marks it blocked and records the reason in one change. pmo unblock <id> clears both. |
pmo done <id> --evidence "<proof>" | Closes it with the evidence. |
--replace wipes the notes
pmo note with --replace replaces all of a task's notes with your one line. Leave it off unless that is what you mean.
--criteria-met on pmo done is required from an AI session closing a feature's last task: it confirms every point of the feature's definition of finished is true. A person is not asked for it.
A few more commands from the same family:
| Command | What it does |
|---|---|
pmo hold <id> --reason "<why>" | Puts a task on hold. pmo resume <id> takes it off. |
pmo ask <id> "<question>" --to <person> | Asks a person a question on the task. |
pmo --help lists every command, and pmo help <command> prints its exact form. Run it before guessing an option. --dry-run checks a change and saves nothing.
Ignore the help's write switch
pmo's help says changes need an identity and a write switch (PMO_WRITES=1). With an installed pmo, your sign-in or key is the identity and the switch is already on, so you can ignore those lines.
When something goes wrong
A refusal changes nothing and names what it wants. Read the message; it is written to be acted on.
| What you see | Why | What to do |
|---|---|---|
| A refusal about the words in a title, with an example | Task titles are read by people outside engineering, including clients, so PMO refuses file names, code names and internal numbers. | Rewrite it as what a person gets when it is done. Put the technical part in a note. |
| not found | A mistyped short name, or a task on an engagement you have not been given. | Check the name. If a colleague can see it, ask the PMO owner for access. |
| nothing matched that query, or nothing to do under that query | Your list or next matched nothing. These end with code 1. | Not an error: there is nothing open for you there. Try again without the filters. |
| A refusal that names your role | The change is one your role cannot make, for example a sign-off stage, which only a manager can. | The message names who can; ask them. |
| conflict: … Nothing was written. Re-read and try again | Another person or session changed the same task a moment before you. | Show the task again to see their change, then repeat yours if it still applies. |
| A refusal to create a task with no feature | Every task must belong to a feature. | List the engagement's features and name one; the message gives the command. |
Two people asking for the next task
pmo next --claim takes the task only if it is still free when the claim lands; if someone else got there first, it tries the next candidate. Without --claim, next only suggests, so two people asking at once can both be told the same task.