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.
Installs just this skill. Get the whole plugin for auto-invocation.
⚡ How it fires
How this skill gets triggered: by you, by Claude, or both.
Fires itselfClaude auto-loads it when your prompt matches the work.
You can call itInvoke it directly when you want it.
Slash command/thinking-theory-of-constraints
👁️ Context preview
The summary Claude sees to decide when to auto-load this skill.
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.
📊 Stats
Stars863
Forks126
LanguageJavaScript
LicenseMIT
📦 Ships with thinking-skills
</> SKILL.md
thinking-theory-of-constraints.SKILL.md
---name: thinking-theory-of-constraints
description: 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.
---# Theory of Constraints
## Overview
The Theory of Constraints (TOC), from Eliyahu Goldratt's "The Goal," says a throughput-limited system has exactly one constraint setting its rate. Optimizing anything else is wasted effort—often counterproductive. Find the bottleneck, exploit it, subordinate everything else to it, and only then elevate it.
**Core Principle:** A chain is only as strong as its weakest link. Strengthening any other link does nothing.
## When to Use
- Latency optimization where one stage dominates the time budget
- Throughput optimization where one stage caps the rate
- A pipeline where work piles up before one specific stage
```
Trying to improve latency/throughput?
→ Have you identified the constraint? → no → FIND THE CONSTRAINT FIRST
→ Are you optimizing a non-constraint? → yes → STOP, FOCUS ON CONSTRAINT
→ Is the constraint working at 100%? → no → EXPLOIT BEFORE ELEVATING
```
## When NOT to Use
- **No single stage dominates** (latency/load is spread roughly evenly, or many stages are near 100%) → there is no one constraint to exploit. Use `thinking-systems` to model the interactions instead.
Local optimization of non-constraints often hurts global throughput. A 100% utilized developer feeding a 100% utilized reviewer creates a queue that slows everything.
### Step 4: Elevate the Constraint
If exploitation isn't enough, invest in increasing constraint capacity:
```markdown
## Elevating the Constraint
Current constraint capacity: 8/week (after exploitation)
Required capacity: 12/week
Elevation options:
| Option | Cost | Capacity Gain |
|--------|------|---------------|
| Hire dedicated reviewer | $150K/year | +4/week |
| Train more reviewers | $10K training | +2/week |
| Adopt review tooling | $5K/year | +1/week |
| Pair reviewing | Process change | +3/week |
Recommendation: Training + tooling first ($15K for +3/week)
Then hire if still insufficient
```
**Elevation timing:**
Only elevate after exploitation is maxed out. Elevating is expensive; exploitation is cheap.
How to maximize constraint output without investment:
| Exploitation | Effort | Expected Gain |
|--------------|--------|---------------|
| | | |
## Step 3: Subordinate
How should non-constraints support the constraint?
| Stage | Current Behavior | Should Change To |
|-------|------------------|------------------|
| | | |
## Step 4: Elevate (if needed)
If exploitation isn't sufficient:
| Elevation Option | Cost | Capacity Gain |
|------------------|------|---------------|
| | | |
## Step 5: Next Constraint
After elevation, where will the constraint move?
[Prediction]
```
## Verification Checklist
- [ ] Identified the single constraint (not multiple "bottlenecks")
- [ ] Have data supporting the constraint identification
- [ ] Maximized exploitation before considering elevation
- [ ] Non-constraints are subordinated (not locally optimized)
- [ ] Not investing in non-constraint improvements
- [ ] Monitoring for constraint movement
## Key Questions
- "What's the ONE thing limiting throughput?"
- "Is the constraint ever idle? Why?"
- "Are we improving a non-constraint while ignoring the constraint?"
- "Are non-constraint improvements building inventory?"
- "What should the rest of the system do to serve the constraint?"
- "If we improve this, where will the constraint move?"
## Goldratt's Wisdom
"Every action that brings the company closer to its goal is productive. Every action that does not bring a company closer to its goal is not productive."
"An hour lost at a bottleneck is an hour lost forever. An hour saved at a non-bottleneck is a mirage."
"The sum of local optimums is not equal to the global optimum."
Optimizing everywhere is the same as optimizing nowhere. Find the constraint. Make it work. That's all that matters until the constraint moves.