grilling
Grilling
Interview user until shared understanding. Walk every branch of decision tree, dependencies one by one. ONE question at a time — wait for answer before next. Facts findable in environment: look up, never ask. Decisions are user's — put each to user, wait. Do not act until user confirms.
Naming: question S«s»Q«q», answer S«s»Q«q»A«n».
Steps
-
resolve-store.sh path— locates store harness already cloned. Resolve, never clone. Exits non-zero naming its own fix when store is unnamed, unresolved or absent; unnamed → say so out loud and record nothing (silent skip is indistinguishable from successful record). Store URL lives in environment only — never hardcoded, never echoed into artifacts. -
resolve-store.sh unmerged— any records → refuse to open session until principal merges previous one, per recording.md. -
resolve-store.sh preferences— emits active set as JSON array for session'spreferences: copied, never retyped. Inject that set ONLY, never decision history. -
Author every decision point as session JSON — whole session so far, answers included. Contract:
render/decision-context.tsbeside this file; semantics: format.md. NEVER hand-format a question; renderer appends free-text slot itself. -
Render both user-facing forms — validation failure names offending field; fix JSON, re-run:
node --experimental-strip-types <skill-dir>/render/render.ts <session.json> --out <dir>