grill · git:20260911.167fad7 · 2026-09-11 · sha256 76b0ff5b66d44be4

grill git:20260911.167fad7A

Immutable. This exact content is served forever at /api/v1/blob/76b0ff5b66d44be4.

---
name: grill
description: Walk a depth-first decision tree anchored to a project's documented principles before brainstorming opens options. Reads docs/agents/principles.md (or probes docs/principles.md and docs/ops-principles.md directly), shortlists principles relevant to the topic, asks one question at a time with a recommended answer per question, surfaces conflicts emergently, and outputs a brief that downstream brainstorming or planning can consume. Use when starting design work and the project has principles documented; redirects to stay-principled:setup otherwise. Auto-routes from phrases like "grill me with principles", "anchor this to the principles", "what principles bear on this", "stay principled on this".
---

# Grill with Principles

Walk a depth-first decision tree using the project's principles as the tree roots, before brainstorming opens. The mechanism is grill-me's: one question at a time, recommended answer per node, explore the codebase instead of asking when the answer is there. The anchor is principles, not generic decisions.

## Why this exists

Brainstorming-style breadth-first menus drag conversations toward implementation variants. Depth-first walking with principle anchoring stays at the *why* level. Principles loaded as upfront context are necessary but not sufficient: they need to act as a forcing function during decision moments, not as wallpaper.

## Process

### 1. Discover principles

- Read `docs/agents/principles.md` if it exists. This is the canonical config written by `stay-principled:setup`.
- Otherwise probe `docs/principles.md` and `docs/ops-principles.md` directly.
- Resolve all paths against `git rev-parse --show-toplevel` so worktree invocations find the right files.
- If nothing is found, ask: *"No principles configured. Skip principle-anchoring, or run `stay-principled:setup` first?"* and exit cleanly. Do not pretend to grill without principles. The whole point is anchoring.
- If `docs/agents/principles.md` includes a `## Skip patterns` section, check whether the current branch (`git branch --show-current`) or current path matches any pattern. If so, mention it to the user and ask whether to proceed anyway. The skip patterns are advisory in v1, not strict gates.

### 2. Read and shortlist

- Read all configured principle files into your working set.
- Based on the user's stated topic and visible context (recent commits, branch name, files mentioned, current cwd), propose a shortlist by number and name.
- Cite by number AND name so the user can react fast: *"I think principles 3 (agent proposes), 4 (capture vs triage), and 9 (resilience) bear on this. Anything I'm missing?"*
- If the topic touches a named domain in the domain map, include the domain-specific principles for that domain.
- Wait for the user to confirm, add, or remove before moving on.

### 3. Confirm and walk

Walk the shortlist depth-first, one principle at a time.

For each principle:
- Frame the question that would make this principle bite for the current design. Don't ask abstract questions; ask the concrete one this principle implies.
- Provide a recommended answer, drawing from the `Where:` examples in the principles file when relevant. If the principles file has correction cases for this principle, mention them as part of the recommendation when relevant.
- Wait for the user to confirm, adjust, or reject.
- One question at a time. Never present a menu.
- Cite the principle by number explicitly so cross-references stay easy: *"Per #3..."*

Carry constraints forward: if principle 3 established that 'agents propose, humans confirm', use that boundary when asking the principle 9 question instead of re-asking whether agents should propose. Don't re-ask what's already settled.

### 4. Surface conflicts emergently

When two principles pull opposite ways on the same decision, surface the conflict explicitly. Do **not** recommend a resolution. These are exactly the kind of question that needs the user's judgment, not the agent's.

Example conflicts the brineworks file already shows:
- #5 "defer until concrete need" vs #4 "capture is frictionless": capture features get built before they're "needed".
- #13 "design ceremony matches deployment model" vs any principle that imports multi-user discipline.

Frame: *"#5 says defer, #4 says capture. Which dominates here?"*

### 5. Cite correction cases

When the principles file documents correction cases or known violations (however they are formatted), surface them when the topic resembles the original pattern. Don't just cite; ask whether the same shape applies:

> "Principle 8 had a leak in [context from principles file]. Does the same pattern apply here?"

### 6. Output the brief

When the tree is walked or visibly stabilized, synthesize a brief inline. Include only the fields that apply; omit any that are empty (e.g., omit 'Active conflicts' if none surfaced):

```
## Principle brief: <topic>

**Anchored to:** principles 3, 4, 9

**Resolved:**
- Per #3: agent proposes, human confirms at the X boundary
- Per #4: capture lands raw at Y; filtering happens in triage step Z

**Open at brainstorm time:** ...

**Honored constraints:** ...

**Active conflicts (need user resolution):** ...
```

Always output inline. Offer to write to `docs/plans/YYYY-MM-DD-<topic>-principle-brief.md` when the brief is non-trivial. Never auto-write. The brief is a starting point, and the user may want to edit it before downstream skills consume it.

## Mode rules (carried from grill-me)

- One question at a time. Never present a menu.
- Always include a recommended answer, except when surfacing a principle conflict.
- Explore the codebase or principles file instead of asking when the answer is there.
- Stay at the intent level. If the user pulls toward implementation, redirect:

  > "That's a brainstorming question. Want to settle the principle 3 boundary first, or jump?"

- Cite by stable identifier. When principles are numbered, use the number; when they aren't, use the bolded name or a short quote. Cross-references and correction-case citations should use whatever identifier the principles file provides consistently.

## What this skill does not do

- Generate option menus. That's `superpowers:brainstorming`'s job, downstream.
- Recommend resolutions to principle conflicts.
- Write or amend the principles file. That's a future capture-side skill (`principle-sweep`), out of scope for v1.
- Handle non-markdown principle files. The skill is format-tolerant for markdown but does not parse other formats.