From 4bff8086d3eb0cfaff98fc0b347b05302d4f9820 Mon Sep 17 00:00:00 2001 From: Dan Minshew Date: Sun, 29 Mar 2026 22:12:27 -0500 Subject: [PATCH 1/2] Add harness support for RovoDev --- HARNESSES.md | 34 ++++++++++++++------------- scripts/lib/transformers/index.js | 1 + scripts/lib/transformers/providers.js | 6 +++++ scripts/lib/utils.js | 6 +++++ 4 files changed, 31 insertions(+), 16 deletions(-) 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: '/' } }; From 65dd195e82b1b04129e760d083817f72b9853b6a Mon Sep 17 00:00:00 2001 From: Dan Minshew Date: Tue, 31 Mar 2026 16:55:53 -0500 Subject: [PATCH 2/2] Add RovoDev info to README --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 16a72f7aa..ecbcf9993 100644 --- a/README.md +++ b/README.md @@ -177,6 +177,15 @@ cp -r dist/trae/.trae/skills/* ~/.trae/skills/ > > After copying, restart Trae IDE to activate the skills. +**Rovo Dev:** +```bash +# Project-specific +cp -r dist/rovo-dev/.rovodev your-project/ + +# Or global (applies to all projects) +cp -r dist/rovo-dev/.rovodev/skills/* ~/.rovodev/skills/ +``` + ## Usage Once installed, use commands in your AI harness: @@ -208,6 +217,7 @@ Most commands accept an optional argument to focus on a specific area: - [VS Code Copilot](https://code.visualstudio.com) - [Kiro](https://kiro.dev) - [Trae](https://trae.ai) +- [Rovo Dev](https://www.atlassian.com/software/rovo) ## Contributing