interview-user
When the user asks to be interviewed, grilled, or talked through an under-formed plan, design, or strategy, use this skill to run a structured tree-shaped Q&A persisted to disk. Elicitation only; does not produce the final artifact.
What this skill does
# interview-user
Elicit structure from an under-formed idea by asking one question at a time, recording each question and answer in a persistent tree on disk. The tree is the source of truth — not chat history.
This skill produces raw material. It does not produce the final artifact. When the user signals "we're done," hand off; do not slide into drafting the PRD/design doc/memo inline.
## When to use
Trigger on phrases like: "interview me about X," "grill this idea," "help me think through Y," "let's poke holes in this plan," "I want to design X but haven't thought it through."
Do not use for: well-scoped implementation tasks, debugging, code review, or any case where the user already knows what they want and is asking for execution.
## Core discipline
**Write the question down before asking it.** This is the single most important rule. The on-disk tree is updated *first*, then the question is posed to the user. Skipping this step collapses the skill into ordinary chat and forfeits the resumability and branch-coverage value.
**One question at a time.** Always. Multi-question messages overwhelm the user and produce shallow answers.
**Preserve the user's coinages verbatim.** When the user invents a term or lands a load-bearing phrasing -- "constraint-driven development," "one person's fix becomes everybody's fix" -- record those exact words in the **Answer**. Paraphrase only the connective tissue around them. The user's own vocabulary is the highest-value material the interview captures; a paraphrase of a coinage discards the thing worth keeping. This matters most for dictated input, which runs long and self-correcting with the gold buried in one specific clause -- read for the clause, keep it intact.
**Recommend an answer only on convergent questions.** A convergent question picks among known options, ratifies a default, or scopes something concrete; lead with a recommendation so the user can "yes / different / why?" A divergent question is generative -- values, success criteria, "what should X be" -- where a confident guess anchors the user before they've explored. Ask divergent questions raw. If the user stalls or asks "what do you think?", *then* offer a recommendation. See "Recommending answers" below.
**Read the repo to find gaps, not to answer questions for the user.** The interview's goal is to get the user to structure their thinking, not to close nodes efficiently. The repo tells you what *is*; the interview elicits what the user *intends*, *values*, or *believes is true*. Those are different artifacts.
Three cases:
- **Pure factual lookup** (what version, what endpoint, what schema) -- read it, record the answer with a `(file:line)` citation, do not ask the user.
- **Repo says X, user's view of X is the elicitation** -- read the repo so the question is *informed*, then ask the user anyway. Example: the code currently routes auth through middleware A; the question "should auth keep going through A?" still goes to the user, with the current state surfaced as context.
- **Intent / values / strategy** -- the repo cannot answer. Do not look. Ask raw.
The repo's primary job in this skill is gap-finding: where does the user's idea conflict with, duplicate, or ignore what already exists? Turn those gaps into questions for the user, not answers on the user's behalf.
**After each answer: decide, write, then resume.** Every user answer triggers the same three-step loop:
1. **Decide if follow-ups are necessary.** Pick from the taxonomy below. The default is *none* -- close the node and move on. A follow-up earns its place only if its answer could change the parent's answer or change the downstream artifact (MECE pruning rule: if the child cannot move the parent, do not ask it).
2. **Write follow-ups as children to the file before asking anything.** Same externalize-before-asking rule as the rest of the skill. Add each child with full tagging (`necessary`/`exploratory`, `convergent`/`divergent`) and a recommended answer on convergent children. Update **Open threads** and **Touched**.
3. **Resume the one-question-at-a-time loop.** Pose the first new child to the user. The other new children wait their turn alongside any pre-existing open nodes; pick the next question by leverage, not by tree position.
If step 1 produced no follow-ups, mark the parent `answered` and move to the next open node. No silent moves -- every answer either closes its parent or branches.
A substantive answer can also resolve *other* open nodes -- a reframe often dissolves seed questions posed earlier. When that happens, mark each of those nodes `subsumed` with a **Reason:** cross-referencing the resolving node, rather than leaving them open or quietly deleting them.
### Follow-up taxonomy
Pick one per answer (including "none"):
- **Close, no follow-up.** Default. The answer is complete enough.
- **Clarify.** The answer is ambiguous. Cite the interpretations: "I'm reading this two ways: X or Y. Which?"
- **Probe an unstated assumption.** Name the implicit premise and ask: "This assumes `<X>`. Is that right?"
- **Test against constraints.** The answer conflicts with declared scope, an earlier answer, or repo reality. Surface the conflict, ask the user to resolve.
- **Pull an implication.** "If `<answer>`, then what about `<consequence>`?" Use sparingly -- the easiest type to over-generate.
- **Adversarial probe.** "What would have to be true for this to be the wrong call?" Reserve for high-stakes nodes where the user seems too confident.
### Follow-up anti-patterns
- **Paraphrase-as-question** ("so you're saying X?") -- record the answer in your own words; do not make the user ratify your phrasing.
- **"Tell me more"** -- unstructured; signals the agent does not know what gap to probe. If you cannot name what you are trying to learn, close the node.
- **Symmetric follow-up across siblings** -- generating the same follow-up type on every node out of habit. Each follow-up is a fresh judgment.
- **Asking before writing.** Follow-ups go into the file first, then to the user. Same rule as root questions.
## Artifact
Question trees live in `docs/questions/<session-name>.md` relative to the current working directory, unless the user or standing instructions specify otherwise. One tree per session. Create the directory if it does not exist.
Before creating the directory, check whether the cwd looks like a build, content, or output location -- a Hugo/Jekyll page bundle, `content/`, `public/`, `dist/`, `build/`, `site/`, or similar -- where the tree would land inside publishable or generated files. If so, propose a repo-root location instead (e.g. the repository's top-level `docs/questions/`) and confirm before writing.
### Node format
Each node is a nested markdown bullet with this shape:
```markdown
- **Q1.2** [open, necessary, divergent] What's the success metric?
- **Answer:** (filled in once answered) -- brief, plus any file refs consulted
- **Touched:** 2026-05-17
- **Q1.2.1** [open, exploratory, convergent] Does it segment by team?
- **Recommend:** yes, segment by owning team
```
Field reference:
- **ID** -- stable, dotted (`Q1`, `Q1.2`, `Q1.2.3`). Never renumber; if a node is abandoned its ID stays as a tombstone.
- **Status** -- one of `open`, `answered`, `deferred`, `abandoned`, `subsumed`.
- **Necessity** -- `necessary` (must be answered to close the parent) or `exploratory` (interesting but optional).
- **Shape** -- `convergent` (pick among options, ratify a default, scope something concrete) or `divergent` (generative -- values, criteria, open "what should X be"). Drives whether to lead with a recommendation.
- **Recommend** -- the agent's proposed answer. Present *with* convergent questions; offer on divergent questions only if the user stalls.
- **Answer** -- the user's actual answer. Paraphrase the connective tissue for brevity, but keep coined terms and load-bearing phrasings verbatim (see "Preserve the user's coinages verbatim" aboRelated in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.