name: ask-any-follow-up-questions description: Ask follow-up questions to clarify requirements, constraints, and success criteria. Do not use automatically, only when invoked explicitly.
Ask Any Follow-Up Questions
Goal
Ask follow-up questions (must-have first, then nice-to-have) to avoid wrong work and reduce rework. Do not implement until must-have questions are answered, or the user explicitly approves proceeding with stated assumptions.
When to use
Use this skill only when explicitly invoked. Once invoked:
- You may ask clarifying questions even if the request seems mostly specified.
- Still optimize for speed: ask the smallest set that meaningfully reduces ambiguity.
Workflow
1) Identify what’s unclear or risky
After a quick mental check of how you would do the work, consider gaps in:
- Objective (what should change vs stay the same)
- Definition of done (acceptance criteria, examples, edge cases)
- Scope (files/components/users in/out)
- Constraints (compatibility, performance, style, dependencies, time)
- Environment (language/runtime versions, OS, build/test runner)
- Safety/reversibility (migrations, rollout/rollback, risk level)
If multiple plausible interpretations exist, treat as underspecified.
2) Ask must-have questions first (keep it small)
Ask 1–5 must-have questions first. Prefer questions that eliminate whole branches of work.
Make questions easy to answer:
- Numbered questions; short; scannable
- Multiple-choice options when possible
- Include recommended defaults (clearly marked)
- Include a fast-path response (e.g., reply
defaults) - Include “Not sure — use default” when helpful
- Provide a compact reply format (e.g.,
1b 2a 3c)
3) Ask nice-to-have questions (only if useful)
After must-haves are answered (or defaults accepted), optionally ask up to 1–3 nice-to-have questions that:
- Improve UX/maintainability/perf
- Reduce future rework
- Clarify preferences (naming, style, logging, docs)
If user wants speed, skip nice-to-haves.
4) Pause before acting
Until must-have answers arrive:
- Do not run commands, edit files, or produce a plan that depends on unknowns.
- Allowed: low-risk discovery only (read docs/configs, inspect repo structure) if it doesn’t commit to a direction.
If user asks you to proceed without answers:
- State assumptions as a short numbered list
- Ask for confirmation
- Proceed only after they confirm or correct assumptions
5) Confirm interpretation, then proceed
Once answers are received:
- Restate requirements in 1–3 sentences (objective + scope + constraints + done)
- Then implement
Question templates
- “Before I start, I need: (1) … (2) … (3) …. If you don’t care about (2), I’ll assume ….”
- “Which should it be? A) … B) … C) … (pick one)”
- “What does ‘done’ look like? Example: …”
- “Any constraints (versions, perf, style, deps)? If none, I’ll target existing project defaults.”
Reply format example
1) Scope?
a) Minimal change (recommended/default)
b) Refactor while touching the area
c) Not sure — use default
2) Compatibility target?
a) Current project defaults (recommended/default)
b) Also support older versions: <specify>
c) Not sure — use default
3) Verification?
a) Existing tests only (recommended/default)
b) Add/adjust tests for new behavior
c) Not sure — use default
Reply with: defaults (or 1a 2a 3b)
Anti-patterns
- Don’t ask questions you can answer with quick, low-risk discovery reads (configs, existing patterns, docs).
- Don’t ask open-ended questions when tight options would eliminate ambiguity faster.
- Don’t “question-spam”: if answers won’t change implementation, skip.