diff --git a/.kimi/README.md b/.kimi/README.md new file mode 100644 index 000000000..f496f724d --- /dev/null +++ b/.kimi/README.md @@ -0,0 +1,22 @@ +# ECC for Kimi Code CLI + +This directory contains the ECC (Everything Claude Code) configuration for the Kimi Code CLI harness. + +## What is installed + +- `rules/ecc/` — shared coding rules and guidelines +- `skills/ecc/` — reusable skills +- `commands/` — slash commands +- `AGENTS.md` — agent instructions + +## Manual install + +```bash +bash ./install.sh --target kimi --profile minimal +``` + +## Notes + +- The `kimi` target installs into the project-level `./.kimi/` directory. +- Kimi Code CLI's own config (`~/.kimi-code/config.toml`, plugins) is **not** touched by ECC install. +- Use `npx ecc doctor --target kimi` to check install health. diff --git a/manifests/install-modules.json b/manifests/install-modules.json index 64d0308a7..ede68e3dc 100644 --- a/manifests/install-modules.json +++ b/manifests/install-modules.json @@ -18,7 +18,8 @@ "qwen", "zed", "hermes", - "openclaw" + "openclaw", + "kimi" ], "dependencies": [], "defaultInstall": true, @@ -45,7 +46,8 @@ "qwen", "zed", "hermes", - "openclaw" + "openclaw", + "kimi" ], "dependencies": [], "defaultInstall": true, @@ -72,7 +74,8 @@ "qwen", "zed", "hermes", - "openclaw" + "openclaw", + "kimi" ], "dependencies": [], "defaultInstall": true, @@ -116,7 +119,8 @@ "scripts/auto-update.js", "scripts/setup-package-manager.js", ".hermes", - ".openclaw" + ".openclaw", + ".kimi" ], "targets": [ "claude", @@ -131,7 +135,8 @@ "qwen", "zed", "hermes", - "openclaw" + "openclaw", + "kimi" ], "dependencies": [], "defaultInstall": true, @@ -288,7 +293,8 @@ "qwen", "zed", "hermes", - "openclaw" + "openclaw", + "kimi" ], "dependencies": [ "platform-configs" diff --git a/package.json b/package.json index aae1bcd9d..38768ae70 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ ".cursor/", ".gemini/", ".hermes/", + ".kimi/", ".opencode/", ".openclaw/", ".qwen/", diff --git a/schemas/ecc-install-config.schema.json b/schemas/ecc-install-config.schema.json index f98372321..d4e4bee96 100644 --- a/schemas/ecc-install-config.schema.json +++ b/schemas/ecc-install-config.schema.json @@ -30,7 +30,8 @@ "qwen", "zed", "hermes", - "openclaw" + "openclaw", + "kimi" ] }, "profile": { diff --git a/schemas/install-modules.schema.json b/schemas/install-modules.schema.json index 143390cbb..3cff4a892 100644 --- a/schemas/install-modules.schema.json +++ b/schemas/install-modules.schema.json @@ -60,7 +60,8 @@ "qwen", "zed", "hermes", - "openclaw" + "openclaw", + "kimi" ] } }, diff --git a/scripts/install-apply.js b/scripts/install-apply.js index cfd52257c..c0702ff27 100755 --- a/scripts/install-apply.js +++ b/scripts/install-apply.js @@ -43,6 +43,7 @@ Targets: qwen - Install commands, agents, skills, rules, and Qwen config into ~/.qwen/ zed - Install project settings, commands, agents, skills, and flattened rules into ./.zed/ hermes - Install shared rules/skills/commands into ~/.hermes/ + kimi - Install shared rules/skills/commands into ./.kimi/ openclaw - Install shared rules/skills/commands into ~/.openclaw/ Options: diff --git a/scripts/lib/install-manifests.js b/scripts/lib/install-manifests.js index 2736fc3c8..a6c12f795 100644 --- a/scripts/lib/install-manifests.js +++ b/scripts/lib/install-manifests.js @@ -4,7 +4,7 @@ const path = require('path'); const { getInstallTargetAdapter, planInstallTargetScaffold } = require('./install-targets/registry'); const DEFAULT_REPO_ROOT = path.join(__dirname, '../..'); -const SUPPORTED_INSTALL_TARGETS = ['claude', 'claude-project', 'cursor', 'antigravity', 'codex', 'gemini', 'opencode', 'codebuddy', 'joycode', 'qwen', 'zed', 'hermes', 'openclaw']; +const SUPPORTED_INSTALL_TARGETS = ['claude', 'claude-project', 'cursor', 'antigravity', 'codex', 'gemini', 'opencode', 'codebuddy', 'joycode', 'qwen', 'zed', 'hermes', 'openclaw', 'kimi']; const COMPONENT_FAMILY_PREFIXES = { baseline: 'baseline:', language: 'lang:', @@ -87,6 +87,13 @@ const LEGACY_COMPAT_BASE_MODULE_IDS_BY_TARGET = Object.freeze({ 'platform-configs', 'workflow-quality', ], + kimi: [ + 'rules-core', + 'agents-core', + 'commands-core', + 'platform-configs', + 'workflow-quality', + ], }); const LEGACY_LANGUAGE_ALIAS_TO_CANONICAL = Object.freeze({ c: 'c', diff --git a/scripts/lib/install-targets/helpers.js b/scripts/lib/install-targets/helpers.js index 6ffe805a5..79806c481 100644 --- a/scripts/lib/install-targets/helpers.js +++ b/scripts/lib/install-targets/helpers.js @@ -8,6 +8,7 @@ const PLATFORM_SOURCE_PATH_OWNERS = Object.freeze({ '.cursor': 'cursor', '.gemini': 'gemini', '.hermes': 'hermes', + '.kimi': 'kimi', '.joycode': 'joycode', '.opencode': 'opencode', '.openclaw': 'openclaw', diff --git a/scripts/lib/install-targets/kimi-project.js b/scripts/lib/install-targets/kimi-project.js new file mode 100644 index 000000000..ed26cb43d --- /dev/null +++ b/scripts/lib/install-targets/kimi-project.js @@ -0,0 +1,10 @@ +const { createInstallTargetAdapter } = require('./helpers'); + +module.exports = createInstallTargetAdapter({ + id: 'kimi-project', + target: 'kimi', + kind: 'project', + rootSegments: ['.kimi'], + installStatePathSegments: ['ecc-install-state.json'], + nativeRootRelativePath: '.kimi', +}); diff --git a/scripts/lib/install-targets/registry.js b/scripts/lib/install-targets/registry.js index a0ee98f43..268cf707b 100644 --- a/scripts/lib/install-targets/registry.js +++ b/scripts/lib/install-targets/registry.js @@ -7,6 +7,7 @@ const cursorProject = require('./cursor-project'); const geminiProject = require('./gemini-project'); const hermesHome = require('./hermes-home'); const joycodeProject = require('./joycode-project'); +const kimiProject = require('./kimi-project'); const openclawHome = require('./openclaw-home'); const opencodeHome = require('./opencode-home'); const qwenHome = require('./qwen-home'); @@ -24,6 +25,7 @@ const ADAPTERS = Object.freeze([ openclawHome, codebuddyProject, joycodeProject, + kimiProject, qwenHome, zedProject, ]);