skills/thinking-map-territory/SKILL.md
Recognize limits of mental models and diagrams. Use when models diverge from reality, debugging expectation mismatches, or questioning abstraction accuracy.
npx skillsauth add tjboudreaux/cc-thinking-skills thinking-map-territoryInstall 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.
Map-Territory thinking, originated by Alfred Korzybski and popularized in general semantics, reminds us that "the map is not the territory." Every representation—mental model, diagram, metric, specification, or abstraction—is a simplified view that necessarily loses information. Confusing the map with the territory leads to flawed decisions, debugging dead-ends, and misaligned expectations.
Core Principle: All models are wrong; some are useful. The question is: how wrong, and useful for what?
Decision flow:
Expectation ≠ Reality? → yes → Are you trusting a model/abstraction? → yes → CHECK MAP-TERRITORY FIT
↘ no → Model exists but isn't explicit
↘ no → Model may be accurate (verify anyway)
Every representation omits details:
| Territory (Reality) | Map (Representation) | What's Lost | |---------------------|----------------------|-------------| | Running code | Architecture diagram | Timing, error paths, state | | User behavior | Analytics dashboard | Context, emotion, edge cases | | System performance | SLO metrics | Tail latencies, correlations | | Team dynamics | Org chart | Informal influence, trust | | Customer need | User story | Nuance, unstated assumptions |
The same reality can have many valid representations:
Territory: E-commerce checkout flow
Maps:
├── Sequence diagram (shows interactions)
├── State machine (shows transitions)
├── User journey (shows experience)
├── Data flow (shows information movement)
├── Code (shows implementation)
└── Metrics (shows performance)
Each map reveals AND conceals different aspects
When we mistake the map for the territory:
Confusion: "The tests pass, so the code works"
Reality: Tests are a map of expected behavior, not the territory of all behavior
Confusion: "The architecture diagram shows this is simple"
Reality: The diagram omits error handling, edge cases, and race conditions
Confusion: "Our metrics show users are happy"
Reality: Metrics measure what we chose to measure, not satisfaction itself
Even good abstractions eventually break:
Abstraction: "The network is reliable"
Leak: Timeout, partition, packet loss
Abstraction: "Memory is infinite"
Leak: OOM, cache eviction, GC pause
Abstraction: "The database is ACID"
Leak: Connection pool exhaustion, replication lag
List all representations you're relying on:
Decision: Scaling the payment service
Maps in use:
- Architecture diagram (last updated 6 months ago)
- Performance benchmarks (from staging, not prod)
- Capacity planning spreadsheet (based on assumptions)
- Team's mental model (from building v1)
For each map, determine:
| Map | Last Updated | Created From | Drift Risk | |-----|--------------|--------------|------------| | Arch diagram | 6 months | Original design | High | | Benchmarks | 2 months | Staging env | Medium | | Capacity sheet | 1 month | Extrapolation | High | | Mental model | 2 years | Building v1 | Very High |
For critical maps, verify against territory:
Test: Does the architecture diagram match the code?
Method: Trace a request through actual code, compare to diagram
Test: Do benchmarks reflect production?
Method: Run production traffic sample through benchmark setup
Test: Do metrics capture what matters?
Method: Interview users, compare their experience to metric story
What aspects of the territory have no map?
Existing maps: Sequence diagrams, API specs, test coverage
Missing maps:
- Failure modes and recovery paths
- Implicit dependencies
- Performance under contention
- Operational runbooks
Adjust trust in maps based on verification:
Map: Test suite
Verification: Tests pass, but manual testing found 3 bugs
Calibration: Tests cover happy path, not edge cases
Action: Add edge case tests, reduce confidence in "green = good"
Map: README says "run npm install"
Territory: Requires Node 18+, specific npm version, env vars
Mismatch: Documentation abstracts away prerequisites
Verification: Try setup from scratch on clean machine
Fix: Document actual requirements, automate verification
Map: Spec says "API returns user object"
Territory: Sometimes returns 404, sometimes 500, sometimes times out
Mismatch: Spec describes happy path only
Verification: Test error cases, edge cases, failure modes
Fix: Spec error responses, add contract tests
Map: "DAU increased 20%"
Territory: Users signing up but churning within a week
Mismatch: DAU doesn't capture retention quality
Verification: Add cohort retention, engagement depth metrics
Fix: Choose metrics closer to actual business outcomes
Map: "This will take 2 weeks"
Territory: Took 6 weeks due to unforeseen complexity
Mismatch: Estimate was based on mental model, not investigation
Verification: Time-box investigation before estimating
Fix: Add uncertainty buffers, track estimate accuracy
Map: "The cache makes reads fast"
Territory: Cache has 30% hit rate, most reads hit DB
Mismatch: Mental model assumed better cache performance
Verification: Measure actual cache hit rates
Fix: Update mental model, improve caching strategy
Map-Territory thinking complements systems thinking:
Systems Thinking asks: What are the feedback loops and emergent behaviors?
Map-Territory asks: Is my systems diagram actually capturing those dynamics?
Combined approach:
1. Draw the system map (feedback loops, stocks, flows)
2. Verify: Does measured behavior match predicted behavior?
3. Iterate: Where does the map fail? What's the territory really doing?
4. Update: Refine the map or accept its limitations
When the map and territory diverge, update the map or change your navigation—but never insist the territory is wrong because your map says so.
tools
Improve by removal rather than addition. Focus on what to stop doing, eliminate the negative, and subtract complexity. Use for system simplification, process improvement, and feature prioritization.
data-ai
Apply TRIZ (Theory of Inventive Problem Solving) methodology to resolve technical contradictions and find innovative solutions. Use for engineering design, breaking through impossible constraints, and systematic innovation.
development
Test ideas through hypothetical scenarios when empirical testing is impractical. Use for architecture evaluation, edge case analysis, ethics considerations, and strategy development.
data-ai
Identify and manage the bottleneck; improvements elsewhere don't matter until the constraint is addressed. Use for performance optimization, process improvement, and resource allocation.