Problem
AiToolId ships five targets (cli/src/domain/models/tool-ids.ts:3): claude, cursor, copilot, opencode, codex. Kimi Code CLI (MoonshotAI) is not one of them, so aidd plugin add <plugin> --tool kimi fails and no aidd-framework-kimi-* archive is released.
Kimi already reads two surfaces the framework produces today:
- Skills: it loads
.agents/skills/, the exact path the codex adapter writes (cli/src/domain/tools/ai/codex.ts:173). A codex-flat archive therefore already drops AIDD skills where Kimi finds them, by accident rather than by contract.
- Context:
AGENTS.md / .kimi-code/AGENTS.md.
The rest is absent: agents land as .codex/agents/*.toml while Kimi reads markdown + YAML frontmatter under .kimi-code/agents/ or .agents/agents/; no kimi.plugin.json manifest is produced; no per-tool distribution is built.
Docs: https://moonshotai.github.io/kimi-code/en/customization/skills · https://moonshotai.github.io/kimi-code/en/customization/agents
Scope
Two PRs, in order: ci.yml builds archives with a pinned CLI version, so the framework side can only follow a CLI release.
PR 1 - feat(cli): add kimi code cli as an install target
- Add
"kimi" to AiToolId and AI_TOOL_IDS (cli/src/domain/models/tool-ids.ts:3).
- Extract the
.agents/skills/aidd-<name>/SKILL.md path builder out of cli/src/domain/tools/ai/codex.ts:172 into domain/formats/, so codex and kimi share it rather than duplicate it (coding-assertions.md: no duplication, pnpm jscpd guards it).
- Add
cli/src/domain/tools/ai/kimi.ts: skills through that shared builder, agents through the claude markdown+frontmatter capability, plugins through a kimi.plugin.json manifest.
- Register the tool in
infrastructure/deps.ts (side-effect import, kimi:flat and kimi:marketplace build strategies), assets/asset-loader.ts, plugin-catalog-repository-adapter.ts, tool-recommendations.ts, menu-use-case.ts.
- Add the
kimi.plugin.json entries to PLUGIN_MANIFEST_PROBES and MARKETPLACE_PROBES (cli/src/domain/models/plugin-format.ts:3,12).
- Add the tests: side-effect import in
tests/domain/tools/registry-conformance.unit.test.ts, a tests/domain/tools/ai/kimi.unit.test.ts, a golden snapshot, the e2e command matrix cells.
PR 2 - feat(framework): map kimi code cli surfaces
- Add the Kimi rows to
plugins/aidd-context/skills/11-explore/references/ai-mapping.md (tables at :17, :27, :37, :59).
- Add Kimi to the three
tool-paths.md (agent-generate, hook-generate, command-generate), 04-skill-generate/references/tool-detect.md, 02-project-memory/references/tools.md, 00-onboard/references/state/detection.md.
- Add the
kimi cells to the build-per-tool matrix (.github/workflows/ci.yml:150) and update the archive count in docs/MAINTAINERS.md:71.
- List Kimi Code CLI in the supported tools of
README.md.
Acceptance criteria
Prior art in this repo
cli/src/domain/tools/ai/codex.ts - closest sibling: same .agents/skills/ skill target (:33, :173), same TOML config parsing. Its agents capability differs (TOML, where Kimi wants markdown).
cli/src/domain/tools/ai/claude.ts - markdown+frontmatter agents, reusable as-is.
cli/tests/domain/tools/registry-conformance.unit.test.ts - the contract a new tool must satisfy; adding the file to its import list is what subjects kimi to every assertion.
cli/src/infrastructure/deps.ts:259,309 - the codex:marketplace and codex:flat build strategy entries to mirror.
Out of scope
- Hooks. Kimi's hook surface (a
SessionStart equivalent for update_memory) is not documented publicly. PR 1 settles it: either the HooksCapability is wired, or the hooks table of ai-mapping.md records "Not supported" the way it already does for OpenCode, and the memory sync stays manual under Kimi.
- MCP. The config file and servers key for Kimi are unverified, so no
McpCapability here. It belongs in the MCP config table of ai-mapping.md:37 once confirmed, in a follow-up issue.
- Slash commands. Kimi's plugin manifest exposes a
commands field of unverified format. Deferred to the same follow-up as MCP; until then Kimi is a skills-and-agents target, like OpenCode is a rules-less one.
- Rules. Folded into
AGENTS.md, the treatment ai-mapping.md:15 already documents for OpenCode.
Problem
AiToolIdships five targets (cli/src/domain/models/tool-ids.ts:3): claude, cursor, copilot, opencode, codex. Kimi Code CLI (MoonshotAI) is not one of them, soaidd plugin add <plugin> --tool kimifails and noaidd-framework-kimi-*archive is released.Kimi already reads two surfaces the framework produces today:
.agents/skills/, the exact path the codex adapter writes (cli/src/domain/tools/ai/codex.ts:173). Acodex-flatarchive therefore already drops AIDD skills where Kimi finds them, by accident rather than by contract.AGENTS.md/.kimi-code/AGENTS.md.The rest is absent: agents land as
.codex/agents/*.tomlwhile Kimi reads markdown + YAML frontmatter under.kimi-code/agents/or.agents/agents/; nokimi.plugin.jsonmanifest is produced; no per-tool distribution is built.Docs: https://moonshotai.github.io/kimi-code/en/customization/skills · https://moonshotai.github.io/kimi-code/en/customization/agents
Scope
Two PRs, in order:
ci.ymlbuilds archives with a pinned CLI version, so the framework side can only follow a CLI release.PR 1 -
feat(cli): add kimi code cli as an install target"kimi"toAiToolIdandAI_TOOL_IDS(cli/src/domain/models/tool-ids.ts:3)..agents/skills/aidd-<name>/SKILL.mdpath builder out ofcli/src/domain/tools/ai/codex.ts:172intodomain/formats/, so codex and kimi share it rather than duplicate it (coding-assertions.md: no duplication,pnpm jscpdguards it).cli/src/domain/tools/ai/kimi.ts: skills through that shared builder, agents through the claude markdown+frontmatter capability, plugins through akimi.plugin.jsonmanifest.infrastructure/deps.ts(side-effect import,kimi:flatandkimi:marketplacebuild strategies),assets/asset-loader.ts,plugin-catalog-repository-adapter.ts,tool-recommendations.ts,menu-use-case.ts.kimi.plugin.jsonentries toPLUGIN_MANIFEST_PROBESandMARKETPLACE_PROBES(cli/src/domain/models/plugin-format.ts:3,12).tests/domain/tools/registry-conformance.unit.test.ts, atests/domain/tools/ai/kimi.unit.test.ts, a golden snapshot, the e2e command matrix cells.PR 2 -
feat(framework): map kimi code cli surfacesplugins/aidd-context/skills/11-explore/references/ai-mapping.md(tables at :17, :27, :37, :59).tool-paths.md(agent-generate, hook-generate, command-generate),04-skill-generate/references/tool-detect.md,02-project-memory/references/tools.md,00-onboard/references/state/detection.md.kimicells to thebuild-per-toolmatrix (.github/workflows/ci.yml:150) and update the archive count indocs/MAINTAINERS.md:71.README.md.Acceptance criteria
aidd plugin add aidd-dev --tool kimiwrites skills to.agents/skills/aidd-*/SKILL.mdand agents to.kimi-code/agents/*.mdwith valid YAML frontmatter.kimiin that project lists the AIDD skills, and/pluginsshows the plugin when installed in marketplace mode.registry-conformance.unit.test.tspasses withkimiregistered, without editing an assertion (the suite iterates the registry).aidd-cli framework build --target kimi --flatand--target kimiboth produce a tree, covered by a golden snapshot.ai-mapping.mdhooks table.pnpm typecheck,pnpm lint,pnpm knip:production,pnpm jscpd,pnpm test,pnpm build(cli/aidd_docs/memory/coding-assertions.md).make checkis green at the repository root.Prior art in this repo
cli/src/domain/tools/ai/codex.ts- closest sibling: same.agents/skills/skill target (:33,:173), same TOML config parsing. Its agents capability differs (TOML, where Kimi wants markdown).cli/src/domain/tools/ai/claude.ts- markdown+frontmatter agents, reusable as-is.cli/tests/domain/tools/registry-conformance.unit.test.ts- the contract a new tool must satisfy; adding the file to its import list is what subjectskimito every assertion.cli/src/infrastructure/deps.ts:259,309- thecodex:marketplaceandcodex:flatbuild strategy entries to mirror.Out of scope
SessionStartequivalent forupdate_memory) is not documented publicly. PR 1 settles it: either theHooksCapabilityis wired, or the hooks table ofai-mapping.mdrecords "Not supported" the way it already does for OpenCode, and the memory sync stays manual under Kimi.McpCapabilityhere. It belongs in the MCP config table ofai-mapping.md:37once confirmed, in a follow-up issue.commandsfield of unverified format. Deferred to the same follow-up as MCP; until then Kimi is a skills-and-agents target, like OpenCode is a rules-less one.AGENTS.md, the treatmentai-mapping.md:15already documents for OpenCode.