--- name: nav-triz description: Divergent solving for a declared contradiction ("improving X worsens Y"). Produces three competing candidates from different TRIZ separation modes, each with cost and downside, then recommends one. Auto-invoke when user says "find a better solution", "alternatives for", "resolve the contradiction", "triz this", or when a nav-brief declares a Contradiction on a substantial task. version: 1.0.0 --- # Navigator TRIZ Skill Navigator finds *a* solution fast. This skill exists for the minority of tasks where the first fitting idea is a compromise: improving one thing worsens another. It forces three genuinely different candidates onto the table before PLAN picks one, then records the resolution so the next session can find it. ## When This Fires (and when it must not) Fires when either: - The user asks for it: "find a better solution for X", "alternatives for X", "resolve the contradiction", "triz this". - A nav-brief `Contradict` row is not `none` AND the task is substantial (Task Mode complexity ≥ 0.5, or touching more than one subsystem). Does NOT fire for routine work, a brief with `Contradict none`, "just do it" / "quick fix" passthroughs, or when the user already named the approach. Ceremony is the failure mode of this skill; when in doubt, skip it and say so in one line. (Resolved before: mem-060, mem-074 — new blocking behaviour ships opt-in, by condition.) ## Protocol (one screen of output) 1. **State the contradiction** in one line, technical form ("improving A vs worsening B") or physical form ("X must be both A and not-A"). If you cannot, stop: there is no contradiction, proceed normally. 2. **Ideal Final Result**: what if the function existed with no new code? Name what would have to be true. If reachable, that is candidate 0 and usually the answer. 3. **Reuse inventory**: what already does ≥80% of this? `path:line` or `none found`. 4. **Prior resolutions + principle prompts**: ```bash PLUGIN_DIR="${CLAUDE_PLUGIN_ROOT:-$HOME/.claude/plugins/cache/navigator-marketplace/navigator}" [ -d "$PLUGIN_DIR" ] || PLUGIN_DIR="$HOME/.claude/plugins/marketplaces/navigator-marketplace" python3 "$PLUGIN_DIR/skills/nav-triz/functions/triz_suggest.py" \ --contradiction " vs " ``` Prints decisions in this graph that resolved a related tension, then three principle prompts from different separation modes (generic trio if nothing matches). Read `reference/PRINCIPLES.md` only if a prompt is unclear. 5. **Three candidates**, one per prompt, in the table below. Each MUST name what it worsens. A candidate with no downside is a compromise misdescribed, or the IFR. 6. **Recommend one** with the reason in one sentence. Max one open question. 7. **After the work**, if the resolution was non-obvious, capture it: ```bash python3 "$PLUGIN_DIR/skills/nav-graph/functions/graph_manager.py" --action add-memory \ --memory-type decision --summary "" --concepts "" \ --contradiction "" --separation \ --principle "" ``` ## Output Template ``` ┌─ TRIZ: ─────────────────────────────────────────────┐ │ Contradiction improving vs worsening │ │ IFR │ │ Reuse | none found │ │ Prior mem-NNN () | none │ ├───┬────────────┬───────────────────────────┬──────┬────────────────┤ │ # │ mode/prin. │ what changes │ cost │ worsens │ ├───┼────────────┼───────────────────────────┼──────┼────────────────┤ │ 1 │ time / 10 │ ... │ S │ ... │ │ 2 │ cond / 15 │ ... │ M │ ... │ │ 3 │ level / 1 │ ... │ L │ ... │ ├───┴────────────┴───────────────────────────┴──────┴────────────────┤ │ Recommend # │ └────────────────────────────────────────────────────────────────────┘ Open question (0-1): ... ``` Rules: three candidates, not five; different separation modes, not three variants of one move; each row's "worsens" cell is mandatory; total output fits one screen. ## Hand-offs - **nav-brief** → here when `Contradict` ≠ none on a substantial task. The brief's `Approach` cites the recommended candidate. - **navigator-research agent** Phase 0.5 already produces IFR + reuse inventory; when it reports a contradiction, run this protocol in the main session (agents do not invoke skills). - **Task Mode** RESEARCH phase lists this as the divergence step before PLAN. ## Predefined Functions `functions/triz_suggest.py --contradiction "" [--graph-path P] [--limit 3] [--format text|json]` Deterministic, stdlib, always exits 0. Keyword-ranks the ~20 mapped principles, picks one per separation mode first, pads with prior action / dynamization / segmentation, and lists prior decisions from the graph via `query_contradictions`. ## Related - `reference/PRINCIPLES.md` — separation modes + mapped principles (lazy-load) - `skills/nav-brief/SKILL.md` — Contradict row - `skills/nav-graph/SKILL.md` Step 3B — capturing tagged decisions