CLI
dotagents [--user] <command> [options]Global Options
Section titled “Global Options”--useroperates on user scope (~/.agents/) instead of the current project.--help,-hshows help.--version,-Vshows version.
Commands
Section titled “Commands”dotagents init
Section titled “dotagents init”dotagents init [--agents claude,cursor] [--force]Initialize a new project with agents.toml and .agents/skills/. Interactive
mode prompts for agent targets and trust policy. Sets up gitignore entries
automatically.
By default, init declares the dotagents skill from getsentry/dotagents so
agents can discover CLI guidance. It then runs install best-effort.
Options:
--agents <list>comma-separated agent targets (claude,cursor,codex,vscode,opencode).--forceoverwrites existingagents.toml.
Examples:
dotagents initdotagents init --agents claude,cursordotagents --user initdotagents install
Section titled “dotagents install”dotagents installInstall and refresh skill dependencies from agents.toml. Resolves sources,
copies skills, writes the lockfile, creates symlinks, and generates MCP and
hook configs. There is no separate update command.
Example:
dotagents installdotagents add
Section titled “dotagents add”dotagents add <specifier> [<skill>...] [--skill <name>...] [--ref <ref>] [--all]Add one or more skill dependencies and install them. dotagents auto-discovers
skills in the source. When a source has one skill, it is added automatically.
When multiple skills are found, interactive mode shows a picker. In
non-interactive mode, pass skill names as positional arguments, use --skill, or
use --all.
Shorthand owner/repo resolves through defaultRepositorySource in
agents.toml.
Options:
--skill <name>specifies which skill to add. Repeatable. Alias:--name.--ref <ref>pins to a specific tag, branch, or commit.--alladds all skills from the source as a wildcard entry (name = "*").
Do not mix positional skill names and --skill or --name flags in the same
command.
Examples:
# Single skill from GitHubdotagents add getsentry/skills find-bugs
# All skills from a repodotagents add getsentry/skills --all
# Pinned to a refdotagents add getsentry/warden@v1.0.0
# Explicit GitLab URLdotagents add https://gitlab.com/group/repo find-bugs
# Non-GitHub git serverdotagents add git:https://git.corp.dev/team/skills review
# Well-known HTTPS sourcedotagents add https://cli.sentry.dev error-tracking
# Local directorydotagents add path:./my-skills/customdotagents remove
Section titled “dotagents remove”dotagents remove <name|source> [-y]Remove a skill from agents.toml, delete it from disk, and update the lockfile.
You can also pass a source to remove all skills from that source. When removing
a skill provided by a wildcard source, dotagents can add that skill to the
wildcard exclude list.
Options:
-y,--yesskips confirmation when removing by source or excluding a wildcard-provided skill.
Example:
dotagents remove find-bugsdotagents remove getsentry/skills -ydotagents sync
Section titled “dotagents sync”dotagents syncReconcile project state without network access. Adopts local orphaned skills, prunes stale managed skills removed from config, regenerates gitignore, and repairs symlinks plus MCP/hook configs. Reports issues as warnings or errors.
dotagents mcp add
Section titled “dotagents mcp add”dotagents mcp add <name> --command "<cmd> [args...]" [--env <VAR>...]dotagents mcp add <name> --url <url> [--header <Key:Value>...] [--env <VAR>...]Add an MCP server declaration to agents.toml and run install to generate
agent configs. Specify exactly one transport: --command for stdio or --url
for HTTP.
Options:
--command "<cmd> [args...]"is the command string to execute for stdio transport.--url <url>is the server URL for HTTP transport.--header <Key:Value>adds an HTTP header. Repeatable. URL servers only.--env <VAR>passes through an environment variable. Repeatable.
Examples:
# Stdio serverdotagents mcp add github --command "npx -y @modelcontextprotocol/server-github" --env GITHUB_TOKEN
# HTTP server with auth headerdotagents mcp add remote --url https://mcp.example.com/sse --header "Authorization:Bearer tok"dotagents mcp remove
Section titled “dotagents mcp remove”dotagents mcp remove <name>Remove an MCP server declaration from agents.toml and run install to
regenerate agent configs.
Example:
dotagents mcp remove githubdotagents mcp list
Section titled “dotagents mcp list”dotagents mcp list [--json]Show declared MCP servers. Use --json for machine-readable output.
Examples:
dotagents mcp listdotagents mcp list --jsondotagents trust add
Section titled “dotagents trust add”dotagents trust add <source>Add a trusted source to [trust] in agents.toml. The type is inferred
automatically: owner/repo for repos, names with . for domains, and bare
names for GitHub orgs.
When defaultRepositorySource = "gitlab", shorthand trust sources are stored as
GitLab domain rules.
Examples:
dotagents trust add getsentrydotagents trust add external-org/specific-repodotagents trust add git.corp.example.comdotagents trust remove
Section titled “dotagents trust remove”dotagents trust remove <source>Remove a trusted source from [trust] in agents.toml. Matching is
case-insensitive.
Example:
dotagents trust remove getsentrydotagents trust list
Section titled “dotagents trust list”dotagents trust list [--json]Show trusted sources with their type. Use --json for machine-readable output.
Examples:
dotagents trust listdotagents trust list --jsondotagents doctor
Section titled “dotagents doctor”dotagents doctor [--fix]Check project health and fix issues. Verifies gitignore setup, installed skills, symlinks, and detects legacy config fields. Useful for migrating to a new version of dotagents.
Options:
--fixauto-fixes issues where possible.
Examples:
dotagents doctor # check for issuesdotagents doctor --fix # fix what it candotagents list
Section titled “dotagents list”dotagents list [--json]Show installed skills and status. Use --json for machine-readable output.
Status output:
✓means installed and present in the lockfile. JSON status:ok.✗means declared but not installed. JSON status:missing.?means installed but not in the lockfile. JSON status:unlocked.
Source Formats
Section titled “Source Formats”| Format | Example | Description |
|---|---|---|
| GitHub | getsentry/skills | Auto-discovers skills by name |
| GitHub URL | https://github.com/getsentry/skills | Explicit GitHub source |
| GitHub SSH | git@github.com:getsentry/skills.git | GitHub over SSH |
| Pinned | getsentry/skills@v1.0.0 | Locked to a specific ref |
| Git URL | git:https://git.corp.dev/repo | Non-GitHub git servers |
| GitLab URL | https://gitlab.com/group/repo | Explicit GitLab source |
| GitLab SSH | git@gitlab.com:group/repo.git | GitLab over SSH |
| Well-known HTTPS | https://cli.sentry.dev | HTTP source using .well-known skill discovery |
| Local | path:./my-skills/custom | Local directory, relative to project root |
Configuration (agents.toml)
Section titled “Configuration (agents.toml)”Top-level Fields
Section titled “Top-level Fields”| Field | Type | Default | Description |
|---|---|---|---|
version | integer | — | Schema version. Always 1. |
agents | string[] | [] | Agent targets: claude, cursor, codex, vscode, opencode |
minimum_release_age | integer | — | Minimum commit age, in minutes, before a git skill can install. |
minimum_release_age_exclude | string[] | [] | Sources that bypass the minimum release age gate. Supports org names, org/repo, and org/*. |
defaultRepositorySource | string | github | Host used for shorthand owner/repo sources. Valid values: github or gitlab. |
Skills
Section titled “Skills”| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Skill identifier. Use "*" for wildcard. |
source | string | Yes | owner/repo, owner/repo@ref, GitHub/GitLab URL, git:url, or path:relative |
ref | string | No | Tag, branch, or commit SHA to pin |
path | string | No | Subdirectory within repo, when auto-discovery fails |
exclude | string[] | No | Skills to skip. Wildcard entries only. |
MCP Servers
Section titled “MCP Servers”| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Unique server identifier |
command | string | Stdio | Command to execute |
args | string[] | No | Command arguments |
url | string | HTTP | Server URL |
headers | table | No | HTTP headers for URL servers, not needed with OAuth |
env | string[] | No | Environment variable names to pass through |
| Field | Type | Required | Description |
|---|---|---|---|
event | string | Yes | PreToolUse, PostToolUse, UserPromptSubmit, Stop |
matcher | string | No | Tool name filter |
command | string | Yes | Shell command to execute |
Scopes
Section titled “Scopes”Project Scope (default)
Section titled “Project Scope (default)”Operates on the current project. Requires agents.toml at the project root.
Skills go to .agents/skills/ and the lockfile goes to agents.lock.
User Scope
Section titled “User Scope”Manages skills shared across all projects. Files live in ~/.agents/, and you
can override that with DOTAGENTS_HOME. Symlinks go to ~/.claude/skills/ and
~/.cursor/skills/.
dotagents --user initdotagents --user add getsentry/skills --alldotagents --user installWhen no agents.toml exists and you are not inside a git repo, dotagents falls
back to user scope automatically.
Environment Variables
Section titled “Environment Variables”| Variable | Description |
|---|---|
DOTAGENTS_STATE_DIR | Override cache location. Default: ~/.local/dotagents. |
DOTAGENTS_HOME | Override user-scope location. Default: ~/.agents. |