The Kiro CLI converter creates JSON agent configs, prompt files, skills, and steering files for project context.
Installation
bunx @every-env/compound-plugin install compound-engineering --to kiro
Output Structure
Writes to .kiro/:
.kiro/
├── agents/
│ ├── agent-name.json # Agent config
│ └── prompts/
│ └── agent-name.md # Agent prompt body
├── skills/
│ ├── command-name/
│ │ └── SKILL.md # Commands as skills
│ └── existing-skill/ # Pass-through skills
├── steering/
│ └── compound-engineering.md # CLAUDE.md content
└── settings/
└── mcp.json # MCP server config (stdio only)
Kiro uses a split config approach: JSON for agent metadata, Markdown for prompt content.
Conversion Details
Agents → JSON Configs + Prompts
Each agent generates two files:
Config (.kiro/agents/plan-specialist.json):
{
"name" : "plan-specialist" ,
"description" : "Planning agent for complex features" ,
"prompt" : "file://./prompts/plan-specialist.md" ,
"tools" : [ "*" ],
"resources" : [
"file://.kiro/steering/**/*.md" ,
"skill://.kiro/skills/**/SKILL.md"
],
"includeMcpJson" : true ,
"welcomeMessage" : "Switching to the plan-specialist agent. Planning agent for complex features"
}
Prompt (.kiro/agents/prompts/plan-specialist.md):
## Capabilities
- Break down complex features
- Create detailed plans
You are a planning specialist...
Commands → Skills
Commands become skills:
---
name : workflows-plan
description : Turn feature ideas into detailed plans
---
You are a planning specialist. Use the use_subagent tool to delegate to the repo-research-analyst agent: research the feature.
Steering Files
If the plugin has a CLAUDE.md file, it’s converted to a steering file:
# Compound Engineering
This plugin provides tools for compound engineering workflows...
Steering files provide context to all agents in the project.
Content Transformation
Task agent calls :
- Task repo-research-analyst(feature_description)
+ Use the use_subagent tool to delegate to the repo-research-analyst agent: feature_description
Path rewriting :
- ~/.claude/skills/
+ ~/.kiro/skills/
- .claude/
+ .kiro/
Slash command refs :
- Run /workflows:plan
+ Run the workflows-plan skill
Tool name mapping :
- Use the Bash tool
+ Use the shell tool
- Use the Write tool
+ Use the write tool
- Use the Read tool
+ Use the read tool
Claude Kiro Notes BashshellShell commands WritewriteFull-file write ReadreadRead files EditwriteLossy : Kiro write is full-file, not surgical editGlobglobFind files GrepgrepSearch content WebFetchweb_fetchHTTP requests Taskuse_subagentSubagent delegation
Edit maps to write, which is a lossy mapping. Kiro’s write tool rewrites the entire file, unlike Claude’s surgical edits.
MCP Servers
MCP servers are written to settings/mcp.json:
{
"mcpServers" : {
"filesystem" : {
"command" : "npx" ,
"args" : [ "-y" , "@modelcontextprotocol/server-filesystem" ],
"env" : {
"ALLOWED_PATHS" : "/Users/you/projects"
}
}
}
}
stdio only : Kiro only supports stdio-based MCP servers (command + args).
Remote MCP servers (HTTP/SSE) are not supported and will be skipped with a warning.
Name Normalization
Names are normalized to kebab-case with strict validation :
Input Output Valid? workflows:planworkflows-plan✓ Plan Reviewplan-review✓ my/commandmy-command✓ UPPERCASEuppercase✓ 123-startitem✗ (must start with letter) very-long-name-that-exceeds-64-chars...Truncated at 64 ✓
Rules:
Max length : 64 characters
Pattern : /^[a-z][a-z0-9-]*$/
Must start with a letter
Lowercase only
Colons, slashes, spaces → hyphens
Consecutive hyphens collapsed
Example Output
Input (Claude agent):
{
"name" : "code-review-agent" ,
"description" : "Review code for issues" ,
"capabilities" : [ "Identify bugs" , "Suggest improvements" ],
"body" : "You review code carefully."
}
Output (.kiro/agents/code-review-agent.json):
{
"name" : "code-review-agent" ,
"description" : "Review code for issues" ,
"prompt" : "file://./prompts/code-review-agent.md" ,
"tools" : [ "*" ],
"resources" : [
"file://.kiro/steering/**/*.md" ,
"skill://.kiro/skills/**/SKILL.md"
],
"includeMcpJson" : true ,
"welcomeMessage" : "Switching to the code-review-agent agent. Review code for issues"
}
Output (.kiro/agents/prompts/code-review-agent.md):
## Capabilities
- Identify bugs
- Suggest improvements
You review code carefully.
Limitations
stdio MCP only : Remote MCP servers are not supported
No hooks support : Kiro uses a different hook format (preToolUse/postToolUse in agent configs)
Lossy tool mapping : Edit → write loses surgical edit capability
64-char name limit : Names are truncated at 64 characters
Description truncation : Descriptions are limited to 1024 characters
If your plugin has hooks, they will not be converted. Kiro’s hook format (preToolUse/postToolUse) is incompatible with Claude’s event-based hooks.
Sync Support
Sync personal Claude config to Kiro:
bunx @every-env/compound-plugin sync --target kiro
This syncs:
Personal skills from ~/.claude/skills/ (symlinked)
Personal commands from ~/.claude/commands/ (as skills)
MCP servers from ~/.claude/settings.json (stdio only, to settings/mcp.json)
See Also
Kiro CLI Documentation Official Kiro CLI documentation
Sync Command Sync personal Claude config to Kiro