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.
This commit is contained in:
Diego Rodrigues de Sa e Souza
2026-07-05 14:58:40 -03:00
parent fecf888fd9
commit bf1481f11f
2 changed files with 37 additions and 14 deletions

View File

@@ -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.
---
<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->
## 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.

View File

@@ -4,8 +4,8 @@
* Verifies:
* 1. Every ID in API_SKILL_IDS + CLI_SKILL_IDS has a skills/<id>/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/<id>/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 "| <id> |"
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 () => {