From thinking-skills
Resolves architecture and API design contradictions by separating conflicting states in time, space, or condition. Use when requirements seem mutually exclusive.
How this skill is triggered — by the user, by Claude, or both
Slash command
/thinking-skills:thinking-trizThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
TRIZ is a systematic method for resolving **architecture and API design contradictions** — situations where two requirements seem mutually exclusive. When you're about to accept a trade-off because "you can't have both," TRIZ says: name the contradiction precisely, then try to **separate** the conflicting states in time, space, or condition so you get both — no compromise.
TRIZ is a systematic method for resolving architecture and API design contradictions — situations where two requirements seem mutually exclusive. When you're about to accept a trade-off because "you can't have both," TRIZ says: name the contradiction precisely, then try to separate the conflicting states in time, space, or condition so you get both — no compromise.
The separation moves are the primary procedure. The 40 Inventive Principles are a reference library, not a required checklist. The skill is scoped to technical design contradictions (architecture, API, system parameters); it is NOT for non-technical problems, ordinary prioritization, or contradictions that dissolve under measurement.
Core Principle: Great design doesn't compromise — it separates. Find the dimension where the conflicting states can coexist.
Decision flow:
Two requirements seem mutually exclusive?
→ Yes → NAME THE CONTRADICTION, TRY SEPARATION
→ No → About to accept a trade-off curve compromise?
→ Yes → APPLY TRIZ FIRST
→ No → This is a routine decision — just pick based on constraints
When stuck between two architecture or API requirements that seem mutually exclusive:
If one option is simply better given your constraints, just pick it. If you can cheaply test which side actually matters, test instead of designing a separation. For standard patterns (cache-aside, CQRS, feature flags), apply the pattern directly.
Use this template:
"We need [PARAMETER A] to be [STATE 1] for [BENEFIT 1]
BUT also [STATE 2] for [BENEFIT 2]"
Example:
"We need the API to be STABLE for client compatibility
BUT also EVOLVING to support new features"
If you can't write the contradiction in this form, it's not a TRIZ problem — use another skill.
Before solving, describe the outcome where the problem solves itself:
"The API supports both old and new clients simultaneously,
without version negotiation overhead,
while maintaining a single codebase."
IFR questions: What if the problem solved itself? What if the harmful element became useful? What's the result with zero cost?
For each separation dimension, ask: "Can the conflicting states exist at different [times/places/conditions/scales]?"
"Can we be in state 1 at one time and state 2 at another?"
Contradiction: "Cache must be FRESH AND cached"
Separation in Time: TTL-based invalidation — cached now, refreshed later
"Can we be in state 1 in one place and state 2 in another?"
Contradiction: "Data must be LOCAL (fast) AND DISTRIBUTED (resilient)"
Separation in Space: Multi-region with local reads, distributed writes
"Can we be in state 1 under some conditions and state 2 under others?"
Contradiction: "Auth must be STRICT AND frictionless"
Separation by Condition: Strict for sensitive operations, frictionless for low-risk — risk-based authentication
"Can state 1 and state 2 exist at different levels of the system?"
Contradiction: "API must be STABLE AND evolving"
Separation in Scale: Stable interface (API contract), evolving implementation — versioned APIs
When no separation dimension resolves the contradiction, scan the software-adapted inventive principles for inspiration:
| Principle | Software Pattern |
|---|---|
| Segmentation (#1) | Microservices, sharding, chunked processing |
| Preliminary Action (#10) | Pre-computation, caching, warm-up, materialized views |
| The Other Way Round (#13) | Push vs pull, invert control, event-driven instead of polling |
| Intermediary (#24) | Proxy, message queue, API gateway, adapter |
| Copying (#26) | Caching, replication, CDN, read replicas |
| Dynamization (#15) | Feature flags, runtime configuration, adaptive thresholds |
| Another Dimension (#17) | Add metadata layer, versioning, event sourcing |
The full 40 principles are reference material; scan only the most applicable ones.
Before adding new components, ask: what already exists that can be used?
Before: "We need a new service to track user sessions"
Resource check:
- What data already exists? → Auth tokens carry user identity
- What's already running? → Load balancer sees all requests
- What's unused? → Request headers have room for session ID
Solution: Encode session in existing auth flow — no new service
Combine the separation move with resource reuse into a concrete design decision. Document the contradiction, the separation dimension used, and the resolution.
A completed TRIZ analysis produces:
| Anti-Pattern | Symptom | Correction |
|---|---|---|
| Manufacturing contradictions | Applying TRIZ to "which database should we use" when one is clearly better | Use it only for genuine "I need both opposite states" tension |
| Compromising instead of separating | Accepting a midpoint on the trade-off curve without trying separation | Try all four separation dimensions before compromising |
| Skipping separation, jumping to principles | Immediately scanning the 40 principles without trying time/space/condition/scale | Separation is the primary procedure; principles are the fallback |
| Applying to non-technical problems | Using TRIZ for org dynamics or interpersonal conflicts | Separation targets system parameters, not people |
| Over-applying to testable contradictions | Running full TRIZ when a quick measurement resolves which side matters | If you can test it cheaply, test it |
| Ignoring existing resources | Adding new components when existing ones could be reused | Resource analysis before new component proposals |
npx claudepluginhub tjboudreaux/cc-thinking-skills --plugin thinking-skillsSystematically explores solution spaces via morphological analysis (parameter-option matrices) and resolves technical contradictions using TRIZ inventive principles for novel solutions.