Skip to content

fix(integrations): render hyphenated /speckit-<name> for Droid (always-slash agent)#3688

Open
jawwad-ali wants to merge 1 commit into
github:mainfrom
jawwad-ali:fix/droid-always-slash-invocation
Open

fix(integrations): render hyphenated /speckit-<name> for Droid (always-slash agent)#3688
jawwad-ali wants to merge 1 commit into
github:mainfrom
jawwad-ali:fix/droid-always-slash-invocation

Conversation

@jawwad-ali

Copy link
Copy Markdown
Contributor

What

DroidIntegration is an always-skills agent — it installs commands as .factory/skills/speckit-<name>/SKILL.md and its build_command_invocation returns the hyphenated /speckit-<name>. But "droid" was missing from every set in _invocation_style.py (DOLLAR_SKILLS_AGENTS, ALWAYS_SLASH_AGENTS, CONDITIONAL_SLASH_AGENTS), so is_slash_skills_agent("droid", True) returned False.

As a result, both HookExecutor._render_hook_invocation and specify init's next-steps _display_cmd fell through to the dotted /speckit.<name> form — a command Droid never registers. Hook dispatch and the printed getting-started commands pointed at nonexistent commands for Droid users.

Fix

Add "droid" to ALWAYS_SLASH_AGENTS, matching its always-skills siblings grok/trae/zed/devin (each added to that set by its own integration PR — e.g. grok in #3535, zed in #2780; Droid's #3587 omitted it).

Tests

tests/integrations/test_integration_droid.py::TestDroidIntegration::test_is_slash_skills_agent — asserts is_slash_skills_agent("droid", True) is True (fails before the fix). Full droid suite (46 tests) passes; ruff clean.


AI-assisted: authored with Claude Code. I confirmed Droid is an always-skills SkillsIntegration (hyphenated build_command_invocation, no is_skills_mode override) and that grok/trae/zed/devin establish the ALWAYS_SLASH_AGENTS precedent.

…s-slash agent)

DroidIntegration is an always-skills agent: it installs commands as
.factory/skills/speckit-<name>/SKILL.md and its build_command_invocation
returns the hyphenated /speckit-<name>. But "droid" was missing from every
_invocation_style set, so is_slash_skills_agent("droid", True) returned False
and both HookExecutor._render_hook_invocation and `specify init` next-steps
fell through to the dotted /speckit.<name> form — a command Droid never
registers.

Add "droid" to ALWAYS_SLASH_AGENTS, matching its always-skills siblings
grok/trae/zed/devin (each added there by their own integration PR; droid's
github#3587 omitted it).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes Droid command rendering to use its registered /speckit-<name> format.

Changes:

  • Adds Droid to the always-slash agent set.
  • Adds regression coverage for Droid invocation detection.
Show a summary per file
File Description
src/specify_cli/_invocation_style.py Registers Droid’s invocation style.
tests/integrations/test_integration_droid.py Tests slash-skills detection.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 2/2 changed files
  • Comments generated: 1
  • Review effort level: Medium

/speckit.<name> form Droid never registers (mirrors grok/trae/zed/devin)."""
from specify_cli._invocation_style import is_slash_skills_agent

assert is_slash_skills_agent("droid", True) is True

@mnriem mnriem left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please address Copilot feedback

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants