Skip to content
Back to skills

Grilling

ASecurity

Decide everything that can be decided, then show where you might be wrong. **This is not an interview.** The output is a short list of assumptions the user corrects in one pass. A question is what happens *after* a correction leaves a fork you genuinely cannot settle.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 16, 2026
developmentgogitfrontend

Security analysis

A100/100

Scanned October 16, 2026

npx -y skills add ATNexusLab/tightship --skill grilling --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Grilling?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Grilling
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/atnexuslab-grilling/badge)](https://www.skillsdirectory.com/skills/atnexuslab-grilling)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
+++
name = "grilling"
description = "Use before planning anything non-trivial or ambiguous, or on any 'grill' trigger — state the assumptions the plan rests on so the user corrects the ones that change the work."
+++

# Grilling

Decide everything that can be decided, then show where you might be wrong.

**This is not an interview.** The output is a short list of assumptions the user corrects in one pass.
A question is what happens *after* a correction leaves a fork you genuinely cannot settle.

## Triage — three buckets, and only one of them is a question

| Bucket | What to do |
| --- | --- |
| **A fact** | Look it up — the repo, the history, the tools. Never ask what the environment can answer. The clone is compared with its remote first (`git fetch`, then `git status -sb`); a clone behind it answers with stale facts. |
| **A routine call** | Decide it, list it as an assumption, move on. Reversible, cheap, or with an obvious default. |
| **Changes the shape of the work** | This, and only this, goes on the list. |

## What earns a place on the list

One test: **would a different answer change what gets built** — the work itself, its size, or its
structure? If two answers lead to the same code, it does not go on the list.

**A preference is not a shape.** "Which wording do you prefer" and "which colour" change nothing about
the work; decide them and move on. "Does this export the current page or the whole result set" changes
whether a background job exists — that is a shape.

**Size is a shape.** Before the list, count the files the work touches, consumers of anything it deletes
or moves included. A count too large to read in one sitting goes on the list with its stages in the
consequence line; it is never folded into an assumption about scope.

## Before the list

- **A sub-issue of an epic in progress:** read every doc the epic's earlier commits changed
  (`git diff --stat <integration-branch>...HEAD -- docs`). A decision taken while implementing lands in
  the domain doc, not back in the spec.
- **A frontend fork:** say what role the piece plays — who makes the call, who caches it, who links the
  two — and show the market-standard answer next to the recommendation. A fork offered by library name
  alone gets answered blind.

## The list

Three to seven items. Each one is a **statement, not a question**, and carries a line saying what
changes if it is wrong:

```text
1. Export is CSV, not a spreadsheet format.
   If wrong: a library, cell formatting, and a different test surface.
2. Exports the current page, not the whole result set.
   If wrong: needs a background job and a delivery path — different size of work.
3. Columns are fixed, not user-configurable.
4. Permission is the same one that grants seeing the list.
```

The consequence line is what makes the list correctable in ten seconds. Without it the user has to
reconstruct your reasoning before they can disagree with it.

**The list is written where the user reads it, and never in a dialog.** Grilling runs before
{{capability:plan-mode}}: print the list as a normal chat message and end the turn on it, with no
question dialog after it; the user answers in free text. A dialog either hides the chat text above it or
squeezes the list into previews too narrow to read. A session already in {{capability:plan-mode}} writes
the list at the top of the plan file, under a heading that says it awaits confirmation, and ends the turn
with {{capability:plan-approval}}: the approval screen renders the whole file, and a correction comes
back as the rejection's feedback.

## After the list

- **Only what the user contests becomes a question.** One at a time, and only when the correction
  leaves a fork you cannot settle yourself.
- **A second round happens only if a correction opened a new shape-changing unknown.** Two rounds is
  the normal ceiling. When nothing remaining can change the shape, the grilling is over — say so and
  move to the plan.

## The output

The confirmed list becomes the header of the plan or the spec — written down, not left in the
conversation. It survives compaction, and nothing on it gets asked twice. A plan is written in
{{capability:plan-mode}}: enter it before writing the first line.

## Never do

- Ask what you could have looked up.
- Ask a question you would answer the same way regardless of the reply, or invent an option just to
  have something to ask about: it costs a decision the user then has to live with.
- Put a preference on the list, or let the list run past ~7 items.
- Keep going after the shape stopped moving.
- Walk a decision tree branch by branch — that extracts a decision per branch, including branches the
  work would never reach.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.