pi-goals
Make a short list of goals in one Markdown plan file. This is easy to review, and a subagent can check whether each goal is complete.
The plan file looks like this:
## <short plan title>
<context: one short paragraph. What the human wants and why.>
### User-visible result
<one concrete sentence naming the final artifact or behavior the human will inspect>
### User voice
- │ "<the human's requirement, quoted in full word for word (with spelling fixes)>"
### Goals
1. [ ] goal: <one short judgeable imperative outcome>
- subtle failure mode: <a way this could look done but isn't>
- discriminator: <the concrete observation that tells real success from that failure>
- tasks:
1. [ ] <subtask>
- evidence: (empty until sign-off)
### Future work / out of scope
### Log
### Interview
### Learnings
### Papercuts - problems, gotchas, suggestions
Related work
Like pi-milestones and burneikis/pi-plan, it guides rather than guards. The reminder cadence is copied from tintinweb/pi-tasks and the resync-after-compaction from tmonk/pi-goal-x.
Install
pi install npm:@wassname2/pi-goals
Or for development:
git clone https://github.com/wassname/pi-goals && cd pi-goals && npm install
pi -e ./src/index.ts
Use
/goals CSV export for the report view
/goals enters plan mode and starts a conversation; the objective is an optional seed. From there:
- Plan. The agent explores read-only and drafts the plan.
- Review. After Pi settles, the full plan is printed in the transcript. Check that User-visible result names the final artifact or behavior you expect. The menu offers Ready, Refine, Edit, or Cancel. Refine collects short notes. Edit opens the full plan in Pi's editor.
- Work. Ready is the only review action that starts work. The agent ticks subtasks, appends to
## Logand## Learnings, fillsevidence:, and callsCompleteGoalwhen a discriminator is satisfied. Every human reply and Refine note in plan mode is saved verbatim under## Interview. After eight turns without a change above## Log, the working set is sent back with a short upkeep reminder.
Other commands: /goals --clear disconnects this session from its active plan, preserving the
versioned file on disk; /goals --auto [minutes|off] continues active goals after the agent settles
and then on that interval. It pauses after two automatic wakes with no working-plan change; /goals --judge <model-ref> picks a sign-off judge model (default: your current session model, else pi's
default). The -- prefix
keeps ordinary objectives such as judge model quality from being parsed as commands.
Prompts
All model-facing text lives in src/prompts.ts, in flow order.
Develop
pi -e ./src/index.ts # load locally
npm test # all unit, flow, and Pi RPC tests
npm run test:rpc # Pi RPC review flow with a local offline model
npm run typecheck
npm run lint
License
MIT
