thinking-triz — Claude Code skill: resolve design contradictions
A skill for when two design requirements pull against each other. It names the conflict and looks for a resolution that keeps both benefits.
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-triz -a claude-codeWhat thinking-triz does
The skill fires when architecture, API or system parameters point in opposite directions: stable against evolving, fresh against cached, strict against frictionless. Instead of accepting that you cannot have both, it makes you write the contradiction in a fixed form — which parameter needs one state for one benefit and the other state for the second benefit.
From there the procedure runs in steps. You state the ideal final result, then test four kinds of separation: time, space, condition and scale. If separation alone fails, the skill moves to inventive principles — segmentation, preliminary action, inversion, intermediary, copying, dynamization, another dimension. Before adding new services or stores, it tells you to check what data, traffic, headers or schedulers the system already has that could carry the separation. The output is a concrete design decision, where each state lives, and an honest residual trade-off if one remains.
There is a guard against overuse. If one option is simply better under the stated constraints, if a cheap measurement settles which side matters, or if a standard pattern like cache-aside, CQRS or feature flags already resolves the conflict, TRIZ does not run. People and org conflicts are out of scope too — separation targets system parameters.
What it helps with
- separate conflicting architecture requirements without a midpoint compromise
- write a technical contradiction in explicit form
- test time, space, condition and scale separation for a conflict
- pick an inventive principle that maps to a parameter conflict
- tell a real contradiction apart from ordinary prioritisation
Example prompts for the agent
- the system has to stay stable for integrations but move fast for the product — work through this
- fresh data versus cache, run it through TRIZ
- this looks like a trade-off. Check step by step whether there is a separation
How to install thinking-triz
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-triz -a claude-code2Manually: put the files in place
~/.claude/skills/thinking-triz/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/thinking-triz/
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-triz -a codex2Manually: put the files in place
.agents/skills/thinking-triz/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-triz -a cursor2Manually: put the files in place
.cursor/skills/thinking-triz/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install tjboudreaux/cc-thinking-skills thinking-triz2Manually: put the files in place
.github/skills/thinking-triz/SKILL.md1Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-triz -a gemini-cli2Platform CLI
gemini skills install https://github.com/tjboudreaux/cc-thinking-skills --path skills/thinking-trizManually: put the files in place
.devin/skills/thinking-triz/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add tjboudreaux/cc-thinking-skills --skill thinking-triz -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about thinking-triz
How do I install thinking-triz in Claude?
Run npx skills add tjboudreaux/cc-thinking-skills --skill thinking-triz -a claude-code. The skill lands at ~/.claude/skills/thinking-triz/SKILL.md.
What does thinking-triz do?
It walks a technical contradiction through steps: name the parameter conflict, state the ideal final result, try separation by time, space, condition and scale, then apply an inventive principle if that is not enough. You get a concrete resolution plus any residual trade-off stated plainly.
When should I skip TRIZ?
When one option is clearly better under the stated constraints, when a measurement shows which side matters, or when a standard pattern such as cache-aside, CQRS or feature flags already settles it. Conflicts between people are out of scope.
Source text
SKILL.md · MIT
--- name: thinking-triz description: When two design requirements seem mutually exclusive, name the contradiction, separate conflicting states, then invent a concrete no-compromise resolution. disable-model-invocation: true --- # TRIZ Resolve technical design contradictions without midpoint compromise. Name the conflict, separate the opposing states, and transform the system so both benefits hold. ## When to Use - Architecture, API, or system parameters pull in opposite directions (stable vs evolving, fresh vs cached, strict vs frictionless). - You are about to accept a trade-off because "you can't have both." - Every candidate solution shares the same structural weakness—the conflict is in the requirements, not the options list. ## When NOT to Use - One option is simply better under stated constraints → pick it; do not manufacture a contradiction. - A cheap measurement shows which side actually matters → measure instead of inventing a separation. - A standard pattern already resolves it (cache-aside, CQRS, feature flags, versioning) → apply the pattern directly. - Non-technical people/org conflicts → out of scope; separation targets system parameters. - Ordinary prioritization or resource allocation without opposing states of the same parameter. ## Procedure 1. **Name the contradiction in template form.** Write: "We need [PARAMETER] to be [STATE_1] for [BENEFIT_1] BUT [STATE_2] for [BENEFIT_2]." If this form fails, stop—use another method. 2. **State the ideal final result (IFR).** Describe both benefits held with minimal new machinery and no permanent midpoint sacrifice. 3. **Try separation before invention.** Test, in order: **time** (different moments), **space** (different components/layers), **condition** (context, load, risk), **scale** (interface vs implementation, aggregate vs element). Keep the first separation that delivers both benefits without hidden compromise. 4. **If separation fails, apply an inventive transform.** Prefer resource-light moves: segmentation, preliminary action, inversion (push/pull), intermediary, copying/replication, dynamization (flags/config), another dimension (metadata/versioning/events). Scan only principles that map to the named parameter conflict. 5. **Reuse existing resources first.** Before adding services or stores, check data, traffic, headers, schedulers, and side effects already present that can carry the separation. 6. **Lock a concrete resolution and stop.** Specify the design change, where each state lives, and how both benefits are preserved. Stop when a no-compromise design is stated, or when honest analysis shows only a constrained trade-off remains—then document the residual trade-off explicitly rather than forcing TRIZ theater. ## Output Emit a TRIZ resolution: - `contradiction`: parameter / state_1+benefit_1 / state_2+benefit_2 - `ideal_final_result`: both benefits without permanent compromise - `separation_tried`: time | space | condition | scale → result each - `inventive_move`: principle or pattern used if separation alone was insufficient (or none) - `resources_reused`: existing capabilities leveraged - `resolution`: concrete design decision and where each state holds - `residual_tradeoff`: none, or the honest remaining compromise ## Verification - **Template gate:** if the contradiction cannot be written in the required form, do not apply TRIZ. - **No-compromise check:** a pure midpoint on the trade-off curve without a separation or inventive move is a failed application. - **Separation-first:** principles without attempted time/space/condition/scale separation are incomplete. - **Over-application guard:** if measurement or a standard pattern settles the design, skip TRIZ. - **Stop:** one named contradiction → separation/inventive pass → concrete resolution; do not cycle principles as decoration.
© tjboudreaux · MIT · tjboudreaux/cc-thinking-skills