diff --git a/.claude/skills/add-cdn-bundle/SKILL.md b/.agents/skills/add-cdn-bundle/SKILL.md similarity index 100% rename from .claude/skills/add-cdn-bundle/SKILL.md rename to .agents/skills/add-cdn-bundle/SKILL.md diff --git a/.agents/skills/dotagents/SKILL.md b/.agents/skills/dotagents/SKILL.md new file mode 100644 index 000000000000..85be3601419b --- /dev/null +++ b/.agents/skills/dotagents/SKILL.md @@ -0,0 +1,80 @@ +--- +name: dotagents +description: Manage agent skill dependencies with dotagents. Use when asked to "add a skill", "install skills", "remove a skill", "update skills", "dotagents init", "agents.toml", "agents.lock", "sync skills", "list skills", "set up dotagents", "configure trust", "add MCP server", "add hook", "wildcard skills", "user scope", or any dotagents-related task. +--- + +Manage agent skill dependencies declared in `agents.toml`. dotagents resolves, installs, and symlinks skills so multiple agent tools (Claude Code, Cursor, Codex, VS Code, OpenCode) discover them from `.agents/skills/`. + +## References + +Read the relevant reference when the task requires deeper detail: + +| Document | Read When | +| ---------------------------------------------------------- | ------------------------------------------------------------------------- | +| [references/cli-reference.md](references/cli-reference.md) | Full command options, flags, examples | +| [references/configuration.md](references/configuration.md) | Editing agents.toml, source formats, trust, MCP, hooks, wildcards, scopes | +| [references/config-schema.md](references/config-schema.md) | Exact field names, types, and defaults | + +## Quick Start + +```bash +# Initialize a new project (interactive TUI) +dotagents init + +# Add a skill from GitHub +dotagents add getsentry/skills find-bugs + +# Add multiple skills at once +dotagents add getsentry/skills find-bugs code-review commit + +# Add all skills from a repo +dotagents add getsentry/skills --all + +# Add a pinned skill +dotagents add getsentry/warden@v1.0.0 + +# Install all dependencies from agents.toml +dotagents install + +# List installed skills +dotagents list +``` + +## Commands + +| Command | Description | +| --------------------------- | ------------------------------------------------------------------ | +| `dotagents init` | Initialize `agents.toml` and `.agents/` directory | +| `dotagents install` | Install all skills from `agents.toml` | +| `dotagents add ` | Add a skill dependency | +| `dotagents remove ` | Remove a skill | +| `dotagents update [name]` | Update skills to latest versions | +| `dotagents sync` | Reconcile state (adopt orphans, repair symlinks, verify integrity) | +| `dotagents list` | Show installed skills and their status | +| `dotagents mcp` | Add, remove, or list MCP server declarations | + +All commands accept `--user` to operate on user scope (`~/.agents/`) instead of the current project. + +For full options and flags, read [references/cli-reference.md](references/cli-reference.md). + +## Source Formats + +| Format | Example | Description | +| ---------------- | -------------------------------------- | ------------------------------------- | +| GitHub shorthand | `getsentry/skills` | Owner/repo (resolves to GitHub HTTPS) | +| GitHub pinned | `getsentry/warden@v1.0.0` | With tag, branch, or commit | +| GitHub SSH | `git@github.com:owner/repo.git` | SSH clone URL | +| GitHub HTTPS | `https://github.com/owner/repo` | Full HTTPS URL | +| Git URL | `git:https://git.corp.dev/team/skills` | Any non-GitHub git remote | +| Local path | `path:./my-skills/custom` | Relative to project root | + +## Key Concepts + +- **`.agents/skills/`** is the canonical home for all installed skills +- **`agents.toml`** declares dependencies; **`agents.lock`** pins exact commits and integrity hashes +- **Symlinks**: `.claude/skills/`, `.cursor/skills/` point to `.agents/skills/` +- **Wildcards**: `name = "*"` installs all skills from a source, with optional `exclude` list +- **Trust**: Optional `[trust]` section restricts which sources are allowed +- **Hooks**: `[[hooks]]` declarations write tool-event hooks to each agent's config +- **Gitignore**: When `gitignore = true`, managed skills are gitignored; custom in-place skills are tracked +- **User scope**: `--user` flag manages skills in `~/.agents/` shared across all projects diff --git a/.agents/skills/dotagents/references/cli-reference.md b/.agents/skills/dotagents/references/cli-reference.md new file mode 100644 index 000000000000..a67817c959e0 --- /dev/null +++ b/.agents/skills/dotagents/references/cli-reference.md @@ -0,0 +1,215 @@ +# CLI Reference + +## Usage + +``` +dotagents [--user] [options] +``` + +### Global Flags + +| Flag | Description | +| ----------------- | --------------------------------------------------------------- | +| `--user` | Operate on user scope (`~/.agents/`) instead of current project | +| `--help`, `-h` | Show help | +| `--version`, `-V` | Show version | + +## Commands + +### `init` + +Initialize a new project with `agents.toml` and `.agents/` directory. Automatically includes the `dotagents` skill from `getsentry/dotagents` for CLI guidance, and attempts to install it. + +```bash +dotagents init +dotagents init --agents claude,cursor +dotagents init --force +dotagents --user init +``` + +| Flag | Description | +| ----------------- | ----------------------------------------------------------------------- | +| `--agents ` | Comma-separated agent targets (claude, cursor, codex, vscode, opencode) | +| `--force` | Overwrite existing `agents.toml` | + +**Interactive mode** (when TTY is available): + +1. Select agents (multiselect) +2. Manage `.gitignore` for installed skills? +3. Trust policy: allow all sources or restrict to trusted +4. If restricted: enter trusted GitHub orgs/repos (comma-separated) + +### `install` + +Install all skill dependencies declared in `agents.toml`. + +```bash +dotagents install +dotagents install --frozen +dotagents install --force +``` + +| Flag | Description | +| ---------- | ------------------------------------------------------------------ | +| `--frozen` | Fail if lockfile is missing or out of sync; do not modify lockfile | +| `--force` | Ignore locked commits and resolve all skills to latest refs | + +**Workflow:** + +1. Load config and lockfile +2. Expand wildcard entries (discover all skills from source) +3. Validate trust for each skill source +4. Resolve skills (use locked commits when available) +5. Copy skills into `.agents/skills//` +6. Write/update lockfile with integrity hashes +7. Generate `.agents/.gitignore` (if `gitignore = true`) +8. Create/verify agent symlinks +9. Write MCP and hook configs + +### `add [skill...]` + +Add one or more skill dependencies and install them. + +```bash +dotagents add getsentry/skills # Interactive selection if multiple skills +dotagents add getsentry/skills find-bugs # Add by positional name +dotagents add getsentry/skills find-bugs code-review # Add multiple skills at once +dotagents add getsentry/skills --name find-bugs # Add by --name flag +dotagents add getsentry/skills --skill find-bugs # --skill is an alias for --name +dotagents add getsentry/skills --all # Add all as wildcard +dotagents add getsentry/warden@v1.0.0 # Pinned ref (inline) +dotagents add getsentry/skills --ref v2.0.0 # Pinned ref (flag) +dotagents add git:https://git.corp.dev/team/skills # Non-GitHub git URL +dotagents add path:./my-skills/custom # Local path +``` + +| Flag | Description | +| ---------------- | ----------------------------------------------------------------- | +| `--name ` | Specify which skill to add (repeatable; alias: `--skill`) | +| `--skill ` | Alias for `--name` (repeatable) | +| `--ref ` | Pin to a specific tag, branch, or commit | +| `--all` | Add all skills from the source as a wildcard entry (`name = "*"`) | + +**Specifier formats:** + +- `owner/repo` -- GitHub shorthand +- `owner/repo@ref` -- GitHub with pinned ref +- `https://github.com/owner/repo` -- GitHub HTTPS URL +- `git@github.com:owner/repo.git` -- GitHub SSH URL +- `git:https://...` -- Non-GitHub git URL +- `path:../relative` -- Local filesystem path + +When a repo contains multiple skills, dotagents auto-discovers them. If only one skill is found, it's added automatically. If multiple are found and no names are given, an interactive picker is shown (TTY) or skills are listed (non-TTY). + +When adding multiple skills, already-existing entries are skipped with a warning. An error is only raised if all specified skills already exist. + +`--all` and `--name`/positional args are mutually exclusive. + +### `remove ` + +Remove a skill dependency. + +```bash +dotagents remove find-bugs +``` + +Removes from `agents.toml`, deletes `.agents/skills//`, updates lockfile, and regenerates `.gitignore`. + +For skills sourced from a wildcard entry (`name = "*"`), interactively prompts whether to add the skill to the wildcard's `exclude` list. If declined, the removal is cancelled. + +### `update [name]` + +Update skills to their latest versions. + +```bash +dotagents update # Update all +dotagents update find-bugs # Update one +``` + +Skips skills pinned to immutable commits (40-char SHAs). For wildcard entries, re-discovers all skills in the source -- adds new ones, removes deleted ones. Prints changelog showing old and new commits. + +### `sync` + +Reconcile project state: adopt orphans, verify integrity, repair symlinks and configs. + +```bash +dotagents sync +``` + +**Actions performed:** + +1. Adopt orphaned skills (installed but not declared in config) +2. Regenerate `.agents/.gitignore` +3. Check for missing skills +4. Verify integrity hashes +5. Repair agent symlinks +6. Verify/repair MCP configs +7. Verify/repair hook configs + +Reports issues as warnings (modified skills, missing MCP/hook configs) or errors (missing skills). + +### `list` + +Show installed skills and their status. + +```bash +dotagents list +dotagents list --json +``` + +| Flag | Description | +| -------- | -------------- | +| `--json` | Output as JSON | + +**Status indicators:** + +- `✓` ok -- installed, integrity matches +- `~` modified -- locally modified since install +- `✗` missing -- in config but not installed +- `?` unlocked -- installed but not in lockfile + +Skills from wildcard entries are marked with a wildcard indicator. + +### `mcp` + +Manage MCP (Model Context Protocol) server declarations in `agents.toml`. + +#### `mcp add ` + +Add an MCP server declaration. + +```bash +dotagents mcp add github --command npx --args -y --args @modelcontextprotocol/server-github --env GITHUB_TOKEN +dotagents mcp add remote-api --url https://mcp.example.com/sse --header "Authorization:Bearer token" +``` + +| Flag | Description | +| ---------------------- | ------------------------------------------------------- | +| `--command ` | Command to run (stdio transport) | +| `--args ` | Command arguments (repeatable) | +| `--url ` | HTTP endpoint URL (HTTP transport) | +| `--header ` | HTTP headers (repeatable) | +| `--env ` | Environment variable names to pass through (repeatable) | + +Either `--command` or `--url` is required (mutually exclusive). + +#### `mcp remove ` + +Remove an MCP server declaration. + +```bash +dotagents mcp remove github +``` + +#### `mcp list` + +Show declared MCP servers. + +```bash +dotagents mcp list +dotagents mcp list --json +``` + +| Flag | Description | +| -------- | -------------- | +| `--json` | Output as JSON | diff --git a/.agents/skills/dotagents/references/config-schema.md b/.agents/skills/dotagents/references/config-schema.md new file mode 100644 index 000000000000..eecafdf1ba72 --- /dev/null +++ b/.agents/skills/dotagents/references/config-schema.md @@ -0,0 +1,175 @@ +# agents.toml Configuration Schema + +## Top-Level Structure + +```toml +version = 1 # Required, must be 1 +gitignore = true # Optional, default true +agents = ["claude", "cursor"] # Optional, agent targets + +[project] # Optional +[trust] # Optional +[[skills]] # Optional, array of skill entries +[[mcp]] # Optional, array of MCP servers +[[hooks]] # Optional, array of hook declarations +``` + +## Top-Level Fields + +| Field | Type | Required | Default | Description | +| ----------- | -------- | -------- | ------- | ---------------------------------------------------------------- | +| `version` | integer | Yes | -- | Schema version, must be `1` | +| `gitignore` | boolean | No | `true` | Generate `.agents/.gitignore` for managed skills. | +| `agents` | string[] | No | `[]` | Agent targets: `claude`, `cursor`, `codex`, `vscode`, `opencode` | + +## Project Section + +```toml +[project] +name = "my-project" # Optional, display name +``` + +## Symlinks Section + +```toml +[symlinks] +targets = [".claude", ".cursor"] # Legacy: explicit symlink targets +``` + +When `agents` is set, symlink targets are derived automatically. The `[symlinks]` section is for backward compatibility. + +## Skills Section + +### Regular Skills + +```toml +[[skills]] +name = "find-bugs" # Required, unique skill identifier +source = "getsentry/skills" # Required, skill source +ref = "v1.0.0" # Optional, pin to tag/branch/commit +path = "tools/my-skill" # Optional, subdirectory within repo +``` + +| Field | Type | Required | Description | +| -------- | ------ | -------- | ------------------------------------------------------------- | +| `name` | string | Yes | Unique identifier. Pattern: `^[a-zA-Z0-9][a-zA-Z0-9._-]*$` | +| `source` | string | Yes | `owner/repo`, `owner/repo@ref`, `git:url`, or `path:relative` | +| `ref` | string | No | Tag, branch, or commit SHA to pin | +| `path` | string | No | Subdirectory containing the skill within the source repo | + +### Wildcard Skills + +```toml +[[skills]] +name = "*" # Wildcard: install all skills from source +source = "getsentry/skills" # Required +ref = "v1.0.0" # Optional +exclude = ["deprecated-skill"] # Optional, skills to skip +``` + +| Field | Type | Required | Description | +| --------- | ------------- | -------- | ---------------------------------- | +| `name` | literal `"*"` | Yes | Wildcard marker | +| `source` | string | Yes | Same formats as regular skills | +| `ref` | string | No | Tag, branch, or commit SHA to pin | +| `exclude` | string[] | No | Skill names to skip. Default: `[]` | + +## Trust Section + +```toml +[trust] +allow_all = true # Allow any source + +# OR restrict to specific sources: +[trust] +github_orgs = ["getsentry"] # GitHub org names +github_repos = ["ext-org/repo"] # Exact owner/repo pairs +git_domains = ["git.corp.example.com"] # Git URL domains +``` + +| Field | Type | Description | +| -------------- | -------- | ------------------------------------------ | +| `allow_all` | boolean | Allow all sources (overrides other fields) | +| `github_orgs` | string[] | Allowed GitHub organizations | +| `github_repos` | string[] | Allowed exact `owner/repo` pairs | +| `git_domains` | string[] | Allowed domains for `git:` URLs | + +No `[trust]` section = allow all sources (backward compatible). + +## MCP Section + +### Stdio Transport + +```toml +[[mcp]] +name = "github" # Required, unique server name +command = "npx" # Required for stdio +args = ["-y", "@modelcontextprotocol/server-github"] # Optional +env = ["GITHUB_TOKEN"] # Optional, env vars to pass through +``` + +### HTTP Transport + +```toml +[[mcp]] +name = "remote-api" # Required, unique server name +url = "https://mcp.example.com/sse" # Required for HTTP +``` + +| Field | Type | Required | Description | +| --------- | -------- | ---------- | ------------------------------------------ | +| `name` | string | Yes | Unique server identifier | +| `command` | string | Stdio only | Command to execute | +| `args` | string[] | No | Command arguments | +| `env` | string[] | No | Environment variable names to pass through | +| `url` | string | HTTP only | Server URL | +| `headers` | table | No | HTTP headers | + +## Hooks Section + +```toml +[[hooks]] +event = "PreToolUse" # Required +matcher = "Bash" # Optional, tool name filter +command = "my-lint-check" # Required +``` + +| Field | Type | Required | Description | +| --------- | ------ | -------- | ------------------------------------------------------- | +| `event` | string | Yes | `PreToolUse`, `PostToolUse`, `UserPromptSubmit`, `Stop` | +| `matcher` | string | No | Tool name to match (omit for all tools) | +| `command` | string | Yes | Shell command to execute | + +## Lockfile (agents.lock) + +Auto-generated. Do not edit manually. + +```toml +version = 1 + +[skills.find-bugs] +source = "getsentry/skills" +resolved_url = "https://github.com/getsentry/skills.git" +resolved_path = "plugins/sentry-skills/skills/find-bugs" +resolved_ref = "v1.0.0" +commit = "c8881564e75eff4faaecc82d1c3f13356851b6e7" +integrity = "sha256-FWmCLdOj+x+XffiEg7Bx19drylVypeKz8me9OA757js=" +``` + +| Field | Type | Description | +| --------------- | ------ | -------------------------------------------------- | +| `source` | string | Original source from `agents.toml` | +| `resolved_url` | string | Resolved git URL | +| `resolved_path` | string | Subdirectory within repo | +| `resolved_ref` | string | Ref that was resolved (omitted for default branch) | +| `commit` | string | Full 40-char SHA of resolved commit | +| `integrity` | string | `sha256-` prefixed base64 content hash | + +Local path skills have `source` and `integrity` only (no commit). + +## Environment Variables + +| Variable | Purpose | +| --------------------- | ------------------------------------------------------- | +| `DOTAGENTS_STATE_DIR` | Override cache location (default: `~/.local/dotagents`) | +| `DOTAGENTS_HOME` | Override user-scope location (default: `~/.agents`) | diff --git a/.agents/skills/dotagents/references/configuration.md b/.agents/skills/dotagents/references/configuration.md new file mode 100644 index 000000000000..1807ffe70642 --- /dev/null +++ b/.agents/skills/dotagents/references/configuration.md @@ -0,0 +1,195 @@ +# Configuration (agents.toml) + +See [config-schema.md](config-schema.md) for the complete schema reference. + +## Minimal Example + +```toml +version = 1 +agents = ["claude"] + +[[skills]] +name = "find-bugs" +source = "getsentry/skills" +``` + +## Skills + +Each skill requires `name` and `source`. Optionally pin with `ref` or specify a subdirectory with `path`. + +```toml +[[skills]] +name = "find-bugs" +source = "getsentry/skills" +ref = "v1.0.0" +path = "plugins/sentry-skills/skills/find-bugs" +``` + +**Source formats:** + +| Format | Example | Resolves to | +| ---------------- | -------------------------------------- | ----------------------------------------- | +| GitHub shorthand | `getsentry/skills` | `https://github.com/getsentry/skills.git` | +| GitHub pinned | `getsentry/skills@v1.0.0` | Same, checked out at `v1.0.0` | +| GitHub HTTPS | `https://github.com/owner/repo` | URL used directly | +| GitHub SSH | `git@github.com:owner/repo.git` | SSH clone | +| Git URL | `git:https://git.corp.dev/team/skills` | Any non-GitHub git remote | +| Local | `path:./my-skills/custom` | Relative to project root | + +**Skill name rules:** Must start with alphanumeric, contain only `[a-zA-Z0-9._-]`. + +### Wildcard Skills + +Add all skills from a source with a single entry: + +```toml +[[skills]] +name = "*" +source = "getsentry/skills" +exclude = ["deprecated-skill"] +``` + +During `install` and `update`, dotagents discovers all skills in the source and installs each one (except those in `exclude`). Each skill gets its own lockfile entry. Use `dotagents add --all` to create a wildcard entry from the CLI. + +## Trust + +Restrict which sources are allowed. Without a `[trust]` section, all sources are allowed. + +```toml +# Allow all sources explicitly +[trust] +allow_all = true +``` + +```toml +# Restrict to specific GitHub orgs and repos +[trust] +github_orgs = ["getsentry"] +github_repos = ["external-org/specific-repo"] +git_domains = ["git.corp.example.com"] +``` + +- GitHub sources match against `github_orgs` (by owner) or `github_repos` (exact owner/repo) +- Git URL sources match against `git_domains` +- Local `path:` sources are always allowed +- A source passes if it matches any rule (org OR repo OR domain) + +Trust is validated before any network operations in `add` and `install`. + +## MCP Servers + +Declare MCP servers that get written to each agent's config. + +```toml +# Stdio transport +[[mcp]] +name = "github" +command = "npx" +args = ["-y", "@modelcontextprotocol/server-github"] +env = ["GITHUB_TOKEN"] + +# HTTP transport +[[mcp]] +name = "remote-api" +url = "https://mcp.example.com/sse" +headers = { Authorization = "Bearer token" } +``` + +MCP configs are written per-agent in the appropriate format: + +- Claude: `.mcp.json` (JSON) +- Cursor: `.cursor/mcp.json` (JSON) +- Codex: `.codex/config.toml` (TOML, shared with other Codex config) +- VS Code: `.vscode/mcp.json` (JSON) +- OpenCode: `opencode.json` (JSON, shared) + +## Hooks + +Declare hooks for agent tool events. + +```toml +[[hooks]] +event = "PreToolUse" +matcher = "Bash" +command = "my-lint-check" +``` + +**Supported events:** `PreToolUse`, `PostToolUse`, `UserPromptSubmit`, `Stop` + +Hook configs are written per-agent: + +- Claude: `.claude/settings.json` (merged into existing file) +- Cursor: `.cursor/hooks.json` (dedicated file, events mapped to Cursor equivalents) +- VS Code: `.claude/settings.json` (same file as Claude) +- Codex/OpenCode: not supported (warnings emitted during install/sync) + +**Cursor event mapping:** + +- `PreToolUse` -> `beforeShellExecution` + `beforeMCPExecution` +- `PostToolUse` -> `afterFileEdit` +- `UserPromptSubmit` -> `beforeSubmitPrompt` +- `Stop` -> `stop` + +## Agents + +The `agents` array controls which agent tools get symlinks and configs. + +```toml +agents = ["claude", "cursor", "codex", "vscode", "opencode"] +``` + +Each agent gets: + +- A `/skills/` symlink pointing to `.agents/skills/` (Claude, Cursor) +- Or native discovery from `.agents/skills/` (Codex, VS Code, OpenCode) +- MCP server configs in the agent's config file +- Hook configs (where supported) + +## Scopes + +### Project Scope (default) + +Operates on the current project. Requires `agents.toml` at the project root. + +### User Scope (`--user`) + +Operates on `~/.agents/` for skills shared across all projects. Override with `DOTAGENTS_HOME`. + +```bash +dotagents --user init +dotagents --user add getsentry/skills --all +``` + +User-scope symlinks go to `~/.claude/skills/` and `~/.cursor/skills/`. + +When no `agents.toml` exists and you're not inside a git repo, dotagents falls back to user scope automatically. + +## Gitignore + +When `gitignore = true` (schema default), dotagents generates `.agents/.gitignore` listing managed (remote) skills. In-place skills (`path:.agents/skills/...`) are never gitignored since they must be tracked in git. + +When `gitignore = false`, no gitignore is created -- skills are checked into the repository. Anyone cloning gets skills without running `install`. + +## Caching + +- Cache location: `~/.local/dotagents/` (override with `DOTAGENTS_STATE_DIR`) +- Unpinned repos: cached with 24-hour TTL +- Pinned refs (40-char SHA): cached immutably, never re-fetched +- Use `dotagents install --force` to bypass cache + +## Troubleshooting + +**Skills not installing:** + +- Check `agents.toml` syntax with `dotagents list` +- Verify source is accessible (`git clone` the URL manually) +- Check trust config if using restricted mode + +**Symlinks broken:** + +- Run `dotagents sync` to repair + +**Integrity mismatch:** + +- Skill was modified locally -- run `dotagents install --force` to restore +- Or run `dotagents sync` to detect and report issues diff --git a/.claude/skills/e2e/SKILL.md b/.agents/skills/e2e/SKILL.md similarity index 100% rename from .claude/skills/e2e/SKILL.md rename to .agents/skills/e2e/SKILL.md diff --git a/.claude/skills/fix-security-vulnerability/SKILL.md b/.agents/skills/fix-security-vulnerability/SKILL.md similarity index 100% rename from .claude/skills/fix-security-vulnerability/SKILL.md rename to .agents/skills/fix-security-vulnerability/SKILL.md diff --git a/.claude/skills/triage-issue/SKILL.md b/.agents/skills/triage-issue/SKILL.md similarity index 100% rename from .claude/skills/triage-issue/SKILL.md rename to .agents/skills/triage-issue/SKILL.md diff --git a/.claude/skills/triage-issue/assets/suggested-fix-prompt.md b/.agents/skills/triage-issue/assets/suggested-fix-prompt.md similarity index 100% rename from .claude/skills/triage-issue/assets/suggested-fix-prompt.md rename to .agents/skills/triage-issue/assets/suggested-fix-prompt.md diff --git a/.claude/skills/triage-issue/assets/triage-report.md b/.agents/skills/triage-issue/assets/triage-report.md similarity index 100% rename from .claude/skills/triage-issue/assets/triage-report.md rename to .agents/skills/triage-issue/assets/triage-report.md diff --git a/.claude/skills/triage-issue/scripts/README.md b/.agents/skills/triage-issue/scripts/README.md similarity index 100% rename from .claude/skills/triage-issue/scripts/README.md rename to .agents/skills/triage-issue/scripts/README.md diff --git a/.claude/skills/triage-issue/scripts/detect_prompt_injection.py b/.agents/skills/triage-issue/scripts/detect_prompt_injection.py similarity index 100% rename from .claude/skills/triage-issue/scripts/detect_prompt_injection.py rename to .agents/skills/triage-issue/scripts/detect_prompt_injection.py diff --git a/.claude/skills/triage-issue/scripts/parse_gh_issues.py b/.agents/skills/triage-issue/scripts/parse_gh_issues.py similarity index 100% rename from .claude/skills/triage-issue/scripts/parse_gh_issues.py rename to .agents/skills/triage-issue/scripts/parse_gh_issues.py diff --git a/.claude/skills/triage-issue/scripts/post_linear_comment.py b/.agents/skills/triage-issue/scripts/post_linear_comment.py similarity index 100% rename from .claude/skills/triage-issue/scripts/post_linear_comment.py rename to .agents/skills/triage-issue/scripts/post_linear_comment.py diff --git a/.claude/skills/triage-issue/scripts/write_job_summary.py b/.agents/skills/triage-issue/scripts/write_job_summary.py similarity index 100% rename from .claude/skills/triage-issue/scripts/write_job_summary.py rename to .agents/skills/triage-issue/scripts/write_job_summary.py diff --git a/.claude/skills b/.claude/skills new file mode 120000 index 000000000000..2b7a412b8fa0 --- /dev/null +++ b/.claude/skills @@ -0,0 +1 @@ +../.agents/skills \ No newline at end of file diff --git a/agents.lock b/agents.lock new file mode 100644 index 000000000000..faf3ca74d885 --- /dev/null +++ b/agents.lock @@ -0,0 +1,10 @@ +# Auto-generated by dotagents. Do not edit. +version = 1 + +[skills.dotagents] +source = "getsentry/dotagents" +resolved_url = "https://github.com/getsentry/dotagents.git" +resolved_path = "skills/dotagents" +commit = "84ec01d363fdd50b47f2baefed742d27a564c210" +integrity = "sha256-bVx96wBmjIF6NPfPH7GMDWUJLulbAHWZhRWi1UAZ6Ws=" + diff --git a/agents.toml b/agents.toml new file mode 100644 index 000000000000..fd6dbd04c767 --- /dev/null +++ b/agents.toml @@ -0,0 +1,15 @@ +version = 1 +# Check skills into git so collaborators get them without running 'dotagents install'. +# Set to true (or remove) to gitignore managed skills instead. +gitignore = false +agents = ["claude", "cursor"] + +[trust] +github_orgs = ["getsentry"] + +github_repos = ["getsentry/skills"] + + +[[skills]] +name = "dotagents" +source = "getsentry/dotagents"