Skip to content

[Feature]: Update Kilo(Code) support #3635

Description

@ItachiSan

Problem Statement

Hello,
I've noticed Kilo(Code) support is quite behind.

The integration, from my understanding sits here:
https://github.com/github/spec-kit/blob/main/src/specify_cli/integrations/kilocode/__init__.py

Namely:

  1. The workflow generation is wrong; instead of .kilocode/workflows, it should be .kilo/commands.
    See here: https://kilo.ai/docs/customize/workflows
  2. Kilo has a CLI named kilo, that can be integrated in the check.

I would like to contribute if needed; just point me out to the "how to add an agent" docs and I can fix stuff. 😄

Proposed Solution

Fix all the things!

Alternatives Considered

For now, moving the generated files from .kilocode/workflows to .kilo/commands solves the first problem.

Component

Specify CLI (initialization, commands)

AI Agent (if applicable)

Kilo Code

Use Cases

No response

Acceptance Criteria

No response

Additional Context

No response

Activity

  1. mnriem commented on Jul 22, 2026

    @mnriem
    Collaborator

    Feel free to pick this one up. The bug-assess workflow assessment below should get you started

  2. github-actions commented on Jul 22, 2026

    @github-actions
    Contributor

    Bug assessment — kilocode-config-outdated: Valid · severity medium


    Bug Assessment: Kilo Code Integration Config Outdated

    Report (summarized)

    Reported by @ItachiSan. The Kilo Code integration in src/specify_cli/integrations/kilocode/__init__.py uses outdated paths and metadata:

    1. Workflow files are written to .kilocode/workflows but the current Kilo app stores custom workflows under .kilo/commands.
    2. The integration sets requires_cli: False and install_url: None, but Kilo now ships a CLI named kilo.

    Reference: (kilo.ai/redacted) (external docs — not fetched, referenced from issue).

    Symptom

    When specify init is run with --integration kilocode, workflow files land in .kilocode/workflows/ instead of .kilo/commands/, so Kilo never loads them. Additionally, if kilo is installed, the CLI presence is not checked or reported during init.

    Reproduction

    1. Install Specify CLI and run specify init my-project --integration kilocode.
    2. Observe that files are created under my-project/.kilocode/workflows/.
    3. Open Kilo Code and notice that the commands are not discoverable because Kilo reads from .kilo/commands/.

    Suspected Code Paths

    • src/specify_cli/integrations/kilocode/__init__.py:10 — "folder": ".kilocode/" uses the old directory prefix; should be ".kilo/".
    • src/specify_cli/integrations/kilocode/__init__.py:11 — "commands_subdir": "workflows" uses the old subdir; should be "commands".
    • src/specify_cli/integrations/kilocode/__init__.py:16 — "dir": ".kilocode/workflows" in registrar_config; should be ".kilo/commands".
    • src/specify_cli/integrations/kilocode/__init__.py:13 — "requires_cli": False and "install_url": None; if kilo is a real CLI, requires_cli should be True and install_url should point to the Kilo install page.
    • tests/integrations/test_integration_kilocode.py:8–10 — hardcodes the old paths; test assertions will pass with wrong values until the fix is made.

    Root Cause Hypothesis

    The Kilo Code integration was written for an older version of the app that used .kilocode/workflows. Kilo later renamed/moved its config directory to .kilo/commands. The integration was never updated to track this upstream change. The requires_cli and install_url fields were left as None/False because the CLI may not have existed when the integration was originally authored. Confidence: high — the issue directly cites the current Kilo documentation and the code clearly shows the old paths.

    Proposed Remediation

    Preferred: Update KilocodeIntegration in src/specify_cli/integrations/kilocode/__init__.py:

    • Change "folder" from ".kilocode/" to ".kilo/".
    • Change "commands_subdir" from "workflows" to "commands".
    • Change registrar_config["dir"] from ".kilocode/workflows" to ".kilo/commands".
    • Set "requires_cli": True and set "install_url" to the Kilo install URL (confirm the exact URL from (kilo.ai/redacted)), and update key to "kilo" if that is the actual executable name (per the AGENTS.md rule: for CLI-based integrations, key must match the executable). If the class key changes, the subpackage directory and test filename must also be updated accordingly.

    Alternatives:

    • Keep requires_cli: False if Kilo Code is primarily an IDE extension and the CLI is optional. In that case only the path changes (folder, commands_subdir, registrar_config.dir) are strictly necessary.

    Files likely to change:

    • src/specify_cli/integrations/kilocode/__init__.py
    • tests/integrations/test_integration_kilocode.py (update FOLDER, COMMANDS_SUBDIR, REGISTRAR_DIR constants)

    Tests to add or update:

    • Update FOLDER = ".kilo/", COMMANDS_SUBDIR = "commands", REGISTRAR_DIR = ".kilo/commands" in TestKilocodeIntegration.
    • If the key changes to "kilo", rename the test file to test_integration_kilo.py and update KEY.

    Risks & Considerations

    • Existing projects: Users who already ran specify init --integration kilocode will have files in .kilocode/workflows/. A migration path or at least a note in release notes is advisable.
    • Key rename: If key changes from "kilocode" to "kilo" (to match the CLI executable), the integration registry key changes, which could break projects that store the key in config. Verify whether .specify/ manifests embed the key.
    • CLI availability: Confirm that kilo is the correct executable name before setting requires_cli: True — an incorrect name would cause every specify init with this integration to fail the CLI check.

    Open Questions

    • [NEEDS CLARIFICATION: What is the exact executable name of the Kilo CLI? The issue says kilo — this should be confirmed before setting key = "kilo" and requires_cli: True.]
    • [NEEDS CLARIFICATION: What is the canonical install URL for the Kilo CLI?]
    • [NEEDS CLARIFICATION: Is .kilo/commands the correct current path, or has it changed again? The reporter links to (kilo.ai/redacted) — a maintainer should verify against current Kilo docs before merging.]

    Generated by 🐛 Assess Bug from Labeled Issue for issue #3635 · 79.9 AIC · ⌖ 11.1 AIC · ⊞ 31.8K · ◷

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions