Package Manager for .agents

Declare skill dependencies in agents.toml, lock versions for reproducibility, and let every tool discover skills from one place.

Why dotagents?

One source of truth

Skills live in .agents/skills/ and symlink into .claude/, .cursor/, or wherever your tools expect them.

Reproducible

agents.lock pins exact commits and integrity hashes. --frozen in CI guarantees everyone runs the same skills.

Shareable

Skills are directories with a SKILL.md. Host them in any git repo, discover automatically, install with one command.

Multi-agent

Configure Claude, Cursor, Codex, VS Code, and OpenCode from a single agents.toml. Skills, MCP servers, and hooks.

Quick Start

Run init to set up a new project. The interactive TUI walks you through selecting agents, gitignore preference, and trust policy.

$ npx @sentry/dotagents init

Supported Agents

The agents array tells dotagents which tools to configure. Each agent gets skill symlinks, MCP server configs, and hook configs.

agents = ["claude", "cursor"]
AgentConfig DirMCP ConfigHooks
claude.claude.mcp.json.claude/settings.json
cursor.cursor.cursor/mcp.json.cursor/hooks.json
codex.codex.codex/config.toml--
vscode.vscode.vscode/mcp.json.claude/settings.json
opencode.claudeopencode.json--

Adding Skills

Use dotagents add to install skills from GitHub repos, git URLs, or local directories.

# Add a single skill from a GitHub repo
dotagents add getsentry/skills --name find-bugs

# Add all skills from a repo
dotagents add getsentry/skills --all

# Pin to a specific version
dotagents add getsentry/warden@v1.0.0

# From a non-GitHub git server
dotagents add git:https://git.corp.dev/team/skills --name review

# From a local directory
dotagents add path:./my-skills/custom

When a repo has one skill, it is added automatically. When multiple are found, use --name to pick one or --all to add them all as a wildcard entry.

Source Formats

FormatExampleDescription
GitHubgetsentry/skillsAuto-discovers skills by name
Pinnedgetsentry/skills@v1.0.0Locked to a specific ref
Git URLgit:https://git.corp.dev/repoNon-GitHub git servers
Localpath:./my-skills/customLocal directory, relative to project root

Configuration

Full agents.toml example with skills, wildcards, MCP servers, and hooks:

version = 1
gitignore = false
agents = ["claude", "cursor"]

[trust]
github_orgs = ["getsentry"]

# Individual skill
[[skills]]
name = "find-bugs"
source = "getsentry/skills"

# Pinned to a ref
[[skills]]
name = "warden-skill"
source = "getsentry/warden@v1.0.0"

# Wildcard: all skills from a repo
[[skills]]
name = "*"
source = "myorg/skills"
exclude = ["deprecated-skill"]

# MCP server (stdio)
[[mcp]]
name = "github"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = ["GITHUB_TOKEN"]

# MCP server (HTTP with OAuth)
[[mcp]]
name = "remote-api"
url = "https://mcp.example.com/sse"

# Hooks
[[hooks]]
event = "PreToolUse"
matcher = "Bash"
command = "my-lint-check"

See the CLI reference for all commands and flags, or the Security page for trust configuration.