Converge plans and plan commands to a single task CLI surface
Problem
Rename just plan task/initiative to just task/initiative, rename .claude/commands plan-task and plan-initiative to task and initiative, update all references. The plan nesting is redundant — task CRUD should be just task create, not just plan task create.
Context
The current CLI surface uses just plan task create / just plan initiative create — a vestige
of the "master plans" naming era. The plan level adds no information; users type task twice
conceptually ("plan about tasks → task create"). Additionally, .claude/commands/plan-task.md
and .claude/commands/plan-initiative.md carry the plan- prefix which creates naming friction
with task-dispatch.md and task-execute.md.
Key files:
- tasks/tools/plans_cli.py — Python CLI implementation (argparse, entity=task|initiative)
- Justfile lines 514–597 — plan, mp, mp-task, mp-initiative recipes
- .claude/commands/plan-task.md, .claude/commands/plan-initiative.md — slash commands
- .codex/commands/plan-task.md, .codex/commands/plan-initiative.md — codex duplicates
- CLAUDE.md, AGENTS.md — document just plan task ... usage
- .claude/commands/task-execute.md, task-dispatch.md — reference just plan task update
- scripts/pr-create, scripts/task-manager-heartbeat, tasks/tools/tasks_server.py — reference plans_cli.py by path
- 20+ task files reference just plan task in their worksheets
Constraint: just tasks (with 's') is the tasks server command — no collision with just task.
Possible Solutions
A. Rename file + split Justfile recipes (Recommended)
Rename plans_cli.py → task_cli.py. Create two Justfile recipes:
- task *ARGS → injects task entity: uv run python tasks/tools/task_cli.py task {{ARGS}}
- initiative *ARGS → injects initiative entity: uv run python tasks/tools/task_cli.py initiative {{ARGS}}
- Keep plan *ARGS as a legacy alias pointing to task_cli.py directly (still works with plan task create)
Rename .claude/commands/plan-task.md → task.md, plan-initiative.md → initiative.md.
Update all references across docs and scripts.
Pros: Clean surface (just task create), backwards-compatible via plan alias, minimal Python changes.
Cons: Many files to touch for reference updates.
B. Only rename Justfile recipe, keep file name
Keep plans_cli.py as-is, just change Justfile wiring.
Pros: Fewer file renames. Cons: Internal naming stays inconsistent.
C. Full restructure into a proper CLI package
Move task CLI into dataface/cli/ as a subcommand.
Pros: Unified CLI. Cons: Over-scoped — task tooling is repo-level, not product-level.
Plan
Use approach A. Steps:
git mv tasks/tools/plans_cli.py tasks/tools/task_cli.py- Update Justfile: new
taskandinitiativerecipes, demoteplanto legacy alias git mv .claude/commands/plan-task.md .claude/commands/task.md(update content)git mv .claude/commands/plan-initiative.md .claude/commands/initiative.md(update content)- Same for
.codex/commands/ - Update
CLAUDE.mdandAGENTS.md— alljust plan task→just task, etc. - Update
.claude/commands/task-execute.mdandtask-dispatch.mdreferences - Update
scripts/pr-create,scripts/task-manager-heartbeat,tasks/tools/tasks_server.pypath refs - Update
.codex/skills/references - Bulk-update task file worksheets that reference
just plan task - Run
just plan task validate tasks/and focused tests
Implementation Progress
- [x]
git mv tasks/tools/plans_cli.py tasks/tools/task_cli.py - [x] Justfile: new
taskandinitiativerecipes,plandemoted to legacy alias - [x]
git mv .claude/commands/plan-task.md → task.md,plan-initiative.md → initiative.md(both.claude/and.codex/) - [x] Updated command file content (
just plan task→just taskthroughout) - [x] CLAUDE.md and AGENTS.md updated
- [x]
task-execute.md,task-dispatch.mdupdated (both.claude/and.codex/) - [x]
scripts/pr-create,scripts/task-manager-heartbeat,tasks/tools/tasks_server.pypath refs updated - [x]
.codex/skills/task-manager/SKILL.md,.codex/skills/run-experiment/SKILL.mdupdated - [x]
pyproject.tomlconsole script entry point updated - [x]
tests/core/test_plans_cli.py→tests/core/test_task_cli.py(renamed + imports updated) - [x]
tasks/tools/migrate_tasks.py,tasks/tools/enrich_tasks.pyimports updated - [x] Bulk-updated
just plan task→just taskin 12 active task file worksheets - [x]
task_cli.pyinternal print and description strings updated - [x] Validation:
just task validatepasses on task file - [x] Tests: 42/42 test_task_cli, 81/81 test_task_manager_scripts + test_tasks_server
- [x] Justfile help text updated to advertise
just task/just initiative(caught by review round 1) - [x] Review: APPROVED (round 2) — artifact
.tmp/pr-review-pr-770-20260324-120215.md
Historical task worksheets (completed tasks) retain old plans_cli.py references — intentionally
not updated since they document what was true at the time.
QA Exploration
N/A — non-UI task (CLI rename, no browser-facing changes).
- [x] QA exploration completed (or N/A for non-UI tasks)
Review Feedback
- [x] Review cleared