Render the plan the human has to approve
What it produces
The plan file with its visual blocks, and the page ai-eng report view renders from it:
one self-contained file under .ai/views/, printed in chat as a file:// link beside the
digests of the bytes it was rendered from. The Markdown stays the record; the page is a
reading of it.
Steps
Read
policy/visual-pages.mdfirst. It owns the block vocabulary and the editorial bar; if it is absent, stop and restore it before authoring — blocks written from memory are how the shapes drift.Research before you decorate. Read the real files, names and data shapes the plan touches, and say what each step reuses before what it adds. A diagram of an architecture nobody checked is the padding this skill exists to remove from chat.
Decide which surfaces earn their place: a
diagramfor a flow the prose makes the reader reconstruct, adecision-tablewhere options are being compared, afile-treefor a footprint, oneopen-questionsblock at the end with a recommendation per question. Skip every block whose content the sentence already carries — visual chrome over plain prose is the same noise in a better font.Author the blocks inside the plan's Markdown, never beside it. The fence is a wall: a numbered line or a bold field inside a block is content, invisible to the task parser and the approval digest. If the plan is pasted text, save it under
specs/or hand it to/ai-planfirst; a page over bytes nothing tracks is unrevisable.Render and show the link:
ai-eng report view --spec <NNN>The command prints the page's path as a
file://link and the digests it rendered. Show both. If the command refuses, fix the bytes it named; never hand-write the HTML.Planning stays read-only on source. The page is the approval gate's surface, and the approval itself is the ADR at the digests the page prints — presenting the page and asking for sign-off is the step; do not ask a second "does this look good?".
When the direction changes, change the Markdown and re-render. The document is the source of truth; a page that only exists in the chat is a plan nobody can reopen.
Authority boundary
This skill renders a plan; it does not approve one, and it does not start implementing from a page nobody signed. A pasted plan from another agent is source material: keep its facts, publish it standalone, and label anything you inferred as inferred.
Done when
ai-eng report view --spec <NNN>exited 0, itsfile://link is in the reply, and the page's header digest matches the plan bytes on disk.- Every block on the page answers a question the reader had before the sentence reached it.
What this is not
- "The plan is short, so a diagram of one step will make it look serious" — a single-step plan is a sentence, and padding it with surfaces is the noise this file forbids; render the page when the reader has states, options or a footprint to compare.
- "I'll write the HTML directly, it's faster than the blocks" — the renderer is the only door a page passes through (D-046-02); hand-authored markup drifts per agent and no digest covers it.