[bug-fix] Fix qodercli-skills-migration: migrate QodercliIntegration to SkillsIntegration - #4205
Conversation
Builds on the qodercli->SkillsIntegration migration (PR #4205). Qoder IDE 1.24+ is always skills-based, so it should not expose a --skills toggle. Override the inherited SkillsIntegrationTests.test_options_include_skills_flag to skip (mirroring Grok/Zed/Droid) and add a test asserting no --skills option, plus a requires_cli/name/multi_install_safe check. Also add "qodercli" to ALWAYS_SLASH_AGENTS so hooks and next-steps render the hyphenated /speckit-<name> invocation instead of the legacy dotted /speckit.<name> form. Fixes the single failing test reported for #4199. Assisted-by: GitHub Copilot (model: claude-opus-4.8, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 43394151-ce2a-432d-9cc5-88f587d1b570
|
Pushed `7edf7c23` to address the one failing test (`test_options_include_skills_flag`) reported by the bug-test run. Changes
Verification: full `tests/integrations/` suite — 2684 passed, 4 skipped. Verified end-to-end that `specify init --integration qodercli` scaffolds `.qoder/skills/speckit-/SKILL.md` with `name:` frontmatter, persists `ai_skills: true`, and renders `/speckit-plan`. Posted on behalf of @mnriem by GitHub Copilot (model: claude-opus-4.8, autonomous). |
There was a problem hiding this comment.
Pull request overview
Migrates Qoder CLI to Qoder IDE 1.24’s skills-based command layout.
Changes:
- Uses
SkillsIntegrationand.qoder/skills/.../SKILL.md. - Adds Qoder to always-slash invocation handling.
- Updates integration tests for the skills layout.
Show a summary per file
| File | Description |
|---|---|
src/specify_cli/integrations/qodercli/__init__.py |
Migrates Qoder to skills. |
src/specify_cli/_invocation_style.py |
Enables hyphenated slash invocations. |
tests/integrations/test_integration_qodercli.py |
Updates Qoder integration coverage. |
Review details
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
- Files reviewed: 3/3 changed files
- Comments generated: 3
- Review effort level: Balanced
…ntegration Apply the remediation from the bug assessment on issue #4199. Qoder IDE 1.24+ dropped .qoder/commands/ scanning in favour of the skills layout (.qoder/skills/{skill-name}/SKILL.md). Migrated QodercliIntegration from MarkdownIntegration to SkillsIntegration, updating config[commands_subdir] to 'skills' and registrar_config[dir] to '.qoder/skills' with extension '/SKILL.md'. Updated tests to use SkillsIntegrationTests base mixin. Refs #4199 Assisted-by: GitHub Copilot (model: claude-sonnet-4.6, autonomous) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Builds on the qodercli->SkillsIntegration migration (PR #4205). Qoder IDE 1.24+ is always skills-based, so it should not expose a --skills toggle. Override the inherited SkillsIntegrationTests.test_options_include_skills_flag to skip (mirroring Grok/Zed/Droid) and add a test asserting no --skills option, plus a requires_cli/name/multi_install_safe check. Also add "qodercli" to ALWAYS_SLASH_AGENTS so hooks and next-steps render the hyphenated /speckit-<name> invocation instead of the legacy dotted /speckit.<name> form. Fixes the single failing test reported for #4199. Assisted-by: GitHub Copilot (model: claude-opus-4.8, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 43394151-ce2a-432d-9cc5-88f587d1b570
Retire old flat Qoder extension commands only after their replacement skills are successfully written. Cover old-layout upgrades and both slash invocation states, and update the integration reference path. Assisted-by: GitHub Copilot (model: GPT-5.6 Sol, autonomous) Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
7edf7c2 to
d7f593c
Compare
|
Addressed the current review round in
Posted on behalf of @mnriem by GitHub Copilot (model: GPT-5.6 Sol, autonomous). |
…065-stable-block-identifiers * 'main' of https://github.com/github/spec-kit: (38 commits) [extension] Update Security Review extension to v2.0.0 (github#4223) fix(presets): reject duplicate provides.templates name+type entries (github#4191) fix(bundler): decode a downloaded (non-zip) bundle manifest as UTF-8 (github#4190) Update Intake Sequencing Governance preset to v0.2.3 (github#4235) Update MAQA — Multi-Agent & Quality Assurance extension to v0.1.6 (github#4234) [bug-fix] Fix qodercli-skills-migration: migrate QodercliIntegration to SkillsIntegration (github#4205) [preset] Add Inventory Alignment preset to community catalog (github#4229) [extension] Add Spec Inventory extension to community catalog (github#4228) [extension] Update Architecture Guard extension to v2.3.6 (github#4224) Update SpecKit Companion extension to v0.20.2 (github#4225) fix(workflows): reject a condition that has no {{ }} block (github#4182) fix: raise feature assessment credit budget (github#4222) [extension] Add AgentDocx extension to community catalog (github#4184) fix(integrations): report a falsy non-mapping integration descriptor as a shape error (github#4187) Update Autonomous Run Governance preset to v0.4.1 (github#4203) fix(workflows): validate dispatch defaults (github#4181) Update Atlas extension display name in community catalog (github#4202) Add Closed Vocabulary Check preset to community catalog (github#4201) fix(utils): narrow bare except Exception in merge_json_files (github#4189) chore: release 0.16.5, begin 0.16.6.dev0 development (github#4206) ...
Bug fix — qodercli-skills-migration
Proposed fix for issue #4199, applying the remediation from the bug assessment.
Verdict: Valid · Severity: high
Summary
Migrated
QodercliIntegrationfromMarkdownIntegrationtoSkillsIntegration, changing the output layout from flat.qoder/commands/speckit.*.mdfiles to the.qoder/skills/speckit-<name>/SKILL.mddirectory-per-skill structure that Qoder IDE 1.24+ requires for slash-command discovery.Changes
src/specify_cli/integrations/qodercli/__init__.pyMarkdownIntegration→SkillsIntegration; updatedcommands_subdirto"skills",registrar_config["dir"]to".qoder/skills", andextensionto"/SKILL.md"tests/integrations/test_integration_qodercli.pyMarkdownIntegrationTestsforSkillsIntegrationTests; updatedCOMMANDS_SUBDIRto"skills"andREGISTRAR_DIRto".qoder/skills"Tests Added or Updated
TestQodercliIntegration(inheritingSkillsIntegrationTests) — pins that the integration is aSkillsIntegrationsubclass, that files land under.qoder/skills/speckit-<name>/SKILL.md, and that eachSKILL.mdcontains aname: speckit-<name>frontmatter field. All assertions are inherited from the sharedSkillsIntegrationTestsmixin.Local Verification
CodexIntegrationpattern exactly, which is already covered by the sharedSkillsIntegrationTestssuite.Deviations from Assessment
None. The preferred remediation was applied as specified. The
SkillsIntegrationbase class handlesnamefrontmatter injection automatically — no customsetup()override was needed.Risks & Review Notes
.qoder/commands/files from older installs will need to re-runspecify integration install qoderclito pick up the new layout. Old files will not be automatically removed unless still tracked in the manifest. Aspecify integration reinstall qoderclihint in release notes is recommended.Refs #4199 · cc
@mengqiang81