toolkit/packages/skills/interview/SKILL.md
Interview the user about a plan file to extract detailed requirements, clarify ambiguities, and uncover edge cases. Uses iterative questioning to produce a comprehensive specification.
npx skillsauth add stevengonsalvez/agents-in-a-box interviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Conduct a detailed interview about a plan to extract comprehensive requirements and produce a specification.
Plans often contain assumptions, ambiguities, and unexplored edge cases. This skill systematically interviews the user to:
/interview path/to/plan.md
Or invoke directly:
interview path/to/plan.md
┌────────┐ ┌──────────────┐ ┌──────────────┐ ┌────────────┐
│ Read │──▶│ Detect │──▶│ AskUser- │──▶│ Write │
│ input │ │ embedded │ │ Question │ │ spec.md │
│ file │ │ sections │ │ rounds 1..N │ │ (template) │
└────────┘ └──────────────┘ └──────┬───────┘ └────────────┘
│
previews from input
ASCII library section
Read the plan file provided as $ARGUMENTS (or $1):
Read the plan file at: $ARGUMENTS
Analyze the plan for:
Also scan for these embedded sections (used by /brainstorm topic stubs):
## For /interview — explicit instructions from the upstream skill. Follow these verbatim; they typically dictate first-round question shape, ASCII preview usage, and topic coverage.## Initial hypotheses — pre-populated A/B/C approach options. If present, your first AskUserQuestion round MUST present these as the options, with each option's ASCII code-block embedded in the preview field.## ASCII preview library — reusable preview snippets keyed to subject type. Use these in subsequent AskUserQuestion preview fields whenever you compare concrete shapes (mockups, schemas, diagrams).## Output Spec Template — a literal markdown template for the spec file output. If present, use this template verbatim for the spec instead of the default in Step 5.These sections are how /brainstorm hands off the design context. Honor them.
MANDATORY: use a structured user-prompt tool. Do NOT dump questions in plaintext chat.
Pick the tool in this order — first match wins:
AskUserQuestion (questions array, supports multiSelect).user_prompt / prompt_user / Prompt / ask_user — whichever the host harness exposes natively. Codex CLI calls this differently across versions; use the version present in your tool list.request_input, ask, or similar).### Question 1: ... / ### Question 2: ...) and ask the user to answer inline.Why this is forced: free-form plaintext questioning is unreliable across runs — agents skip the structured tool when given an "or equivalent" out, which produces lower-quality interviews and bad follow-up. The tool produces typed answers the agent can branch on; plaintext does not.
When invoked from /brainstorm, the input stub contains a "Format preferences" section that dictates output shape. Honor it. The default convention (matching Stevie's CLAUDE.md <flow_diagrams> rule):
| Content shape | Use |
|----------------------------------------------|--------------------------------------------------|
| Flow / sequence / relationships / state | ASCII box+arrow diagram (┌─┐ │ └─┘ ─▶ ▼) |
| Tabular DATA (rows × columns of facts) | markdown pipe table |
| Discrete items, no ordering | bullet list |
| Picks / open questions | - [ ] checklist |
| Prose / narrative paragraphs | AVOID — break into one of the above |
Rules:
preview fields should follow the same convention.Interview categories:
DO ask questions that are:
DON'T ask questions that are:
Continue the interview iteratively:
Completion Criteria:
Once the interview is complete, write a comprehensive specification to the same directory as the plan:
Output file: {plan-file-basename}-spec.md
Example: project-plan.md → project-plan-spec.md
If the input file contained an ## Output Spec Template section (typically present when invoked by /brainstorm):
Otherwise, use the default Specification Template below.
# Specification: {Project/Feature Name}
**Generated from:** {plan file path}
**Interview date:** {current date}
**Version:** 1.0
## Executive Summary
{2-3 sentence summary of what this specification covers}
## Objectives
### Primary Goals
- {Goal 1}
- {Goal 2}
### Success Metrics
- {Metric 1}
- {Metric 2}
## Scope
### In Scope
- {Item 1}
- {Item 2}
### Out of Scope
- {Item 1}
- {Item 2}
### Future Considerations
- {Item 1}
## Technical Requirements
### Architecture
{Architecture decisions and rationale}
### Components
| Component | Purpose | Technology |
|-----------|---------|------------|
| {name} | {purpose} | {tech} |
### Integrations
- {System 1}: {How it integrates}
### Performance Requirements
- {Requirement 1}
### Security Requirements
- {Requirement 1}
## User Experience (if applicable)
### User Flows
1. {Flow name}: {Description}
### Edge Cases
| Scenario | Expected Behavior |
|----------|-------------------|
| {scenario} | {behavior} |
## Constraints & Dependencies
### Technical Constraints
- {Constraint 1}
### External Dependencies
- {Dependency 1}
### Timeline Constraints
- {Constraint 1}
## Risks & Mitigations
| Risk | Impact | Likelihood | Mitigation |
|------|--------|------------|------------|
| {risk} | High/Med/Low | High/Med/Low | {mitigation} |
## Decisions Made
### Key Trade-offs
- **Decision:** {What was decided}
- **Alternatives considered:** {What else was considered}
- **Rationale:** {Why this choice}
### Deferred Decisions
- {Decision 1}: {Why deferred}
## Implementation Notes
### Priority Order
1. {Highest priority item}
2. {Second priority}
### Technical Debt Accepted
- {Item 1}: {Justification}
## Open Questions
- [ ] {Any remaining questions}
---
*This specification was generated through systematic interview of the plan author.*
Plan excerpt:
"Build a user authentication system with OAuth support"
Interview questions:
The skill enforces a structured user-prompt tool (see Step 2 for the priority order). Detailed per-host notes:
Use AskUserQuestion with a questions array. Set multiSelect: true when the user can pick multiple options. 2–4 questions per round.
Use whichever native user-prompt primitive the harness exposes. The exact name has shifted across Codex CLI versions (user_prompt, prompt_user, ask_user, Prompt). Check the available tool list at runtime and pick the one whose schema matches "ask the user a question and wait for an answer". Do not simulate it via plaintext output — Codex agents have a real one.
Each agent has its own user-input primitive (request_input, ask, etc.). Use whichever is available; do not fall through to plaintext if a structured one exists.
Last-resort fallback only. Format questions as a numbered list with clear "Question N:" headers and explicit "please answer inline before continuing" instructions. Do not interleave questions with other content.
documentation
Report reflect drain spend over a time window — tokens split by cached (cache_read), uncached writes (cache_creation), and io (input+output), with a $ estimate, grouped by day / outcome / model / transcript. Reads the drainer's cost log and surfaces outlier runs and cache-reuse health (the 41.5M-token failure mode = low cache reuse + high cache writes). Use to answer "what is reflection costing me" for the last day / week.
development
Show fleet status — every claude session running on the host, merged across ainb + claude-peers broker + background jobs. Use when you need to enumerate sessions before composing an action, see which sessions have a peer registered (broker-routable) vs tmux-only, check the `summary` of each session, or pipe the list into jq for filtering. Default output: text table. Pass --format json for LLM consumption.
testing
Ordered multi-step prompts to fleet targets, ack-gated between steps via JSONL assistant-turn-end detection. Use for cycles like disconnect→reconnect→verify, or any flow where step N+1 requires step N to have completed first. The skill BLOCKS until each target's transcript shows the next assistant turn finishing OR per-step timeout fires (default 300s).
development
Center control panel — enumerate every claude session that is blocked waiting on something: a user answer (AskUserQuestion fired), an API error retry, an idle assistant turn-end with no follow-up, or an explicit WAITING: marker. Returns rich JSON with signal kind + context per session. Use this when you've stepped away from the fleet and want one place to see everything that wants your attention and answer it.