Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .ralphai
22 changes: 12 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,17 +85,17 @@ npx dotai add ./my-local-context # local path

## Commands

| Command | Description |
| --------------- | ------------------------------------------------------ |
| `add <package>` | Discover, select, transpile, and install context |
| `remove [name]` | Remove installed context |
| `list` | List installed items |
| `find [query]` | Search for skills & preview all context in a repo |
| Command | Description |
| --------------- | --------------------------------------------------------- |
| `add <package>` | Discover, select, transpile, and install context |
| `remove [name]` | Remove installed context |
| `list` | List installed items |
| `find [query]` | Search for skills & preview all context in a repo |
| `import` | Convert native agent rules to canonical `RULES.md` format |
| `check` | Check for available updates |
| `update` | Update installed items to latest versions |
| `init [name]` | Create a context template (skill, rule, prompt, agent) |
| `restore` | Restore from lock files |
| `check` | Check for available updates |
| `update` | Update installed items to latest versions |
| `init [name]` | Create a context template (skill, rule, prompt, agent) |
| `restore` | Restore from lock files |

## Supported Targets

Expand All @@ -106,13 +106,15 @@ npx dotai add ./my-local-context # local path
| -------------- | ------ | ----- | ----------------------- | ------------------------- |
| GitHub Copilot | ✅ | ✅ | ✅ | ✅ |
| Claude Code | ✅ | ✅ | ✅ | ✅ |
| OpenCode | ✅ | ✅ | ✅ | ✅ |
| Cursor | ✅ | ✅ | ⚠️ (native/compat only) | ⚠️ (via `.github/agents`) |
| Windsurf | ✅ | ✅ | ⚠️ (native passthrough) | — |
| Cline | ✅ | ✅ | — | — |

- **Cursor prompts:** Cursor reads Copilot's `.github/prompts/` path. Canonical `PROMPT.md` is not transpiled to a Cursor-specific format.
- **Cursor agents:** Cursor reads `.github/agents/` from the Copilot path. Canonical `AGENT.md` transpiles to Copilot format, which Cursor picks up.
- **Windsurf prompts:** Windsurf workflows use a native format. Only passthrough is supported.
- **OpenCode rules:** OpenCode rules are plain markdown (no frontmatter). After installing, add the output paths to the `instructions` array in `opencode.json`.

</details>

Expand Down
22 changes: 12 additions & 10 deletions docs/cli-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Full option tables, examples, and authoring format for `dotai`. For a quick over
| `-y, --yes` | Skip confirmation prompts |
| `--all` | Shorthand for `--skill '*' --agents '*' -y` |

> **`--agents`:** A single flag for both skill install targets and transpilation targets. For skills, any of the 41 supported agents (e.g., `--agents cursor,claude-code`). For rules, prompts, and agents, the 5 transpilation targets: copilot, claude, cursor, windsurf, cline. When omitted, all detected agents are used for skills and all 5 transpilation targets for rules/prompts/agents.
> **`--agents`:** A single flag for both skill install targets and transpilation targets. For skills, any of the 41 supported agents (e.g., `--agents cursor,claude-code`). For rules, prompts, and agents, the 6 transpilation targets: copilot, claude, cursor, windsurf, cline, opencode. When omitted, all detected agents are used for skills and all 6 transpilation targets for rules/prompts/agents.

> **Zero-flag mode:** Running `dotai add owner/repo` with no type-specific flags discovers all content types (skills, rules, prompts, agents) and presents an interactive grouped selection. Use `dotai find owner/repo` for a non-interactive preview.

Expand Down Expand Up @@ -108,6 +108,7 @@ The following native directories are scanned (derived from the [target-agents re
| Cursor | `.cursor/rules/*.mdc` | — | — |
| Claude Code | `.claude/rules/*.md` | `.claude/commands/*.md` | `.claude/agents/*.md` |
| GitHub Copilot | `.github/instructions/*.instructions.md` | `.github/prompts/*.prompt.md` | `.github/agents/*.agent.md` |
| OpenCode | `.opencode/rules/*.md` | `.opencode/commands/*.md` | `.opencode/agents/*.md` |
| Windsurf | `.windsurf/rules/*.md` | `.windsurf/workflows/*.md` | — |
| Cline | `.clinerules/*.md` | — | — |

Expand Down Expand Up @@ -197,7 +198,7 @@ npx dotai add owner/repo --rule code-style --append
npx dotai add owner/repo --rule code-style --gitignore

# CI-friendly non-interactive install
npx dotai add owner/repo --all --agents copilot,claude,cursor,windsurf,cline -y
npx dotai add owner/repo --all --agents copilot,claude,cursor,windsurf,cline,opencode -y
```

## Team Sharing
Expand Down Expand Up @@ -236,6 +237,7 @@ dotai also discovers **native agent-specific files** in source repos and passes
| Cursor | `.cursor/rules/*.mdc` | — | — |
| GitHub Copilot | `.github/instructions/*.instructions.md` | `.github/prompts/*.prompt.md` | `.github/agents/*.agent.md` |
| Claude Code | `.claude/rules/*.md` | `.claude/commands/*.md` | `.claude/agents/*.md` |
| OpenCode | `.opencode/rules/*.md` | `.opencode/commands/*.md` | `.opencode/agents/*.md` |
| Windsurf | `.windsurf/rules/*.md` | `.windsurf/workflows/*.md` | — |
| Cline | `.clinerules/*.md` | — | — |

Expand Down Expand Up @@ -284,7 +286,7 @@ Override blocks work on all three canonical types:

Identity fields (`name`, `schema-version`) and structural fields (`body`) cannot be overridden.

Override keys must match a valid target agent (`github-copilot`, `claude-code`, `cursor`, `windsurf`, `cline`). Unrecognized keys produce a parser warning.
Override keys must match a valid target agent (`github-copilot`, `claude-code`, `cursor`, `windsurf`, `cline`, `opencode`). Unrecognized keys produce a parser warning.

Agent-exclusive fields like `disallowed-tools`, `max-turns`, and `background` can appear in any agent's override block. The transpiler for agents that do not support those fields ignores them, just as it does for base fields.

Expand Down Expand Up @@ -395,14 +397,14 @@ Supported fields: `name` (required), `description` (required), `globs`, `activat

The `activation` field controls how each target agent decides when to apply the rule:

| `activation` | Cursor | Windsurf | Copilot | Claude Code | Cline |
| ------------ | ------------------- | ------------------------- | ------------------ | ------------------- | ------------------------- |
| `always` | `alwaysApply: true` | `trigger: always_on` | `applyTo: "**"` | always applies | always applies |
| `auto` | agent decides | `trigger: model_decision` | `applyTo: "**"` | agent decides | always applies |
| `manual` | manual inclusion | `trigger: manual` | `applyTo: "**"` | manual | always applies |
| `glob` | `globs: <patterns>` | `trigger: glob` | `applyTo: <globs>` | `globs: <patterns>` | `**Applies to:** <globs>` |
| `activation` | Cursor | Windsurf | Copilot | Claude Code | Cline | OpenCode |
| ------------ | ------------------- | ------------------------- | ------------------ | ------------------- | ------------------------- | -------------- |
| `always` | `alwaysApply: true` | `trigger: always_on` | `applyTo: "**"` | always applies | always applies | plain markdown |
| `auto` | agent decides | `trigger: model_decision` | `applyTo: "**"` | agent decides | always applies | plain markdown |
| `manual` | manual inclusion | `trigger: manual` | `applyTo: "**"` | manual | always applies | plain markdown |
| `glob` | `globs: <patterns>` | `trigger: glob` | `applyTo: <globs>` | `globs: <patterns>` | `**Applies to:** <globs>` | plain markdown |

> **Note:** Cline uses plain markdown with no structured metadata, so all activation modes result in a rule that is always visible to the agent. Claude Code treats `globs` as independent file scoping — globs are emitted whenever present, regardless of activation mode.
> **Note:** Cline uses plain markdown with no structured metadata, so all activation modes result in a rule that is always visible to the agent. Claude Code treats `globs` as independent file scoping — globs are emitted whenever present, regardless of activation mode. OpenCode rules are plain markdown with no frontmatter; users add the file path to the `instructions` array in `opencode.json` to activate them.

### Prompt (`PROMPT.md`)

Expand Down
85 changes: 44 additions & 41 deletions docs/supported-agents.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,52 +2,54 @@

dotai installs `SKILL.md` files into the config directories of 41 agents. **GitHub Copilot**, **Claude Code**, and **OpenCode** are actively tested; other agents follow the [Agent Skills specification](https://agentskills.io) but are not individually verified.

Rules, prompts, and agent definitions use a separate set of [transpilation targets](../README.md#supported-targets) (Copilot, Claude Code, Cursor, Windsurf, Cline).
Rules, prompts, and agent definitions use a separate set of [transpilation targets](../README.md#supported-targets) (Copilot, Claude Code, Cursor, Windsurf, Cline, OpenCode). OpenCode is both a skill install target and a transpilation target.

<details>
<summary>Full agent table</summary>

<!-- supported-agents:start -->
| Agent | `--agents` | Project Path | Global Path |
|-------|-----------|--------------|-------------|
| Amp, Kimi Code CLI, Replit, Universal | `amp`, `kimi-cli`, `replit`, `universal` | `.agents/skills/` | `~/.config/agents/skills/` |
| Antigravity | `antigravity` | `.agent/skills/` | `~/.gemini/antigravity/skills/` |
| Augment | `augment` | `.augment/skills/` | `~/.augment/skills/` |
| Claude Code | `claude-code` | `.claude/skills/` | `~/.claude/skills/` |
| OpenClaw | `openclaw` | `skills/` | `~/.clawdbot/skills/` |
| Cline | `cline` | `.agents/skills/` | `~/.agents/skills/` |
| CodeBuddy | `codebuddy` | `.codebuddy/skills/` | `~/.codebuddy/skills/` |
| Codex | `codex` | `.agents/skills/` | `~/.codex/skills/` |
| Command Code | `command-code` | `.commandcode/skills/` | `~/.commandcode/skills/` |
| Continue | `continue` | `.continue/skills/` | `~/.continue/skills/` |
| Cortex Code | `cortex` | `.cortex/skills/` | `~/.snowflake/cortex/skills/` |
| Crush | `crush` | `.crush/skills/` | `~/.config/crush/skills/` |
| Cursor | `cursor` | `.agents/skills/` | `~/.cursor/skills/` |
| Droid | `droid` | `.factory/skills/` | `~/.factory/skills/` |
| Gemini CLI | `gemini-cli` | `.agents/skills/` | `~/.gemini/skills/` |
| GitHub Copilot | `github-copilot` | `.agents/skills/` | `~/.copilot/skills/` |
| Goose | `goose` | `.goose/skills/` | `~/.config/goose/skills/` |
| Junie | `junie` | `.junie/skills/` | `~/.junie/skills/` |
| iFlow CLI | `iflow-cli` | `.iflow/skills/` | `~/.iflow/skills/` |
| Kilo Code | `kilo` | `.kilocode/skills/` | `~/.kilocode/skills/` |
| Kiro CLI | `kiro-cli` | `.kiro/skills/` | `~/.kiro/skills/` |
| Kode | `kode` | `.kode/skills/` | `~/.kode/skills/` |
| MCPJam | `mcpjam` | `.mcpjam/skills/` | `~/.mcpjam/skills/` |
| Mistral Vibe | `mistral-vibe` | `.vibe/skills/` | `~/.vibe/skills/` |
| Mux | `mux` | `.mux/skills/` | `~/.mux/skills/` |
| OpenCode | `opencode` | `.agents/skills/` | `~/.config/opencode/skills/` |
| OpenHands | `openhands` | `.openhands/skills/` | `~/.openhands/skills/` |
| Pi | `pi` | `.pi/skills/` | `~/.pi/agent/skills/` |
| Qoder | `qoder` | `.qoder/skills/` | `~/.qoder/skills/` |
| Qwen Code | `qwen-code` | `.qwen/skills/` | `~/.qwen/skills/` |
| Roo Code | `roo` | `.roo/skills/` | `~/.roo/skills/` |
| Trae | `trae` | `.trae/skills/` | `~/.trae/skills/` |
| Trae CN | `trae-cn` | `.trae/skills/` | `~/.trae-cn/skills/` |
| Windsurf | `windsurf` | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` |
| Zencoder | `zencoder` | `.zencoder/skills/` | `~/.zencoder/skills/` |
| Neovate | `neovate` | `.neovate/skills/` | `~/.neovate/skills/` |
| Pochi | `pochi` | `.pochi/skills/` | `~/.pochi/skills/` |
| AdaL | `adal` | `.adal/skills/` | `~/.adal/skills/` |

| Agent | `--agents` | Project Path | Global Path |
| ------------------------------------- | ---------------------------------------- | ---------------------- | ------------------------------- |
| Amp, Kimi Code CLI, Replit, Universal | `amp`, `kimi-cli`, `replit`, `universal` | `.agents/skills/` | `~/.config/agents/skills/` |
| Antigravity | `antigravity` | `.agent/skills/` | `~/.gemini/antigravity/skills/` |
| Augment | `augment` | `.augment/skills/` | `~/.augment/skills/` |
| Claude Code | `claude-code` | `.claude/skills/` | `~/.claude/skills/` |
| OpenClaw | `openclaw` | `skills/` | `~/.clawdbot/skills/` |
| Cline | `cline` | `.agents/skills/` | `~/.agents/skills/` |
| CodeBuddy | `codebuddy` | `.codebuddy/skills/` | `~/.codebuddy/skills/` |
| Codex | `codex` | `.agents/skills/` | `~/.codex/skills/` |
| Command Code | `command-code` | `.commandcode/skills/` | `~/.commandcode/skills/` |
| Continue | `continue` | `.continue/skills/` | `~/.continue/skills/` |
| Cortex Code | `cortex` | `.cortex/skills/` | `~/.snowflake/cortex/skills/` |
| Crush | `crush` | `.crush/skills/` | `~/.config/crush/skills/` |
| Cursor | `cursor` | `.agents/skills/` | `~/.cursor/skills/` |
| Droid | `droid` | `.factory/skills/` | `~/.factory/skills/` |
| Gemini CLI | `gemini-cli` | `.agents/skills/` | `~/.gemini/skills/` |
| GitHub Copilot | `github-copilot` | `.agents/skills/` | `~/.copilot/skills/` |
| Goose | `goose` | `.goose/skills/` | `~/.config/goose/skills/` |
| Junie | `junie` | `.junie/skills/` | `~/.junie/skills/` |
| iFlow CLI | `iflow-cli` | `.iflow/skills/` | `~/.iflow/skills/` |
| Kilo Code | `kilo` | `.kilocode/skills/` | `~/.kilocode/skills/` |
| Kiro CLI | `kiro-cli` | `.kiro/skills/` | `~/.kiro/skills/` |
| Kode | `kode` | `.kode/skills/` | `~/.kode/skills/` |
| MCPJam | `mcpjam` | `.mcpjam/skills/` | `~/.mcpjam/skills/` |
| Mistral Vibe | `mistral-vibe` | `.vibe/skills/` | `~/.vibe/skills/` |
| Mux | `mux` | `.mux/skills/` | `~/.mux/skills/` |
| OpenCode | `opencode` | `.agents/skills/` | `~/.config/opencode/skills/` |
| OpenHands | `openhands` | `.openhands/skills/` | `~/.openhands/skills/` |
| Pi | `pi` | `.pi/skills/` | `~/.pi/agent/skills/` |
| Qoder | `qoder` | `.qoder/skills/` | `~/.qoder/skills/` |
| Qwen Code | `qwen-code` | `.qwen/skills/` | `~/.qwen/skills/` |
| Roo Code | `roo` | `.roo/skills/` | `~/.roo/skills/` |
| Trae | `trae` | `.trae/skills/` | `~/.trae/skills/` |
| Trae CN | `trae-cn` | `.trae/skills/` | `~/.trae-cn/skills/` |
| Windsurf | `windsurf` | `.windsurf/skills/` | `~/.codeium/windsurf/skills/` |
| Zencoder | `zencoder` | `.zencoder/skills/` | `~/.zencoder/skills/` |
| Neovate | `neovate` | `.neovate/skills/` | `~/.neovate/skills/` |
| Pochi | `pochi` | `.pochi/skills/` | `~/.pochi/skills/` |
| AdaL | `adal` | `.adal/skills/` | `~/.adal/skills/` |

<!-- supported-agents:end -->

</details>
Expand All @@ -60,6 +62,7 @@ Rules, prompts, and agent definitions use a separate set of [transpilation targe
The CLI searches for skills in these locations within a repository:

<!-- skill-discovery:start -->

- Root directory (if it contains `SKILL.md`)
- `skills/`
- `skills/.curated/`
Expand Down
Loading