Skip to content

Commit 2dedbae

Browse files
authored
Add Kiro as a skill-supporting client (#4803)
1 parent 943bafb commit 2dedbae

2 files changed

Lines changed: 27 additions & 2 deletions

File tree

pkg/client/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,9 @@ var supportedClientIntegrations = []clientAppConfig{
653653
types.TransportTypeSSE: "url",
654654
types.TransportTypeStreamableHTTP: "url",
655655
},
656+
SupportsSkills: true,
657+
SkillsGlobalPath: []string{".kiro", "skills"},
658+
SkillsProjectPath: []string{".kiro", "skills"},
656659
},
657660
{
658661
ClientType: Antigravity,

pkg/client/skills_test.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,12 @@ func testSkillClientIntegrations() []clientAppConfig {
8888
SkillsGlobalPath: []string{".agents", "skills"},
8989
SkillsProjectPath: []string{".agents", "skills"},
9090
},
91+
{
92+
ClientType: Kiro,
93+
SupportsSkills: true,
94+
SkillsGlobalPath: []string{".kiro", "skills"},
95+
SkillsProjectPath: []string{".kiro", "skills"},
96+
},
9197
{
9298
ClientType: Windsurf,
9399
// SupportsSkills defaults to false
@@ -126,6 +132,7 @@ func TestSupportsSkills(t *testing.T) {
126132
{name: "Goose supports skills", client: Goose, expected: true},
127133
{name: "GeminiCli supports skills", client: GeminiCli, expected: true},
128134
{name: "AmpCli supports skills", client: AmpCli, expected: true},
135+
{name: "Kiro supports skills", client: Kiro, expected: true},
129136
{name: "Windsurf does not support skills", client: Windsurf, expected: false},
130137
{name: "unknown client returns false", client: ClientApp("nonexistent"), expected: false},
131138
}
@@ -143,8 +150,8 @@ func TestListSkillSupportingClients(t *testing.T) {
143150
cm := newTestSkillManager()
144151
clients := cm.ListSkillSupportingClients()
145152

146-
// Should include AmpCli, ClaudeCode, Codex, Cursor, Factory, GeminiCli, Goose, KimiCli, OpenCode, VSCode, VSCodeInsider, and our test-only no-paths-client
147-
require.Len(t, clients, 12, "unexpected number of skill-supporting clients: %v", clients)
153+
// Should include AmpCli, ClaudeCode, Codex, Cursor, Factory, GeminiCli, Goose, Kiro, KimiCli, OpenCode, VSCode, VSCodeInsider, and our test-only no-paths-client
154+
require.Len(t, clients, 13, "unexpected number of skill-supporting clients: %v", clients)
148155

149156
// Verify sorted order
150157
for i := 1; i < len(clients); i++ {
@@ -361,6 +368,21 @@ func TestGetSkillPath(t *testing.T) {
361368
projectRoot: "/tmp/myproject",
362369
wantPath: filepath.Join("/tmp/myproject", ".agents", "skills", "my-skill"),
363370
},
371+
{
372+
name: "ScopeUser Kiro",
373+
client: Kiro,
374+
skillName: "my-skill",
375+
scope: skills.ScopeUser,
376+
wantPath: filepath.Join(testHomeDir, ".kiro", "skills", "my-skill"),
377+
},
378+
{
379+
name: "ScopeProject Kiro with explicit root",
380+
client: Kiro,
381+
skillName: "my-skill",
382+
scope: skills.ScopeProject,
383+
projectRoot: "/tmp/myproject",
384+
wantPath: filepath.Join("/tmp/myproject", ".kiro", "skills", "my-skill"),
385+
},
364386
{
365387
name: "client that does not support skills",
366388
client: Windsurf,

0 commit comments

Comments
 (0)