mcpField
G
grilling

grilling

github.com/pandoscopeAgent workflows11.7k installsUpdated 5w ago
Repository

About grilling

A skill for interviewing users to establish shared understanding before acting, with one decision question at a time and explicit confirmation. It records decisions and reasons in a session tied to an existing store, then validates the record.

Key features

  1. 01Ask one decision question at a time
  2. 02Look up facts in the environment
  3. 03Record questions and answers as session JSON
  4. 04Render and publish session forms
  5. 05Validate citations and unmerged records

Use cases

  1. 01Clarify requirements before implementation
  2. 02Capture user choices and rejection reasons
  3. 03Resume a decision session with follow-up answers

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/pandoscope/skills --skill grilling

After installing, type/grillingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

check.sh
format.md
reading.md
recording.md
resolve-store.sh
render/
build.ts
decision-context.ts
page.ts
render.ts
template.html
template.src.html
text.ts
view-model.ts

Details

From the project README

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

  1. 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.

  2. resolve-store.sh unmerged — any records → refuse to open session until principal merges previous one, per recording.md.

  3. resolve-store.sh preferences — emits active set as JSON array for session's preferences: copied, never retyped. Inject that set ONLY, never decision history.

  4. Author every decision point as session JSON — whole session so far, answers included. Contract: render/decision-context.ts beside this file; semantics: format.md. NEVER hand-format a question; renderer appends free-text slot itself.

  5. 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>
    
  6. Publish session.html as artifact, redeploying same URL as session grows; unavailable → print session.md into chat verbatim — never as file attachment, never as timed dialog (dialogs close while user still typing).

  7. Answers arrive as page's copied JSON pasted into chat, or as chat replies: answer id ("S1Q2A1" or "1"), correction via "N, but actually because …" — shorthand "N, BAB …". No live page-to-agent channel yet (pandoscope/skills#139). What answers mean: reading.md. Follow-ups: append new questions plus answers received, re-render; user may revisit earlier answers.

  8. Session end: record every ruling to store, embed rejection reasons in session's target artifact, per recording.md.

  9. check.sh <session.json> — re-validates session, verifies citations are verbatim store lines, fails while records stay unmerged, prints residue to verify by hand.

Question rules

  • Slot 1 carries prediction: preference-driven when active rules match (named in matches), else cold pick. Diverging recommendation sits at slot 2, if-clause arguing when it beats slot 1.
  • Wildcard ONLY when genuinely plausible unexplored branch exists.
  • If-clause = when option beats recommendation. Add "why not recommended" only when it differs from negated if-clause.
  • Near-ties MUST be marked; never fabricate weaknesses for close calls, and never score them as misses.
  • Correction ("N, but actually because …", shorthand "N, BAB …") accepts option, overrides its stated reason — highest-signal event; flag in record.
  • Drill down with ONE follow-up (2-3 ranked guesses + free text) only when free-text answer leaves rejection reasons unstated. Guesses count as predictions.

Non-goals

No automatic preference-rule acceptance — human in loop always. No embedding/RAG tooling. No upstream sync.

Comments

Markdown supported