Map causal loops, build stock-flow models, and create behavior-over-time graphs
Create causal loop diagrams, stock-flow models, and behavior-over-time graphs to map system dynamics and reveal underlying structures driving behavior patterns.
/plugin marketplace add tachyon-beep/skillpacks/plugin install yzmir-systems-thinking@foundryside-marketplace[system_description_or_problem]You are mapping system dynamics through causal loop diagrams, stock-flow models, and behavior-over-time graphs. Your goal is to make invisible structures visible and quantify trajectories.
Behavior patterns reveal underlying structure.
CLDs reveal STRUCTURE (feedback loops). Stock-flow models reveal MAGNITUDE (numbers). BOT graphs reveal TRAJECTORIES (what happens over time).
When to use:
Construction process:
Step 1: Identify Variables
Step 2: Map Causal Links
Step 3: Assign Polarities
DOUBLE TEST (prevents polarity errors):
Step 4: Find Loops
Step 5: Mark Delays
||delay time|| notationStep 6: Validate
When to use:
Key concepts:
Stocks: Accumulations (customers, debt, morale)
Flows: Rates of change (hiring rate, churn rate)
Equilibrium: When inflow = outflow
Time constant: How fast stock responds
When to use:
Construction process:
Step 1: Select Variables
Step 2: Choose Time Scale
Step 3: Establish Scale
Step 4: Plot Trajectories
Step 5: Add Annotations
# System Dynamics Map: [System Name]
## Causal Loop Diagram
### Variables
| Variable | Description | Measurement |
|----------|-------------|-------------|
| [Name] | [Description] | [Units] |
### Causal Links
Variable A --+/o--> Variable B
### Feedback Loops
- **R1 [Name]:** [Description of reinforcing loop]
- Path: A → B → C → A
- Behavior: Amplification/growth/decline
- **B1 [Name]:** [Description of balancing loop]
- Path: X → Y → Z → X
- Behavior: Stabilization toward [target]
## Stock-Flow Model
### Stocks
| Stock | Current Value | Units | Trend |
|-------|---------------|-------|-------|
| [Name] | [Value] | [Units] | ↑/↓/→ |
### Flows
| Flow | Type | Rate | Source/Sink |
|------|------|------|-------------|
| [Name] | In/Out | [Value/time] | [Stock] |
### Equilibrium Analysis
- Current state: [Value]
- Equilibrium: [Value] when [condition]
- Time constant: [Duration]
- Time to 95% equilibrium: [Duration]
## Behavior-Over-Time
### Current Trajectory
[Variable] ^ 100 | /-----> (projected) 80 | /--- 60 | /--- 40 |--- +---|---|---|---|---> Time T0 T1 T2 T3
### Scenario Comparison
| Scenario | T+6mo | T+12mo | T+24mo |
|----------|-------|--------|--------|
| Baseline | [Val] | [Val] | [Val] |
| Intervention A | [Val] | [Val] | [Val] |
| Intervention B | [Val] | [Val] | [Val] |
## Key Insights
1. **Dominant loop:** [R/B #] drives behavior because [reason]
2. **Critical delay:** [Delay] causes [behavior pattern]
3. **Leverage point:** [Variable/Link] offers highest impact because [reason]
## Validation Checklist
- [ ] Variables are states (nouns), not actions
- [ ] All variables are measurable
- [ ] Links have clear mechanisms
- [ ] Polarities tested both directions
- [ ] Loops correctly typed (count opposite links)
- [ ] Delays marked where > 20% of cycle time
| Mistake | Fix |
|---|---|
| Actions as variables | Convert to levels/states |
| Wrong polarity | Double-test (A↑ and A↓) |
| Missing delays | Mark delays > 20% of cycle |
| Too complex | Split into subsystems |
| No validation | Run checklist before presenting |
import glob
# For simulation implementation
sim_pack = glob.glob("plugins/yzmir-simulation-foundations/plugin.json")
if sim_pack:
print("Available: yzmir-simulation-foundations for numerical simulation")
This command covers:
Not covered: