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
@@ -52,25 +52,25 @@ Most agents only need `MarkdownIntegration` β a minimal subclass with zero met
52
52
53
53
Create `src/specify_cli/integrations/<package_dir>/__init__.py`, where `<package_dir>` is the Python-safe directory name derived from `<key>`: use the key as-is when it contains no hyphens (e.g., key `"gemini"` β `gemini/`), or replace hyphens with underscores when it does (e.g., key `"kiro-cli"` β `kiro_cli/`). The `IntegrationBase.key` class attribute always retains the original hyphenated value, since that is what the CLI and registry use. For CLI-based integrations (`requires_cli: True`), the `key` should match the actual CLI tool name (the executable users install and run) so CLI checks can resolve it correctly. For IDE-based integrations (`requires_cli: False`), use the canonical integration identifier instead.
54
54
55
-
**Minimal example β Markdown agent (Windsurf):**
55
+
**Minimal example β Markdown agent (Kilo Code):**
56
56
57
57
```python
58
-
"""Windsurf IDE integration."""
58
+
"""Kilo Code IDE integration."""
59
59
60
60
from ..base import MarkdownIntegration
61
61
62
62
63
-
classWindsurfIntegration(MarkdownIntegration):
64
-
key ="windsurf"
63
+
classKilocodeIntegration(MarkdownIntegration):
64
+
key ="kilocode"
65
65
config = {
66
-
"name": "Windsurf",
67
-
"folder": ".windsurf/",
66
+
"name": "Kilo Code",
67
+
"folder": ".kilocode/",
68
68
"commands_subdir": "workflows",
69
69
"install_url": None,
70
70
"requires_cli": False,
71
71
}
72
72
registrar_config = {
73
-
"dir": ".windsurf/workflows",
73
+
"dir": ".kilocode/workflows",
74
74
"format": "markdown",
75
75
"args": "$ARGUMENTS",
76
76
"extension": ".md",
@@ -148,7 +148,7 @@ class CodexIntegration(SkillsIntegration):
**Key design rule:** For CLI-based integrations (`requires_cli: True`), `key` must be the actual executable name (e.g., `"cursor-agent"` not `"cursor"`). This ensures `shutil.which(key)` works for CLI-tool checks without special-case mappings. IDE-based integrations (`requires_cli: False`) should use their canonical identifier (e.g., `"windsurf"`, `"copilot"`).
151
+
**Key design rule:** For CLI-based integrations (`requires_cli: True`), `key` must be the actual executable name (e.g., `"cursor-agent"` not `"cursor"`). This ensures `shutil.which(key)` works for CLI-tool checks without special-case mappings. IDE-based integrations (`requires_cli: False`) should use their canonical identifier (e.g., `"kilocode"`, `"copilot"`).
152
152
153
153
### 3. Register it
154
154
@@ -201,8 +201,8 @@ Only add custom setup logic when the agent needs non-standard behavior. Integrat
201
201
specify init my-project --integration <key>
202
202
203
203
# Verify files were created in the commands directory configured by
204
-
# config["folder"] + config["commands_subdir"] (for example, .windsurf/workflows/)
205
-
ls -R my-project/.windsurf/workflows/
204
+
# config["folder"] + config["commands_subdir"] (for example, .kilocode/workflows/)
205
+
ls -R my-project/.kilocode/workflows/
206
206
207
207
# Uninstall cleanly
208
208
cd my-project && specify integration uninstall <key>
Copy file name to clipboardExpand all lines: docs/index.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ Define what to build before building it. Rich templates, quality checklists, and
31
31
32
32
### Use any coding agent
33
33
34
-
<spanclass="pillar-stat">30+ integrations</span> β Copilot, Gemini, Codex, Windsurf, Zed, Claude, Forge, Kiro, and more. Switch freely between agents with a single command. No lock-in.
34
+
<spanclass="pillar-stat">30+ integrations</span> β Copilot, Gemini, Codex, Kilo Code, Zed, Claude, Forge, Kiro, and more. Switch freely between agents with a single command. No lock-in.
35
35
36
36
Run `specify init` with your agent of choice and Spec Kit sets up the right command files, context rules, and directory structures automatically. If your agent isn't listed, the `generic` integration is an escape hatch for any tool.
|[Trae](https://www.trae.ai/)|`trae`| Skills-based integration; skills are installed automatically |
41
-
|[Windsurf](https://windsurf.com/)|`windsurf`||
42
41
|[ZCode](https://zcode.z.ai/)|`zcode`| Skills-based integration; installs skills into `.zcode/skills/` and invokes them as `$speckit-<command>`|
43
42
|[Zed](https://zed.dev/)|`zed`| Skills-based integration; installs skills into `.agents/skills` and invokes them as `/speckit-<command>`|
44
43
| Generic |`generic`| Bring your own agent β use `--integration generic --integration-options="--commands-dir <path>"` for AI coding agents not listed above |
@@ -272,7 +271,6 @@ The currently declared multi-install safe integrations are:
Integrations that share a context file or command directory with another integration, require dynamic install paths such as `--commands-dir`, or merge shared tool settings are not declared safe by default. They can still be installed alongside another integration with `--force`.
@@ -287,7 +285,7 @@ Run `specify integration list` to see all available integrations with their keys
287
285
288
286
### Do I need the AI coding agent installed to use an integration?
289
287
290
-
CLI-based integrations (like Claude Code, Gemini CLI) require the tool to be installed. IDE-based integrations (like Windsurf, Cursor) work through the IDE itself. Some agents like GitHub Copilot support both IDE and CLI usage. `specify integration list` shows which type each integration is.
288
+
CLI-based integrations (like Claude Code, Gemini CLI) require the tool to be installed. IDE-based integrations (like Cursor) work through the IDE itself. Some agents like GitHub Copilot support both IDE and CLI usage. `specify integration list` shows which type each integration is.
0 commit comments