Profiles are an experimental feature. The prompts commands are hidden by
default — run machine0 config set USE_EXPERIMENTAL_FEATURES=true to enable
them.
A prompt is a named text template stored on a profile and served over the profile’s MCP endpoint. Claude Code surfaces MCP prompts as slash commands — /mcp__<server>__<name>, where <server> is whatever name you gave the connection (machine0 on VMs, which wire the profile endpoint automatically). One prompts new makes a prompt available in every Claude surface connected to the profile — unlike machine-local .claude/commands files, the library follows the profile everywhere, and edits propagate without touching any machine.
machine0 prompts new work code-review --body @review.md
claude mcp add --transport http work https://app.machine0.io/profiles/work/mcp
# in Claude Code: type "/" → /mcp__work__code-review
Two propagation rules: adds and removes appear in a client on its next connect (Claude Code discovers prompts when it connects — reconnect the server or restart the session to pick up a new prompt); body and description edits are live on the next invocation, no reconnect needed.
Prompt names follow the same rules as integration names (letters, digits, and dashes; max 63 characters, unique per profile case-insensitively). Each profile holds up to 50 prompts, bodies up to 64KB, stored encrypted at rest. Prompts in v1 take no arguments — invoking the slash command inserts the body verbatim; argument templating is a planned follow-up.
prompts ls
List a profile’s prompts with their descriptions, sizes, and last-updated times.
machine0 prompts ls <profile>
machine0 prompts ls work --json
prompts get
Show a prompt’s metadata and full body.
machine0 prompts get <profile> <prompt>
machine0 prompts get work code-review --json
prompts new
Add a prompt to a profile. Aliased as prompts create and prompts add. Takes a --body and an optional --description. Adding a name that already exists errors with a pointer at prompts update.
The --body flag takes three input modes (curl’s @ convention), and omitting it in a terminal opens $EDITOR like git commit:
machine0 prompts new work ship --body "Run /ship and fix anything that fails."
machine0 prompts new work code-review --body @./prompts/review.md
cat review.md | machine0 prompts new work code-review --body @-
machine0 prompts new work standup # opens $EDITOR
machine0 prompts new work code-review --description "review SOP" --body @review.md
prompts update
Update a prompt’s body or description. Pass an empty string to clear the description. With no flags in a terminal, opens $EDITOR pre-filled with the current body.
machine0 prompts update work code-review --body @review-v2.md
machine0 prompts update work code-review # $EDITOR pre-filled with the current body
prompts rm
Remove a prompt from a profile. It disappears from connected clients on their next connect.
machine0 prompts rm <profile> <prompt>
machine0 prompts rm work code-review --yes # skip the confirmation prompt