-
-
Notifications
You must be signed in to change notification settings - Fork 4.4k
feat: add Kiro IDE support via config-driven installer #1589
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Replace broken kiro-cli.js custom installer with config-driven approach using platform-codes.yaml. Creates Kiro-specific templates with inclusion: manual frontmatter and #[[file:...]] reference syntax.
|
@coderabbitai review |
🤖 Augment PR SummarySummary: This PR adds first-class Kiro IDE support by moving Kiro onto the existing config-driven installer flow. Changes:
Technical notes: Kiro now follows the same template resolution and artifact rendering path as other config-driven IDEs, reducing custom maintenance and keeping generation consistent across tools. 🤖 Was this summary useful? React with 👍 or 👎 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| | Claude Code | `.claude/commands/` | `@path` references | | ||
| | Kiro | `.kiro/steering/` | `#[[file:path]]` references with `inclusion: manual` frontmatter | | ||
| | Cursor | `.cursor/commands/` | `@path` references | | ||
| | Windsurf | `.windsurf/workflows/` | `@{project-root}/path` references | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Windsurf row claims @{project-root}/path references, but the current Windsurf workflow template reads files via plain {project-root}/_bmad/... (no @ include), so this table may be inaccurate for Windsurf users.
Severity: low
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| ├── _bmad-output/ # Generated artifacts | ||
| └── .claude/ # Claude Code commands (if using Claude Code) | ||
| ├── .claude/ # Claude Code commands (if using Claude Code) | ||
| └── .kiro/ # Kiro steering files (if using Kiro) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
|
||
| kiro-cli: | ||
| name: "Kiro CLI" | ||
| kiro: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Renaming the tool ID from kiro-cli to kiro is a breaking change for scripted/non-interactive installs (e.g., --tools kiro-cli); consider an alias or explicit migration note so existing automation doesn’t start failing unexpectedly.
Severity: medium
Other Locations
tools/platform-codes.yaml:70
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
📝 WalkthroughWalkthroughThis PR refactors Kiro support by removing the legacy KiroCliSetup implementation, reconfiguring Kiro from a CLI tool to an IDE in platform definitions, adding five new Kiro-specific template files, and updating documentation and installer references to reflect the architectural shift. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~22 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
docs/how-to/install-bmad.md (2)
19-19:⚠️ Potential issue | 🟡 MinorPrerequisites list doesn't mention Kiro.
Line 19 lists "Claude Code, Cursor, Windsurf, or similar" but now that Kiro is a first-class supported tool (added to the selection list on line 44 and given its own tree entry), it should appear here too — or the wording should be made generic enough to not enumerate specific tools.
Proposed fix
-- **AI tool** (Claude Code, Cursor, Windsurf, or similar) +- **AI tool** (Claude Code, Cursor, Windsurf, Kiro, or similar)
60-69:⚠️ Potential issue | 🟡 MinorDirectory tree is selectively incomplete.
The tree shows
.claude/and.kiro/output directories but omits.cursor/and.windsurf/, which are equally valid installer outputs. This creates a misleading impression that only Claude Code and Kiro produce project-level artifacts. Either show all IDE outputs (with conditional comments) or use a single generic placeholder like.<ide>/to avoid playing favourites.
🤖 Fix all issues with AI agents
In `@docs/index.md`:
- Around line 36-40: Update the Kiro list item text to match current branding:
replace the description "Amazon's AI-powered IDE" with a phrasing like "Agentic
AI development from prototype to production — spec-driven development" and keep
the existing URL `https://kiro.dev`; edit the list entry that currently reads
"**[Kiro](https://kiro.dev)** — Amazon's AI-powered IDE" to the new branded
description so the item accurately reflects Kiro's positioning.
In `@docs/reference/commands.md`:
- Around line 20-26: The table showing supported AI tools (header row "AI Tool |
Location | File Reference Syntax" and entries like "Claude Code", "Kiro",
"Cursor", "Windsurf") only lists 4 of 15+ platforms; update
docs/reference/commands.md by either adding a final row titled "Other tools"
that points readers to the installer or the canonical platform list
(platform-codes.yaml) and explains that other tools (e.g., Cline, Roo, Auggie,
Codex, Gemini, GitHub Copilot) are supported, or add a short sentence below the
table clarifying the table is not exhaustive and linking to the installer and
platform-codes.yaml for the full list.
In `@tools/cli/installers/lib/ide/platform-codes.yaml`:
- Around line 114-115: Add a migration for the renamed platform code from
"kiro-cli" to "kiro": update platform lookup logic (e.g., getPlatformByCode /
resolvePlatformCode) to treat "kiro-cli" as an alias for "kiro", and add a
config migration routine (e.g., migrateLegacyConfig or
migratePlatformConfigFiles) that detects a legacy kiro-cli.yaml, renames it to
kiro.yaml (preserving file contents and metadata/permissions), and skips
overwrite if kiro.yaml already exists (or merge safely). Ensure any
history/selection loading paths also map "kiro-cli" → "kiro" so existing config
and user selections continue to work.
In `@tools/cli/installers/lib/ide/templates/combined/kiro-agent.md`:
- Line 7: Update the line containing "NEVER break character until given an exit
command" in the kiro-agent persona template to either (a) point readers to where
the exit command is defined (e.g., "see the activation section of this agent
file for the exit command") or (b) define a sensible default exit command inline
(for example, "default exit command: 'EXIT_AGENT'") and ensure the document
references the activation section or the exact exit token; modify the wording to
include the pointer or default so users are not left without an exit mechanism.
🧹 Nitpick comments (10)
tools/cli/installers/lib/ide/templates/combined/kiro-task.md (2)
7-9: Standardize action verbs to “read and follow” per repo convention.These are action instructions, so the verb standardization rule applies; “Read … Follow …” should be collapsed to “Read and follow …” to avoid drift.
Based on learnings, when standardizing verbs like "execute", "invoke", "run" per issue#1378and PR#1387/#1570, only action instructions (that tell the AI how to perform an action) are replaced with "load and follow" or "read and follow". Section headers, frontmatter metadata, and other descriptive/structural elements are intentionally left unchanged, as they label topics rather than instruct actions.Proposed change
-Read the entire task file at: #[[file:{{bmadFolderName}}/{{path}}]] - -Follow all instructions in the task file exactly as written. +Read and follow the entire task file: #[[file:{{bmadFolderName}}/{{path}}]]
7-7: Adjust phrasing to align with other Kiro template conventions.The
#[[file:...]]syntax does not require a "LOAD" keyword—Kiro's documentation confirms this syntax works directly. However, other critical Kiro templates in this repository (kiro-workflow.md,kiro-agent.md) use explicit phrasing like "LOAD the FULL ... READ its entire contents" to emphasize the importance of including the file. Consider updating line 7 to match that pattern for consistency and clarity:LOAD the FULL task file from #[[file:{{bmadFolderName}}/{{path}}]] and READ its entire contents.This aligns the task template with the established convention for critical file references across Kiro templates.
tools/cli/installers/lib/ide/templates/combined/kiro-tool.md (1)
7-9: Standardize action verbs to “read and follow” per repo convention.These are action instructions; they should use the standardized verb form.
Based on learnings, when standardizing verbs like "execute", "invoke", "run" per issue#1378and PR#1387/#1570, only action instructions (that tell the AI how to perform an action) are replaced with "load and follow" or "read and follow". Section headers, frontmatter metadata, and other descriptive/structural elements are intentionally left unchanged, as they label topics rather than instruct actions.Proposed change
-Read the entire tool file at: #[[file:{{bmadFolderName}}/{{path}}]] - -Follow all instructions in the tool file exactly as written. +Read and follow the entire tool file: #[[file:{{bmadFolderName}}/{{path}}]]tools/cli/installers/lib/ide/templates/combined/kiro-workflow.md (2)
7-7: Align action wording with “load and follow” convention.“FOLLOW THIS COMMAND: LOAD … READ … follow …” is inconsistent with the standardized action phrasing and invites divergent behavior.
Based on learnings, when standardizing verbs like "execute", "invoke", "run" per issue#1378and PR#1387/#1570, only action instructions (that tell the AI how to perform an action) are replaced with "load and follow" or "read and follow". Section headers, frontmatter metadata, and other descriptive/structural elements are intentionally left unchanged, as they label topics rather than instruct actions.Proposed change
-IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL #[[file:{{bmadFolderName}}/{{path}}]], READ its entire contents and follow its directions exactly! +IT IS CRITICAL THAT YOU LOAD AND FOLLOW the FULL #[[file:{{bmadFolderName}}/{{path}}]] exactly as written.
7-7: Inconsistent “stay in character” guidance vs. workflow-yaml template.
kiro-workflow-yaml.mdexplicitly instructs the agent to stay in character; this template does not. That split can cause behavior drift between YAML and non-YAML workflows. Either add the instruction here or remove it there.tools/cli/installers/lib/ide/templates/combined/kiro-agent.md (1)
10-15: Standardize action verbs in activation steps.These are action instructions; replace “LOAD/READ/FOLLOW” with the standardized “load and follow/read and follow” forms for consistency.
Based on learnings, when standardizing verbs like "execute", "invoke", "run" per issue#1378and PR#1387/#1570, only action instructions (that tell the AI how to perform an action) are replaced with "load and follow" or "read and follow". Section headers, frontmatter metadata, and other descriptive/structural elements are intentionally left unchanged, as they label topics rather than instruct actions.Proposed change
-1. LOAD the FULL agent file from #[[file:{{bmadFolderName}}/{{path}}]] -2. READ its entire contents - this contains the complete agent persona, menu, and instructions -3. FOLLOW every step in the <activation> section precisely +1. Load and follow the FULL agent file: #[[file:{{bmadFolderName}}/{{path}}]] +2. Read and follow its entire contents — this contains the complete agent persona, menu, and instructions +3. Read and follow every step in the <activation> section preciselytools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md (2)
12-13: Use file reference syntax for the workflow-config path.Step 3 passes a raw path string, which can be misinterpreted or ignored by Kiro. Use the same
#[[file:...]]syntax to enforce file loading.Proposed change
-3. Pass the yaml path {{bmadFolderName}}/{{path}} as 'workflow-config' parameter to the workflow.xml instructions +3. Pass the yaml file #[[file:{{bmadFolderName}}/{{path}}]] as the 'workflow-config' parameter to the workflow.xml instructions
11-14: Standardize action verbs (“EXECUTING” → “following”) per repo convention.The instruction uses “EXECUTING,” which conflicts with the standard action verb replacements.
Based on learnings, when standardizing verbs like "execute", "invoke", "run" per issue#1378and PR#1387/#1570, only action instructions (that tell the AI how to perform an action) are replaced with "load and follow" or "read and follow". Section headers, frontmatter metadata, and other descriptive/structural elements are intentionally left unchanged, as they label topics rather than instruct actions.Proposed change
-2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config #[[file:{{bmadFolderName}}/{{path}}]] +2. Read and follow its entire contents — this is the CORE OS for FOLLOWING the specific workflow-config #[[file:{{bmadFolderName}}/{{path}}]]docs/reference/commands.md (1)
27-31: Example paths are Claude Code–only, but Kiro was just added.Given that the purpose of this PR is to add Kiro support, showing at least one Kiro example path (e.g.,
.kiro/steering/bmad/<module>/agents/) would demonstrate the new feature and help Kiro users orient themselves. Currently there's no example of what the Kiro steering file tree looks like.tools/platform-codes.yaml (1)
70-74: Systematic duplication across 21+ platform entries — metadata drift risk extends beyond kiro.Both
tools/platform-codes.yamlandtools/cli/installers/lib/ide/platform-codes.yamldefine nearly identical metadata for the same set of entries (cline, cursor, kiro, and others). The IDE file extends with installer-specific config, but the shared metadata (name, preferred, category, description) is duplicated. Any independent update to either file will cause silent divergence — for example, updating the description of cline in the top-level file won't propagate to the IDE installer config that uses it.Consider refactoring to make the top-level file the single source of truth for metadata, with the IDE file importing or extending only the installer-specific sections. At minimum, cross-reference comments documenting which entries are mirrored across files.
| - **[Claude Code](https://code.claude.com)** — Anthropic's CLI tool (recommended) | ||
| - **[Cursor](https://cursor.sh)** — AI-first code editor | ||
| - **[Windsurf](https://codeium.com/windsurf)** — Codeium's AI IDE | ||
| - **[Kiro](https://kiro.dev)** — Amazon's AI-powered IDE | ||
| - **[Roo Code](https://roocode.com)** — VS Code extension |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
Kiro IDE official website current description Amazon
💡 Result:
Official website (Kiro): Kiro describes itself as “Agentic AI development from prototype to production” and says it “brings structure to AI coding with spec-driven development.” [1]
Amazon/AWS: Kiro is developed by Amazon Web Services (AWS). [2]
Sources:
[1] Kiro official site (kiro.dev)
[2] AlternativeTo “Kiro” about page (lists developer as Amazon Web Services, Inc.)
Update Kiro description to reflect current branding.
The URL https://kiro.dev is correct, but the description "Amazon's AI-powered IDE" mischaracterizes the product. Kiro positions itself as "Agentic AI development from prototype to production" with spec-driven development focus. Update the description to align with Kiro's actual branding rather than labeling it generically as an IDE.
🤖 Prompt for AI Agents
In `@docs/index.md` around lines 36 - 40, Update the Kiro list item text to match
current branding: replace the description "Amazon's AI-powered IDE" with a
phrasing like "Agentic AI development from prototype to production — spec-driven
development" and keep the existing URL `https://kiro.dev`; edit the list entry
that currently reads "**[Kiro](https://kiro.dev)** — Amazon's AI-powered IDE" to
the new branded description so the item accurately reflects Kiro's positioning.
| | AI Tool | Location | File Reference Syntax | | ||
| | --- | --- | --- | | ||
| | Claude Code | `.claude/commands/` | `@path` references | | ||
| | Kiro | `.kiro/steering/` | `#[[file:path]]` references with `inclusion: manual` frontmatter | | ||
| | Cursor | `.cursor/commands/` | `@path` references | | ||
| | Windsurf | `.windsurf/workflows/` | `@{project-root}/path` references | | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Table only covers 4 of 15+ supported platforms.
Users of Cline, Roo, Auggie, Codex, Gemini, GitHub Copilot, and others will look at this table and wonder if their tool is supported. At minimum, add a row for "Other tools" with a note pointing to the installer or platform-codes.yaml, or add a sentence below the table clarifying the table is not exhaustive.
🤖 Prompt for AI Agents
In `@docs/reference/commands.md` around lines 20 - 26, The table showing supported
AI tools (header row "AI Tool | Location | File Reference Syntax" and entries
like "Claude Code", "Kiro", "Cursor", "Windsurf") only lists 4 of 15+ platforms;
update docs/reference/commands.md by either adding a final row titled "Other
tools" that points readers to the installer or the canonical platform list
(platform-codes.yaml) and explains that other tools (e.g., Cline, Roo, Auggie,
Codex, Gemini, GitHub Copilot) are supported, or add a short sentence below the
table clarifying the table is not exhaustive and linking to the installer and
platform-codes.yaml for the full list.
| kiro: | ||
| name: "Kiro" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check if kiro-cli is still referenced anywhere in the codebase
echo "=== References to kiro-cli ==="
rg -rn 'kiro-cli' --type-not yaml
echo ""
echo "=== Check for migration or alias logic ==="
rg -rn 'alias\|migration\|rename\|legacy' tools/cli/installers/lib/ide/ --glob '*.js' -C2 2>/dev/null | head -60Repository: bmad-code-org/BMAD-METHOD
Length of output: 143
🏁 Script executed:
#!/bin/bash
echo "=== Exploring tools/cli/installers directory structure ==="
find tools/cli/installers -type f -name "*.js" -o -name "*.json" | head -20
echo ""
echo "=== Search for how platform codes are loaded/validated ==="
rg -rn 'platform.*code\|platformCode' tools/cli/installers/ --glob '*.js' -A3 | head -80
echo ""
echo "=== Check for any config handling or upgrade logic ==="
rg -rn 'config\|upgrade\|version' tools/cli/installers/lib/ --glob '*.js' -l | head -10Repository: bmad-code-org/BMAD-METHOD
Length of output: 1215
🏁 Script executed:
#!/bin/bash
echo "=== Reading platform-codes.js ==="
cat -n tools/cli/installers/lib/ide/platform-codes.js
echo ""
echo "=== Checking ide-config-manager.js for config handling ==="
wc -l tools/cli/installers/lib/core/ide-config-manager.jsRepository: bmad-code-org/BMAD-METHOD
Length of output: 3771
🏁 Script executed:
#!/bin/bash
echo "=== Reading ide-config-manager.js ==="
cat -n tools/cli/installers/lib/core/ide-config-manager.js | head -100Repository: bmad-code-org/BMAD-METHOD
Length of output: 3793
🏁 Script executed:
#!/bin/bash
echo "=== Continue reading ide-config-manager.js from line 100 ==="
cat -n tools/cli/installers/lib/core/ide-config-manager.js | tail -60Repository: bmad-code-org/BMAD-METHOD
Length of output: 2156
🏁 Script executed:
#!/bin/bash
echo "=== Check installer.js for how it uses platform codes ==="
wc -l tools/cli/installers/lib/core/installer.js
echo ""
echo "=== Search for where platform codes are loaded from saved config ==="
rg -rn 'loadIdeConfig\|getPlatformInfo' tools/cli/installers/lib/ --glob '*.js' -B2 -A2Repository: bmad-code-org/BMAD-METHOD
Length of output: 244
🏁 Script executed:
#!/bin/bash
echo "=== Search for how installer handles saved IDE selections ==="
rg -rn 'loadAllIdeConfigs\|loadIdeConfig' tools/cli/installers/lib/ --glob '*.js' -B1 -A3
echo ""
echo "=== Search for IDE selection logic in installer ==="
rg -rn 'selectIde\|getPlatformInfo\|ideManager' tools/cli/installers/lib/core/installer.js -B1 -A2 | head -60Repository: bmad-code-org/BMAD-METHOD
Length of output: 183
🏁 Script executed:
#!/bin/bash
echo "=== Search for platform code validation or checking ==="
rg -rn 'platform' tools/cli/installers/lib/core/installer.js -B1 -A1 | head -80
echo ""
echo "=== Check manager.js for IDE management ==="
cat -n tools/cli/installers/lib/ide/manager.jsRepository: bmad-code-org/BMAD-METHOD
Length of output: 12421
Add migration path for renamed kiro-cli → kiro platform code.
Renaming the platform code will break existing installations. Users with kiro-cli in their project config or selection history will encounter "unsupported IDE" errors on re-install. The old config file (kiro-cli.yaml) will be orphaned. Implement migration logic to:
- Detect and rename legacy
kiro-cli.yamlconfig files tokiro.yaml - Handle
kiro-clilookups by mapping them to the newkirocode - Preserve existing configurations during upgrade
🤖 Prompt for AI Agents
In `@tools/cli/installers/lib/ide/platform-codes.yaml` around lines 114 - 115, Add
a migration for the renamed platform code from "kiro-cli" to "kiro": update
platform lookup logic (e.g., getPlatformByCode / resolvePlatformCode) to treat
"kiro-cli" as an alias for "kiro", and add a config migration routine (e.g.,
migrateLegacyConfig or migratePlatformConfigFiles) that detects a legacy
kiro-cli.yaml, renames it to kiro.yaml (preserving file contents and
metadata/permissions), and skips overwrite if kiro.yaml already exists (or merge
safely). Ensure any history/selection loading paths also map "kiro-cli" → "kiro"
so existing config and user selections continue to work.
|
|
||
| # {{name}} | ||
|
|
||
| You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Exit command is undefined; risk of trapping the agent.
“NEVER break character until given an exit command” is unhelpful if the user can’t find the command. Add a pointer to where the exit command is defined (e.g., activation section of the agent file) or specify a default.
Proposed change
-You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
+You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command (defined in the agent file’s <activation> section).📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command. | |
| You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command (defined in the agent file's <activation> section). |
🤖 Prompt for AI Agents
In `@tools/cli/installers/lib/ide/templates/combined/kiro-agent.md` at line 7,
Update the line containing "NEVER break character until given an exit command"
in the kiro-agent persona template to either (a) point readers to where the exit
command is defined (e.g., "see the activation section of this agent file for the
exit command") or (b) define a sensible default exit command inline (for
example, "default exit command: 'EXIT_AGENT'") and ensure the document
references the activation section or the exact exit token; modify the wording to
include the pointer or default so users are not left without an exit mechanism.
Summary
Test plan