Skip to content

[bug-fix] Fix qodercli-skills-migration: migrate QodercliIntegration to SkillsIntegration - #4205

Merged
mnriem merged 3 commits into
mainfrom
fix/4199-qodercli-skills-migration-1162461560564c6e
Aug 20, 2026
Merged

[bug-fix] Fix qodercli-skills-migration: migrate QodercliIntegration to SkillsIntegration#4205
mnriem merged 3 commits into
mainfrom
fix/4199-qodercli-skills-migration-1162461560564c6e

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Bug fix — qodercli-skills-migration

Proposed fix for issue #4199, applying the remediation from the bug assessment.

Verdict: Valid · Severity: high

Summary

Migrated QodercliIntegration from MarkdownIntegration to SkillsIntegration, changing the output layout from flat .qoder/commands/speckit.*.md files to the .qoder/skills/speckit-<name>/SKILL.md directory-per-skill structure that Qoder IDE 1.24+ requires for slash-command discovery.

Changes

File Change Notes
src/specify_cli/integrations/qodercli/__init__.py modified Changed base class from MarkdownIntegrationSkillsIntegration; updated commands_subdir to "skills", registrar_config["dir"] to ".qoder/skills", and extension to "/SKILL.md"
tests/integrations/test_integration_qodercli.py modified Swapped MarkdownIntegrationTests for SkillsIntegrationTests; updated COMMANDS_SUBDIR to "skills" and REGISTRAR_DIR to ".qoder/skills"

Tests Added or Updated

  • TestQodercliIntegration (inheriting SkillsIntegrationTests) — pins that the integration is a SkillsIntegration subclass, that files land under .qoder/skills/speckit-<name>/SKILL.md, and that each SKILL.md contains a name: speckit-<name> frontmatter field. All assertions are inherited from the shared SkillsIntegrationTests mixin.

Local Verification

  • No project test command available in this environment (no virtualenv present). Verified by inspection: the change mirrors the CodexIntegration pattern exactly, which is already covered by the shared SkillsIntegrationTests suite.

Deviations from Assessment

None. The preferred remediation was applied as specified. The SkillsIntegration base class handles name frontmatter injection automatically — no custom setup() override was needed.

Risks & Review Notes

  • Existing projects break on reinstall: Users with old .qoder/commands/ files from older installs will need to re-run specify integration install qodercli to pick up the new layout. Old files will not be automatically removed unless still tracked in the manifest. A specify integration reinstall qodercli hint in release notes is recommended.
  • The open questions in the assessment (exact minimum IDE version, fallback behaviour, official changelog link) are informational and do not block the fix.

Refs #4199 · cc @mengqiang81

Generated by 🛠️ Fix Bug from Labeled Issue for issue #4199 · 298.1 AIC · ⌖ 16.5 AIC · ⊞ 36.4K ·

@github-actions github-actions Bot added automated bug-fix Trigger the bug-fix agentic workflow labels Aug 19, 2026
mnriem added a commit that referenced this pull request Aug 19, 2026
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
@mnriem

mnriem commented Aug 19, 2026

Copy link
Copy Markdown
Collaborator

Pushed `7edf7c23` to address the one failing test (`test_options_include_skills_flag`) reported by the bug-test run.

Changes

  • `tests/integrations/test_integration_qodercli.py` — Qoder IDE 1.24+ is always skills-based, so it should not expose a `--skills` toggle. Overrode the inherited `test_options_include_skills_flag` to skip (mirroring Grok/Zed/Droid) and added `test_options_do_not_include_skills_flag` plus a `requires_cli`/`name`/`multi_install_safe` assertion.
  • `src/specify_cli/_invocation_style.py` — added `qodercli` to `ALWAYS_SLASH_AGENTS` so hooks and next-steps render the hyphenated `/speckit-` invocation instead of the legacy dotted `/speckit.`.

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).

@mnriem
mnriem requested a balanced review from Copilot August 19, 2026 22:38
@mnriem
mnriem marked this pull request as ready for review August 19, 2026 22:38
@mnriem
mnriem self-requested a review as a code owner August 19, 2026 22:39

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

Migrates Qoder CLI to Qoder IDE 1.24’s skills-based command layout.

Changes:

  • Uses SkillsIntegration and .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

Comment thread src/specify_cli/integrations/qodercli/__init__.py
Comment thread src/specify_cli/_invocation_style.py
Comment thread src/specify_cli/integrations/qodercli/__init__.py
@mnriem mnriem self-assigned this Aug 20, 2026
github-actions Bot and others added 3 commits August 20, 2026 07:42
…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>
@mnriem
mnriem force-pushed the fix/4199-qodercli-skills-migration-1162461560564c6e branch from 7edf7c2 to d7f593c Compare August 20, 2026 12:48
@mnriem

mnriem commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Addressed the current review round in d7f593cb.

  • Added a Qoder legacy-layout migration that removes each old .qoder/commands/*.md extension artifact only after its corresponding .qoder/skills/*/SKILL.md replacement is successfully written; unmatched artifacts are preserved.
  • Added old-layout upgrade coverage and qodercli coverage for both ai_skills invocation states.
  • Updated the integration reference to .qoder/skills.

Posted on behalf of @mnriem by GitHub Copilot (model: GPT-5.6 Sol, autonomous).

@mnriem mnriem removed their assignment Aug 20, 2026
@mnriem
mnriem requested a balanced review from Copilot August 20, 2026 15:11
@mnriem mnriem self-assigned this Aug 20, 2026

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.

Review details

  • Files reviewed: 8/8 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

@mnriem
mnriem merged commit fa19e1c into main Aug 20, 2026
16 checks passed
@mnriem
mnriem deleted the fix/4199-qodercli-skills-migration-1162461560564c6e branch August 20, 2026 16:03
ira-at-work added a commit to ira-at-work/spec-kit that referenced this pull request Aug 21, 2026
…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)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated bug-fix Trigger the bug-fix agentic workflow

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[qodercli] Slash commands not recognized in Qoder IDE 1.24+ — needs skills-based layout migration

2 participants