Interview to flesh out a plan or specification with detailed questions
Conducts an interactive interview to flesh out plan details with technical questions.
/plugin marketplace add settlemint/agent-marketplace/plugin install crew@settlemint[plan-file-path]Plan file path: $ARGUMENTS
If no argument provided, find the most recent plan:
const plans = Glob({ pattern: ".claude/plans/*.md" });
// Sort by modification time, use most recent
</input>
<process>
<phase name="load-plan">
Read the current plan:
const plan = Read({ file_path: "$ARGUMENTS" });
Display a brief summary of the current state:
I've loaded: $ARGUMENTS
Current status: [Draft/In Review/Approved]
User stories: X defined (Y with acceptance criteria)
Open questions: Z remaining
</phase>
<phase name="interview-loop">
Interview the user using AskUserQuestion tool about:
Question Guidelines:
Example Questions:
AskUserQuestion({
questions: [
{
question: "How should the system handle rate limiting for API calls?",
header: "Rate Limiting",
options: [
{ label: "Global limit per user", description: "100 req/min across all endpoints" },
{ label: "Per-endpoint limits", description: "Different limits based on cost" },
{ label: "Tiered by plan", description: "Free: 10/min, Pro: 100/min" },
{ label: "No limiting initially", description: "Add later based on usage" }
],
multiSelect: false
},
{
question: "What authentication method for the API?",
header: "Auth Strategy",
options: [
{ label: "API Keys", description: "Simple, stateless" },
{ label: "JWT Tokens", description: "Self-contained, expiring" },
{ label: "OAuth 2.0", description: "Full authorization flow" },
{ label: "Session-based", description: "Server-side state" }
],
multiSelect: false
}
]
});
Continue interviewing until:
After each round of questions, update the plan file with answers:
// Add decisions to the plan
Edit({
file_path: planPath,
old_string: "## Technical Approach",
new_string: `## Technical Approach
### Decisions Made
- **Rate Limiting**: ${answer1.selection} - ${answer1.reasoning}
- **Authentication**: ${answer2.selection}
## Technical Approach`
});
// Remove resolved questions from Open Questions
Edit({
file_path: planPath,
old_string: "- Q1: How should rate limiting work?",
new_string: ""
});
</phase>
<phase name="completion-check">
After updates, check if interview is complete:
AskUserQuestion({
questions: [{
question: "The plan has been updated. What next?",
header: "Continue",
options: [
{ label: "More questions", description: "Continue interviewing for more detail" },
{ label: "Review changes", description: "Show me the updated plan" },
{ label: "Done", description: "Interview complete, plan is ready" }
],
multiSelect: false
}]
});
When complete:
Interview complete. Plan updated:
Changes made:
- Added 5 technical decisions
- Resolved 3 open questions
- Expanded 2 user stories with edge cases
- Added rate limiting and auth specifications
Plan saved to: $ARGUMENTS
Next step: Run /crew:build to start implementation
</phase>
</process>
<integration>
The design command offers interview as an option before building:
// In design.md present-plan phase:
AskUserQuestion({
questions: [{
question: "Ready to start building this plan?",
options: [
{ label: "Start building", description: "Run /crew:build" },
{ label: "Interview first", description: "Flesh out details with /crew:interview" },
{ label: "Edit manually", description: "Edit the plan file directly" },
{ label: "Just save", description: "Save for later" }
]
}]
});
// If "Interview first" selected:
Skill({ skill: "crew:interview", args: planPath });
</integration>
<success_criteria>
</success_criteria>