From bf1481f11f53d2e7456d83b5704bf1c87f2e2f13 Mon Sep 17 00:00:00 2001 From: Diego Rodrigues de Sa e Souza Date: Sun, 5 Jul 2026 14:58:40 -0300 Subject: [PATCH] fix(skills): generate the missing omni-github-skills registry entry + align catalog count tests PR #6186 added omni-github-skills to the agent-skills catalog (API 22 -> 23) but did not run the generator, so skills/omni-github-skills/SKILL.md never existed and 6 integration assertions split between the old (42/43) and new counts. Generated via scripts/skills/generate-agent-skills.mjs --apply and aligned agent-skills-discovery to the real totals (43 = 23 API + 20 CLI; handlers return 44 with config-codex-cli). 30/30 discovery+content tests green. --- skills/omni-github-skills/SKILL.md | 22 ++++++++++++++ .../agent-skills-discovery.test.ts | 29 ++++++++++--------- 2 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 skills/omni-github-skills/SKILL.md diff --git a/skills/omni-github-skills/SKILL.md b/skills/omni-github-skills/SKILL.md new file mode 100644 index 0000000000..da835d38e1 --- /dev/null +++ b/skills/omni-github-skills/SKILL.md @@ -0,0 +1,22 @@ +--- +name: omni-github-skills +description: Search, score, scan, and import agent skills from GitHub repositories that contain SKILL.md, CLAUDE.md, .cursorrules, and similar agent skill files. Discover community skills across 160+ provider categories, evaluate relevance with heuristic scoring, check for malware or hardcoded secrets, and install into Hermes, Claude Code, Gemini CLI, or OpenCode agent directories. +--- + + + +## Overview + +Search, score, scan, and import agent skills from GitHub repositories that contain SKILL.md, CLAUDE.md, .cursorrules, and similar agent skill files. Discover community skills across 160+ provider categories, evaluate relevance with heuristic scoring, check for malware or hardcoded secrets, and install into Hermes, Claude Code, Gemini CLI, or OpenCode agent directories. + +## Authentication + +All requests require a valid Bearer token or session cookie. Obtain a token via `POST /api/auth/login` or configure `REQUIRE_API_KEY=false` for local development. + +## Endpoints + +_No endpoints mapped for this area yet._ + +## Payloads + +See the full OpenAPI specification at `GET /api/openapi/spec` or `docs/openapi.yaml` for detailed request/response schemas. diff --git a/tests/integration/agent-skills-discovery.test.ts b/tests/integration/agent-skills-discovery.test.ts index 49071f8849..9e80ff4d18 100644 --- a/tests/integration/agent-skills-discovery.test.ts +++ b/tests/integration/agent-skills-discovery.test.ts @@ -4,8 +4,8 @@ * Verifies: * 1. Every ID in API_SKILL_IDS + CLI_SKILL_IDS has a skills//SKILL.md on disk. * 2. Each SKILL.md has valid frontmatter (name + description) and body ≥ 100 chars. - * 3. MCP tool omniroute_agent_skills_list handler returns 43 entries. - * 4. A2A skill list-capabilities returns 1 artifact with 43 lines. + * 3. MCP tool omniroute_agent_skills_list handler returns 44 entries. + * 4. A2A skill list-capabilities returns 1 artifact with 44 lines. * * Does NOT spin up a server — tests handlers directly via imports. */ @@ -69,8 +69,8 @@ test("every CLI skill ID has skills//SKILL.md on disk", () => { assert.deepEqual(missing, [], `Missing CLI SKILL.md files: ${missing.join(", ")}`); }); -test("total skill count is exactly 42 (22 API + 20 CLI)", () => { - assert.equal(API_SKILL_IDS.length + CLI_SKILL_IDS.length, 42); +test("total skill count is exactly 43 (23 API + 20 CLI)", () => { + assert.equal(API_SKILL_IDS.length + CLI_SKILL_IDS.length, 43); }); // ── §2: Frontmatter validation ──────────────────────────────────────────────── @@ -120,11 +120,11 @@ test("each SKILL.md body is at least 100 chars", () => { // ── §3: MCP tool omniroute_agent_skills_list ───────────────────────────────── -test("MCP omniroute_agent_skills_list handler returns count 43", async () => { +test("MCP omniroute_agent_skills_list handler returns count 44 (43 + config)", async () => { const result = await agentSkillTools.omniroute_agent_skills_list.handler({}); - assert.equal(result.count, 43, `Expected 43 but got ${result.count}`); + assert.equal(result.count, 44, `Expected 44 but got ${result.count}`); assert.ok(Array.isArray(result.skills)); - assert.equal(result.skills.length, 43); + assert.equal(result.skills.length, 44); }); test("MCP omniroute_agent_skills_list result has all 42 IDs", async () => { @@ -148,17 +148,18 @@ test("A2A list-capabilities returns exactly 1 artifact", async () => { test("A2A list-capabilities artifact content contains 42 skill IDs as table rows", async () => { const result = await executeListCapabilities(stubTask); const content = result.artifacts[0].content; - const rows = content.split("\n").filter((line) => line.startsWith("| ") && !line.startsWith("| ID") && !line.startsWith("| ---")); + const rows = content + .split("\n") + .filter( + (line) => line.startsWith("| ") && !line.startsWith("| ID") && !line.startsWith("| ---") + ); // Each skill row starts with "| |" - assert.ok( - rows.length >= 42, - `Expected at least 42 data rows but got ${rows.length}`, - ); + assert.ok(rows.length >= 42, `Expected at least 42 data rows but got ${rows.length}`); }); -test("A2A list-capabilities metadata.totalSkills === 43", async () => { +test("A2A list-capabilities metadata.totalSkills === 44 (43 + config)", async () => { const result = await executeListCapabilities(stubTask); - assert.equal(result.metadata.totalSkills, 43); + assert.equal(result.metadata.totalSkills, 44); }); test("A2A list-capabilities artifact contains all 42 skill IDs", async () => {