feat: add Factory Droid CLI integration (#822)#3587
Conversation
There was a problem hiding this comment.
Pull request overview
Adds Factory Droid CLI as a skills-based integration with workflow execution support.
Changes:
- Registers Droid and scaffolds
.factory/skills/. - Adds execution/frontmatter tests and catalog metadata.
- Adds Droid installation to the devcontainer.
Show a summary per file
| File | Description |
|---|---|
src/specify_cli/integrations/droid/__init__.py |
Implements Droid integration. |
src/specify_cli/integrations/__init__.py |
Registers Droid. |
tests/integrations/test_integration_droid.py |
Tests Droid behavior. |
tests/integrations/test_registry.py |
Adds Droid to registry expectations. |
integrations/catalog.json |
Adds Droid catalog metadata. |
.devcontainer/post-create.sh |
Installs Droid CLI. |
Review details
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 6/6 changed files
- Comments generated: 4
- Review effort level: Medium
mnriem
left a comment
There was a problem hiding this comment.
Please address Copilot feedback. If not applicable, please explain why. And fix test & lint errors
e0ed205 to
dc31c57
Compare
|
@mnriem please help check again, I already updated the PR |
mnriem
left a comment
There was a problem hiding this comment.
Please address Copilot feedback
dc31c57 to
4d52c37
Compare
|
already resolved @mnriem , thanks for the review |
|
Please address Copilot feedback and fix test & lint errors |
Adds a skills-based integration for the Factory Droid CLI alongside the existing Claude/Codex skills agents. The integration scaffolds `.factory/skills/speckit-*` directories and documents the install step in the devcontainer post-create script via the official npm distribution (`npm install -g droid`), which matches the layout of every other CLI install block above and avoids executing an unverified remote shell installer. The integration is also added to the user-facing supported-agent table in `docs/reference/integrations.md` so the new key is discoverable from the published documentation, as required by the "Updating this documentation" guideline in AGENTS.md. Operator-supplied extra args via `SPECKIT_INTEGRATION_DROID_EXTRA_ARGS` are appended after the canonical Spec Kit flags so the canonical flags are always present in argv. The Factory Droid CLI parser uses last-wins duplicate-flag semantics (verified empirically against droid 0.175.0), so a later operator-supplied value may override the canonical one — this is a deliberate inversion of the cursor-agent / opencode / codex ordering. Includes: - `src/specify_cli/integrations/droid/__init__.py` (subpackage) - `tests/integrations/test_integration_droid.py` (46 tests, including regression coverage for the no-trailing-newline frontmatter fusion bug, idempotent skill injection, and env-var path resolution) - `integrations/catalog.json` entry + `updated_at` bump - Alphabetical registration in `src/specify_cli/integrations/__init__.py` and `tests/integrations/test_registry.py` - Devcontainer Droid install block via the npm distribution (`npm install -g droid`), replacing the earlier curl-based installer - User-facing supported-agent table row in `docs/reference/integrations.md` (key `droid`, `.factory/skills/` layout, `/speckit-<command>` invocation) - `AGENT_CONFIG` entry and matching alphabetical entries in `tests/test_agent_config_consistency.py` (`ISSUE_TEMPLATE_AGENT_KEYS`) and the three issue-template dropdowns (`agent_request.yml`, `bug_report.yml`, `feature_request.yml`) so `test_issue_template_agent_lists_match_runtime_integrations` keeps the runtime/template surfaces synchronized Closes github#822 Assisted-by: Droid (oracle-reviewer) Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> Assisted-by: Droid (model: MiniMax M3, autonomous)
4d52c37 to
8d8fc33
Compare
|
updated, sorry forgot to run the test again earlier @mnriem |
There was a problem hiding this comment.
Review details
Comments suppressed due to low confidence (2)
src/specify_cli/integrations/droid/init.py:118
- Factory documents
droid execas read-only/spec mode unless--autois supplied. This argv therefore lets workflow dispatch succeed while write-oriented Spec Kit commands (for example, specify/implement) cannot create or modify their artifacts. Add an appropriate non-unsafe autonomy setting (such as a configurable--autolevel) rather than requiring every operator to discover and setSPECKIT_INTEGRATION_DROID_EXTRA_ARGS.
args = [
self._resolve_executable(),
"exec",
prompt,
]
.devcontainer/post-create.sh:101
- The PR description says this block mirrors Kiro's downloaded installer and chains an EXIT trap for a second temporary file, but the implementation uses npm and creates neither a temporary file nor a trap. Please update the description to match this npm-based installation, or restore the claimed verified-installer flow so reviewers are not relying on nonexistent cleanup/checksum handling.
run_command "npm install -g droid@latest"
- Files reviewed: 11/11 changed files
- Comments generated: 0 new
- Review effort level: Medium
|
Thank you! |
Adds a skills-based integration for the Factory Droid CLI alongside the existing Claude/Codex skills agents. The integration scaffolds
.factory/skills/speckit-*directories, injects canonical--model/--output-formatflags ahead of any operator-supplied extra args, and documents the install step in the devcontainer post-create script (mirroring the Kiro install layout, with a chained EXIT trap so both installer tmpfiles are released on script exit).Includes:
src/specify_cli/integrations/droid/__init__.py(subpackage)tests/integrations/test_integration_droid.py(46 tests, including regression coverage for the no-trailing-newline frontmatter fusion bug, idempotent skill injection, and env-var path resolution)integrations/catalog.jsonentry +updated_atbumpsrc/specify_cli/integrations/__init__.pyandtests/integrations/test_registry.pyCloses #822
Assisted-by: Droid (oracle-reviewer)
Description
This PR add support for factory droid cli integration (https://factory.ai/product/cli)
Testing
since this is a new isolated module for adding new integration, I already added new tests cases to make sure the integration running correctly.
uv run specify --helpuv sync && uv run pytestAI Disclosure
I use AI for research, planning, implementing, testing and reviewing the changes. I did review the research and plan results, but I don't do much on reviewing the implementation, it's majorly reviewed by AI.