Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ These tools only work inside running agent sessions (they require agent-scoped M

## Dispatch plugin (Claude Code + Codex)

This repo doubles as a plugin marketplace. The **Dispatch plugin** ships skills that teach agents how to use the capabilities above — the Brain, subagents, `.dispatch/tools.json`, artifact sharing, the review workflow, the whiteboard, jobs, and templates — so agents discover them instead of having to be told.
This repo doubles as a plugin marketplace. The **Dispatch plugin** ships eleven skills that teach agents how to use the capabilities above — the Brain, subagents, `.dispatch/tools.json`, artifact sharing, the review workflow, UI validation, personas, the whiteboard, jobs, templates, and personalities — so agents discover them instead of having to be told.

**Before you install:** plugins on Claude Code and Codex are **unsigned and unsandboxed, and run with your full local user privileges** — this one and every other self-hosted plugin. This plugin ships no executable components (no hooks, no `bin/`, no bundled MCP servers), only markdown skills; [plugins/dispatch/README.md](plugins/dispatch/README.md#trust) shows how to verify that for yourself before running the commands below.

Expand All @@ -257,7 +257,7 @@ See [plugins/dispatch/README.md](plugins/dispatch/README.md) for what each skill

## Docs

User-facing documentation (agents, keyboard shortcuts, personalities, repo tools, jobs, worktrees, reviewers, status events, media, notifications, updates) lives in the app itself — open the **Docs** pane from the sidebar. The files below are developer-facing references that aren't duplicated in the UI:
User-facing documentation (agents, keyboard shortcuts, personalities, repo tools, templates and jobs, worktrees, reviewers, status events, media, browser feedback, the plugin, notifications, service resources, updates) lives in the app itself — open the **Docs** pane from the sidebar. The files below are developer-facing references that aren't duplicated in the UI:

- [API Specification](docs/03-api-spec.md) — complete API endpoint reference
- [Agent Lifecycle Model](docs/04-agent-lifecycle.md) — states, transitions, tmux contract
Expand Down
10 changes: 10 additions & 0 deletions apps/web/src/components/app/docs-pane.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
Monitor,
MousePointerClick,
PlugZap,
Puzzle,
Signal,
Sparkles,
Users,
Expand All @@ -27,6 +28,7 @@ import {
NotificationsContent,
PersonalitiesContent,
PersonasContent,
PluginContent,
ResourcesContent,
ShortcutsContent,
ToolsContent,
Expand All @@ -45,6 +47,7 @@ export type DocsSection =
| "events"
| "media"
| "browser-feedback"
| "plugin"
| "notifications"
| "resources"
| "updates";
Expand Down Expand Up @@ -128,6 +131,13 @@ const SECTIONS: SectionDef[] = [
title: "Browser Feedback",
content: <BrowserFeedbackContent />,
},
{
id: "plugin",
label: "Plugin",
icon: Puzzle,
title: "Dispatch Plugin",
content: <PluginContent />,
},
{
id: "notifications",
label: "Notifications",
Expand Down
1 change: 1 addition & 0 deletions apps/web/src/components/app/docs-sections/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@ export { EventsContent } from "./events";
export { MediaContent } from "./media";
export { BrowserFeedbackContent } from "./browser-feedback";
export { NotificationsContent } from "./notifications";
export { PluginContent } from "./plugin";
export { ResourcesContent } from "./resources";
export { UpdatesContent } from "./updates";
149 changes: 149 additions & 0 deletions apps/web/src/components/app/docs-sections/plugin.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
import { Code, CodeBlock, H3, P, Section } from "./primitives";

export function PluginContent() {
return (
<>
<P>
Dispatch publishes an official plugin for <strong>Claude Code</strong>{" "}
and <strong>Codex</strong>. It ships skills that teach agents how to use
the capabilities documented here — the Brain, subagents, repo tools,
artifact sharing, the review workflow, the whiteboard, jobs, templates,
reviewers, personalities, and UI validation — so an agent discovers them
at the moment it needs one instead of having to be told. The Dispatch
repo doubles as the marketplace it's served from.
</P>

<Section>
<H3 id="plugin-trust">Before you install</H3>
<P>
Plugins on both platforms are{" "}
<strong>
unsigned and unsandboxed, and run with your full local user
privileges
</strong>{" "}
— this one and every other plugin you install from a self-hosted
marketplace. This plugin ships no executable components: no hooks, no{" "}
<Code>bin/</Code>, no bundled MCP servers, no LSP servers. Everything
it contributes is markdown that agents read. After install,{" "}
<Code>claude plugin details dispatch@dispatch</Code> prints a
component inventory that should read <Code>Hooks (0)</Code>,{" "}
<Code>MCP servers (0)</Code>, and <Code>LSP servers (0)</Code>.
</P>
</Section>

<Section>
<H3 id="plugin-install">Installing</H3>
<P>
Installing from a marketplace is two steps on both platforms: register
the catalog, then install the plugin from it. Adding the marketplace
installs nothing on its own.
</P>
<P>
<strong>Claude Code</strong> — from inside a session:
</P>
<CodeBlock>{`/plugin marketplace add selfcontained/dispatch
/plugin install dispatch@dispatch`}</CodeBlock>
<P>
The same two steps run non-interactively as{" "}
<Code>claude plugin marketplace add selfcontained/dispatch</Code> and{" "}
<Code>claude plugin install dispatch@dispatch</Code>. That form
doesn't run inside a session, so the skills load the next time you
start Claude Code — or immediately if you run{" "}
<Code>/reload-plugins</Code> in a session that's already open.
</P>
<P>
<strong>Codex</strong> — <Code>codex plugin add</Code> installs from a
configured marketplace snapshot, so the marketplace step is required
here too. <Code>/plugins</Code> inside a Codex session opens the same
catalog as a browser.
</P>
<CodeBlock>{`codex plugin marketplace add selfcontained/dispatch
codex plugin add dispatch@dispatch`}</CodeBlock>
</Section>

<Section>
<H3 id="plugin-skills">What's in it</H3>
<P>
Eleven narrow skills, each written to fire on a situation rather than
a feature name — an agent that doesn't know a capability exists will
never match its name, but will match a description of the spot it's
currently in.
</P>
<ul className="grid gap-1.5 pl-4 text-sm text-muted-foreground list-disc">
<li>
<Code>brain</Code> — something needs to outlive the session or reach
another agent
</li>
<li>
<Code>subagents</Code> — work should be delegated, or another agent
needs coordinating
</li>
<li>
<Code>repo-tools</Code> — a repo script should become a first-class
tool
</li>
<li>
<Code>sharing</Code> — an artifact needs to reach the user
</li>
<li>
<Code>review-workflow</Code> — a PR is going up, or review feedback
needs working
</li>
<li>
<Code>ui-validation</Code> — a UI change needs proving in a browser
</li>
<li>
<Code>personas</Code> — this repo needs a reviewer with a domain
lens
</li>
<li>
<Code>whiteboard</Code> — the user's sketch matters, or a diagram
beats prose
</li>
<li>
<Code>jobs</Code> — work should run on a schedule and report
structurally
</li>
<li>
<Code>templates</Code> — a launch configuration is worth saving
</li>
<li>
<Code>personalities</Code> — the user is commenting on how agents
talk
</li>
</ul>
<P>
Status reporting, pin discipline, and session naming are deliberately
not skills — they're always relevant, and skills only load on a task
match, so those stay in the launch guidance Dispatch injects into
every agent.
</P>
</Section>

<Section>
<H3 id="plugin-updating">Keeping it updated</H3>
<P>
The plugin carries an explicit version in its manifests, so updates
only ship when that version is bumped — routine commits to the repo
don't register as a plugin update.
</P>
<P>
<strong>Claude Code</strong> — run{" "}
<Code>claude plugin update dispatch@dispatch</Code>, or{" "}
<Code>/plugin marketplace update dispatch</Code> first to refresh the
catalog. Auto-update is off by default for third-party marketplaces
like this one; turn it on per-marketplace under <Code>/plugin</Code> →{" "}
<strong>Marketplaces</strong>.
</P>
<P>
<strong>Codex</strong> — there is no update subcommand. Re-run{" "}
<Code>codex plugin add dispatch@dispatch</Code> to upgrade; it
replaces the cached copy.{" "}
<Code>codex plugin marketplace upgrade</Code> only refreshes the
catalog snapshot, not the installed plugin, and{" "}
<Code>codex plugin list</Code> won't tell you a newer version exists.
</P>
</Section>
</>
);
}
8 changes: 8 additions & 0 deletions apps/web/src/lib/tips/tips.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,14 @@ export const tips: Tip[] = [
since: "0.33.7",
surfaces: ["ambient"],
},
{
id: "dispatch-plugin",
title: "Teach Your CLI About Dispatch",
body: "Install the Dispatch plugin in Claude Code or Codex and agents pick up skills for the Brain, subagents, repo tools, sharing, and reviews — so they use them without being told.",
docsSection: "plugin#plugin-install",
since: "0.34.1",
surfaces: ["ambient"],
},
];

export function getTipById(id: string): Tip | undefined {
Expand Down
5 changes: 3 additions & 2 deletions plugins/dispatch/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

Skills that teach agents how to use Dispatch's own capabilities. Install it in
Claude Code or Codex and agents get shared memory, subagent orchestration, repo
tools, artifact sharing, the review workflow, the whiteboard, jobs, and templates
as discoverable skills instead of tribal knowledge.
tools, artifact sharing, the review workflow, UI validation, personas, the
whiteboard, jobs, templates, and personalities as discoverable skills instead of
tribal knowledge.

## Install

Expand Down
Loading