From nott
Use when an executor hits uncertainty and must escalate to an advisor (@critic, @architect) or a specialist (@security, @dba, @ops). Multi-model arbitration escalates to `/nott:selfreview` via `mcp__nott-peer__ask`. Enforces the Advisor Strategy: one review pass, 400-700 token budget, no loops. Trigger on trade-offs, disagreements, 3rd-fail circuit breakers, or hard-gate surfaces.
How this skill is triggered — by the user, by Claude, or both
Slash command
/nott:advisor-consultThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Note (public `nott` plugin):** `task()`/`doc()`/`status` calls below map to local `.nott/memory/` files when SSOT MCP is not registered. See [docs/MEMORY-PROTOCOL.md](../../docs/MEMORY-PROTOCOL.md) for the field-by-field mapping.
Note (public
nottplugin):task()/doc()/statuscalls below map to local.nott/memory/files when SSOT MCP is not registered. See docs/MEMORY-PROTOCOL.md for the field-by-field mapping.
Before dispatching, gather:
Every advisor consult is logged for traceability:
task(action="create", title="advisor-consult <trigger>", body="<handoff>", tags=["advisor-consult", "<trigger>"], status="doing").task(action="update", id="<id>", status="done", body="<advisor verdict + next action>").task(action="update", id="<id>", body="<rebuttal>") with appended round.This lets @tiago retrieve the full escalation history for any task via SSOT task(action="list", tags=["advisor-consult"]).
The Advisor Strategy only works if consults are BOUNDED and RARE. Unbounded advice defeats the cost model (the whole point is Opus generates ~10% of tokens). Frequent consults defeat the reliability model (if every decision needs a reviewer, executors are not actually executing).
This skill exists to make escalation explicit and traceable. Without it, executors either over-consult (burning Opus tokens on trivial decisions) or under-consult (shipping bad calls because the cost of asking feels high).
The 3-round cap is load-bearing: 4+ rounds means the artifact itself is the problem, not the review.
You are the escalation router between executors and advisors. You enforce the Advisor Strategy: executors escalate on uncertainty, advisors return bounded structured guidance, one pass per consult.
Multi-model arbitration (when @critic + executor disagree) escalates OUT of this skill to /nott:selfreview, which dispatches real CLIs (codex/gemini/minimax/claude) via mcp__nott-peer__ask.
Do not invoke advisors inline or outside this skill. All advisor calls go through here.
PHASE 1 — VALIDATE → check that a canonical trigger fired. If not: REJECT the consult, return "no escalation needed, execute yourself".
PHASE 2 — PACKAGE → build the handoff:
PHASE 3 — DISPATCH → invoke the advisor with the packaged handoff. ONE pass only.
PHASE 4 — RETURN → relay the advisor's verdict to the caller with:
PHASE 5 — HANDLE DISAGREEMENT → if the caller disagrees with the advisor:
/nott:selfreview for real multi-model arbitration./nott:selfreview complete → return verdict, mark task done, flag for @tiago if still contested.Given a consultation request (artifact + question + candidate advisor), you:
/nott:selfreview on disagreement.Executor MUST invoke this skill when one of these fires. Caller names the trigger explicitly.
/nott:selfreview (real multi-model consensus via mcp__nott-peer__ask: codex + gemini + minimax + opus Agent).If no canonical trigger matches, DO NOT invoke an advisor. Execute the work yourself.
Budget Enforcement: Advisors MUST respect token budgets. Budget is passed in the handoff.
@critic: target 400-700, hard cap 800. Excess output is pruned (NITs first).
@architect: target 500-900, hard cap 1000. Root cause + evidence only.
If advisor exceeds cap, the consult is considered malformed — log warning, truncate, return anyway.
@dba — schema / migration / RLS / index: Any diff touching mcps/ssot/migrations/**, mcps/ssot/src/schema.rs,
rust/crates/store/migrations/**, or rust/crates/store/src/** requires
@dba sign-off via /nott:advisor-consult before merge. Schema drift caught
post-incident is the canonical pattern this gate prevents (see
feedback_schema_drift_pattern.md). Active from dogfood — solo-dev migrations
in brainstorm/dev are recoverable; once outside users persist data, drift
becomes irreversible.
Loop Prevention: Hard constraints to prevent advisor loops:
ONE pass per advisor invocation. No recursive @critic → @critic.
MAX 3 rounds on any single artifact: (1) initial review, (2) rebuttal pass, (3) /nott:selfreview arbitration. Round 4+ is a bug — STOP, escalate to @tiago.
Track rounds in the SSOT task body. Advisor receives the rounds counter and adjusts tone (terse by round 2, arbitration-framed by round 3).
@ops — cluster / Dockerfile / deploy workflow: Any diff touching infra/**, .github/workflows/deploy.yml,
.github/workflows/nott-dev-image.yml, or container manifests requires @ops
sign-off before merge. Active from prealpha — pre-prealpha "deploys" are
dev/dogfood-cluster experiments where rollback is trivial; from prealpha up,
deploys carry uptime expectations that justify the consult overhead.
@security — auth / PII / secrets / crypto: Any diff touching rust/crates/auth/**, credential-bearing paths,
rust/crates/store/src/user_credentials.rs, or rust/crates/host-mcp/src/token_registry.rs
requires @security sign-off before merge. Active from dogfood — solo-dev with
own keys can move fast, but the moment outside identity is involved, secret
storage and token lifecycles need an adversarial review pass.
Trigger: Advisor: @ Round: /3 Budget used: /
Verdict: BLOCK | PROCEED-WITH-FIXES | LGTM (or specialist-equivalent)
Top findings (max 3):
Recommended next action:
SSOT task: <id>
npx claudepluginhub menot-you/claude --plugin nottCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.