diff --git a/HARNESSES.md b/HARNESSES.md index cdb8213c6..cc5d9ba9e 100644 --- a/HARNESSES.md +++ b/HARNESSES.md @@ -18,6 +18,7 @@ Last verified: 2026-03-24 | OpenCode | https://opencode.ai/docs/skills/ | | Pi | https://github.com/badlogic/pi-mono/blob/main/packages/coding-agent/docs/skills.md | | Trae | TBD (no official skills docs found yet) | +| Rovo Dev | https://support.atlassian.com/rovo/docs/extend-rovo-dev-cli-with-agent-skills | ## Spec Compliance @@ -29,22 +30,22 @@ Provider-specific extensions beyond the spec: `user-invocable`, `argument-hint`, Fields marked with * are spec-standard. Others are provider extensions. -| Field | Claude Code | Cursor | Gemini | Codex | Copilot | Kiro | OpenCode | Pi | -|-------|:-----------:|:------:|:------:|:-----:|:-------:|:----:|:--------:|:--:| -| `name`* | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | -| `description`* | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | -| `license`* | Yes | Yes | Ignored | No | Yes | Yes | Yes | Yes | -| `compatibility`* | Yes | Yes | Ignored | No | Yes | Yes | Yes | Yes | -| `metadata`* | Yes | Yes | Ignored | No | Yes | Yes | Yes | Yes | -| `allowed-tools`* | Yes | No | Ignored | No | No | No | Yes | Yes | -| `user-invocable` | Yes | No | No | No | Yes | No | Yes | No | -| `argument-hint` | Yes | No | No | No | Yes | No | Yes | No | -| `disable-model-invocation` | Yes | Yes | No | No | Yes | No | Yes | Yes | -| `model` | Yes | No | No | No | No | No | Yes | No | -| `effort` | Yes | No | No | No | No | No | No | No | -| `context` | Yes | No | No | No | No | No | No | No | -| `agent` | Yes | No | No | No | No | No | Yes | No | -| `hooks` | Yes | No | No | No | No | No | No | No | +| Field | Claude Code | Cursor | Gemini | Codex | Copilot | Kiro | OpenCode | Pi | Rovo Dev | +|-------|:-----------:|:------:|:------:|:-----:|:-------:|:----:|:--------:|:--:|:--------:| +| `name`* | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | +| `description`* | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | +| `license`* | Yes | Yes | Ignored | No | Yes | Yes | Yes | Yes | Yes | +| `compatibility`* | Yes | Yes | Ignored | No | Yes | Yes | Yes | Yes | Yes | +| `metadata`* | Yes | Yes | Ignored | No | Yes | Yes | Yes | Yes | Yes | +| `allowed-tools`* | Yes | No | Ignored | No | No | No | Yes | Yes | Yes | +| `user-invocable` | Yes | No | No | No | Yes | No | Yes | No | Yes | +| `argument-hint` | Yes | No | No | No | Yes | No | Yes | No | Yes | +| `disable-model-invocation` | Yes | Yes | No | No | Yes | No | Yes | Yes | TBD | +| `model` | Yes | No | No | No | No | No | Yes | No | No | +| `effort` | Yes | No | No | No | No | No | No | No | No | +| `context` | Yes | No | No | No | No | No | No | No | No | +| `agent` | Yes | No | No | No | No | No | Yes | No | No | +| `hooks` | Yes | No | No | No | No | No | No | No | No | Notes: - Gemini CLI validates only `name` and `description`; other spec fields are parsed but ignored. @@ -66,6 +67,7 @@ Notes: | Pi | `.pi/skills/` | `.agents/skills/` | | Trae China | `.trae-cn/skills/` | TBD | | Trae International | `.trae/skills/` | TBD | +| Rovo Dev | `.rovodev/skills/` | `~/.rovodev/skills/` (user-level) | All harnesses support the `{skill-name}/SKILL.md` directory structure with optional `reference/`, `scripts/`, and `assets/` subdirectories. diff --git a/scripts/lib/transformers/index.js b/scripts/lib/transformers/index.js index c8b8b49ca..2d7ab7a16 100644 --- a/scripts/lib/transformers/index.js +++ b/scripts/lib/transformers/index.js @@ -9,5 +9,6 @@ export const transformAgents = createTransformer(PROVIDERS.agents); export const transformKiro = createTransformer(PROVIDERS.kiro); export const transformOpenCode = createTransformer(PROVIDERS.opencode); export const transformPi = createTransformer(PROVIDERS.pi); +export const transformRovoDev = createTransformer(PROVIDERS['rovo-dev']); export { createTransformer, PROVIDERS }; diff --git a/scripts/lib/transformers/providers.js b/scripts/lib/transformers/providers.js index 8230c98f1..6cc863061 100644 --- a/scripts/lib/transformers/providers.js +++ b/scripts/lib/transformers/providers.js @@ -70,4 +70,10 @@ export const PROVIDERS = { displayName: 'Trae', frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata'], }, + 'rovo-dev': { + provider: 'rovo-dev', + configDir: '.rovodev', + displayName: 'Rovo Dev', + frontmatterFields: ['user-invocable', 'argument-hint', 'license', 'compatibility', 'metadata', 'allowed-tools'], + }, }; diff --git a/scripts/lib/utils.js b/scripts/lib/utils.js index ee8c8814d..753f73240 100644 --- a/scripts/lib/utils.js +++ b/scripts/lib/utils.js @@ -321,6 +321,12 @@ export const PROVIDER_PLACEHOLDERS = { config_file: 'RULES.md', ask_instruction: 'ask the user directly to clarify what you cannot infer.', command_prefix: '/' + }, + 'rovo-dev': { + model: 'Rovo Dev', + config_file: 'AGENTS.md', + ask_instruction: 'ask the user directly to clarify what you cannot infer.', + command_prefix: '/' } };