Skip to Content
Skillsnav-triz

nav-triz

Divergent solving for a declared contradiction — three competing candidates from different TRIZ separation modes, each with a named downside, then one recommendation. For the minority of tasks where the first fitting idea is a compromise.

Triggers

Natural-language phrases that auto-invoke the skill:

  • “find a better solution for X”
  • “alternatives for X”
  • “resolve the contradiction”
  • “triz this”

Also fires when a nav-brief Contradict row is not none on a substantial task (Task Mode complexity ≥ 0.5, or more than one subsystem).

It does not fire on routine work, on Contradict none, on just do it / quick fix, or when you already named the approach. Ceremony is this skill’s failure mode; when in doubt it skips and says so in one line.

What it does

Seven steps on one screen:

  1. State the contradiction — technical form (“improving A vs worsening B”) or physical form (“X must be both A and not-A”). Can’t state one? There isn’t one; proceed normally.
  2. Ideal Final Result — what if the function existed with no new code? If reachable, that is usually the answer.
  3. Reuse inventory — what already does ≥80% of this? path:line or none found.
  4. Prior resolutions + principle prompts — runs functions/triz_suggest.py, which lists decisions in your graph that resolved a related tension and three principle prompts from different separation modes (time / space / condition / level).
  5. Three candidates, one per prompt. Each must say what it worsens — a candidate with no downside is a compromise misdescribed, or the IFR.
  6. Recommend one, one-sentence reason, at most one open question.
  7. Capture the resolution as a tagged decision (--contradiction / --separation / --principle) so the next session can find it.
┌─ TRIZ: <short title> ─────────────────────────────────────────────┐ │ Contradiction improving <A> vs worsening <B> │ │ IFR <no-new-code version; reachable? yes/no> │ │ Reuse <path:line does X> | none found │ │ Prior mem-NNN (<separation>) | none │ ├───┬────────────┬───────────────────────────┬──────┬────────────────┤ │ # │ mode/prin. │ what changes │ cost │ worsens │ ├───┼────────────┼───────────────────────────┼──────┼────────────────┤ │ 1 │ time / 10 │ ... │ S │ ... │ │ 2 │ cond / 15 │ ... │ M │ ... │ │ 3 │ level / 1 │ ... │ L │ ... │ ├───┴────────────┴───────────────────────────┴──────┴────────────────┤ │ Recommend #<n> — <one-sentence reason> │ └────────────────────────────────────────────────────────────────────┘

Example

python3 skills/nav-triz/functions/triz_suggest.py \ --contradiction "clean codebase vs rollback safety"
Prior resolutions in this graph (3): - mem-063: clean codebase vs rollback safety [separation: time] principle: temporary re-export shims for one major, delete in v8 - mem-073: big-bang runtime replacement vs reversibility [separation: time] principle: beforehand cushioning: additive-only config migration + verified downgrade ... Candidate principles (one per separation mode first): 1. [space] #24 Intermediary — adapter, single emitter, gateway, shim, facade 2. [time] #11 Beforehand cushioning — additive-only migration, verified rollback 3. [condition] #15 Dynamization — config toggle, threshold, ship OFF then opt in

Deterministic, stdlib, always exits 0. When no keyword matches, it returns a generic trio and labels it as such.

Reference

skills/nav-triz/reference/PRINCIPLES.md (lazy-loaded, never injected) maps the four separation modes and the ~20 of Altshuller’s 40 principles that transfer to software, with the move each suggests. The rest — pneumatics, thermal expansion, inert atmospheres — are listed so nobody forces them.