You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[qodercli] Slash commands not recognized in Qoder IDE 1.24+ — needs skills-based layout migration #4199
The qodercli integration currently scaffolds commands as flat .qoder/commands/speckit.<name>.md files. Starting with Qoder IDE 1.24.0 (released Aug 12, 2026), the IDE no longer scans .qoder/commands/ for slash commands. It only discovers skills in the .qoder/skills/{skill-name}/SKILL.md format (with a name field in frontmatter). This means all /speckit-* commands silently stopped working after the IDE auto-upgraded to 1.24.x.
Type / in the chat — speckit commands do not appear in the autocomplete list
Manually typing /speckit.specify — not recognized (rawCommandCount: 0 in quest.log)
Expected Behavior
The qodercli integration should scaffold skills in the .qoder/skills/speckit-<name>/SKILL.md format, similar to how the claude integration uses .claude/skills/, codex uses .agents/skills/, etc.
Actual Behavior
Qoder IDE 1.24.x no longer scans .qoder/commands/ for slash commands. It only discovers skills in .qoder/skills/{skill-name}/SKILL.md format with a name field in frontmatter. The quest.log shows rawCommandCount:0 after upgrade, confirming the commands are not recognized.
Specify CLI Version
0.16.4
AI Agent
Alquimia AI
Operating System
macOS 26.5.2 (darwin-arm64)
Python Version
Python 3.11.0
Error Logs
Additional Context
Root Cause
Qoder IDE 1.24.x unified slash commands and skills into a single discovery mechanism. Per the official Skills docs, skills must be located at .qoder/skills/{skill-name}/SKILL.md and include a name field in frontmatter.
Suggested Fix
Migrate qodercli to a SkillsIntegration subclass
Output to .qoder/skills/speckit-<name>/SKILL.md instead of .qoder/commands/speckit.<name>.md
Add name: speckit-<name> to frontmatter
Use hyphenated naming (speckit-analyze) instead of dotted (speckit.analyze)
Reported by @mengqiang81. The qodercli integration scaffolds commands as flat .qoder/commands/speckit.*.md files. Qoder IDE 1.24.0 (released Aug 12, 2026) dropped scanning .qoder/commands/ for slash commands and now only discovers skills in .qoder/skills/{skill-name}/SKILL.md format with a name field in frontmatter. All /speckit-* commands silently stopped working after the IDE auto-upgraded to 1.24.x. The user confirms rawCommandCount: 0 in quest.log post-upgrade.
After Qoder IDE auto-upgrades to 1.24+, all speckit slash commands disappear from autocomplete and manual invocations are not recognized (rawCommandCount: 0). The integration installs files in the old .qoder/commands/ path which the new IDE no longer scans.
Type / in the chat — speckit commands do not appear in autocomplete
Manually type /speckit.specify — not recognized
Suspected Code Paths
src/specify_cli/integrations/qodercli/__init__.py:6-21 — QodercliIntegration extends MarkdownIntegration with registrar_config["dir"] = ".qoder/commands" and extension = ".md". This is the direct source of the wrong output layout.
src/specify_cli/integrations/base.py — SkillsIntegration class provides the skills-based layout (speckit-<name>/SKILL.md) already used by codex, claude, and similar integrations. This is the correct base class for the fix.
Root Cause Hypothesis
QodercliIntegration subclasses MarkdownIntegration and outputs flat .md files under .qoder/commands/. Qoder IDE 1.24.0 unified its command/skill discovery to exclusively use the .qoder/skills/{skill-name}/SKILL.md layout (per the agentskills.io spec). Because the integration has not been updated to match the new layout, all installed commands are simply invisible to the IDE. Confidence: high — the code path is straightforward, the IDE version change is documented in the report, and the SkillsIntegration base class already implements the correct layout for analogous integrations.
Proposed Remediation
Preferred: Migrate QodercliIntegration from MarkdownIntegration to SkillsIntegration, updating config and registrar_config to target .qoder/skills/ with the speckit-<name>/SKILL.md extension pattern — mirroring how CodexIntegration and ClaudeIntegration are implemented:
The SkillsIntegration base class already handles injecting a name field into frontmatter and producing the directory-per-skill layout, so no custom setup() override should be needed. The dotted naming (speckit.analyze) should also be replaced with hyphenated naming (speckit-analyze) to match the new skill directory convention.
A migration notice (or a specify integration reinstall qodercli hint) should be added so existing projects on the old .qoder/commands/ layout get updated.
Alternatives:
Keep MarkdownIntegration and add a custom setup() that also writes a .qoder/skills/ tree — doubles the output and adds maintenance overhead; not recommended.
Files likely to change:
src/specify_cli/integrations/qodercli/__init__.py — change base class and config values
tests/integrations/test_integration_qodercli.py — update expected paths from .qoder/commands/ to .qoder/skills/speckit-*/SKILL.md
Tests to add or update:
Assert installed files land under .qoder/skills/speckit-<name>/SKILL.md, not .qoder/commands/.
Assert each SKILL.md contains a name: speckit-<name> frontmatter field.
Assert uninstall removes the per-skill directories cleanly.
If a migration path is added, add a test that a project with old .qoder/commands/ files is handled gracefully on reinstall.
Risks & Considerations
Existing projects break on reinstall: Users who already have .qoder/commands/ files from an older install will need to re-run specify integration install qodercli (or an equivalent migration command) to pick up the new layout. Old files will not be removed automatically unless they are still tracked in the manifest.
No API breakage in the Python package surface — this is a config/output-path change only.
Naming change (dotted → hyphenated) is a breaking change for any tooling or scripts that reference the old slash-command names by literal string.
Open Questions
[NEEDS CLARIFICATION: What is the exact minimum Qoder IDE version that dropped .qoder/commands/ scanning — is it strictly 1.24.0 or was there a minor release before that?]
[NEEDS CLARIFICATION: Does Qoder IDE 1.24+ still fall back to .qoder/commands/ for older projects, or is the break hard for all versions?]
[NEEDS CLARIFICATION: Is there an official Qoder migration guide or changelog entry that can be linked in the release notes for this fix?]
Posted on behalf of @mnriem by GitHub Copilot (model: claude-sonnet-4.6, autonomous)
Draft PR opened to fix qodercli-skills-migration: migrated QodercliIntegration from MarkdownIntegration to SkillsIntegration, so commands are now scaffolded as .qoder/skills/speckit-<name>/SKILL.md files that Qoder IDE 1.24+ recognises.
Next steps:
Review the draft PR (linked above) — the change is two files, mirroring the existing CodexIntegration pattern.
If the fix looks good, approve and merge.
Optionally trigger the bug-test stage (if configured in this repository) by labeling the PR accordingly once it's ready.
Note: existing projects with old .qoder/commands/ files will need specify integration install qodercli re-run to pick up the new layout.
Posted on behalf of @mnriem by GitHub Copilot (model: claude-sonnet-4.6, autonomous)
The proposed fix migrates QodercliIntegration from MarkdownIntegration to SkillsIntegration and correctly updates the output layout to .qoder/skills/speckit-<name>/SKILL.md. 29 of 30 integration-specific tests pass. One test fails: test_options_include_skills_flag, which expects the integration to expose a --skills CLI flag (via an options() override) as other SkillsIntegration subclasses do (e.g. CodexIntegration). The fix omits this override. No regressions were found in the broader integration suite (2,682 passed, 3 skipped).
Test Results
Focused suite (test_integration_qodercli.py)
Metric
Count
Passed
29
Failed
1
Skipped
0
Errored
0
Duration
~1.2 s
Broad regression check (tests/integrations/)
Metric
Count
Passed
2682
Failed
1
Skipped
3
Errored
0
Duration
~112 s
Failures
TestQodercliIntegration::test_options_include_skills_flag — assert 0 == 1 where 0 = len([]): the test expects integration.options() to contain exactly one option named --skills with is_flag=True, but QodercliIntegration does not define an options() override and returns an empty list.
The fix needs to add an options() classmethod mirroring CodexIntegration:
from ..baseimportIntegrationOption, SkillsIntegration`@classmethod`defoptions(cls) ->list[IntegrationOption]:
opts=super().options()
opts.append(
IntegrationOption(
"--skills",
is_flag=True,
default=True,
help="Install as agent skills (default for Qoder)",
)
)
returnopts
Verification vs. Historical Fix
Not applicable (no historical fix referenced — this is a fresh bug report for an ongoing regression).
Notes & Caveats
The test environment does not have uv on PATH; pytest from Python 3.14 (pytest 9.1.1) was used directly. The package was importable without explicit installation (editable install already resolved in the Python 3.14 site-packages).
All 29 other qodercli tests pass, confirming the core migration (base class, output directory, file naming, frontmatter injection, manifest tracking, install/uninstall round-trip) is correct.
The single failure is a straightforward omission — the fix does not implement the options() override required to expose the --skills CLI flag.
Unverified
(none)
Posted on behalf of @mnriem by GitHub Copilot (model: claude-sonnet-4.6, autonomous)
Activity
github-actions commentedon Aug 19, 2026
Bug assessment — qodercli-skills-migration: Valid · severity high
Bug Assessment: qodercli slash commands not recognized in Qoder IDE 1.24+
Report (summarized)
Reported by @mengqiang81. The
qodercliintegration scaffolds commands as flat.qoder/commands/speckit.*.mdfiles. Qoder IDE 1.24.0 (released Aug 12, 2026) dropped scanning.qoder/commands/for slash commands and now only discovers skills in.qoder/skills/{skill-name}/SKILL.mdformat with anamefield in frontmatter. All/speckit-*commands silently stopped working after the IDE auto-upgraded to 1.24.x. The user confirmsrawCommandCount: 0inquest.logpost-upgrade.Specify CLI version: 0.16.4. OS: macOS 26.5.2 darwin-arm64. Python 3.11.0.
Symptom
After Qoder IDE auto-upgrades to 1.24+, all speckit slash commands disappear from autocomplete and manual invocations are not recognized (
rawCommandCount: 0). The integration installs files in the old.qoder/commands/path which the new IDE no longer scans.Reproduction
specify init my-project --integration qodercli— generates.qoder/commands/speckit.*.md/in the chat — speckit commands do not appear in autocomplete/speckit.specify— not recognizedSuspected Code Paths
src/specify_cli/integrations/qodercli/__init__.py:6-21—QodercliIntegrationextendsMarkdownIntegrationwithregistrar_config["dir"] = ".qoder/commands"andextension = ".md". This is the direct source of the wrong output layout.src/specify_cli/integrations/base.py—SkillsIntegrationclass provides the skills-based layout (speckit-<name>/SKILL.md) already used bycodex,claude, and similar integrations. This is the correct base class for the fix.Root Cause Hypothesis
QodercliIntegrationsubclassesMarkdownIntegrationand outputs flat.mdfiles under.qoder/commands/. Qoder IDE 1.24.0 unified its command/skill discovery to exclusively use the.qoder/skills/{skill-name}/SKILL.mdlayout (per the agentskills.io spec). Because the integration has not been updated to match the new layout, all installed commands are simply invisible to the IDE. Confidence: high — the code path is straightforward, the IDE version change is documented in the report, and theSkillsIntegrationbase class already implements the correct layout for analogous integrations.Proposed Remediation
Preferred: Migrate
QodercliIntegrationfromMarkdownIntegrationtoSkillsIntegration, updatingconfigandregistrar_configto target.qoder/skills/with thespeckit-<name>/SKILL.mdextension pattern — mirroring howCodexIntegrationandClaudeIntegrationare implemented:The
SkillsIntegrationbase class already handles injecting anamefield into frontmatter and producing the directory-per-skill layout, so no customsetup()override should be needed. The dotted naming (speckit.analyze) should also be replaced with hyphenated naming (speckit-analyze) to match the new skill directory convention.A migration notice (or a
specify integration reinstall qoderclihint) should be added so existing projects on the old.qoder/commands/layout get updated.Alternatives:
MarkdownIntegrationand add a customsetup()that also writes a.qoder/skills/tree — doubles the output and adds maintenance overhead; not recommended.Files likely to change:
src/specify_cli/integrations/qodercli/__init__.py— change base class and config valuestests/integrations/test_integration_qodercli.py— update expected paths from.qoder/commands/to.qoder/skills/speckit-*/SKILL.mdTests to add or update:
.qoder/skills/speckit-<name>/SKILL.md, not.qoder/commands/.SKILL.mdcontains aname: speckit-<name>frontmatter field..qoder/commands/files is handled gracefully on reinstall.Risks & Considerations
.qoder/commands/files from an older install will need to re-runspecify integration install qodercli(or an equivalent migration command) to pick up the new layout. Old files will not be removed automatically unless they are still tracked in the manifest.Open Questions
.qoder/commands/scanning — is it strictly 1.24.0 or was there a minor release before that?].qoder/commands/for older projects, or is the break hard for all versions?]Posted on behalf of
@mnriemby GitHub Copilot (model: claude-sonnet-4.6, autonomous)Fix qodercli-skills-migration: migrate QodercliIntegration to SkillsI…
github-actions commentedon Aug 19, 2026
Pull request created: #4205
github-actions commentedon Aug 19, 2026
Draft PR opened to fix qodercli-skills-migration: migrated
QodercliIntegrationfromMarkdownIntegrationtoSkillsIntegration, so commands are now scaffolded as.qoder/skills/speckit-<name>/SKILL.mdfiles that Qoder IDE 1.24+ recognises.Next steps:
CodexIntegrationpattern.bug-teststage (if configured in this repository) by labeling the PR accordingly once it's ready.Posted on behalf of
@mnriemby GitHub Copilot (model: claude-sonnet-4.6, autonomous)github-actions commentedon Aug 19, 2026
Bug test — qodercli-skills-migration: ❌ failing · 29 passed, 1 failed, 0 skipped · fix from PR #4205 (branch
fix/4199-qodercli-skills-migration-1162461560564c6e, SHA05a18f9d9a50c0009c44c02402a3b22357e62bc0)Bug Test Report: qodercli slash commands not recognized in Qoder IDE 1.24+
fix/4199-qodercli-skills-migration-1162461560564c6e, head SHA05a18f9d9a50c0009c44c02402a3b22357e62bc0pytest tests/integrations/test_integration_qodercli.py -vtests/integrations/Summary
The proposed fix migrates
QodercliIntegrationfromMarkdownIntegrationtoSkillsIntegrationand correctly updates the output layout to.qoder/skills/speckit-<name>/SKILL.md. 29 of 30 integration-specific tests pass. One test fails:test_options_include_skills_flag, which expects the integration to expose a--skillsCLI flag (via anoptions()override) as otherSkillsIntegrationsubclasses do (e.g.CodexIntegration). The fix omits this override. No regressions were found in the broader integration suite (2,682 passed, 3 skipped).Test Results
Focused suite (
test_integration_qodercli.py)Broad regression check (
tests/integrations/)Failures
TestQodercliIntegration::test_options_include_skills_flag—assert 0 == 1where0 = len([]): the test expectsintegration.options()to contain exactly one option named--skillswithis_flag=True, butQodercliIntegrationdoes not define anoptions()override and returns an empty list.The fix needs to add an
options()classmethod mirroringCodexIntegration:Verification vs. Historical Fix
Not applicable (no historical fix referenced — this is a fresh bug report for an ongoing regression).
Notes & Caveats
uvon PATH; pytest from Python 3.14 (pytest 9.1.1) was used directly. The package was importable without explicit installation (editable install already resolved in the Python 3.14 site-packages).options()override required to expose the--skillsCLI flag.Unverified
(none)
Posted on behalf of
@mnriemby GitHub Copilot (model: claude-sonnet-4.6, autonomous)fix(qodercli): resolve failing skills-flag test and slash invocation
Fix qodercli-skills-migration: migrate QodercliIntegration to SkillsI…
fix(qodercli): resolve failing skills-flag test and slash invocation
[bug-fix] Fix qodercli-skills-migration: migrate QodercliIntegration …