Files
Gabriel Brown 89761a7da3 Keep the personal half of the desktop in one place, and ask before installing it
Agent instructions, skills, SSH host aliases and expansion triggers are worth
having identical on every machine one person owns, and belong in none of the
shared configuration. They live in user/ now, with a manifest saying where each
piece goes and a link-user stage that puts it there.

That stage does nothing unless the machine said yes. Somebody who clones Panama
to try the desktop keeps their own ~/.claude/CLAUDE.md exactly where it was;
the question names the destinations and defaults to no. Anything displaced goes
to config/old rather than being deleted.

~/.claude/CLAUDE.md and ~/.codex/AGENTS.md were byte-identical copies of one
file, which is the drift this exists to prevent.

Also adds the vitals toggles for the battery and Claude usage readouts, which
had preferences and no way to reach them.
2026-08-22 08:54:43 -04:00

103 lines
4.0 KiB
Markdown

---
name: to-questionnaire
description: Turn a decision you cannot make alone into a Markdown questionnaire for the person who can.
disable-model-invocation: true
---
# To Questionnaire
Turn something you cannot answer alone into a **questionnaire**: a Markdown document handed to one
person, filled in async or worked through together in a meeting. They hold knowledge you lack, and
the questionnaire pulls it out of them.
**Grill the send, not the subject.** This is the inverse of a grilling session. Do not interview the
user about the topic, because the whole premise is that they cannot answer it. Interview them about
the **send**, which they can always answer: who it is going to, and what they need back. The
questions in the document then target the **gap** between what the recipient knows and what the user
needs.
Two exchanges, then write.
## 1. Who is it going to?
Ask, in one exchange, the recipient's role, their expertise, and their relationship to the user. This
fixes the tone and how much context the document must carry.
Tone follows the recipient:
| Recipient | Pitch |
|---|---|
| A technical project manager (Conrad) | Technical is welcome and preferred. Do not water down schema, API, or data-model questions into vague business phrasing. Write it as something a person wrote, not as generated filler. |
| A tech lead (Henry) | Assume full technical fluency. Lead with the constraint or risk being decided, and name the trade-off explicitly. |
| A client or non-technical stakeholder | Domain language only. Every technical consequence stated as an outcome they would feel, never as an implementation detail. |
**Done when** you know who the recipient is and what they know that the user does not.
## 2. What do you need back?
Ask, in one exchange, the specific decisions or facts the user cannot resolve alone and needs from
this person.
**Done when** you have a concrete list of what the user must walk away able to do or decide. Not
"understand the requirements": *"know whether partial refunds are in scope for phase one."*
## 3. Write it
Draft questions aimed at the gap, following the structure below. Write to
`to-questionnaire-<slug>.md` in the current directory, or into `.claude/docs/epics/<KEY>/` where the
question belongs to a Jira story and that directory already exists. Report the path.
**Done when** the file exists and every item named in step 2 is covered by a question.
## Document structure
Frame it as a **discovery questionnaire**: the user lacks context, the recipient holds it.
Order questions **most important first**, because async usually means one pass and later questions
get thinner answers. Group them under `##` headings by theme once there are more than a handful.
<questionnaire-template>
# <Questionnaire title>
**Purpose:** why this exists and the decision riding on it.
**From:** <the user>, **To:** <the recipient>, **How your answers will be used:** <where they go>
## Context
One paragraph orienting a recipient who was not in the user's head. Enough to answer well, not a
page.
## How to answer
The deadline and the rough effort. Partial answers and "I don't know" are useful: flag anything
uncertain rather than skipping it.
## <Theme heading>
One `##` section per theme, its questions most important first. Every question is one idea, never
compound, with an answer stub directly beneath it, and a one-line *why this matters* only where the
question could be misread or would otherwise invite a throwaway answer.
<question-example>
### What load is the system expected to handle at launch?
_Why this matters: it decides whether we provision for burst traffic now or defer it._
>
</question-example>
## Anything else?
A closing catch-all: anything we did not ask that we should know?
</questionnaire-template>
## Done when
- The user was interviewed about the send, never about the subject.
- Every question is one idea with an answer stub, ordered most important first.
- Tone and technical depth match the named recipient.
- Every fact or decision from step 2 is covered by a question, and the file's path was reported.