Socratic code review using probing questions instead of direct critique. Based on Feynman's principle that teaching reveals gaps in understanding...
You are initiating a Socratic code review session. Instead of telling the developer what's wrong, you'll ask probing questions that help them discover issues and articulate their reasoning.
Use Socratic review when:
Use traditional review when:
# Basic usage - reviews file with standard depth (7-10 questions)
/socratic-review path/to/file.py
# Quick review - 3-5 focused questions
/socratic-review path/to/file.py --depth=quick
# Deep review - 15-20 comprehensive questions
/socratic-review path/to/file.py --depth=deep
# Review specific function/class
/socratic-review path/to/file.py --focus="function_name"
# Review a directory
/socratic-review src/auth/
# Non-interactive mode (for CI/subprocess - asks all questions, synthesizes without waiting)
/socratic-review path/to/file.py --non-interactive
# Output structured JSON for programmatic processing
/socratic-review path/to/file.py --non-interactive --output=review.json
# Write insights to DECISIONS.md
/socratic-review path/to/file.py --write-decisions
First, I'll analyze the code to understand:
Based on the code, I'll select questions from six categories:
I'll ask questions one at a time and wait for your responses:
**Q1** [Category: Design]
Why did you choose to store session data in memory rather than a database?
[WAIT FOR YOUR RESPONSE]
After each answer, I may:
After all questions, I'll summarize:
Best for:
Focus: Highest-risk areas only
Best for:
Focus: All question categories covered
Best for:
Focus: Comprehensive with follow-ups
## Socratic Review: auth/login.py
I'm going to ask you some questions about this login implementation.
There are no wrong answers - the goal is to think through the design together.
---
**Q1** [Category: Design]
I see you're storing session data in an in-memory dictionary.
Why did you choose this approach over Redis or database storage?
> Your answer: "It was simpler to implement and we don't have many users yet."
That makes sense for simplicity. **Follow-up**: What would trigger you to
migrate to a different storage mechanism?
> Your answer: "Um... I guess when we scale? Or add multiple servers?"
**Insight noted**: Migration criteria aren't clearly defined.
---
**Q2** [Category: Edge Case]
What happens if a user's session expires while they're submitting a form?
> Your answer: "I... actually haven't thought about that."
**Insight noted**: Session timeout during active use is unhandled.
---
[... more questions ...]
---
## Review Synthesis
### Insights Revealed
- Session storage is pragmatic but migration path unclear
- Session timeout during active use is unhandled
### Assumptions Surfaced
- Single server deployment assumption
- Users won't have long form submissions
### Recommendations
1. Document session storage migration criteria
2. Add graceful session timeout handling
### Strengths Identified
- Clear awareness of simplicity trade-offs
- Quick recognition of gaps when prompted
Socratic review can replace standard review at Step 11 of DEFAULT_WORKFLOW:
Step 11: Review the Code
Choose review approach:
A) Standard review - Direct feedback from reviewer agent
B) Socratic review - Dialogue with socratic-reviewer agent
Use Socratic when:
- Learning is as important as fixing
- Design decisions need documentation
- Mentoring/onboarding context
When answering questions:
The key question: how do insights from dialogue become actual improvements?
During live dialogue:
--write-decisions to persist insights to DECISIONS.mdFor automated contexts:
Auto-Detection: The skill automatically detects non-interactive contexts (e.g., claude --print, CI pipelines, no TTY) and switches to non-interactive mode. This prevents the frustrating pattern of asking questions, waiting for responses that can't come, and exiting INCONCLUSIVE with no useful output.
# Run non-interactive review
/socratic-review src/auth/ --non-interactive --output=review.json
# Post results to PR
gh pr comment 123 --body "$(jq -r '.synthesis | "## Socratic Review\n\n### Insights\n" + (.insights_revealed | map("- " + .) | join("\n")) + "\n\n### Recommendations\n" + (.recommendations | map("- [" + .priority + "] " + .description) | join("\n"))' review.json)"
If 3 questions go unanswered in interactive mode, the session exits with INCONCLUSIVE status. Socratic review requires willing participation - without it, exit cleanly rather than pretend to do something else. The user can then choose to run traditional /review instead.
This skill is based on:
~/.amplihack/.claude/agents/amplihack/specialized/socratic-reviewer.md/reviewing-code skill for direct feedbackphilosophy-guardian agent for complianceWhen this skill is invoked:
Task(
subagent_type="socratic-reviewer",
prompt="Conduct Socratic review of [file] at [depth] level. Focus on: [areas]"
)
The agent will handle the question flow and wait for responses using [WAIT] markers.