From thinking-skills
Sets a 'good enough' threshold to stop indefinite searches or investigations, saving budget on low-stakes decisions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/thinking-skills:thinking-bounded-rationalityThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Herbert Simon's Bounded Rationality recognizes that any agent operating under finite resources cannot exhaustively optimize: the search space is too large, information is incomplete, and acting has a cost. Rather than pursuing the optimal solution, Simon proposed "satisficing"—a portmanteau of satisfy + suffice—choosing the first solution good enough to meet an explicit threshold, then stopping.
Herbert Simon's Bounded Rationality recognizes that any agent operating under finite resources cannot exhaustively optimize: the search space is too large, information is incomplete, and acting has a cost. Rather than pursuing the optimal solution, Simon proposed "satisficing"—a portmanteau of satisfy + suffice—choosing the first solution good enough to meet an explicit threshold, then stopping.
For an autonomous coding agent the binding constraint is a budget: tool calls, search/read operations, context window, and wall-clock time per turn. A grep that could keep matching, a file tree you could keep traversing, a doc set you could keep reading — each has steeply diminishing returns. Satisficing converts "search until certain" (which never terminates) into "search until the threshold is met, then act."
Core Principle: Define "good enough" before you search, and stop at the first option that clears the bar. Optimizing is correct only when the gap between good and best is worth more than the budget it costs to close it.
Decision flow:
Search/investigation that could run indefinitely? → yes → Is closing the gap to "best" worth the budget? → no → SATISFICE (threshold + stop)
↘ yes → Optimize (and cap the budget)
↘ no → just answer
When a search or investigation could run indefinitely and you need to ship:
If the threshold can't be articulated or the cost of a wrong choice is catastrophic, don't satisfice — run the full procedure. For a single cheaply-knowable fact, just look it up.
What you can know is limited
Example: Choosing a technology stack
Reality: You can't test every option in production
You can't predict 5-year industry shifts
You can't know your future team composition
Satisfice: Pick a well-supported option that meets current needs
What you can compute and attend to is limited
Example: Choosing among architecture options
Reality: Reading every doc and modeling every interaction effect
burns the budget before you produce an answer
Satisfice: Fix the 3-5 criteria that actually decide it, evaluate
against those, and stop at the first option that clears them
Deciding and re-deciding both cost budget and time
Example: Picking a library for a reversible internal task
Reality: You could compare ten options across a dozen dimensions
Reversibility means a wrong-but-adequate pick is cheap to swap
Satisfice: Pick the first well-supported option that meets the requirement, move on
| Signal | Why Satisfice |
|---|---|
| Reversible decision | Can adjust later with more information |
| Time pressure | Cost of delay exceeds value of more analysis |
| Diminishing returns | 80% solution found, 100% would take 10x effort |
| High uncertainty | More analysis won't reduce uncertainty meaningfully |
| Many acceptable options | Several solutions meet requirements adequately |
| Low stakes | Consequences of suboptimal choice are minor |
| Signal | Why Optimize |
|---|---|
| Irreversible decision | Mistakes are permanent or very costly to undo |
| High stakes | Wrong choice has severe consequences |
| Clear criteria | You know exactly what "best" means |
| Bounded search space | All options can actually be evaluated |
| Available time | Deadline allows for thorough analysis |
| Clear value of optimal | Difference between good and best is significant |
Set the minimum acceptable threshold for each criterion:
Example: Hiring a senior engineer
Optimizing: Find the absolute best candidate
Satisficing: Find a candidate who:
- Has 5+ years relevant experience ✓
- Can pass technical interview ✓
- Salary expectations fit budget ✓
- Available to start within 4 weeks ✓
- Culture fit (team confirms) ✓
First candidate who meets all criteria → Hire
Evaluate options one at a time against aspiration level:
Option A: Meets 4/5 criteria → Continue search
Option B: Meets 3/5 criteria → Continue search
Option C: Meets 5/5 criteria → STOP, choose this one
Key insight: You don't compare options against each other, you compare each option against your threshold.
If search is too long or too short, recalibrate:
Too many options qualify → Raise aspiration level
Nothing qualifies after reasonable search → Lower aspiration level
Once threshold is met:
Scenario: Choose a message queue for new service
Satisficing approach:
1. Define requirements (aspiration level):
- At-least-once delivery ✓
- Handles 10k msg/sec ✓
- Team familiarity or fast learning curve ✓
- Managed option available ✓
- Within cost budget ✓
2. Evaluate sequentially:
- RabbitMQ: Meets all → STOP, use RabbitMQ
3. Don't continue researching Kafka, SQS, etc.
unless RabbitMQ fails threshold
Scenario: Reviewing a PR under time pressure
Satisficing approach:
1. Define "good enough" criteria:
- No security vulnerabilities ✓
- Tests pass ✓
- No obvious performance issues ✓
- Code is readable ✓
- Follows project conventions ✓
2. Stop when criteria met
Don't perfect every line if shipping matters
Scenario: Debugging production issue
Satisficing approach:
1. Define stopping criteria:
- Root cause identified ✓
- Fix verified in staging ✓
- Rollback plan exists ✓
2. Stop investigating once you can fix
Don't exhaustively trace every code path
if you have a working solution
Scenario: MVP feature set decisions
Satisficing approach:
1. Define "enough to learn":
- Core user job addressed ✓
- Measurable success metric exists ✓
- Usable enough for feedback ✓
- Can ship within sprint ✓
2. First scope that meets criteria → Ship it
Don't polish what you might throw away
Symptoms:
Fix: Ask "What's the minimum that would be acceptable?"
Symptoms:
Fix: Ask "What past decisions do I regret? What threshold would have prevented them?"
Reversibility Check:
- Easily reversible → Lower aspiration OK
- Hard to reverse → Raise aspiration
Consequence Check:
- Minor consequences → Lower aspiration OK
- Major consequences → Raise aspiration
Time Check:
- Tight deadline → Accept lower aspiration
- Ample time → Can afford higher aspiration
Reality: Satisficing is rational under constraints, not lazy.
Optimizing with infinite time = mathematically correct
Optimizing with real constraints = often irrational
Satisficing = adapted to actual world
Reality: Finding a better option later doesn't mean the decision was wrong.
You chose Option B (met threshold)
Later discovered Option D was "better"
This is expected—you stopped searching at B
Regret is only valid if B didn't meet your threshold
Reality: Moving goalposts prevent closure.
Original: "Need 100ms response time"
After meeting it: "Actually, 50ms would be better"
After that: "Hmm, 25ms would be ideal..."
Fix: Lock aspiration level before search begins
Reality: Some decisions warrant optimization.
Wrong to satisfice:
- Security critical systems
- Legal compliance
- Safety-critical code
- Irreversible architectural choices
Right to satisfice:
- Internal tooling
- Reversible experiments
- Style preferences
- Low-stakes choices
Use First Principles to determine:
- What constraints are real vs assumed?
- What is the fundamental requirement?
Then satisfice against those fundamentals
Use Inversion to set aspiration level:
- "What would make this solution unacceptable?"
- Avoid those failure modes
- Any option avoiding them satisfices
Outside your circle:
- You can't evaluate "optimal" anyway
- Satisficing is your only realistic option
- Set thresholds based on expert input
Inside your circle:
- You can choose when to optimize vs satisfice
- Trust your calibrated aspiration levels
Run pre-mortem to validate aspiration level:
- "If this satisficed solution fails, why?"
- Adjust thresholds to prevent likely failures
- Don't over-engineer against unlikely failures
"A wealth of information creates a poverty of attention."
In a world of infinite information and finite attention, satisficing isn't settling—it's adapting to reality. The goal isn't to make perfect decisions, but to make good decisions efficiently, preserving cognitive resources for the problems that truly require optimization.
The satisficer who ships beats the optimizer who's still researching.
npx claudepluginhub tjboudreaux/cc-thinking-skills --plugin thinking-skillsDefines 'enough' as an explicit target before starting, grounded in satisficing theory and behavioral economics, to prevent over-optimization and improve decision outcomes.
Guides high-stakes decisions like investments, career moves, or purchases through exhaustive discovery, sequential elimination, structured analysis, and research-backed recommendations. Activates on 'help me decide' or 'should I choose'.
Explores solution spaces using ant colony optimization — deploying scout hypotheses, reinforcing promising approaches, and detecting when to abandon a strategy. Use when multiple approaches exist with no clear winner or when debugging with no obvious root cause.