skills/thinking-socratic/SKILL.md
Use before building when a request is vague, assumption-laden, or "obvious." Ask the clarifying questions that surface hidden requirements and false premises instead of guessing.
npx skillsauth add tjboudreaux/cc-thinking-skills thinking-socraticInstall 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.
The Socratic Method, developed by the ancient Greek philosopher Socrates, uses systematic questioning to stimulate critical thinking and illuminate ideas. Rather than providing answers, it draws out knowledge by challenging assumptions and exploring implications.
Core Principle: A vague or assumption-laden request is cheaper to clarify than to misbuild. The right question up front surfaces the hidden requirement or false premise that would otherwise be discovered only after the work is done.
Use this as a pre-build clarification tool: when a task is underspecified, ambiguous, or rests on an unstated assumption, ask the targeted question before writing code or committing to an approach — don't fill the gap with a guess.
Decision flow:
About to build/commit on an underspecified request? → yes → ASK CLARIFYING QUESTIONS FIRST
Request rests on an unexamined assumption? → yes → PROBE THE ASSUMPTION
Stated problem is a vague symptom? → yes → QUESTION DOWN TO A SPECIFIC
Purpose: Ensure clear understanding of the claim or concept
| Question | Use When | |----------|----------| | "What do you mean by X?" | Term is ambiguous | | "Can you give me an example?" | Concept is abstract | | "How does this relate to Y?" | Connection unclear | | "Can you rephrase that?" | Statement is confusing | | "What is the main point?" | Discussion is scattered |
Example:
"The system needs to be fast." → "What do you mean by 'fast'? What latency is acceptable?" → "Fast for whom? End users? Batch processes?"
Purpose: Expose underlying beliefs that may be unexamined
| Question | Use When | |----------|----------| | "What are we assuming here?" | Conclusion seems too quick | | "Is this always true?" | Generalization made | | "What if that assumption is wrong?" | Testing robustness | | "Why do we believe this?" | Basis unclear | | "What would have to change for this to be false?" | Finding conditions |
Example:
"We need microservices for scale." → "What are we assuming about our scale requirements?" → "Is it always true that microservices scale better?" → "What if a modular monolith could meet our needs?"
Purpose: Examine the support for a claim
| Question | Use When | |----------|----------| | "What evidence supports this?" | Claim is asserted | | "How do we know this?" | Source unclear | | "Are there other explanations?" | Causation assumed | | "What would prove this wrong?" | Testing falsifiability | | "Is this evidence sufficient?" | Conclusion seems strong |
Example:
"Users don't want feature X." → "What evidence do we have for this?" → "How many users did we ask? How were they selected?" → "Could there be other explanations for the feedback?"
Purpose: Consider alternative angles and stakeholders
| Question | Use When | |----------|----------| | "How would X see this?" | Single perspective dominates | | "What's the opposite view?" | No alternatives considered | | "Who disagrees, and why?" | Consensus seems too easy | | "What are we not seeing?" | Blind spots suspected | | "How does this look from [role]?" | Stakeholder impact unclear |
Example:
"This API design is intuitive." → "How would a new developer view this?" → "What would someone from a different language background expect?" → "Who might find this confusing, and why?"
Purpose: Explore downstream effects and logical conclusions
| Question | Use When | |----------|----------| | "What follows from this?" | Implications unexplored | | "If this is true, what else must be true?" | Testing consistency | | "What are the consequences?" | Impact unclear | | "How does this affect X?" | Ripple effects not considered | | "What are the second-order effects?" | Only immediate effects seen |
Example:
"We'll add this field to the API response." → "What follows from adding this field?" → "How does this affect clients that don't need it?" → "What are the implications for backward compatibility?"
Purpose: Reflect on the inquiry itself; meta-level examination
| Question | Use When | |----------|----------| | "Why is this question important?" | Purpose unclear | | "What would answering this tell us?" | Value of question unclear | | "Is this the right question?" | May be missing the point | | "What question should we be asking?" | Reframing needed | | "Why are we asking this now?" | Timing or priority unclear |
Example:
"Which database should we use?" → "Why is this question important right now?" → "What would answering this tell us that we don't know?" → "Is the real question about database, or about data modeling?"
Stakeholder: "We need a dashboard."
Clarification: "What decisions will the dashboard help you make?"
Assumptions: "What are we assuming about who will use this?"
Evidence: "What data shows this is the highest priority?"
Perspective: "How do different user roles need different views?"
Implications: "If we build this, what won't we build?"
Meta: "Is a dashboard the best solution, or is there another approach?"
Report: "The system is slow."
Clarification: "Which operations are slow? How slow?"
Assumptions: "What are we assuming about where the bottleneck is?"
Evidence: "What metrics/traces support this?"
Perspective: "Is it slow for all users or specific patterns?"
Implications: "If we fix this, what else might change?"
Meta: "Is 'slow' the right frame? Could it be 'inconsistent'?"
Proposal: "We should use event sourcing."
Clarification: "What do you mean by event sourcing in this context?"
Assumptions: "What are we assuming about our query patterns?"
Evidence: "What evidence suggests this fits our use case?"
Perspective: "How would ops view this? New team members?"
Implications: "What are the consequences for debugging? Storage?"
Meta: "Is the real question about event sourcing or auditability?"
"I know that I know nothing."
The goal is not to prove others wrong but to discover truth together. The best questions reveal what everyone—including the questioner—doesn't yet understand.
tools
About to add a feature/layer/process to fix a problem. First ask what to remove instead — subtraction is often more robust than addition. Use for simplification and complexity reduction.
development
Use when stuck between two architecture or API requirements that seem mutually exclusive — name the contradiction precisely, then separate the conflicting states in time, space, or condition.
testing
You need to trace how a system would fail or behave at a scale you can't cheaply test or measure. Use to imagine the scenario and walk the consequence chain step by step.
devops
Use when optimizing latency or throughput in a pipeline and one stage dominates—focus all effort on that single bottleneck, since speeding up the others changes nothing until it's fixed.