grill-visually
This skill uses Claude hooks which can execute code automatically in response to events. Review carefully before installing.
Grill visually
Interview the user until you reach a shared understanding of a plan, but show each round as a diagram with the open decisions marked on it. The user answers by clicking through a page served from a local server and pasting one generated command back into the terminal. The session ends when every decision is settled or explicitly deferred and the user confirms. Along the way it produces the same docs as grill-with-docs, a GLOSSARY.md updated as terms settle and ADRs for decisions worth recording. It does not produce a spec or code, because those are separate steps the user chooses afterwards.
Who does what
Scripts do the mechanical round-trip. You do the judgment and the docs.
Script (in <skill>/scripts/, where <skill> is the folder holding this file) |
What it does |
|---|---|
node <skill>/scripts/patch.mjs [--session <id> | --new] < patch |
Merges a partial tree.json into the tree, validates it, and writes it only when valid. --new starts a session in .scratch/grilling/<id>-<slug>/ from a patch carrying title |
node <skill>/scripts/render.mjs [--session <id>] [--no-open] |
Validates tree.json, freezes the next round, starts the session's server or reuses the running one, prints its URL on an Open: line, and opens the browser when it started a new server |
scripts/server.mjs |
Started by render.mjs, one per session, on a random port. Serves the latest round, lets the open page reload itself when a new round is rendered, and applies the answers from the page's curl command. Stops once the session is confirmed, or after an hour with no requests. Never start or stop it yourself |
node <skill>/scripts/summary.mjs [--session <id>] |
Prints the shared understanding so far |
Never write or edit page.json, previous.json, meta.json or server.json. Change tree.json only through patch.mjs, so you never re-read the whole tree. If a script refuses, patch according to its message and run it again. The patch format is under tree.json patches; read it before writing the first round.
Run scripts from the project root so .scratch/grilling/ lands there. --session can be left out when only one session exists.