--- name: plan description: "Paved command paved.plan. Write the plan for the open run, review it in the preview, and record the user's approval given in the conversation." --- # Paved `plan` command (paved.plan) Write the plan for the open run, review it in the preview, and record the user's approval given in the conversation. **Input:** The run, when several are open (--run ). **Output:** The plan awaiting approval, its review block, and the approval outcome. **Required lifecycle:** RESOLVED, GENERATED, VALIDATED, READY **Required context:** .paved/project/, .paved/rules/, the run's workflow, verification profile **Required capabilities:** none declared **Allowed side effects:** .paved/documents/plans/, .paved/approvals/, .paved/generated/runs/ ## Execution contract 1. Invoke `node "/scripts/paved.mjs" plan --json` from the repository root, passing the user's command inputs as supported CLI arguments. The launcher loads the pinned project-local runtime and returns the canonical structured result. `` is the installed Paved plugin directory, two directories above this SKILL.md. Always run the launcher from the repository being worked on, never from the plugin directory. 2. Follow the structured result's status, diagnostics, evidence, and next action. Stop when the runtime blocks execution. 3. Read the run's Intent document at `.paved/documents/intents/.md`, then write a plan that answers it and links to it. Save the plan at `.paved/documents/plans/.md` and run this command with `--advance --evidence --note `. When the result carries a `review` block, start the preview on its target (with its companions) and follow the `paved.preview` review loop without ending your turn: resolve each comment after editing and advance once after edits so the approval request covers the current plan. When the user approves the plan in the conversation with an explicit yes, run `paved plan --run --approve --json`; never approve on your own or on an ambiguous reply. ## Failure behavior - A plan file and summary are required before approval. - A changed plan needs a new approval. - Only the user approves, in the conversation. - If a required ToolImplementation or runtime is unavailable, stop and explain the missing prerequisite. Never infer or execute a command from repository scripts. - Do not edit human-owned Paved state or bypass lifecycle, ownership, approval, or verification gates. ## Conversational contract 1. Invoke the command. If it returns `"status": "awaiting_input"`, it is waiting on the user. 2. Present every decision in `decisions[]` to the user: what Paved detected, what remains to decide, why it matters, the options, Paved's recommendation and its evidence. 3. Collect the user's answer. Do not answer on their behalf. 4. Resume the same command with `--answer = --answered-by `, repeating `--answer` once per value for a multi-choice decision. 5. Present the result. Follow `core.decisions.decisions` for the full interaction protocol and its prohibitions.