Use $ARGUMENTS as the promise text if provided, or a flag:
--list
show all open promises
--resolve
mark promise N as resolved
Outcome
Deferred items from a session are captured before they are forgotten, or existing open promises are reviewed and resolved.
Acceptance Criteria
New promise captured with date and optional context
--list
shows all open promises clearly numbered
--resolve N
marks promise N as resolved
Task backend
Read
tasks.backend
from
.groove/index.md
. Promises are tracked as tasks in the configured backend. If no task backend is configured (
tasks.backend: none
), tell the user to run
/groove-utilities-task-install
first.
Promises are stored as tasks under a shared "Groove Memory" milestone → "Promises" epic hierarchy. This keeps them organised and out of the main work task list.
Ensure parent hierarchy
Before any operation, resolve or create the parent epic:
Find or create the
Groove Memory
milestone:
beans list -t milestone --search "Groove Memory" -q
— if output is non-empty, use the first ID; otherwise
beans create "Groove Memory" -t milestone
and capture the new ID
Find or create the
Promises
epic under that milestone:
beans list -t epic --parent --search "Promises" -q
— if non-empty, use first ID; otherwise
beans create "Promises" -t epic --parent
and capture the new ID
Use the Promises epic ID as
for all promise tasks.
--list
Resolve
(see above)
beans list --parent -s todo -t task
Display as numbered list:
1. []
— position number for
--resolve N
, beans ID in brackets
If empty: print "No open promises."
--resolve
Resolve
; run
beans list --parent -s todo -t task
Find the Nth item; if not found: print "No open promise #N" and exit
beans update -s completed
Confirm: "Promise #N resolved."
Default — add a promise
Resolve
(see above)
Get promise text from $ARGUMENTS if provided; otherwise ask: "What's being deferred?"
Optionally ask: "Any context? (enter to skip)"
beans create "" -t task --parent -s todo -p deferred
If context given:
beans update -d ""
Confirm: "Promise captured: [] "
Constraints
Read
tasks.backend
from
.groove/index.md
at the start of every invocation
Requires a configured task backend — if
tasks.backend: none
, prompt user to install one
Never auto-capture promises without user confirmation — always explicit
Milestone/epic parent hierarchy is idempotent — always check before creating; never create duplicates
Use
-s todo
for open,
-s completed
for resolved;
-p deferred
to signal not active work
Do not resolve all promises automatically; resolve one at a time unless user asks for
--resolve-all
--resolve-all
requires confirmation: "Resolve all N open promises?" before proceeding