Skip to content

Comments

fix: rename Qoder AGENT_CONFIG key from 'qoder' to 'qodercli' to match actual CLI executable#1651

Merged
mnriem merged 5 commits intogithub:mainfrom
mnriem:feature/fix-qoder-cli-detection
Feb 20, 2026
Merged

fix: rename Qoder AGENT_CONFIG key from 'qoder' to 'qodercli' to match actual CLI executable#1651
mnriem merged 5 commits intogithub:mainfrom
mnriem:feature/fix-qoder-cli-detection

Conversation

@mnriem
Copy link
Collaborator

@mnriem mnriem commented Feb 20, 2026

Summary

Renames the AGENT_CONFIG key from "qoder" to "qodercli" to match the actual executable name. This fixes specify check and specify init --ai qodercli silently failing because shutil.which("qoder") couldn't find the tool.

Fixes #1399
Fixes #1587

Changes

  • src/specify_cli/__init__. AGENT_CONFIG key + --ai help textpy
  • src/specify_cli/extensions. extension config keypy
  • scripts/bash/update-agent-context. case statement + usage textsh
  • scripts/powershell/update-agent-context. switch statement + ValidateSet + usage textps1
  • .github/workflows/scripts/create-release-packages. case + ALL_AGENTS arraysh
  • .github/workflows/scripts/create-release-packages. switch + AllAgents array + docsps1
  • .github/workflows/scripts/create-github-release. zip filenamessh
  • README. docs, examples, CLI referencemd
  • AGENTS. agent table + CLI-based agents listmd
  • pyproject. version bump to 0.1.4toml
  • CHANGELOG. new 0.1.4 entrymd

Design rationale

Per AGENTS.md guidelines, the AGENT_CONFIG dictionary key should match the actual executable name that users install. The CLI tool is qodercli, not qoder, so the key must be "qodercli" to avoid special-case mappings and ensure shutil.which() works correctly.

mnriem and others added 2 commits February 17, 2026 18:01
…li-detection

# Conflicts:
#	.github/workflows/scripts/create-release-packages.ps1
#	.github/workflows/scripts/create-release-packages.sh
#	CHANGELOG.md
#	README.md
#	pyproject.toml
#	scripts/bash/update-agent-context.sh
#	scripts/powershell/update-agent-context.ps1
#	src/specify_cli/__init__.py
Copilot AI review requested due to automatic review settings February 20, 2026 18:52
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Renames the Qoder agent identifier from qoder to qodercli across the CLI, extension system, scripts, release packaging, and docs so tool detection (shutil.which) matches the actual executable name.

Changes:

  • Update AGENT_CONFIG / extension agent keys and CLI help text to use qodercli.
  • Update agent-context update scripts and release packaging scripts to use qodercli.
  • Update documentation and bump project version / changelog entry.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
src/specify_cli/__init__.py Renames Qoder agent key in AGENT_CONFIG and updates --ai help text.
src/specify_cli/extensions.py Renames Qoder agent key in extension command registration config.
scripts/bash/update-agent-context.sh Updates supported agent key and usage/error text to qodercli.
scripts/powershell/update-agent-context.ps1 Updates ValidateSet, switch cases, and usage text to qodercli.
.github/workflows/scripts/create-release-packages.sh Builds Qoder template archives under the qodercli agent name.
.github/workflows/scripts/create-release-packages.ps1 Updates Qoder agent name used for packaging on PowerShell.
.github/workflows/scripts/create-github-release.sh Uploads Qoder template assets using qodercli filenames.
README.md Updates docs/examples and check/init --ai references to qodercli.
AGENTS.md Updates agent table and CLI requirement list to qodercli.
pyproject.toml Bumps version to 0.1.4.
CHANGELOG.md Adds an unreleased 0.1.4 entry describing the fix.
Comments suppressed due to low confidence (4)

src/specify_cli/extensions.py:655

  • If extensions/manifests in the wild already reference the agent name qoder, this rename will break extension command registration/unregistration for that agent. Consider keeping qoder as a backwards-compatible alias (mapping to the same directory/format) in AGENT_CONFIGS, even if the canonical key is now qodercli.
        "qodercli": {
            "dir": ".qoder/commands",
            "format": "markdown",
            "args": "$ARGUMENTS",
            "extension": ".md"
        },

src/specify_cli/init.py:197

  • Renaming the agent key to qodercli will make --ai qoder invalid. Since init validates against AGENT_CONFIG keys, this is a user-facing breaking change for existing scripts/docs. Consider supporting qoder as a deprecated alias that maps to qodercli (while still checking for the qodercli executable) so existing automation keeps working.
    "qodercli": {
        "name": "Qoder CLI",
        "folder": ".qoder/",
        "install_url": "https://qoder.com/cli",

scripts/bash/update-agent-context.sh:624

  • Switching the agent selector from qoder to qodercli will break anyone invoking this script with the old agent key (including older generated templates that substitute __AGENT__). Consider accepting both (qoder and qodercli) for compatibility (e.g., combined case pattern) and treating qoder as an alias.
        codebuddy)
            update_agent_file "$CODEBUDDY_FILE" "CodeBuddy CLI"
            ;;
        qodercli)
            update_agent_file "$QODER_FILE" "Qoder CLI"
            ;;

.github/workflows/scripts/create-release-packages.ps1:364

  • Similarly, $AllAgents excludes some supported agents (e.g., shai, agy) which makes this script generate a different set of archives than the bash workflow. Consider aligning $AllAgents with the canonical list used in create-release-packages.sh to avoid missing templates.
# Define all agents and scripts
$AllAgents = @('claude', 'gemini', 'copilot', 'cursor-agent', 'qwen', 'opencode', 'windsurf', 'codex', 'kilocode', 'auggie', 'roo', 'codebuddy', 'amp', 'q', 'bob', 'qodercli', 'generic')
$AllScripts = @('sh', 'ps')

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

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings February 20, 2026 19:02
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (1)

.github/workflows/scripts/create-release-packages.ps1:354

  • The switch statement is missing cases for 'shai' and 'agy' agents that are present in the bash script (create-release-packages.sh lines 212-214 and 218-220). Add the missing cases:
  • 'shai' should create .shai/commands directory with markdown commands
  • 'agy' should create .agent/workflows directory with markdown commands
    switch ($Agent) {
        'claude' {
            $cmdDir = Join-Path $baseDir ".claude/commands"
            Generate-Commands -Agent 'claude' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'gemini' {
            $cmdDir = Join-Path $baseDir ".gemini/commands"
            Generate-Commands -Agent 'gemini' -Extension 'toml' -ArgFormat '{{args}}' -OutputDir $cmdDir -ScriptVariant $Script
            if (Test-Path "agent_templates/gemini/GEMINI.md") {
                Copy-Item -Path "agent_templates/gemini/GEMINI.md" -Destination (Join-Path $baseDir "GEMINI.md")
            }
        }
        'copilot' {
            $agentsDir = Join-Path $baseDir ".github/agents"
            Generate-Commands -Agent 'copilot' -Extension 'agent.md' -ArgFormat '$ARGUMENTS' -OutputDir $agentsDir -ScriptVariant $Script
            
            # Generate companion prompt files
            $promptsDir = Join-Path $baseDir ".github/prompts"
            Generate-CopilotPrompts -AgentsDir $agentsDir -PromptsDir $promptsDir
            
            # Create VS Code workspace settings
            $vscodeDir = Join-Path $baseDir ".vscode"
            New-Item -ItemType Directory -Path $vscodeDir -Force | Out-Null
            if (Test-Path "templates/vscode-settings.json") {
                Copy-Item -Path "templates/vscode-settings.json" -Destination (Join-Path $vscodeDir "settings.json")
            }
        }
        'cursor-agent' {
            $cmdDir = Join-Path $baseDir ".cursor/commands"
            Generate-Commands -Agent 'cursor-agent' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'qwen' {
            $cmdDir = Join-Path $baseDir ".qwen/commands"
            Generate-Commands -Agent 'qwen' -Extension 'toml' -ArgFormat '{{args}}' -OutputDir $cmdDir -ScriptVariant $Script
            if (Test-Path "agent_templates/qwen/QWEN.md") {
                Copy-Item -Path "agent_templates/qwen/QWEN.md" -Destination (Join-Path $baseDir "QWEN.md")
            }
        }
        'opencode' {
            $cmdDir = Join-Path $baseDir ".opencode/command"
            Generate-Commands -Agent 'opencode' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'windsurf' {
            $cmdDir = Join-Path $baseDir ".windsurf/workflows"
            Generate-Commands -Agent 'windsurf' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'codex' {
            $cmdDir = Join-Path $baseDir ".codex/prompts"
            Generate-Commands -Agent 'codex' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'kilocode' {
            $cmdDir = Join-Path $baseDir ".kilocode/workflows"
            Generate-Commands -Agent 'kilocode' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'auggie' {
            $cmdDir = Join-Path $baseDir ".augment/commands"
            Generate-Commands -Agent 'auggie' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'roo' {
            $cmdDir = Join-Path $baseDir ".roo/commands"
            Generate-Commands -Agent 'roo' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'codebuddy' {
            $cmdDir = Join-Path $baseDir ".codebuddy/commands"
            Generate-Commands -Agent 'codebuddy' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'amp' {
            $cmdDir = Join-Path $baseDir ".agents/commands"
            Generate-Commands -Agent 'amp' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'q' {
            $cmdDir = Join-Path $baseDir ".amazonq/prompts"
            Generate-Commands -Agent 'q' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'bob' {
            $cmdDir = Join-Path $baseDir ".bob/commands"
            Generate-Commands -Agent 'bob' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'qodercli' {
            $cmdDir = Join-Path $baseDir ".qoder/commands"
            Generate-Commands -Agent 'qodercli' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'generic' {
            $cmdDir = Join-Path $baseDir ".speckit/commands"
            Generate-Commands -Agent 'generic' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
    }

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

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings February 20, 2026 19:11
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

.github/workflows/scripts/create-release-packages.ps1:354

  • The AllAgents array includes 'shai' and 'agy' but the switch statement below is missing the corresponding cases for these agents. The bash script (create-release-packages.sh) has cases for both 'shai' (line 212-214) and 'agy' (line 218-220). These cases must be added to the PowerShell script to maintain consistency and prevent build failures when these agents are selected. For 'shai', the case should create .shai/commands directory, and for 'agy', it should create .agent/workflows directory.
    switch ($Agent) {
        'claude' {
            $cmdDir = Join-Path $baseDir ".claude/commands"
            Generate-Commands -Agent 'claude' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'gemini' {
            $cmdDir = Join-Path $baseDir ".gemini/commands"
            Generate-Commands -Agent 'gemini' -Extension 'toml' -ArgFormat '{{args}}' -OutputDir $cmdDir -ScriptVariant $Script
            if (Test-Path "agent_templates/gemini/GEMINI.md") {
                Copy-Item -Path "agent_templates/gemini/GEMINI.md" -Destination (Join-Path $baseDir "GEMINI.md")
            }
        }
        'copilot' {
            $agentsDir = Join-Path $baseDir ".github/agents"
            Generate-Commands -Agent 'copilot' -Extension 'agent.md' -ArgFormat '$ARGUMENTS' -OutputDir $agentsDir -ScriptVariant $Script
            
            # Generate companion prompt files
            $promptsDir = Join-Path $baseDir ".github/prompts"
            Generate-CopilotPrompts -AgentsDir $agentsDir -PromptsDir $promptsDir
            
            # Create VS Code workspace settings
            $vscodeDir = Join-Path $baseDir ".vscode"
            New-Item -ItemType Directory -Path $vscodeDir -Force | Out-Null
            if (Test-Path "templates/vscode-settings.json") {
                Copy-Item -Path "templates/vscode-settings.json" -Destination (Join-Path $vscodeDir "settings.json")
            }
        }
        'cursor-agent' {
            $cmdDir = Join-Path $baseDir ".cursor/commands"
            Generate-Commands -Agent 'cursor-agent' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'qwen' {
            $cmdDir = Join-Path $baseDir ".qwen/commands"
            Generate-Commands -Agent 'qwen' -Extension 'toml' -ArgFormat '{{args}}' -OutputDir $cmdDir -ScriptVariant $Script
            if (Test-Path "agent_templates/qwen/QWEN.md") {
                Copy-Item -Path "agent_templates/qwen/QWEN.md" -Destination (Join-Path $baseDir "QWEN.md")
            }
        }
        'opencode' {
            $cmdDir = Join-Path $baseDir ".opencode/command"
            Generate-Commands -Agent 'opencode' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'windsurf' {
            $cmdDir = Join-Path $baseDir ".windsurf/workflows"
            Generate-Commands -Agent 'windsurf' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'codex' {
            $cmdDir = Join-Path $baseDir ".codex/prompts"
            Generate-Commands -Agent 'codex' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'kilocode' {
            $cmdDir = Join-Path $baseDir ".kilocode/workflows"
            Generate-Commands -Agent 'kilocode' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'auggie' {
            $cmdDir = Join-Path $baseDir ".augment/commands"
            Generate-Commands -Agent 'auggie' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'roo' {
            $cmdDir = Join-Path $baseDir ".roo/commands"
            Generate-Commands -Agent 'roo' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'codebuddy' {
            $cmdDir = Join-Path $baseDir ".codebuddy/commands"
            Generate-Commands -Agent 'codebuddy' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'amp' {
            $cmdDir = Join-Path $baseDir ".agents/commands"
            Generate-Commands -Agent 'amp' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'q' {
            $cmdDir = Join-Path $baseDir ".amazonq/prompts"
            Generate-Commands -Agent 'q' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'bob' {
            $cmdDir = Join-Path $baseDir ".bob/commands"
            Generate-Commands -Agent 'bob' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'qodercli' {
            $cmdDir = Join-Path $baseDir ".qoder/commands"
            Generate-Commands -Agent 'qodercli' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
        'generic' {
            $cmdDir = Join-Path $baseDir ".speckit/commands"
            Generate-Commands -Agent 'generic' -Extension 'md' -ArgFormat '$ARGUMENTS' -OutputDir $cmdDir -ScriptVariant $Script
        }
    }

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

@mnriem mnriem merged commit fc3b98e into github:main Feb 20, 2026
12 checks passed
@mnriem mnriem deleted the feature/fix-qoder-cli-detection branch February 20, 2026 19:30
markhazleton pushed a commit to markhazleton/spec-kit that referenced this pull request Feb 20, 2026
…h actual CLI executable (github#1651)

* fix: rename Qoder CLI to QoderCLI across scripts and documentation

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update .github/workflows/scripts/create-release-packages.ps1

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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.

specify check Qoder CLI fails,not found qodercli not found

1 participant