Skip to Content
Skillsnav-brief

nav-brief

Render a one-screen intent brief before implementing an ambiguous task-shaped prompt — so scope disputes happen in one confirmation exchange, not after forty edits.

Triggers

Not a phrase you say. The prompt_brief op scores every prompt at submit time; when a prompt is task-shaped and ambiguous (score ≥ brief_hook.ambiguity_threshold, default 0.5) it injects a NAV-BRIEF block and this skill renders the brief. With the opt-in typed judge (v7.7.0) task-shapedness, the ambiguity score and the undefined rows come from Jev’s typed answers when decisive, and from the keyword heuristic otherwise.

Passthroughs that skip it: just do it, quick fix, skip the brief, or a prompt that is plainly an answer to a pending brief’s open questions.

What it does

  • Renders a fixed seven-row brief and waits for confirmation before any file changes:
┌─ BRIEF: <short title> ──────────────────────────────┐ │ Goal <outcome, one line> │ │ Scope <files/dirs/endpoints — concrete> │ │ NOT <adjacent things left untouched> │ │ Approach <how — cite memory if pre-filled> │ │ Limits <numbers, constraints — mark ASSUMED> │ │ Verify <how completion will be proven> │ │ Won't do <explicit non-goals> │ │ Contradict <improving X worsens Y — or "none"> │ └─────────────────────────────────────────────────────┘ Confirm / edit? (open questions: <0-2>)
  • Pre-fills defaults from the knowledge-graph memories the op injected alongside the block, so the brief already reflects prior decisions.
  • Asks at most two open questions; everything else is a default you can veto.
  • Contradict (v7.1.0) is the TRIZ row: the task is inventive only when improving one thing worsens another. Most tasks are routine and the honest answer is none. When a contradiction is declared, the skill queries prior resolutions from the graph (graph_manager.py --action contradictions --filter "...") before filling Approach, and on a substantial task hands off to nav-triz for three competing candidates.
  • Detects brief drift mid-task: if work is about to exceed the confirmed Scope or Limits, it stops and offers extend brief / skip this change.
  • After confirmation, changed defaults become candidate memories (“Remember we decided…”) so future briefs pre-fill better.

Example

Clean up the auth flow, it's gotten messy

Task-shaped, no files named, no acceptance criterion — ambiguous. Navigator renders the brief with Scope pre-filled from the graph’s auth memories, Contradict none, and one open question (“keep the legacy session endpoint?”). You answer, it proceeds.

Config

KeyDefaultDescription
brief_hook.enabledtrueRun the prompt_brief op.
brief_hook.ambiguity_threshold0.5Score at or above which the brief fires.
brief_hook.memory_budget_chars1200Cap on injected memory text.
brief_hook.contradiction_fieldtrueShow the Contradict row (off restores the v7.0 six-field brief).