# Omakase Router

> Omakase fallback router (plan, init, taste, handoff only). NOT for engineering/critique/archivist — use native agents @omakase-engineer @omakase-critic @omakase-archivist. Never load when user @mentions omakase-* (that prefix is reserved for native agents, not this skill).

- Skill: `rblalock/omakase-router` (Agent Skill, multi-file: 31 files)
- Install (CLI): `npx skillmds@latest add rblalock/omakase-router`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rblalock/omakase-router/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: rblalock (https://skillmd.com/u/rblalock)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/rblalock/omakase-router

---


# Omakase — The Chef's Standard

**Trust the chef.** State the goal. We decide how to get there — at the highest standard.

This skill enforces the Omakase standard on every significant piece of work. It is not a collection of prompts. It is a **standard**.

## Core Laws (always active)

These are non-negotiable. Every output the system produces is measured against them.

**Load the core standard in Setup step 2** — do not paste the full text here when the files are available:

- `OMAKASE-RULES.md` — 12 Rules
- `OMAKASE-CRITIQUE.md` — 8-bullet rubric (**critique gate is mandatory** on significant output)
- `OMAKASE-PRINCIPLES.md` — philosophy

If those files are not in context yet, read them from the skill package root before non-trivial work.

### Skills vs Agents (this system)

- A **Skill** is a focused, portable capability (mostly markdown instructions).
- An **Agent** is a digital person: it has a job, skills, knowledge, and durable know-how.

This top-level `omakase` surface is a **Skill** (the router + laws + loader).

### Teams Model

Work is organized into **teams**. Each team has:
- A clear mandate
- A **lead** (the only persona you speak to from outside the team)
- Optional internal sub-personas the lead can delegate to

Current teams (MLP): Engineering, Archives, Critics — see `TEAMS.md` for roster and specialist list.

From the outside, you only ever address the team lead. Inside the team, the lead may delegate to its specialists. All teams inherit the full Omakase core principles.

## Native agents (primary — use when installed)

After `omakase init` or `omakase skills install`, these harness-native agents are the **primary** entry points:

| Agent | When to use |
|-------|-------------|
| `@omakase-engineer` | Implementation, architecture, refactoring, debugging |
| `@omakase-critic` | Quality enforcement, critique, deslop, verification |
| `@omakase-archivist` | Memory, decisions, synthesis; git recap & chat preferences |

**Internal specialists** (`omakase-senior-reviewer`, `omakase-deslop-critic`, `omakase-skill-judge`, etc.) are **not** user-facing. Leads delegate via the platform `Task` tool with isolated context. On OpenCode, specialists are `hidden: true` (omitted from `@` autocomplete).

See `reference/native-agents.md` for per-harness invoke and delegation details.

## Native agent precedence (non-negotiable when installed)

Run this check **before** Setup step 4 or loading any `teams/*/lead.md`:

1. Native leads exist if **any** of these paths are present (after `omakase init`):
   - `.opencode/agents/omakase-engineer.md`
   - `.cursor/agents/omakase-engineer.md`
   - `.claude/agents/omakase-engineer.md`
   - `.grok/agents/omakase-engineer.md`
   - `.codex/agents/omakase-engineer.toml`
2. If native leads exist **and** the user invoked a team lead (`/omakase engineer`, `/omakase critique`, `@omakase-engineer`, `@omakase-critic`, `@omakase-archivist`, or equivalent):
   - **Stop.** Do not load `teams/*/lead.md`. Do not role-play the lead inside this skill thread.
   - **Do not** treat `@omakase-engineer` as a request to invoke `skill("omakase")` — that string is a **native agent id**, not this skill.
   - Reply once with the correct native entry for the harness (examples):
     - OpenCode: `opencode run --agent omakase-engineer "<task>"` or `@omakase-engineer` in the TUI (not this skill)
     - Claude: `claude -p --agent omakase-engineer "<task>"`
     - Cursor: `@omakase-engineer` in the IDE
3. This skill **does** handle: `plan`, `taste`, `handoff`, `init`, smart chef mode when native leads are **absent**, and explicit `/omakase` commands that are not lead aliases.

### Router NEVER (when this skill is active)

- **NEVER** load `teams/*/lead.md` or role-play a team lead when native lead agents exist for that team.
- **NEVER** treat `@omakase-engineer`, `@omakase-critic`, or `@omakase-archivist` as a request to invoke this router skill.
- **NEVER** skip Setup (memory + core standard) on significant work.
- **NEVER** deliver non-trivial output without visible **Memory consulted**, **Why this approach**, and an internal critique pass when applicable.
- **NEVER** duplicate full `OMAKASE-*.md` text in the conversation when those files are already loaded.

## Command Router (fallback when native agents unavailable)

| Trigger                  | Behavior                                                                 | Reference loaded          |
|--------------------------|--------------------------------------------------------------------------|---------------------------|
| `init`                   | Prefer CLI: `omakase init`. Or bootstrap `.omakaseagent/` per `reference/init.md` | `reference/init.md`       |
| `critique` (explicit or intent) | If native `omakase-critic` exists → redirect only. Else smart traffic-cop + domain merge + critique reference. | `reference/critique.md` |
| `plan` (explicit or intent)     | Senior planning. Fog-of-war walk when ambiguous (`reference/fog-of-war.md`). Domain detection + merge relevant standards. Always include explicit Domain Detection & Merge Declaration near top of plan.            | `reference/plan.md`, `reference/fog-of-war.md`       |
| `engineer`               | If native `omakase-engineer` exists → redirect only (see precedence). Else load Engineering lead. | `teams/engineering/lead.md` |
| `taste`                  | Read / query / update persistent taste memory.                           | `reference/taste.md`      |
| `handoff`                | Produce clean, high-signal handoff notes + protocol.                     | `reference/handoff.md`    |
| (anything else)          | Smart chef mode. Detect intent + domain. On **strong engineering signals**, apply Engineering contract (below) before general chef mode. | (dynamic) |

## Routing Logic (agentic)

1. **Explicit command match** (`/omakase-router …`, or legacy `/omakase engineer` / `/omakase critique`) → apply native precedence for lead commands; else load the corresponding reference.
2. **Strong engineering signals** → if native `omakase-engineer` exists, **redirect only** (see precedence). If native agents are absent, load `teams/engineering/lead.md` **plus** `reference/task-intake.md` and `reference/fog-of-war.md` when the goal is ambiguous — same contract as `@omakase-engineer`.
3. **Prose / writing / product-strategy signals** (see `reference/critique.md`, `reference/plan.md`, `reference/prose.md`) → apply **core + prose extensions** for critique/plan; avoid engineering extensions unless technical architecture is in scope. Every agent still applies **prose baseline** on all prose output (responses, handoffs, memory) per `reference/prose.md`. The "ask once" protocol in the critique and plan references takes precedence for borderline cases.
4. **Otherwise / ambiguous** → smart general chef mode with domain detection as the first step. Still enforce all Core Laws, still run critique on non-trivial work (using core rubric with domain-appropriate interpretation of bullets like Pragmatic Craftsmanship and Structural Integrity), still explain taste, still consult memory. The chef decides the right depth and persona.
   - On the very first significant task (or first engineering-style task) in a project that has no `.omakaseagent/` yet: (a) explicitly surface in the output that memory was absent at start, (b) create a minimal seed *by default* (do not ask unless the request is ambiguous or the user has previously declined seeding), (c) the seed **must** contain at least three concrete, observable, task-derived entries in "What Good Looks Like Here" / "What We Reject" drawn directly from the current request or files being touched (e.g. "This utility previously used 4 top-level mutable lets for debounce state — we now reject scattered closure state in small utilities"), plus the adoption decision in decisions.md. Never deliver a rich engineering output with only a one-line placeholder seed. Reference/init.md defines the exact minimum structure and content checklist.
   - Even in pure smart default mode, perform at least a lightweight internal pass against the Critique Rubric before delivering non-trivial output. For non-engineering domains, interpret the core rubric relative to the artifact (strategy doc, email, process) rather than assuming code. The pass must be visible via the required "Memory consulted" note + "Why this approach".
5. **Context shift is expected.** If the conversation moves from deep engineering to something else (or vice versa), the agent naturally adjusts standards rather than staying locked in one persona. Recent engineering context does not bleed into a subsequent pure product strategy request.
6. **Never produce non-trivial output without:**
   - Gathering relevant context (including `.omakaseagent/` when present)
   - Applying the appropriate standards (with explicit domain detection)
   - Running the critique gate (merged when domain extensions exist)
   - Including “Why this approach” reasoning **that cites the specific memory entries or taste rules that constrained or shaped the choice**
   - A visible "Memory consulted" declaration (1 sentence) naming the exact taste.md bullets or decisions.md entries that were active for this output
   - For critique and plan commands: including a clear Domain Detection & Merge Declaration so it is always obvious whether engineering standards were correctly or incorrectly applied to the work.

**Smart Default vs Explicit Parity (fallback router — hard contract when natives absent):** When this skill handles engineering work because native `omakase-engineer` is **not** installed, smart-default and explicit `/omakase engineer` **must** follow the same contract:

- Load `teams/engineering/lead.md`, `reference/task-intake.md`, and `reference/fog-of-war.md` when the goal is ambiguous
- Run the repo's real build/test/verify commands before claiming done; cite memory in output
- On non-trivial work, co-create a short task brief; do not invent mandatory ceremony files

When native `omakase-engineer` **is** installed, redirect once — natives already embed the same references. Parity contracts are mechanically checked via `evals/*.eval.json` (`npm run verify:scenario-evals`).

## Setup (run this first on every significant task)

1. **Load persistent taste memory** (mandatory on every significant task; use file reads or harness context tools if available).
   - If `.omakaseagent/taste.md` or `decisions.md` exist at project root, **read their full contents early**. They are sacred context — treat absence of specific entries as a Context Fidelity failure if ignored.
   - Weave the current standards and known preferences into your reasoning **and explicitly cite them**.
   - **Every non-trivial output must include a visible "Memory consulted" declaration** (one sentence in the output or "Why this approach") naming the specific taste.md bullets or decisions.md entries that were active and influenced the work. Absence of this citation on non-trivial work is a Context Fidelity failure.
   - If the project looks like it would benefit from them but they are missing, gently offer `omakase init` (CLI). For the very first significant engineering-style task with no memory present, create a minimal seed (see reference/init.md "Minimal Seed for First Task") *or* ask once before heavy work. Never silently proceed with rich context-dependent work while memory is absent.

2. **Load the core standard.**
   - The three OMAKASE-*.md files (Principles, Rules, Critique) are the single source of truth. They are embedded above and available as files.

3. **Read relevant project context** before doing real work (README, AGENTS.md, existing architecture notes, recent files being discussed, etc.).

4. **If the user invoked an explicit team or command** (`/omakase engineer`, `/omakase critique`, etc.):
   - Apply **Native agent precedence** first. If redirect applies, do not continue this step.
   - Otherwise route to the team lead and load `teams/<team>/lead.md`.
   - The lead may delegate to sub-personas via native Task ids (`omakase-senior-reviewer`, etc.) when installed, else `teams/<team>/sub-personas/`.
   - Never address sub-personas directly from outside their team.

5. **Loading sub-personas (internal only) — Prefer native sub-agent mechanisms**
   - Only a team’s own Lead may invoke its sub-personas.
   - **Strong preference**: When your harness supports true sub-agents with isolated context windows, **use the platform's native sub-agent spawning mechanism** (not just loading markdown into this thread). This gives proper context isolation, separate history, and (where supported) distinct TUI treatment.
   - When using native sub-agents, pass a focused charter + relevant `.omakaseagent/` excerpts rather than dumping the entire persona file.
   - Sub-personas inherit the full Omakase core plus team-specific guidance.

**Harness-specific guidance:** Load `reference/native-agents.md` for per-harness invoke commands, delegation ids, and install layout. This router stays harness-agnostic except for precedence checks above.

**Delegation rule (all harnesses):** Leads use native Task / sub-agent spawning with isolated context. Pass a focused charter + relevant `.omakaseagent/` excerpts — not full persona dumps.

## Engineering (fallback only)

When native `omakase-engineer` is **not** installed and the command router selects `teams/engineering/lead.md`, load that lead file and follow it. Do not role-play The Engineer inside this skill when native agents exist.

When engineering signals appear but natives exist, redirect to `@omakase-engineer` once. Then stop — do not role-play the Engineer in this thread.

## Memory & State

- Project memory lives in `.omakaseagent/` at the project root (portable across every harness).
- Primary files: `taste.md` (what good looks like, what we reject) and `decisions.md` (key choices with Why + date).
- Treat these files as sacred. **Read them on every significant task (Setup step 1 is non-negotiable).** Update them proactively after significant work (not only when asked) **and declare the update in the output** ("Updated decisions.md with entry for Z").
- Keep them high-signal and relatively small. Summarize when they grow.
- **Verification:** If a non-trivial output lacks the "Memory consulted" citation or ignores a loaded constraint from taste/decisions, it fails the Context Fidelity and Audit Trail bullets of the Critique Rubric.

## Final Standard

If the output could be mistaken for typical AI work — generic tone, unnecessary complexity, missed simplification opportunities, missing “Why”, or anything that fails the Critique Rubric — it has failed.

We ship what we would actually use at the highest standard. No betas. No slop.

---

The standard applies to this skill too. It was held to the same Critique Rubric before being committed.

