ask-questions-if-underspecified
Install this skill
npx skills add trailofbits/skillsWorks across Claude Code, Cursor, Codex, Copilot & Antigravity
The ask-questions-if-underspecified skill prevents wasted effort by stopping execution when a user request contains ambiguity. Rather than guessing, the agent pauses to solicit necessary information, focusing on criteria like objectives, scope, or technical constraints. By requiring the agent to identify missing details—such as deployment targets or success definitions—before performing modifications, this skill ensures that work aligns with user intent. The agent presents options in a scannable, low-friction format, often providing recommended defaults to expedite decision-making. This disciplined approach minimizes the risk of drift or incorrect implementations that occur when instructions are vague, ensuring the final output matches project standards and safety requirements from the start.
When to Use This Skill
- •A request to refactor a codebase without specifying which components are in-scope
- •Deployment instructions that omit required environment variables or OS targets
- •Ambiguous feature requests where multiple technical implementation paths exist
- •Security-sensitive tasks where the user's risk tolerance or rollback plan is undefined
How to Invoke This Skill
Example prompts that trigger this skill in Claude Code, Cursor, or Antigravity:
- “Is the scope of this task clear enough to begin?
- “Check if you have enough information to start this refactor.
- “Are there any missing details that prevent you from starting?
- “Confirm requirements before proceeding with implementation.
- “What unknowns do you need clarified before editing these files?
Pro Tips
- 💡Always guide your AI to prioritize questions that prevent the most critical 'wrong work' first, focusing on objective and safety before minor details.
- 💡When the user is unresponsive, prompt the AI to state its assumptions and proposed path forward clearly, allowing for explicit approval or correction.
- 💡Encourage the agent to offer multiple plausible interpretations to the user, making it easier for them to identify and clarify the intended path.
What this skill does
- •Identifies vague project scope or unclear acceptance criteria in prompts
- •Constructs concise, numbered multiple-choice queries to resolve ambiguity
- •Suggests logical defaults for technical settings to accelerate user response
- •Enforces a safe-pause state until critical unknowns are resolved
- •Restates agreed-upon constraints to confirm requirements before execution
When not to use it
- ✕When a quick file-read or configuration check can resolve the missing information
- ✕When the request is already precise and contains no conflicting interpretations
Example workflow
- Analyze the request for missing objectives, scope, or constraints.
- Perform a low-risk scan of the repository if necessary to see if the answer is documented.
- Formulate 1-5 targeted, numbered questions with clear default choices.
- Present the questions to the user and request a compact reply like 'defaults' or '1b 2a'.
- Summarize the user's choices to confirm mutual understanding.
- Commence work once all must-have parameters are locked in.
Prerequisites
- –Access to the repository for discovery reads
- –Basic understanding of project configuration conventions
Pitfalls & limitations
- !Asking too many questions can fatigue the user; stick to the absolute must-haves.
- !Over-questioning on minor details that could be inferred from standard practice.
- !Assuming the agent knows the 'right' way to do something without verifying user preference.
FAQ
How it compares
Unlike a generic agent that might guess blindly or hallucinate requirements, this skill enforces a structured handshake, ensuring the agent and user are aligned on project constraints before a single line of code changes.
📄 Full skill instructions — original source: trailofbits/skills
## When to Use
Use this skill when a request has multiple plausible interpretations or key details (objective, scope, constraints, environment, or safety) are unclear.
## When NOT to Use
Do not use this skill when the request is already clear, or when a quick, low-risk discovery read can answer the missing details.
## Goal
Ask the minimum set of clarifying questions needed to avoid wrong work; do not start implementing until the must-have questions are answered (or the user explicitly approves proceeding with stated assumptions).
## Workflow
### 1) Decide whether the request is underspecified
Treat a request as underspecified if after exploring how to perform the work, some or all of the following are not clear:
- Define the objective (what should change vs stay the same)
- Define "done" (acceptance criteria, examples, edge cases)
- Define scope (which files/components/users are in/out)
- Define constraints (compatibility, performance, style, deps, time)
- Identify environment (language/runtime versions, OS, build/test runner)
- Clarify safety/reversibility (data migration, rollout/rollback, risk)
If multiple plausible interpretations exist, assume it is underspecified.
### 2) Ask must-have questions first (keep it small)
Ask 1-5 questions in the first pass. Prefer questions that eliminate whole branches of work.
Make questions easy to answer:
- Optimize for scannability (short, numbered questions; avoid paragraphs)
- Offer multiple-choice options when possible
- Suggest reasonable defaults when appropriate (mark them clearly as the default/recommended choice; bold the recommended choice in the list, or if you present options in a code block, put a bold "Recommended" line immediately above the block and also tag defaults inside the block)
- Include a fast-path response (e.g., reply
defaults to accept all recommended/default choices)- Include a low-friction "not sure" option when helpful (e.g., "Not sure - use default")
- Separate "Need to know" from "Nice to know" if that reduces friction
- Structure options so the user can respond with compact decisions (e.g.,
1b 2a 3c); restate the chosen options in plain language to confirm### 3) Pause before acting
Until must-have answers arrive:
- Do not run commands, edit files, or produce a detailed plan that depends on unknowns
- Do perform a clearly labeled, low-risk discovery step only if it does not commit you to a direction (e.g., inspect repo structure, read relevant config files)
If the user explicitly asks you to proceed without answers:
- State your assumptions as a short numbered list
- Ask for confirmation; proceed only after they confirm or correct them
### 4) Confirm interpretation, then proceed
Once you have answers, restate the requirements in 1-3 sentences (including key constraints and what success looks like), then start work.
## Question templates
- "Before I start, I need: (1) ..., (2) ..., (3) .... If you don't care about (2), I will assume ...."
- "Which of these should it be? A) ... B) ... C) ... (pick one)"
- "What would you consider 'done'? For example: ..."
- "Any constraints I must follow (versions, performance, style, deps)? If none, I will target the existing project defaults."
- Use numbered questions with lettered options and a clear reply format
1) Scope?
a) Minimal change (default)
b) Refactor while touching the area
c) Not sure - use default
2) Compatibility target?
a) Current project defaults (default)
b) Also support older versions: <specify>
c) Not sure - use default
Reply with: defaults (or 1a 2a)## Anti-patterns
- Don't ask questions you can answer with a quick, low-risk discovery read (e.g., configs, existing patterns, docs).
- Don't ask open-ended questions if a tight multiple-choice or yes/no would eliminate ambiguity faster.
How to Use This Skill Unit
Option A: Project-Specific (Recommended)
- Click "Download" above
- In your project, create the directory:
.agent/skills/ask-questions-if-underspecified/ - Save the file as
SKILL.md - The agent will automatically discover the skill based on its description.
Option B: Global Installation (All Agents)
Save the file to these locations to make it available across all projects:
- Claude Code:
~/.claude/skills/trailofbits/skills/ask-questions-if-underspecified/SKILL.md - Cursor:
~/.cursor/skills/trailofbits/skills/ask-questions-if-underspecified/SKILL.md - Antigravity:
~/.gemini/antigravity/skills/trailofbits/skills/ask-questions-if-underspecified/SKILL.md
🚀 Install with CLI:npx skills add trailofbits/skills
