Repository navigation
fix(skills): register cli-skill-collector in the agent-skills catalog (Integration 2/2 base-red) #7310
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
fix(skills): register cli-skill-collector in the agent-skills catalog (Integration 2/2 base-red) #7310
Changes from 1 commit
39c8ee0
77bf399
780ed5e
0354cb4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| - **Skills**: register `cli-skill-collector` in the agent-skills catalog (types union, curated entry, CLI id list) — #6294 shipped the `skills/cli-skill-collector/` directory without the catalog registration, so it was unreachable via the API and Integration CI failed on the catalog-integrity test; counts aligned (44 API+CLI, 45 with config) |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -428,6 +428,15 @@ export const CURATED_SKILLS: CuratedSkillEntry[] = [ | |||||
| area: "cli-setup", | ||||||
| icon: "build", | ||||||
| }, | ||||||
| { | ||||||
| id: "cli-skill-collector", | ||||||
| name: "CLI: Agent Skill Collector", | ||||||
| description: | ||||||
| "Detect installed CLI coding tools (Claude Code, Codex, Cursor, Copilot, Cline and more), search GitHub for matching agent skills, and install them to the detected tools via OmniRoute's built-in APIs.", | ||||||
| category: "cli", | ||||||
| area: "cli-setup", | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In
Suggested change
|
||||||
| icon: "extension", | ||||||
| }, | ||||||
|
|
||||||
| // ── Config Skills ──────────────────────────────────────────────────────────── | ||||||
|
|
||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -3,7 +3,7 @@ | |
| * | ||
| * Verifies: | ||
| * - Return shape matches §3.7 contract | ||
| * - Markdown table contains all 43 skill IDs | ||
| * - Markdown table contains all 44 skill IDs | ||
| * - Coverage bounds are within declared totals | ||
| * - metadata.source === "agent-skills-catalog" | ||
| * - metadata.generatedAt is an ISO datetime string | ||
|
|
@@ -31,20 +31,20 @@ test("executeListCapabilities returns shape matching §3.7 contract", async () = | |
| const { metadata } = result; | ||
| assert.ok(metadata, "metadata exists"); | ||
| assert.equal(metadata.source, "agent-skills-catalog", "metadata.source matches"); | ||
| assert.equal(metadata.totalSkills, 44, "metadata.totalSkills === 44 (43 + config)"); | ||
| assert.equal(metadata.totalSkills, 45, "metadata.totalSkills === 45 (44 + config)"); | ||
| assert.ok(metadata.coverage, "metadata.coverage exists"); | ||
| assert.ok(metadata.coverage.api, "metadata.coverage.api exists"); | ||
| assert.ok(metadata.coverage.cli, "metadata.coverage.cli exists"); | ||
| assert.equal(metadata.coverage.api.total, 23, "api.total === 23"); | ||
| assert.equal(metadata.coverage.cli.total, 20, "cli.total === 20"); | ||
| }); | ||
|
|
||
| test("executeListCapabilities markdown table contains all 43 API+CLI skill IDs", async () => { | ||
| test("executeListCapabilities markdown table contains all 44 API+CLI skill IDs", async () => { | ||
| const result = await executeListCapabilities(stubTask); | ||
| const content = result.artifacts[0].content; | ||
|
|
||
| const allIds = [...API_SKILL_IDS, ...CLI_SKILL_IDS] as string[]; | ||
| assert.equal(allIds.length, 43, "API+CLI catalog declares 43 skill IDs"); | ||
| assert.equal(allIds.length, 44, "API+CLI catalog declares 44 skill IDs"); | ||
|
|
||
| for (const id of allIds) { | ||
| assert.ok(content.includes(id), `Markdown table missing skill ID: ${id}`); | ||
|
|
@@ -58,11 +58,11 @@ test("metadata.coverage.api.have is within [0, 23]", async () => { | |
| assert.ok(api.have <= 23, "api.have <= 23"); | ||
| }); | ||
|
|
||
| test("metadata.coverage.cli.have is within [0, 20]", async () => { | ||
| test("metadata.coverage.cli.have is within [0, 21]", async () => { | ||
| const result = await executeListCapabilities(stubTask); | ||
| const { cli } = result.metadata.coverage; | ||
| assert.ok(cli.have >= 0, "cli.have >= 0"); | ||
| assert.ok(cli.have <= 20, "cli.have <= 20"); | ||
| assert.ok(cli.have <= 21, "cli.have <= 21"); | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The assertion |
||
| }); | ||
|
|
||
| test("metadata.generatedAt is a valid ISO datetime", async () => { | ||
|
|
||
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.
Adding
"cli-skill-collector"increases the total number of CLI skills to 21. However, several places in the codebase still hardcode the CLI total to 20, which will lead to incorrect coverage metrics (e.g., coverage exceeding 100% when all skills are present) and inconsistent API/A2A responses.\n\nPlease update the following locations to use21instead of20:\n1.src/lib/agentSkills/catalog.ts(line 153):\ntypescript\n cli: { have: cliHave, total: 21 },\n\n2.src/lib/agentSkills/types.ts(line 71):\ntypescript\n cli: { have: number; total: 21 };\n\n3.src/lib/a2a/skills/listCapabilities.ts(lines 17 and 65):\ntypescript\n cli: { have: number; total: 21 };\n cli: { have: coverage.cli.have, total: 21 },\n\n4. Also, update the outdated comments/descriptions mentioning "20 CLI skills" (e.g.,src/lib/agentSkills/catalog.tsline 49 andopen-sse/mcp-server/tools/agentSkillTools.tsline 76).