Dataface Tasks

Converge plans and plan commands to a single task CLI surface

IDINFRA_TOOLING-CONVERGE_PLANS_AND_PLAN_COMMANDS_TO_A_SINGLE_TASK_CLI_SURFACE
Statuscompleted
Priorityp1
Milestonem1-ft-analytics-analyst-pilot
Ownersr-engineer-architect
Completed bydave
Completed2026-03-24

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

Rename plans_cli.pytask_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.mdtask.md, plan-initiative.mdinitiative.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:

  1. git mv tasks/tools/plans_cli.py tasks/tools/task_cli.py
  2. Update Justfile: new task and initiative recipes, demote plan to legacy alias
  3. git mv .claude/commands/plan-task.md .claude/commands/task.md (update content)
  4. git mv .claude/commands/plan-initiative.md .claude/commands/initiative.md (update content)
  5. Same for .codex/commands/
  6. Update CLAUDE.md and AGENTS.md — all just plan taskjust task, etc.
  7. Update .claude/commands/task-execute.md and task-dispatch.md references
  8. Update scripts/pr-create, scripts/task-manager-heartbeat, tasks/tools/tasks_server.py path refs
  9. Update .codex/skills/ references
  10. Bulk-update task file worksheets that reference just plan task
  11. 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 task and initiative recipes, plan demoted 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 taskjust task throughout)
  • [x] CLAUDE.md and AGENTS.md updated
  • [x] task-execute.md, task-dispatch.md updated (both .claude/ and .codex/)
  • [x] scripts/pr-create, scripts/task-manager-heartbeat, tasks/tools/tasks_server.py path refs updated
  • [x] .codex/skills/task-manager/SKILL.md, .codex/skills/run-experiment/SKILL.md updated
  • [x] pyproject.toml console script entry point updated
  • [x] tests/core/test_plans_cli.pytests/core/test_task_cli.py (renamed + imports updated)
  • [x] tasks/tools/migrate_tasks.py, tasks/tools/enrich_tasks.py imports updated
  • [x] Bulk-updated just plan taskjust task in 12 active task file worksheets
  • [x] task_cli.py internal print and description strings updated
  • [x] Validation: just task validate passes 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