Skip to content

A deterministic answer to “where do I pick up ongoing project X?” (SMTM v5.9, see SMTM_System.md → Continuing an Ongoing Project). It reads the Ongoing Projects registry, each project’s ROADMAP ## Now block, and the task files that block names. Every pointer is verified on disk before the script prints the exact command to run.

  • Location: ~/utils/project-now/ (WSL), with its own local git repo. It needs Python 3 and nothing else (standard library only).
  • On PATH: ~/.local/bin/project-now, which is a symlink to the wrapper.
  • Consumers: /project-continue (ongoing branch, step O1) and /task-complete (Steps 4c and 7b).
Terminal window
project-now # every registry row
project-now strategies # one project (case-insensitive substring)
project-now kb-os -j # JSON
project-now --check # exit 1 if any ROADMAP's ## Now is stale or missing (audit use)
StateMeaning
OK## Now names task(s) that exist and aren’t complete. The command is /task-start for 0 Claude Responses, /task-continue for 1 or more.
STALE## Now names a missing or completed task. The script falls back to open tasks whose project: matches, in _active.md order.
FALLBACKThere’s no ROADMAP, or no ## Now, but open tasks with a matching project: exist.
IDLE## Now says No active task or Idle by decision, and the next unchecked ROADMAP item is shown.
NONEThere’s no ROADMAP and no open task.
  • Lines in ## Now that start with Also open are context only. They are never read as the active pointer.
  • The next ROADMAP item is the first - [ ] outside ## Now and ## Waiting on Talbot. ROADMAPs written as plain bullets (e.g. rate-scanner’s Phase G queue) have no unchecked item for the script to find.
  • A mega project (monorepo) may list several now: lines, one per sub-project thread. The caller asks which one; the script doesn’t choose.