feat(tool-profile): add Kiro as a supported tool profile - #51
Open
BartoszPawlowicz01 wants to merge 1 commit into
Open
BartoszPawlowicz01 wants to merge 1 commit into
BartoszPawlowicz01 wants to merge 1 commit into
Conversation
Register a `kiro` profile that writes artifacts under `.kiro/` (skills, prompts, config templates) and co-owns the root `AGENTS.md` for course rules alongside codex, devin-desktop and generic. Content is delivered in the generic variant because the delivery API exposes no `kiro` transform yet. Auto-detection reports Kiro from `.kiro/.10x-cli-manifest.json`, `.kiro/steering/`, `.kiro/specs/`, `.kiro/hooks/`, `.kiro/settings/` or a bare `.kiro/` directory. Every branch is `strong`: the directory name is Kiro-specific with no plausible false positive, so a Kiro workspace never loses the `AGENTS.md` confidence tie to codex and `PROFILE_ORDER` needs no reshuffle. The profile takes its place in the resolution order ahead of generic. Extend `--tool` help text for `get` and `sync`, document the new paths, the `.kiro/config-templates/` staging caveat and the exact limits of `AGENTS.md` co-ownership (byte-identical rules only, so `kiro` pairs with generic but reports `incompatible_shared_owner` next to codex or devin-desktop) in the platform support reference and README, and cover the profile in the detection, profile, tool-switch, writer and install-contract test suites — including the divergent-content case that must fail closed. The bundled `skills/10x-cli-guide/SKILL.md` is deliberately left unchanged: `helpers install` is create-only and exits 1 on a byte difference, so a documentation-only edit there would break every existing install.
There was a problem hiding this comment.
🟡 Changes recommended
Kiro rules are targeted to the wrong steering location, and documentation corrections remain.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Adds Kiro as a supported tool profile with .kiro/ artifacts, detection, documentation, and test coverage.
Changes:
- Registers Kiro with generic content delivery and detection markers.
- Adds writer, migration, and helper-install tests.
- Updates CLI help, README, platform documentation, and changelog.
- Review findings include one critical issue regarding Kiro’s steering-file location and two documentation nits.
File summaries
| File | Summary |
|---|---|
tests/writer-profiles.test.ts |
Tests Kiro artifact writing and manifest data. |
tests/tool-switch.test.ts |
Tests Kiro migration and shared-rule handling. |
tests/tool-profile.test.ts |
Tests Kiro profile configuration. |
tests/tool-detect.test.ts |
Tests Kiro marker detection and ranking. |
tests/helpers/helper-install-contract.ts |
Tests helper installation for Kiro. |
src/lib/tool-profile.ts |
Registers Kiro paths and content mapping. |
src/lib/tool-detect.ts |
Adds Kiro workspace detection. |
src/commands/sync.ts |
Updates sync tool help. |
src/commands/get.ts |
Updates get tool help. |
README.md |
Documents Kiro support. |
docs/reference/platform-support.md |
Documents Kiro layout and behavior. |
CHANGELOG.md |
Records the new profile. |
Review details
Suppressed comments (2)
README.md:41
- This supported-tool list still omits
copilot, even though the helper and the later--tooltable list it as a valid profile. Since this line is being updated for Kiro, please keep the introductory list complete so users are not told that GitHub Copilot is unsupported.
`--tool claude-code`, `cursor`, `codex`, `devin-desktop`, `gemini`, `kiro`, or `generic`
docs/reference/platform-support.md:90
- This statement incorrectly classifies
.kiro/prompts/as inert. Kiro's official prompt documentation uses.kiro/prompts/for project prompts (for example via@prompt-name), so users would be told to move files that the CLI has already placed in a supported location. Limit the caveat toconfig-templatesor document the actual prompt usage.
`.kiro/prompts/` and `.kiro/config-templates/` are staging locations the CLI
manages but Kiro does not read automatically — move any artifact you want Kiro
to pick up to the place Kiro expects it (`.kiro/steering/` for always-on
context, `.kiro/hooks/` for hooks).
- Files reviewed: 12/12 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+114
to
+116
| // Kiro loads AGENTS.md as steering context, so it co-owns the root file | ||
| // with codex, devin-desktop and generic. | ||
| rulesFile: "AGENTS.md", |
Author
There was a problem hiding this comment.
Kiro AGENTS.md support — version reference
Full (nested, per-directory) support for AGENTS.md was introduced separately for each Kiro surface:
- Kiro IDE: version 1.0.309 (Aug 13, 2026) — "Add AGENTS.md files throughout your workspace to give Kiro instructions scoped to each directory tree." (changelog
(https://kiro.dev/changelog/ide/1-0-309/)) - Kiro CLI: version 2.18 — "AGENTS.md files now load as steering context from anywhere in your workspace tree, not just the workspace root and ~/.kiro/steering/." (changelog
(https://kiro.dev/changelog/cli/2-18/))
Before these releases, AGENTS.md was only picked up from the workspace root.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds
kiroas the eighth supported tool profile.PROFILES.kirowrites artifacts under.kiro/(skills/,prompts/,config-templates/) and uses the rootAGENTS.mdfor course rules, which Kiro loads as steering context. Content is requested in thegenericvariant via the existingcontentToolIdescape hatch, because the delivery API exposes nokirotransform yet — the same patterndevin-desktop → windsurfalready uses..kiro/.10x-cli-manifest.json,.kiro/steering/,.kiro/specs/,.kiro/hooks/,.kiro/settings/or a bare.kiro/directory. Every branch isstrong: the directory name is Kiro-specific with no plausible false positive, so a Kiro workspace never loses theAGENTS.mdconfidence tie tocodexandPROFILE_ORDERneeds no reshuffle. The sub-marker branches exist only to keep the hint line precise.--toolhelp text forgetandsync, the README tool lists and directory table, and the platform-support reference.The profile enters purely as configuration data. No changes to
writer.ts,managed-rules.ts,tool-prompt.ts,doctor.ts,helpers.tsorbench-kit.ts— everything that iteratesPROFILESpicks Kiro up without an edit.Notable design points
AGENTS.mdco-ownership is documented precisely, not optimistically.planManagedRules()admits a second owner of a shared sentinel block only when itsupstreamHashmatches. Since each co-owner requests a different content transform (codex→ codex,devin-desktop→ windsurf,kiro/generic→ generic),kiroshares the file conflict-free withgenericonly. Installing it next to Codex CLI or Devin Desktop leaves the first owner's block untouched and reportsconflict_skipped/incompatible_shared_ownerfor rules while every other artifact installs normally. This is pre-existing fail-closed behaviour that thecodex+genericpair already had; this PR states the limit in the reference doc instead of implying the combination is seamless..kiro/prompts/and.kiro/config-templates/are inert on delivery. The CLI manages them for path uniformity across writer, manifest, removal and tool-switch, but Kiro does not read them automatically. Called out in the reference doc. A follow-up could remapconfigPathto a location Kiro consumes, which carries its own migration question for already-written files.skills/10x-cli-guide/SKILL.mdis deliberately unchanged.helpers installis create-only and exits 1 on a byte difference, so editing the bundled guide's Profiles table would force ahelper_conflicton every existing install for a documentation-only gain.--tool kirostays discoverable through--help, the README and the reference doc.Testing
tests/tool-profile.test.ts— path generation plus the firstcontentToolIdassertion in the suite (previously uncovered).tests/tool-detect.test.ts— the full marker cascade, confidence for each branch, and both ranking outcomes including theAGENTS.mdtie.tests/writer-profiles.test.ts— realapplyBundleagainst a tmpdir: on-disk layout, sentinel injection intoAGENTS.md, andmanifest.tool === "kiro"(freshness keys ontoolId, notcontentToolId).tests/tool-switch.test.ts— shared-AGENTS.mdmigration and cleanup, plus a divergent-content case asserting thatkirofails closed withincompatible_shared_ownerrather than clobbering acodex-owned block.tests/helpers/helper-install-contract.ts— parameterised overclaude-codeandkiro; the addedfiles.length > 0assertion closes a vacuousfiles.every(...)that passed on an empty set.Local run on this branch:
tsc --noEmitclean,lint0 errors (5 pre-existing warnings in untouched code),validate:cli-skillsOK,bun test863 pass / 4 fail. All four failures reproduce on unmodifiedorigin/masterin an equivalent environment (bun writes cache into the substitutedHOME; the publication-identity test depends on npm/git), so they are environmental rather than regressions.Migration
None. No alias, no legacy layout, no manifest version bump;
kirois purely additive and existing projects are untouched.One deferred consequence worth a note in a future changelog: if the delivery API later ships a
kirotransform, deleting thecontentToolIdline is the whole change, but existing installs will then see a one-time content update on their nextget/sync, because the bytes change whilerepresentation.tooldoes not.