---
name: grill-me-content
description: A relentless interview that develops great content and copy for your site, then writes it from your answers.
disable-model-invocation: true
---

# Grill me: content

Interview the user relentlessly about their positioning until the copy can only come out right, then write that copy. The interview produces two durable artifacts (`CONTENT.md` and `VOICE.md`) that every future content session builds on, and the copy is developed strictly from what the interview established: no claim the user didn't confirm, no proof that doesn't exist.

Use the vocabulary from the marketing-content skill throughout (reader, hook, promise, proof, objection, CTA, message home).

## Phase 1: explore before asking

Facts get looked up; only decisions get asked. Before the first question, read what exists:

- `CONTENT.md` and `VOICE.md` at the repo root. If both exist and are current, say so and offer to skip to Phase 4 with them.
- README, docs, package.json (or equivalent), and any existing marketing pages: what does this project verifiably do?
- Existing copy anywhere in the repo: what is currently being claimed, and in what voice?

Summarize what you found in a few lines so the user can correct the record before the grilling starts.

## Phase 2: the grilling

Ask one question at a time. Wait for the answer before the next question. Lead every question with your recommended answer so the user can accept it in a word. Asking multiple questions at once is bewildering; a question without a recommendation is work you pushed onto the user.

Walk the decision tree in this order, and go down a level whenever an answer is vague. Vague answers are the enemy: "developers" is not a reader, "it's fast" is not proof.

1. **Reader**: who is the one person this is for? What did they search or feel right before arriving?
2. **Promise**: what changes in the reader's life? One sentence, no "and".
3. **Proof inventory**: for the promise and each supporting claim, what evidence exists right now? Demand the highest rung available (show > cite > claim). Grill soft claims until they become numbers, demos, or names, or get dropped. Record what proof is missing and should be created.
4. **Alternatives**: what does the reader do today instead, and why is now the moment to switch? What honestly stays better about the incumbent?
5. **Objections**: the top three reasons this exact reader bounces, and the answer to each.
6. **Voice**: register (blunt/warm, technical/plain), words this brand uses, words it never uses. Collect at least one like-this / not-like-this pair.
7. **Surfaces**: which pieces to produce now (landing hero, full landing, README intro, launch post, pricing page), and the one CTA per surface.

Do not start writing copy until the user confirms the tree is settled.

## Phase 3: write the record

Persist the decisions so no future session re-asks them:

- `CONTENT.md` at the repo root: reader, promise, proof inventory (each item with its rung and source), alternatives, objections with answers, and the agreed surfaces with their CTAs.
- `VOICE.md` at the repo root: register, lexicon (we say / we never say), and the like-this / not-like-this pairs. Follow the format the anti-slop skill defines.

If either file existed, update it rather than rewriting it; note what changed.

## Phase 4: develop the copy

Produce each agreed surface:

- Structure each surface by its channel shape from the marketing-content skill.
- Every claim traces to a `CONTENT.md` proof-inventory entry. A claim with no entry gets cut or sent back to Phase 2 as one more question.
- Apply the anti-slop skill in full, including its self-review pass, before presenting anything.
- Present each surface with a one-line note on where it should live (file path or page slot).

Completion criterion: every surface agreed in Phase 2 exists, contains zero claims absent from `CONTENT.md`, and has exactly one CTA. Then stop; publishing and wiring the copy into files is the user's call, offered, not assumed.

---

*This is the manual version. [Reactor](https://reactor.tools) runs it automatically against your saved brand voice, Guard rules, and performance data.*
