plmhub
All commands

Goals & Problems

10 commands · plm goals

Raise the destination, cut problems toward it, solve them: progress derives itself.

A goal is a destination, not a task: the outcome the project exists to reach, plus what success looks like. A problem is one concrete obstacle on the way there, cut UNDER a goal. The two form a single loop: raise the goal, cut a problem toward it, pick the problem up, solve it, and the goal's progress ticks up on its own. Nobody types a percentage anywhere: progress is derived, solved problems over cut problems, so the goals list is the one report that moves only when work actually lands.

  1. Step 1 of 6

    Raise the outcome

    One line for the destination, --why for what success looks like. Write the why as the test you will apply later: when this is true, the goal is reached. Vague goals produce vague problems.

    plm goal · raise
    $ plm goal "Dogfood: PLMHub manages the building of PLMHub itself" --why "Edvard plans in the hub, the agent works through the plm CLI end to end"
    ✓ goal goal_e8956f9961 — Dogfood: PLMHub manages the building of PLMHub itself

    full form · plm goal "<title>" [--why "…"]

  2. Step 2 of 6

    Cut a problem under it

    A problem is the atomic unit of value: one obstacle, one solution. Cutting it under a goal is what makes the goal measurable, and the CLI answers with the exact command to start working on it.

    plm problem · cut
    $ plm problem "chapter template renders any group" --goal goal_e8956f9961
    ✓ problem prob_84acc91b — chapter template renders any group (plm work prob_84acc91b)

    full form · plm problem "<title>" --goal <goal-id> [--why "…"]

  3. Step 3 of 6

    Pick it up

    plm work puts you ON the problem: it cuts the prob/<id> branch, checks it out, and tells the hub you are the one working it. From here every plm commit is tagged with the problem automatically, and your teammates see who is where without asking.

    plm work
    $ plm work prob_84acc91b
    ✓ working prob_84acc91b on branch prob/84acc91b (plm commit will tag it)
  4. Step 4 of 6

    Solve it, and the goal moves

    plm done closes the active problem, optionally recording the solution in one line. This is the only thing that moves a goal's score: the moment it lands, 14/20 becomes 15/20. Solutions accumulate into reusable knowledge, not just closed tickets.

    plm done
    $ plm done --solution "keyset pagination on the events table"
    ✓ prob_84acc91b solved. Nice work.

    full form · plm done [prob_…] [--solution "…"]

  5. Step 5 of 6

    Read the honest progress report

    Each goal shows its status and the derived score. If a goal sits at 0/1 for weeks, that is a real signal, not a formatting problem. Agents read this list before deciding what to work on next.

    plm goals
    $ plm goals
    2 goals · showing 2
    goal_e8956f9961 [active] Dogfood: PLMHub manages the building of PLMHub itself (14/20 solved)
    Edvard plans in the hub, the agent works through the plm CLI end to end.
    goal_b0d57442e8 [active] Launch PLMHub's public agent platform (0/1 solved)
    Author a skill once, install it into any agent.

    full form · plm goals [--head N|--tail N|--n N]

  6. Step 6 of 6

    Steer while you own it

    Both records stay yours to shape: retitle, rewrite the why, park a goal or mark it achieved, flip a problem between open and solving, file the solution. Deleting a goal is the one guarded act (project admins only), and even then its problems survive, unattached: destinations are disposable, work is not.

    plm goal · update
    $ plm goal goal_e8956f9961 --status achieved
    ✓ updated goal_e8956f9961 (status)

    full form · plm goal <goal_…> [--title "…"] [--why "…"] [--status active|achieved|parked]

Also in this chapter

plm goal · delete
$ plm goal <goal_…> --delete --yes
✓ deleted goal_e8956f9961 — its problems stay, unattached

Delete a goal. Project admin only; its problems survive, unattached.

plm problem · update
$ plm problem <prob_…> [--status open|solving|solved] [--title "…"] [--why "…"] [--solution "…"]
✓ updated prob_84acc91b (status, solution)

Update a problem: status, title, context, or the recorded solution.

plm problems
$ plm problems [--status x] [--goal g]
20 problems · showing 20
prob_84acc91b [solving] chapter template renders any group → edvard

List problems with status and who is on them, filterable by status or goal.

plm comment
$ plm comment <prob_…> "<text>"
✓ commented on prob_84acc91b

Discuss a problem on the record, next to the problem itself.

  • Everything here is project-scoped: run inside a linked repo (plm link <project-slug>).
  • Goal statuses: active, achieved, parked. Problem statuses: open, solving, solved.
  • Progress is derived (solved/cut problems), never hand-edited. plm done is the only thing that moves it.
  • plm work stores the active problem per checkout (.plmhub/state.json); switching problems warns about the one left open.
  • Goal delete is project-admin only; its problems survive, unattached.