feat: add support for rovodev#2539
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new built-in integration for Atlassian Rovo Dev (invoked via acli rovodev), including scaffolding and workflow dispatch support so specify init --integration rovodev and workflow steps can run commands/prompts through the agent.
Changes:
- Introduces
RovodevIntegrationthat scaffolds.rovodev/skills/, generates.rovodev/prompts/*.prompt.mdwrappers, and merges/creates.rovodev/prompts.yml. - Updates workflow
commandandpromptsteps to detect CLIs whose executable differs from the integration key (e.g.,rovodev→acli). - Adds documentation, catalog metadata, and comprehensive tests for rovodev setup + dispatch + consistency checks.
Show a summary per file
| File | Description |
|---|---|
src/specify_cli/integrations/rovodev/__init__.py |
Adds the new RovoDev integration implementation (skills + prompt wrappers + prompts manifest + CLI args). |
src/specify_cli/integrations/__init__.py |
Registers RovodevIntegration in the built-in integration registry. |
src/specify_cli/__init__.py |
Updates tool detection so check_tool("rovodev") resolves via acli. |
src/specify_cli/workflows/steps/command/__init__.py |
Updates CLI presence checks to fall back to the executable from build_exec_args(). |
src/specify_cli/workflows/steps/prompt/__init__.py |
Same CLI presence check update for prompt dispatch. |
integrations/catalog.json |
Adds rovodev catalog entry and updates updated_at. |
docs/reference/integrations.md |
Documents the new rovodev integration behavior. |
tests/integrations/test_integration_rovodev.py |
New dedicated tests for rovodev scaffolding, prompts.yml merge behavior, and init integration output. |
tests/integrations/test_registry.py |
Adds rovodev to the global integration key list used by registry tests. |
tests/test_agent_config_consistency.py |
Adds consistency assertions ensuring rovodev appears across runtime config surfaces. |
tests/test_check_tool.py |
Adds test verifying rovodev detection uses acli. |
tests/test_workflows.py |
Adds workflow dispatch tests validating rovodev is dispatchable via acli. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 12/12 changed files
- Comments generated: 2
| # Check if the CLI tool is actually installed. | ||
| # Try the integration key first (covers most agents), then fall back | ||
| # to exec_args[0] for agents whose executable differs (e.g. rovodev → acli). | ||
| if not (shutil.which(impl.key) or shutil.which(exec_args[0])): | ||
| return None |
| # Check if the CLI tool is actually installed. | ||
| # Try the integration key first (covers most agents), then fall back | ||
| # to exec_args[0] for agents whose executable differs (e.g. rovodev → acli). | ||
| if not (shutil.which(impl.key) or shutil.which(exec_args[0])): | ||
| return None |
mnriem
left a comment
There was a problem hiding this comment.
Please limit the changes to the integration and please do not include unrelated changes. Thanks!
Is the ask to remove the changes to src/specify_cli/workflows/steps/prompt/init.py and Comment thread This integration uses a command that is different from the name, ie. its invoked as |
|
Fair point. We'll follow it up with another issue/PR to untangle this properly, but we'll proceed with the process for your PR. Please address the Copilot feedback |
Description
This adds support for the rovodev LLM agent
Testing
uv run specify --helpuv sync && uv run pytestAI Disclosure
To plumb and write the boilerplate code and review the changes. The approach is mine and the testing was done manually. I reviewed the code.
Test selection reasoning
src/specify_cli/__init__.pyspecify init,specify checkcheck_tool()gains rovodev→acli resolution branchsrc/specify_cli/integrations/__init__.pyspecify init --integration rovodevRovodevIntegrationin the global registrysrc/specify_cli/integrations/rovodev/__init__.pyspecify init --integration rovodevsrc/specify_cli/workflows/steps/command/__init__.pysrc/specify_cli/workflows/steps/prompt/__init__.pyintegrations/catalog.jsondocs/reference/integrations.mdpyproject.tomlspecify initincludes rovodev assetsCHANGELOG.mdtests/integrations/test_integration_rovodev.pytests/integrations/test_registry.py"rovodev"toALL_INTEGRATION_KEYStests/test_agent_config_consistency.pytests/test_check_tool.pytest_rovodev_uses_acli_executabletests/test_workflows.pyRequired tests
specify init <temp-dir>/speckit-test --integration rovodev— verify scaffolding creates.rovodev/skills/speckit-*/SKILL.md,.rovodev/prompts/*.prompt.md,.rovodev/prompts.yml, andAGENTS.mdcontext section/speckit.specify— minimum required test per CONTRIBUTING.md for init/scaffolding changes; run in the T1 scaffolded project (prerequisite: T1)Manual test results
Agent: [rovodev cli] | OS/Shell: [ macOS/fish]
speckit.analyzespeckit.checklistspeckit.clarifyspeckit.constitutionspeckit.implementspeckit.planspeckit.specifyspeckit.tasksspeckit.taskstoissues