Skip to content

Getting started

Install emet, check that it works and run it for the first time.

emet mascot, done

Requirements

Claude Code, git, gh (authenticated) and the mattpocock-skills plugin, on Linux or macOS. Bun is needed only for a source install; native Windows is unsupported (use WSL). The full list, with what checks each item, is in the dependencies reference.

Install

There are two install paths.

Plugin (no Bun needed). Add this repo as a marketplace and install the emet plugin; it brings /emet:run, the agents, the guard hooks and an emet shim that downloads a checksum-verified standalone binary on first use.

Terminal window
claude plugin marketplace add andryorelabs/emet
claude plugin install emet@emet-marketplace

install.sh (works with or without Bun):

Terminal window
git clone git@github.com:andryorelabs/emet.git
cd emet
./install.sh

With bun on PATH it copies the CLI source to ~/.claude/emet and an emet wrapper to ~/.local/bin/emet. Without bun it installs the standalone-binary shim instead (~/.local/bin/emet, linked to ~/.claude/emet/bin/emet), which downloads and checksum-verifies the binary on first run (needs curl). Either way the commands land in ~/.claude/commands/emet/ and the agents in ~/.claude/agents/; plugin placeholders in the prompts are rewritten to plain ~/.claude paths. Re-running it is safe, and a file you edited is kept with the new version written beside it as <file>.new.

Both installs give you three slash commands: /emet:run, /emet:init and /emet:doctor. The emet command in a plain terminal works only after install.sh; otherwise use the slash commands, or ! emet <subcommand> inside a Claude Code session. The agent names differ: emet:emet-worker in the plugin, emet-worker standalone.

Recommended order, in each repo: run /setup-matt-pocock-skills first, then emet init.

Verify it worked with /emet:doctor inside Claude Code, or emet doctor . in a terminal after install.sh (selftest needs a source install).

If doctor or preflight reports a problem, see troubleshooting. Nothing is ever installed or logged in on your behalf; see the dependencies reference for who checks what and for EMET_SKIP_DEPENDENCY_CHECKS.

First run

In any git repo:

Terminal window
emet init # autodetects package manager, trunk branch, tracker kind
emet preflight # confirms the repo is dispatch-ready

Inside a session, /emet:init does the same as emet init. Then, inside Claude Code:

/emet:run <describe the feature> # interview → wave 1; later waves via --dispatch/autoChain
/emet:run --draft <describe the feature> # stop after tickets are created
/emet:run --dispatch <spec-id> # dispatch a --draft'd spec later

emet init leaves a TODO(emet): marker in the generated docs/agents/*.md files for anything it can’t infer on its own (a shared test-database lock, schema ownership, etc.); fill those in. emet preflight refuses to dispatch while one remains.

Next