Skip to main content
← Back to list
01Issue
FeatureOpenSwamp CLI
AssigneesNone

#356 Add first-class Kilo Code tool support

Opened by maphew · 5/15/2026

Problem

swamp repo upgrade --tool kilo is currently rejected because kilo is not part of swamp's built-in AI tool registry. Kilo Code users can partially work around this by enrolling opencode, but that records audit data as opencode, generates .opencode/ scaffolding, and does not give Kilo a first-class doctor audit path.

Kilo is OpenCode-derived and the installed Kilo CLI supports compatible plugin-style tool hooks and project configuration paths. A first-class kilo tool would let Kilo users initialize and upgrade swamp repos without pretending to be OpenCode.

Proposed solution

Add kilo as a supported AI tool value alongside claude, cursor, kiro, opencode, codex, and copilot.

Suggested behavior:

  • swamp repo init --tool kilo and swamp repo upgrade --tool kilo are accepted.
  • Repository scaffolding writes swamp skills to .kilo/skills/.
  • Root instructions use AGENTS.md with references to .kilo/skills/<name>/SKILL.md.
  • Audit plugin is generated at .kilo/plugins/swamp-audit.ts.
  • The Kilo plugin imports Plugin from @kilocode/plugin and records bash tool invocations through swamp audit record --from-hook --tool kilo.
  • swamp audit record --from-hook --tool kilo normalizes the same payload shape as OpenCode plugins (tool_name: "bash", tool_input.command, optional session_id).
  • swamp doctor audit --tool kilo checks the kilo binary, swamp on PATH, .kilo/plugins/swamp-audit.ts, and synthetic payload roundtrip.
  • Docs and generated skills list kilo in supported tool sets.

Local validation

I prototyped this in a local clone and verified the following:

deno task fmt
deno task check
deno test --unstable-bundle --allow-read --allow-write --allow-env --allow-run --allow-net --allow-sys \
  src/domain/audit/doctor/check_test.ts \
  src/domain/audit/doctor/checks/binary_on_path_test.ts \
  src/domain/audit/doctor/checks/agent_config_loadable_test.ts \
  src/domain/audit/doctor/checks/swamp_binary_on_path_test.ts \
  src/domain/audit/doctor/synthetic_payloads_test.ts \
  src/domain/repo/repo_service_test.ts \
  src/cli/ai_tool_parser_test.ts \
  src/cli/commands/repo_init_test.ts

Result: 144 passed | 0 failed.

I also smoke-tested from source:

tmpdir=$(mktemp -d /tmp/kilo-swamp-test.XXXXXX)
deno run --unstable-bundle -A main.ts repo init "$tmpdir" --tool kilo --json
deno run --unstable-bundle -A main.ts doctor audit --repo-dir "$tmpdir" --tool kilo --json

doctor audit returned overallStatus: "pass", with these checks passing:

  • binary-on-path: found kilo
  • swamp-binary-on-path: found swamp
  • agent-config-loadable: .kilo/plugins/swamp-audit.ts present and references swamp audit record
  • recording-smoke-test: synthetic Kilo payload landed in audit JSONL

Alternatives considered

  • Continue using --tool opencode as a compatibility shim. This works only partially and produces OpenCode-specific scaffolding/audit identity.
  • Keep this as a swamp extension. That is insufficient because --tool values, repo scaffolding, and doctor audit support are core swamp behavior, not extension behavior.

Attribution

Reported by Matt with a local prototype generated by Kilo Code / gpt-5.5.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED

Open

5/15/2026, 4:27:02 PM

No activity in this phase yet.

03Sludge Pulse

Sign in to post a ripple.