skills/systems-thinking/SKILL.md
Analyze complex systems through stocks, flows, and feedback loops to find high-leverage interventions. For organizational, environmental, social, and technical systems exhibiting circular causality. NOT for linear problems or simple cause-effect chains.
npx skillsauth add curiositech/windags-skills systems-thinkingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Diagnose why systems cause their own behavior and identify structural interventions that produce sustainable change.
| If you see this behavior... | Then check for... | Try this intervention tree | |----------------------------|------------------|---------------------------| | Oscillation (boom-bust cycles) | Excessive delays in corrective feedback | Reduce delays OR dampen response rates | | Exponential growth hitting limits | Balancing loop activating | Expand limits OR reduce growth rate early | | Multiple failed fixes | Policy resistance trap | Find shared overarching goal | | Performance declining over time | Drift to low performance | Hold absolute standards vs. relative | | Resource degradation | Tragedy of commons | Create direct user feedback |
Problem identified → Map stock-flow structure first
│
├─ High leverage available?
│ ├─ Can change paradigm/worldview? → Transform mental models
│ ├─ Can shift system goals? → Redefine success metrics
│ ├─ Can add/strengthen feedback loops? → Create information flow
│ └─ Can change rules? → Restructure incentives
│
├─ Medium leverage only?
│ ├─ Can improve information flow? → Connect decision-makers to consequences
│ └─ Can adjust parameters? → Change numbers/rates (lowest leverage)
│
└─ No structural leverage?
└─ Wrong problem OR linear system → Use different approach
Trap Type → First Check → If Yes → If No
Policy Resistance → Others resisting your solution? → Find shared goal → Push harder (escalates)
Tragedy of Commons → Shared resource degrading? → Create ownership/feedback → Regulate only
Addiction → Intervention creating dependency? → Strengthen original capacity first → Continue intervention
Escalation → Competition intensifying? → Unilateral restraint OR negotiation → Try to win (unsustainable)
Detection: You're analyzing who did what when, looking for someone to blame
Symptom: "If only we fire X/hire Y/change Z, the problem will be solved"
Fix: Draw behavior over time graphs; map the structure generating events
Detection: 90% of discussion focuses on adjusting numbers (budgets, rates, standards)
Symptom: "We need to increase/decrease the target by X%"
Fix: Ask "What structure is producing these numbers?" Map information flows and feedback loops
Detection: Expecting proportional responses; surprised by sudden behavioral shifts
Symptom: "We did X, so Y should happen proportionally"
Fix: Map circular causality; identify reinforcing loops that create exponential effects
Detection: Demanding predictable outcomes; treating uncertainty as failure
Symptom: "We need better forecasting/control systems"
Fix: Design adaptive feedback policies instead of rigid controls
Detection: Quick fixes that need repeating; original problem capacity atrophying
Symptom: "The intervention is working, we just need to do more of it"
Fix: Strengthen the system's original capacity; plan intervention withdrawal
Situation: Software team chronically missing deadlines despite working 60+ hour weeks
Novice approach: Hire more developers, mandate better time estimation Systems analysis:
Intervention chosen: Slow intake rate (say no to new requests) + improve quality to reduce rework Outcome: Backlog initially grew (counterintuitive) but outflow rate increased as bugs decreased Unintended consequence: Sales team frustrated by delayed features, required stakeholder alignment
Situation: Fishing community experiencing declining catch despite harder work
Stock-flow mapping:
Decision point navigation:
Intervention chosen: Assign fishing territories (privatization) + seasonal quotas based on stock levels
Outcome: Short-term income drop, long-term sustainability
Unintended consequence: Some fishers excluded from system, required compensation mechanism
Situation: Database system slowing down despite hardware upgrades
Systems lens applied:
Leverage points tested:
Result: Information flow change had highest leverage - developers changed behavior when they saw real impact
Don't use systems thinking for:
Delegate to other skills:
Systems thinking boundaries:
tools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.