Three thin wrappers.
plan <task>
Dispatch: src/main.js:552 · buildExecutionPlan(root, config, task, options) in src/core/planner.js.
Flags: --explain (include score breakdowns), --context-mode <compact|routed>, --with-context, --root, --json.
Reads .agentify/index.db, semantic facts, and test metadata. Outputs the planner prompt, selected files, and tests. With --explain includes per-file score breakdowns.
handoff --session <id>
Dispatch: src/main.js:699 · writeHandoffBundle(root, config, sessionId, task) in src/core/handoff.js.
Flags: --session <id> (or positional arg 1), --root, --json; positional task tokens after flags become the handoff brief.
Writes: .agentify/handoff/<id>.md and .agentify/handoff/<id>.json.
exec [flags] -- <cmd...>
Dispatch: src/main.js:679.
Flags: --root, --fail-on-stale, --timeout <seconds>, --skip-refresh, --provider, --json.
Refreshes the index (unless skipped) and runs a custom provider command. Everything after -- is forwarded verbatim.
Pick the right wrapper.
Use when you want to see the planner's choices before paying for a provider call. --explain surfaces score breakdowns; --json feeds another tool.
Use to pass a session to another agent or human. The bundle is markdown + JSON for easy paste-in or programmatic consumption.
Use when you need a raw provider command but still want Agentify's refresh and stale-index guard around it.