Skip to main content

Kiro Setup

This document explains how to install and configure oh-my-aidlcops (OMA) in the Kiro harness. OMA supports both Claude Code and Kiro with identical skill and state foundations; both harnesses share the .omao/ directory at the project root.

Kiro Harness

Kiro is a skills-first agent harness distinct from Claude Code. Key differences:

AspectClaude CodeKiro
Plugin unitplugin/ directoryFlat skill-level deployment
Skill location~/.claude/plugins/<plugin>/skills/<skill>/~/.kiro/skills/<plugin>/<skill>/
Command system/slash-commandDirect skill invocation
SteeringAuto-injected by Claude Code.kiro/steering/ directory-based
Trigger hintssettings.json hookskiro.meta.yaml sidecar

OMA absorbs these differences in install/kiro.sh, sharing the identical plugins/<plugin>/skills/<skill>/SKILL.md source across both harnesses.

Prerequisites

ToolVersionInstallation
Kiro runtimelatest stableKiro Official Guide
bash4+brew install bash (macOS)
jq1.6+brew install jq / apt install jq
git2.30+System defaults acceptable
uv / uvxlatestpipx install uv (required for MCP servers)

Installation

Kiro does not provide a native marketplace path, so manual installation is the only option.

git clone https://github.com/aws-samples/sample-oh-my-aidlcops
cd oh-my-aidlcops
bash scripts/install/kiro.sh

Expected output after script execution:

[install-kiro] OMA repo : /.../oh-my-aidlcops
[install-kiro] KIRO_HOME: /home/user/.kiro
[install-kiro] OMA_OWNER: aws-samples
[install-kiro] skill linked: agentic-platform/vllm-serving-setup
[install-kiro] skill linked: agenticops/self-improving-loop
...
[install-kiro] steering linked: /home/user/.kiro/steering

Installation complete.
skills linked : 23
kiro.meta.yaml found : 7

After installation, the Kiro home directory has the following structure:

~/.kiro/
├── skills/
│ ├── agentic-platform/
│ │ ├── agentic-eks-bootstrap -> <repo>/plugins/agentic-platform/skills/agentic-eks-bootstrap
│ │ ├── vllm-serving-setup -> <repo>/plugins/agentic-platform/skills/vllm-serving-setup
│ │ ├── inference-gateway-routing -> ...
│ │ └── ...
│ ├── agenticops/
│ │ ├── self-improving-loop -> ...
│ │ ├── autopilot-deploy -> ...
│ │ ├── incident-response -> ...
│ │ ├── continuous-eval -> ...
│ │ └── cost-governance -> ...
│ ├── aidlc-inception/
│ └── aidlc-construction/
├── steering -> <repo>/steering
├── guides/ # NEW: stage-by-stage safety guides (per-plugin directory)
│ └── agentic-platform/ -> <repo>/plugins/agentic-platform/guides
├── agents/ # NEW: Kiro agent profiles
│ └── agentic-platform.agent.json -> <repo>/plugins/agentic-platform/kiro-agents/agentic-platform.agent.json
└── settings/ # NEW: CLI settings
└── cli.json # Default template (user-editable)

Each symlink points to the original directory in the OMA repository. Thus, updating the repository with git pull immediately makes latest skills available to Kiro.

Idempotency

install/kiro.sh is idempotent. Re-running preserves existing symlinks if their targets are correct and creates only corrupted links. If an actual file occupies a symlink location, the script warns and does not overwrite.

[install-kiro][warn] refusing to replace non-symlink: /home/user/.kiro/skills/my-skill

kiro.meta.yaml Sidecar

Some Claude Code SKILL.md frontmatter fields are not directly interpreted by Kiro. Some skills provide Kiro-specific metadata as a kiro.meta.yaml sidecar file; the install script detects and logs this.

[install-kiro] skill linked: agentic-platform/vllm-serving-setup
[install-kiro] kiro.meta.yaml sidecar detected for agentic-platform/vllm-serving-setup

Example sidecar structure:

# kiro.meta.yaml
kiro:
trigger_keywords:
- "vllm"
- "model serving"
- "PagedAttention"
context_files:
- SKILL.md
- reference/vllm-config.yaml
mcp_required:
- eks-mcp-server
- aws-pricing-mcp-server
phase: operations
approval_required: true

Kiro reads this metadata to perform:

  • trigger_keywords — Prioritize skill suggestion on natural language match
  • context_files — Load additional files alongside skill execution
  • mcp_required — Verify required MCP server connections before execution
  • phase — Classify as Inception / Construction / Operations stage
  • approval_required — Whether checkpoint approval is required

Skills without sidecars operate normally using only SKILL.md frontmatter.

Full Kiro Layout Support

OMA supports the complete directory layout used in AWS Kiro modernization samples. The install script automatically configures these 5 directories:

1. skills/ — Executable Skills

Symlinks all plugin skills/ subdirectories to ~/.kiro/skills/<plugin>/<skill>/ form. Each skill comprises SKILL.md and optional kiro.meta.yaml sidecar.

2. steering/ — Global Orientation

Symlinks the steering/ directory to ~/.kiro/steering/.

steering/
├── oma-hub.md # OMA global orientation
├── commands/
│ └── oma/ # /oma:* slash command definitions (Claude Code-specific)
└── workflows/ # 5-checkpoint workflow templates

Kiro does not interpret commands/oma/ as slash commands but uses file content as skill orchestration reference material. The 5-checkpoint templates in workflows/ operate identically across both harnesses.

3. guides/ — Stage-by-Stage Safety Guides

Symlinks plugin guides/ directories to ~/.kiro/guides/<plugin>/ form. Guides are stage-gated, safety-critical content loaded per workflow stage.

~/.kiro/guides/
└── agentic-platform/ -> <repo>/plugins/agentic-platform/guides
├── aws-practices/ # AWS Well-Architected-based guides
├── common/ # Common safety baselines
└── stages/ # Stage-by-stage checkpoint guides
├── stage-1-analysis.md
├── stage-2-requirements.md
└── ...

Kiro automatically loads the guide for the current workflow stage into context. For example, during the stage-2-requirements phase, stages/stage-2-requirements.md is injected as context.

4. agents/ — Kiro Agent Profiles

Symlinks plugin kiro-agents/*.json files to ~/.kiro/agents/ directory. Each agent profile defines:

  • MCP Server Configuration — List of required MCP servers and environment variables
  • Auto-approval Rules — Read-only / file write / bash command approval policies
  • Resource Loading — Steering files and skill paths to load on agent startup

Example: agentic-platform.agent.json

{
"name": "agentic-platform",
"description": "Agentic AI Platform architect for EKS + vLLM + Inference Gateway + Langfuse on AWS.",
"mcpServers": {
"awslabs.eks-mcp-server": { "command": "uvx", "args": ["awslabs.eks-mcp-server==0.1.28"] },
"awslabs.aws-documentation-mcp-server": { ... }
},
"autoApprove": {
"readOnly": true
}
}

In Kiro runtime, activate the profile in the form @agentic-platform.

5. settings/ — CLI Default Configuration

Copies scripts/kiro-cli.template.json template to ~/.kiro/settings/cli.json (only if no existing file). This file defines default Kiro CLI behavior.

{
"defaultModel": "claude-sonnet-4-6",
"autoApprove": {
"readOnly": true,
"fileWrites": false,
"bashCommands": false
},
"steering": {
"alwaysLoad": ["oma-hub.md"]
}
}

After installation, users can directly edit this file to adjust default model, auto-approval policy, and steering files to always load.

Project Initialization

Initialize .omao/ in your project directory, the same as Claude Code. If you ran oma setup, this is already done — no manual call needed.

To initialize manually without the full setup wizard:

cd <your-project>
oma init

Since .omao/ is harness-agnostic, state stays synchronized even if you use Claude Code and Kiro in parallel on the same project. For example, you can start an AIDLC loop in Kiro and continue it in Claude Code for checkpoint approvals.

AIDLC Extensions (opt-in)

Kiro also supports awslabs/aidlc-workflows extensions.

bash scripts/install/aidlc-extensions.sh

The script clones awslabs/aidlc-workflows to ~/.aidlc and symlinks OMA's *.opt-in.md extensions. Kiro does not auto-load ~/.aidlc as skill context, so you must either reference it explicitly during skill invocation or copy it to your project's .omao/plans/ directory.

Environment Variables

VariableDefaultDescription
OMA_OWNERaws-samplesGitHub owner
KIRO_HOME$HOME/.kiroKiro installation directory

You can reassign KIRO_HOME in CI environments or on multi-user machines to create isolated installations.

KIRO_HOME=/opt/kiro-ci bash scripts/install/kiro.sh

Installation Verification

# 1. Check skill directory
ls ~/.kiro/skills/
# agentic-platform/ agenticops/ aidlc-inception/ aidlc-construction/

# 2. Skill count per plugin
for p in agentic-platform agenticops aidlc-inception aidlc-construction; do
echo "$p: $(ls ~/.kiro/skills/$p/ 2>/dev/null | wc -l) skills"
done

# 3. Verify steering symlink
ls -la ~/.kiro/steering
# Should be a symbolic link to <repo>/steering

Invoke a skill in Kiro runtime to verify normal operation.

> agenticops/self-improving-loop analyze traces and write improvement PR

Troubleshooting

Skills not showing in Kiro

Check whether symlinks were created under ~/.kiro/skills/.

find ~/.kiro/skills/ -maxdepth 2 -type l | head

If symlinks are broken, reinstall.

rm -rf ~/.kiro/skills/agentic-platform ~/.kiro/skills/agenticops \
~/.kiro/skills/aidlc-inception ~/.kiro/skills/aidlc-construction
bash ~/.oma/scripts/install/kiro.sh

This occurs when actual files exist in the Kiro skill directory. Back up and remove the conflicting file, then reinstall.

mv ~/.kiro/skills/<conflicting-skill> ~/.kiro/skills/<conflicting-skill>.bak
bash ~/.oma/scripts/install/kiro.sh

kiro.meta.yaml not taking effect

Sidecar field support varies by Kiro version. Check the following:

# Verify sidecar file existence
find ~/.kiro/skills/ -name 'kiro.meta.yaml' | head

# Check sidecar load in Kiro runtime logs (see Kiro documentation)

Unsupported fields are ignored and do not affect basic skill operation.

State mismatch between Claude Code and Kiro

Both harnesses share the same .omao/, so they should stay synchronized by design. If mismatch occurs, suspect file system sync issues (NFS, network drives).

# Verify the file system is local
df -T .omao/
# If it is a network drive, migration to local disk is recommended

MCP server connection fails

Kiro runtime may not find the uvx path. Add the uv installation path (~/.local/bin or ~/.cargo/bin) to PATH in Kiro settings.

Kiro-Specific Considerations

Trigger Keyword-Based Invocation

Kiro auto-matches natural language input to skills based on trigger_keywords in kiro.meta.yaml. This is similar to Claude Code's Keyword Triggers hook-based structure but handled by Kiro's internal engine.

Checkpoint Approval UX

Kiro displays checkpoints as inline prompts in the conversation. Approve/reject/revise by entering approve / reject / revise <comment>. Input format is identical to Claude Code, so learning cost is minimal.

Log Collection

Kiro stores execution logs in ~/.kiro/logs/. OMA does not separately collect these logs, but attaching that directory with bug reports enables reproducibility.

Removal

# Remove skill symlinks
rm -rf ~/.kiro/skills/agentic-platform ~/.kiro/skills/agenticops \
~/.kiro/skills/aidlc-inception ~/.kiro/skills/aidlc-construction

# Remove steering symlink
rm ~/.kiro/steering

# (Optional) Remove project state
rm -rf <your-project>/.omao/

Reference Materials

Official Documentation

OMA Internal Documentation