Installation & Setup
@maestria/kimi-code is a declarative Kimi Code plugin - a manifest, a directory of skill files, and a global rules file. There is no npm install, no pnpm install, no build step. The plugin is loaded by Kimi Code at session start, and the orchestrator skill auto-injects the methodology.
Prerequisites
Section titled “Prerequisites”- Kimi Code v0.12.0+ - required for first-class
AgentSwarmsupport. On older versions, the orchestrator skill still works, but the swarm guidance falls back to singleAgentcalls. - No Node toolchain required - the plugin is purely declarative files (manifest + markdown).
Installation via CLI (Recommended)
Section titled “Installation via CLI (Recommended)”The maestria CLI provides a unified interface for installing and managing maestria plugins across all supported platforms:
# Install for this platformnpx maestria install kimi-code
# Verify installationnpx maestria statusAlternative: Manual setup
-
Install the plugin
In a Kimi Code session, run:
/plugins install https://github.com/agustinusnathaniel/maestria/tree/release/kimi-codeWhy a branch URL? Kimi Code v0.13.1’s plugin system only finds
kimi.plugin.jsonat the archive root. The plugin lives atpackages/kimi-code/in a monorepo, which Kimi Code cannot extract as a subpath (its URL parser interprets any/tree/<ref>/<subpath>as a git ref, not a path). To make installs work, the CI workflow maintains arelease/kimi-codebranch where the manifest sits at the root. See ADR-KC-000 for the rationale.The plugin lives in a monorepo at
packages/kimi-code/. To cut a new release, push a@maestria/kimi-code@v<version>tag - the CI workflow runsgit subtree splitand force-pushes the result torelease/kimi-code. Three install forms:Install form Command Auto-update (recommended) /plugins install https://github.com/agustinusnathaniel/maestria/tree/release/kimi-codePin to specific commit /plugins install https://github.com/agustinusnathaniel/maestria/commit/<sha>Pin to specific tag (alternative) /plugins install https://github.com/agustinusnathaniel/maestria/releases/tag/<tag> -
Place global rules (REQUIRED)
Kimi Code auto-loads
AGENTS.mdfrom a few locations. The first location it checks is~/.kimi-code/AGENTS.md. Copy the bundled rules file there:Terminal window mkdir -p ~/.kimi-codecp packages/kimi-code/rules/AGENTS.md ~/.kimi-code/AGENTS.mdVerify the file is in place:
Terminal window ls -la ~/.kimi-code/AGENTS.md<!-- Some AGENTS.md files were truncated or omitted to fit the 32 KB budget --> -
Add lifecycle hooks to
config.toml(recommended)Open
~/.kimi-code/config.tomland add the following[[hooks]]blocks. These block destructive bash commands, inject a per-turn orchestrator reminder, and observe compaction cycles.# Block destructive bash commands[[hooks]]event = "PreToolUse"matcher = "Bash"command = "node ~/.kimi-code/hooks/block-dangerous-bash.mjs"timeout = 5# Per-turn orchestrator reminder[[hooks]]event = "UserPromptSubmit"matcher = ""command = "echo 'Maestria active: delegate via the orchestrator skill. Prefer adventurer for recon, architect for design, builder for implementation, diagnose for bugs, reviewer for QA, writer for docs, planner for multi-phase work.'"timeout = 5# Observe compaction cycles (observation-only)[[hooks]]event = "PreCompact"matcher = ".*"command = "echo \"compact start: $(date -Is)\" >> ~/.kimi-code/compact.log"timeout = 5[[hooks]]event = "PostCompact"matcher = ".*"command = "echo \"compact end: $(date -Is)\" >> ~/.kimi-code/compact.log"timeout = 5Save the companion script as
~/.kimi-code/hooks/block-dangerous-bash.mjs:let input = '';process.stdin.on('data', (chunk) => {input += chunk;});process.stdin.on('end', () => {const payload = JSON.parse(input);const command = payload.tool_input?.command ?? '';if (command.includes('rm -rf')) {console.error('Dangerous command detected, blocked');process.exit(2);}}); -
Add permission rules (REQUIRED for safety)
Add the following to
~/.kimi-code/config.toml:# === Builder (coder) - read-only git + test commands ===# 6 separate rules because each `pattern` matches one command.# scope = "session-runtime" applies to the current session only.[[permission.rules]]decision = "allow"pattern = "Bash(git status*)"scope = "session-runtime"reason = "Builder: read-only git status"[[permission.rules]]decision = "allow"pattern = "Bash(git diff*)"scope = "session-runtime"reason = "Builder: read-only git diff"[[permission.rules]]decision = "allow"pattern = "Bash(git log*)"scope = "session-runtime"reason = "Builder: read-only git log"[[permission.rules]]decision = "allow"pattern = "Bash(npm test*)"scope = "session-runtime"reason = "Builder: run npm tests"[[permission.rules]]decision = "allow"pattern = "Bash(pnpm test*)"scope = "session-runtime"reason = "Builder: run pnpm tests"[[permission.rules]]decision = "allow"pattern = "Bash(npx tsc*)"scope = "session-runtime"reason = "Builder: run TypeScript type check"# === Adventurer (explore) - read-only persona; deny Write/Edit ===[[permission.rules]]decision = "deny"pattern = "Write"scope = "session-runtime"reason = "Adventurer is read-only by persona (explore subagent)"[[permission.rules]]decision = "deny"pattern = "Edit"scope = "session-runtime"reason = "Adventurer is read-only by persona (explore subagent)"# === Reviewer (coder) - review-only; deny Write/Edit ===# Reviewer persona opens with !!! DO NOT EDIT FILES. The# persona text is advisory; these rules are the only tool-# layer enforcement (REQUIRED for safety).[[permission.rules]]decision = "deny"pattern = "Write"scope = "session-runtime"reason = "Reviewer is read-only by persona (maker/checker)"[[permission.rules]]decision = "deny"pattern = "Edit"scope = "session-runtime"reason = "Reviewer is read-only by persona (maker/checker)"The
scopefield controls temporal granularity (turn-override,session-runtime,project,user) - it is not per-subagent granularity. Subagent tool lists come from the hardcoded profile (coder/explore/plan), not from per-agent rules. These rules are the only tool-layer enforcement of the persona boundaries declared in each specialist’s SKILL.md. -
Reload plugins and start a new session
Plugin changes only take effect in new sessions. After installing, run:
/reload/new -
Verify
In the fresh session, ask:
“Review these 5 files for security issues: src/auth.ts, src/api.ts, src/db.ts, src/routes.ts, src/middleware.ts”
The orchestrator should:
- Auto-load (via
sessionStart.skill). - Identify the work as ≥3 uniform items → use
AgentSwarmwith thereviewerpersona. - Dispatch a swarm across the 5 files.
If the orchestrator starts writing code directly, something is wrong with the install - check
/plugins listand confirm the session-start skill loaded. - Auto-load (via
Troubleshooting
Section titled “Troubleshooting”Orchestrator not loading
Section titled “Orchestrator not loading”- Check
/plugins list-maestriashould appear withenabled: true. - Check
~/.kimi-code/AGENTS.mdexists. - Restart Kimi Code completely (not just the session).
AgentSwarm not available
Section titled “AgentSwarm not available”- Requires Kimi Code v0.12.0+ for first-class swarm support. On older versions, the orchestrator’s swarm guidance falls back to parallel
Agentcalls.
AGENTS.md gets truncated
Section titled “AGENTS.md gets truncated”- The 32 KB budget is enforced by Kimi Code. Trim verbose sections or move detail into specialist SKILL.md files (loaded on demand via the
Skilltool).
Updating
Section titled “Updating”To update via the maestria CLI:
npx maestria update kimi-codeAlternative: Manual update
Kimi Code installs from a branch URL track the branch. To pick up a new release, re-run the install command:
/plugins install https://github.com/agustinusnathaniel/maestria/tree/release/kimi-codeOr pin to a specific commit:
/plugins install https://github.com/agustinusnathaniel/maestria/commit/<sha>Uninstalling
Section titled “Uninstalling”/plugins uninstall maestriarm ~/.kimi-code/AGENTS.mdOptionally remove the [[hooks]] and [[permission.rules]] blocks from ~/.kimi-code/config.toml.
Next Steps
Section titled “Next Steps”- Quick Start - Your first session with the plugin
- Skill Reference - Detailed documentation for each skill