atelier-oracle-challenge
Challenge: Critical Thinking Prompt
The Iron Law
NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
When you encounter a bug, error, or unexpected behavior, you MUST identify the root cause before implementing a fix. This means:
- Don't just fix the symptom—fix the disease
- If you don't understand why it broke, you don't know if your fix will work
- Quick fixes without investigation become technical debt
This is non-negotiable. If you're implementing a fix without understanding the root cause, you're just guessing.
When to Use Challenge
Before Implementing Fixes:
- Any bug fix
- Error handling changes
- Edge case handling
- Performance fixes
To Validate Approach:
- Architecture decisions
- Technology choices
- Design patterns
- Requirement assumptions
The Four Phases:
Phase 1: Root Cause Investigation
- Reproduce the issue consistently
- Identify what's different between expected and actual behavior
- Trace back to where the state diverges
Phase 2: Pattern Recognition
- Does this match a known pattern of bugs?
- Is there a category of errors this belongs to?
- What's common between this and other similar issues?
Phase 3: Hypothesis Formation
- What do I believe is causing this?
- What's the minimal test that would prove/disprove this?
- What would a correct implementation look like?
Phase 4: Implementation
- Verify fix with tests (consider domain boundary testing)
- Check for similar issues elsewhere
- Document what was learned
Step 1: Parse Challenge Request
Analyze the challenge request: $ARGUMENTS
Challenge Extraction:
- Core concern: Extract the main doubt or question
- Target approach: Identify what is being challenged
- Context: Relevant background from current session
- Specific aspects: Particular elements to question
Challenge Summary: You're challenging: [identified approach] Because: [extracted concern] In context of: [session context]
Step 2: Set Up Critical Thinking Framework
Critical Thinking Prompts:
- Is this approach solving the right problem?
- Are the underlying assumptions still valid?
- What evidence contradicts this direction?
- How does this fit with your constraints and goals?
- What are the opportunity costs?
Step 3: Sequential Thinking Analysis
Use sequential thinking (mcp__sequential-thinking__sequentialthinking) to analyze this challenge:
Thought 1: Question the fundamental assumptions Thought 2: Examine contradictory evidence Thought 3: Explore alternative approaches Thought 4: Assess context-specific fit Thought 5: Evaluate risks and trade-offs Thought 6: Synthesize findings into recommendation
Build systematically through evidence, alternatives, and risks. Continue until you reach a clear conclusion.
Step 4: Critical Evaluation Output
Self-Critique Questions:
- Does the analysis address the user's specific context?
- Are the recommendations practical and implementable?
- Have we considered the most important constraints?
- Are there any blind spots or missing perspectives?
Final Synthesis:
- Assumption validity: Are the underlying assumptions sound?
- Evidence assessment: Does evidence support or contradict?
- Alternative recommendation: If current approach is problematic, what instead?
- Risk mitigation: How to address identified concerns?
Usage Examples
Challenge Technical Decisions:
/atelier-challenge "Do we really need a microservices architecture for this simple app?"
Challenge Implementation Approach:
/atelier-challenge "I think this caching strategy will actually slow things down"
Challenge Requirements:
/atelier-challenge "Are we solving the right problem with this feature?"
Challenge Architectural Patterns:
/atelier-challenge "Should we really use event sourcing for this use case?"
When to Use Challenge
Before Major Decisions:
- Architecture choices
- Technology stack decisions
- Design pattern selection
- Implementation approach
When Something Feels Off:
- "This seems overly complex"
- "I'm not sure this solves the real problem"
- "This approach feels wrong"
- "Are we over-engineering this?"
To Prevent Automatic Agreement:
- When you want genuine critical evaluation
- When you need to challenge conventional wisdom
- When you want to test your own assumptions
Challenge vs ThinkDeep
Use /atelier-challenge: Question assumptions, test validity, assess risks, prevent automatic agreement Use /atelier-thinkdeep: Deep exploration, comprehensive analysis, alternative discovery, complex decisions
Key distinction: Challenge = critical evaluation, ThinkDeep = deep exploration
Red Flags
Warning signs you're not doing proper debugging:
- Implementing a fix without reproducing the bug first
- Changing code to "see if it works"
- Not writing a test to verify the bug exists
- Fixing symptoms instead of root cause
- Not checking if the fix breaks other tests
- Not understanding why the fix works
Common Rationalizations
Don't rationalize—investigate:
| Rationalization | Reality |
|---|---|
| "It's probably a race condition" | You don't know, so find out |
| "It's always worked before" | Something changed, find what |
| "The tests are just flaky" | Tests caught a real bug |
| "It's an edge case" | Your code has edge cases in prod |
| "It's fast enough for now" | Technical debt accumulating |
| "I know what the problem is" | You have a hypothesis, not a certainty |
Quick Reference
Debugging workflow:
- Reproduce → Can you make it happen consistently?
- Isolate → What's the minimal case?
- Identify → What's different? What's the same?
- Hypothesize → What do you think is wrong?
- Test → Verify your hypothesis
- Fix → Implement the solution
- Verify → Does the fix work? Do other tests pass?
Remember: Domain boundaries define test boundaries—test at boundaries, mock at boundaries.
More from martinffx/claude-code-atelier
python:architecture
Python application architecture with functional core, effectful shell, DDD, and data modeling. Use when designing application layers, separating pure business logic from IO, defining domain models, implementing validation, or structuring bounded contexts.
14python:monorepo
Python monorepo architecture with uv workspaces, mise, and apps/packages pattern. Use when setting up project structure, configuring workspaces, managing dependencies across packages, or designing multi-app Python repositories.
13python:build-tools
Python project tooling with uv, mise, ruff, basedpyright, and pytest. Use when setting up pyproject.toml, running builds, typechecking, configuring tests, linting, formatting, or managing Python environments.
12python:modern-python
Modern Python language features and typing patterns. Use when writing type hints, using generics, implementing pattern matching, working with async/await, or leveraging Python 3.10+ features.
12python:testing
Stub-Driven TDD and layer boundary testing with pytest. Use when writing tests, deciding what to test, testing at component boundaries, or implementing test-driven development.
12python:sqlalchemy
SQLAlchemy ORM patterns for Python database access. Use when defining models, writing queries, implementing upserts, working with JSON columns, or managing database sessions.
12