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.
Facilitates TRIZ reverse brainstorming sessions to identify counterproductive behaviors guaranteeing project failure, then stop them. Supports brief, tetralemma, polarity modes and user-join roles.