OMP Workbook

Read the source. Follow the evidence.

Choose what to build

Start with the outcome, not the API.

“I want my agent to do X—build Y”

I want…Build…Why this surface fits
A human to type /seeds hours and receive a local answerAn extension slash commandThe command handler can answer without asking a model.
The model to query inventory or reserve a specific itemA model-callable toolIt has a parameter schema, structured results, cancellation and errors.
Several commands, tools and lifecycle handlers to share one domainAn executable extensionOne default factory registers the related capabilities.
A key chord to insert a useful phrase or open a local viewAn extension keyboard shortcutIt is an operator convenience, not a model tool.
A startup option such as --seed-quietAn extension CLI flagThe extension declares the flag before the CLI’s extension-aware argument pass.
To inspect, block or transform a tool callAn extension event handlertool_call and tool_result are the supported interception surfaces.

A slash command is not a tool the model can call. Register a tool when the model needs a permanent domain capability. Share a domain function between the command and tool rather than asking the model to “run the slash command.”

“Human command” also does not mean “cryptographically proven human keystroke.” An SDK or RPC host can deliberately submit slash-command text through the command-dispatch path. Extensions run in-process; this workbook’s authorization examples are domain checks, not a sandbox.

When code is unnecessary

I want…Build…Important boundary
A reusable instruction such as “summarize a fictional field observation”A prompt templateIt expands text; it does not itself execute a TypeScript factory.
A named text workflow invoked through a slash commandA file-based slash commandMarkdown command expansion is different from registerCommand() executing code locally.
A reusable body of expertise, instructions and supporting filesA skillDiscovery makes guidance available. It does not automatically execute every script in the skill directory.
Standing or conditionally applied instructionsA ruleRules guide model behavior. They are not filesystem or network enforcement.
Different colors and visual stylingA themeA theme changes presentation, not tool authority.
A different input-editor frameAn extension composer shapeA shape is executable rendering code, separate from a theme.

When the integration belongs elsewhere

I want…Build…Important boundary
Only a model-callable function, especially in an existing tool packageA standalone custom toolIts factory returns tools, and its legacy execute argument order differs from native extension tools.
To maintain an existing event-only integrationA legacy hook, or migrate it to an extensionJS/TS hook factories can enter the extension loading pipeline. New combined integrations are usually clearer as extensions.
A new model endpoint, transport or login flowA model-provider registrationThis requires real provider configuration. Registering metadata does not prove inference works.
Tools or resources supplied by a separate process or remote serviceAn MCP serverThe server owns a protocol endpoint; the OMP client connects to it.
To distribute extensions, tools, commands and optional features togetherA plugin bundleA package manifest selects entries. Installation, discovery and execution remain distinct steps.
To embed OMP in an applicationAn SDK host with inline extension factoriesThe host owns session creation, runtime initialization, UI and disposal.
To expose a Gemini-style extension descriptionA declarative gemini-extension.json manifestIn this snapshot, it is a metadata capability—not an automatic launcher for tools, factories, context or MCP servers named inside it.

There is overlap by design. A plugin may contain an executable extension, a skill and a prompt. An executable extension may register a tool and a human command. An MCP tool may ultimately appear in the same tool registry as a local tool.

The useful question is always:

Which component discovers this file, which component executes it, and which interface can actually invoke the resulting capability?

The workbook’s route

Three projects carry the main progression:

  1. Seed Desk: welcome and inventory: a volunteer and an agent learn the same fictional desk information.
  2. Seed Desk: reservations: reads become revision-checked, branch-aware actions.
  3. Review Desk: a release note is inspected, edited, accepted, rejected or cancelled—never published.
  4. Package Lab: a notebook moves from one file to helpers, a manifest and SDK embedding.

Focused laboratories then cover native UI, interception, session navigation, background delivery, providers, resources and file fallbacks.

Use the public feature reference and all 46 events as lookup chapters.

How to read claims

This workbook uses three labels:

  • Observed: a completed check is recorded in the supplied execution report.
  • Source-backed: the behavior follows from the supplied implementation or public type contract.
  • Exercise: a proposed experiment or new small example. Its expected result is explained, but it is not added to the recorded proof count.

The stories use fictional people and data. The observations describe the recorded checks, not real seed-library operations, a real release, or a provider account.

The workbook website and its downloads do not operate your OMP session. There is no tutorial-browser control API implied by these lessons.

Extensions inside those boundaries · Source chapter: extensions/choose-what-to-build. Original evidence remains scoped to its recorded snapshot.

Read this chapter as Markdown

Your lesson ticks

A self-reported reading checklist, not proof of real OMP behavior. Only these ticks are saved in this browser. Reading a milestone does not resume, fork, reset or export a session.

Chapters I have worked through
Start here 1
Sessions, resets, and reviewable history 19
Memory and reusable knowledge 14
Tangent work and live control 17
Tool permissions and approvals 15
Extensions inside those boundaries 23
Connections and next steps 8
0 of 97 checked

Checklist saving needs JavaScript and available browser storage.