fix(alquimia): render /speckit-<name> invocations for the skills-only Alquimia agent - #4137
Open
jawwad-ali wants to merge 1 commit into
Open
fix(alquimia): render /speckit-<name> invocations for the skills-only Alquimia agent#4137jawwad-ali wants to merge 1 commit into
/speckit-<name> invocations for the skills-only Alquimia agent#4137jawwad-ali wants to merge 1 commit into
Conversation
… agent
`alquimia` was the only one of the 19 SkillsIntegration subclasses absent
from every set in _invocation_style.py. It installs
`.alquimia/skills/speckit-<name>/SKILL.md` and its own
`build_command_invocation()` already returns `/speckit-plan`, but
`is_slash_skills_agent("alquimia", True)` returned False, so the two
callers that consult it emitted the dotted form Alquimia never registers:
* HookExecutor._render_hook_invocation -> `/speckit.plan`
* `specify init`'s Next Steps panel -> `/speckit.plan`
Measured before, for an identical on-disk layout:
alquimia -> 2.1 /speckit.constitution <-- wrong
droid -> 2.1 /speckit-constitution
and after:
alquimia -> 2.1 /speckit-constitution
droid -> 2.1 /speckit-constitution
Added to CONDITIONAL_SLASH_AGENTS rather than ALWAYS_SLASH_AGENTS: it is
the conservative choice, matching `claude`, which shares alquimia's
`commands_subdir: "skills"`. `specify init` writes `ai_skills: true` for
alquimia, so this covers the real path.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
alquimiais the only one of the 19SkillsIntegrationsubclasses absent from every set in_invocation_style.py(ALWAYS_SLASH_AGENTS/CONDITIONAL_SLASH_AGENTS/DOLLAR_SKILLS_AGENTS/SKILL_COLON_AGENTS).I checked that programmatically rather than by eye:
It installs
.alquimia/skills/speckit-<name>/SKILL.md, and its own inheritedbuild_command_invocation()already returns/speckit-plan. Butis_slash_skills_agent("alquimia", True)returnedFalse, so the two callers that consult the helper fell through to the dotted form Alquimia never registers:HookExecutor._render_hook_invocation(extensions/__init__.py) →/speckit.planspecify init's Next Steps panel (commands/init.py) →/speckit.planSo the integration's own renderer and the shared helper disagreed for the same on-disk layout.
Reproduction on current
main(bf88c9f)Real
specify init --here --integration <agent> --script sh --ignore-agent-tools:Both agents produce an identical
.../skills/speckit-*/SKILL.mdlayout, so there is no basis for the difference.Which set — a judgment call, stated plainly
I put it in
CONDITIONAL_SLASH_AGENTS, notALWAYS_SLASH_AGENTS, and I want to be explicit that this is a choice rather than something the code forces:ALWAYS_SLASHmember hascommands_subdir: "skills"— but so doesclaude, which isCONDITIONAL, so that field is not the discriminator.alquimianordroidnorclaudedeclares anoptions()mode toggle, so that isn't either.specify initwritesai_skills: truefor alquimia (verified), soCONDITIONALfixes the real path.CONDITIONALis the conservative option: it renders the hyphenated form only when skills are actually enabled, so it stays correct if alquimia ever gains a commands mode. If you'd rather it beALWAYSalongside the other skills-only agents, that's a one-word change and I'm happy to make it.Note on scope
The third consumer,
_resolve_command_ref_tokens, already falls back tointegration.build_command_invocation()and was therefore always correct — this changes nothing there.Verification
SkillsIntegrationsubclass is unmapped:SkillsIntegration subclasses still missing: NONE.tests/integrations: no new failures vs a clean-mainbaseline captured onbf88c9f9(18 pre-existing in scope, all Windows symlink-privilege).uvx ruff@0.15.0 check src tests→ cleanTests mirror
test_integration_droid.py::TestDroidIntegration::test_is_slash_skills_agent, including the disabled case that distinguishes conditional from always.Written with assistance from Claude Code. Bug found, reproduced, and verified by me on current
main.