Spur orchestrates AI coding agents (claude/codex/cursor/opencode) via CLI, daemon, web UI, or Telegram. Use when spawning, messaging, automating, or configuring a session, tmux pane, or Spur config. Don't use for driving an agent's CLI, or plain git worktree work.
Scanned 10/2/2026
npx -y skills add ashugaev/spur --skill spur --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Spur?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ashugaev-spur)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: spur
description: Spur orchestrates AI coding agents (claude/codex/cursor/opencode) via CLI, daemon, web UI, or Telegram. Use when spawning, messaging, automating, or configuring a session, tmux pane, or Spur config. Don't use for driving an agent's CLI, or plain git worktree work.
hostInstall: true
---
SPUR
WHAT SPUR IS
CLI plus a local HTTP daemon, default `127.0.0.1:4310`, plus a web UI.
"spawn an agent" means this, not the built-in Agent/Task tool.
Agents `claude`, `codex`, `cursor`, `opencode` launch full-access, each in a detached tmux pane inside a `git worktree`.
Global fields in a project `spur.yaml` are silently discarded; put them in `~/.spur/config.yaml`.
INTERFACES
CLI: `spur --help`, then `spur <command> --help`.
`$SPUR_SESSION_TOOL_DIR` holds the session-bound wrappers; `ls "$SPUR_SESSION_TOOL_DIR"` enumerates them. Call each as `"$SPUR_SESSION_TOOL_DIR/<tool>"`, never bare.
Session variables: `env | grep '^SPUR_'`.
Automatic reminder limits: `docs/configuration.md#automatic-reminders`.
Spur ToDo: ledger starts empty, no code path seeds an item; the agent adds one item per step, before the step, and resolves it after. Empty or open/held work refuses an agent's own completion, self-destruct, and handoff — `todo_ledger_empty`/`todo_open_work` (409); a human `complete`/`handoff` from the CLI or UI is never blocked. Contract: `docs/commands.md#todo`.
Telegram: agents send with `"$SPUR_SESSION_TOOL_DIR/spur" source reply`; in a private chat a user reply to a bot message reaches the agent that sent it. Contract: `docs/commands.md#source-reply`.
Stop unwanted auto-pings with `spur auto-ping unsubscribe`. A thread that keeps coming back takes `--thread`; `--event` binds to one emitted occurrence only. Scopes and resume: `docs/commands.md#auto-ping`; API: `docs/daemon-api.md`.
SAFETY
A daemon on the default port is someone's production instance. Never `daemon start|stop`, kill, or direct-HTTP a daemon you did not start; never repoint `--config` at `~/.spur/config.yaml`.
Run non-default-instance CLI calls from a neutral cwd — `spawn`/`list` auto-connect the nearest `spur.yaml` upward from cwd and spawn real sessions.
Never run `gc --execute` against a data dir you do not own; a bare `gc` is the dry run.
Never run `cache --prune --yes` on a host running agents you do not own; a bare `cache` or `cache --prune` is a dry run.
Never run `disk-gc --execute` (or `--browser-revisions`) on a host running agents you do not own; a bare `disk-gc` is the dry run.
`--expose-web` binds `0.0.0.0`, public.
Agents run full-access — any untrusted prompt from Telegram, GitHub, or Jira runs arbitrary commands as the daemon user.
Start dev servers with `"$SPUR_SESSION_TOOL_DIR/spur-sidecar" --name <name>`, never a bare dev-server command.
Read a sidecar's port with `"$SPUR_SESSION_TOOL_DIR/spur-sidecar" ports`, never by grepping `/proc` or session state.
DOCS
Doc index: https://raw.githubusercontent.com/ashugaev/spur/main/README.md
Any path under `docs/` resolves as https://raw.githubusercontent.com/ashugaev/spur/main/<path>
Commands, session tools and variables: docs/commands.md
Daemon HTTP routes: docs/daemon-api.md
Config fields: docs/configuration.md
EDITING THIS FILE
Reader has no checkout; resolve each doc path through the rule above, never a relative link.
Context only, never mechanism, repo internals, or a command/config field/workflow another doc owns.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!