feat(agent-skills): expand catalog source to 42 entries (22 API + 20 CLI)

Replace 18-entry hardcoded AGENT_SKILLS array with 42-entry CURATED_SKILLS
covering all areas listed in D28 of the master plan. Each curated entry
has id, name, description, category, area, icon, and optional flags.

Adds backward-compatible AGENT_SKILLS alias (deprecated) that maps curated
entries to the old AgentSkill shape with empty endpoints/cliCommands arrays
so the existing /dashboard/agent-skills page continues to work until F7
rewrites it.

Imports AgentSkill, SkillArea, SkillCategory types from src/lib/agentSkills/types.ts
(F1 single source of truth) instead of redeclaring locally.
This commit is contained in:
diegosouzapw
2026-05-27 20:31:31 -03:00
parent bf764dc529
commit 78de1d2455

View File

@@ -1,5 +1,8 @@
// Agent Skills metadata — single source of truth for /dashboard/agent-skills.
// Each skill = 1 raw GitHub URL the user copies and pastes to any AI agent.
// Each curated entry drives the catalog; endpoints/cliCommands are resolved
// at runtime by src/lib/agentSkills/catalog.ts (via OpenAPI + CLI parsers).
import type { AgentSkill, SkillArea, SkillCategory } from "@/lib/agentSkills/types";
const REPO = "diegosouzapw/OmniRoute";
const BRANCH = "main";
@@ -9,189 +12,6 @@ export const AGENT_SKILLS_REPO_URL = `https://github.com/${REPO}`;
export const AGENT_SKILLS_RAW_BASE = `https://raw.githubusercontent.com/${REPO}/refs/heads/${BRANCH}/${SKILL_PATH}`;
export const AGENT_SKILLS_BLOB_BASE = `https://github.com/${REPO}/blob/${BRANCH}/${SKILL_PATH}`;
export interface AgentSkill {
id: string;
name: string;
description: string;
endpoint: string | null;
icon: string;
category: "api" | "cli";
isEntry?: boolean;
isNew?: boolean;
}
export const AGENT_SKILLS: AgentSkill[] = [
// ── API Skills ──────────────────────────────────────────────────────────────
{
id: "omniroute",
name: "OmniRoute (Entry)",
description:
"Setup + index of all capabilities. Start here — covers base URL, auth, model discovery, and links to every capability skill.",
endpoint: null,
icon: "hub",
category: "api",
isEntry: true,
},
{
id: "omniroute-chat",
name: "Chat",
description: "Chat / code-gen via OpenAI or Anthropic format with streaming and reasoning.",
endpoint: "/v1/chat/completions",
icon: "chat",
category: "api",
},
{
id: "omniroute-image",
name: "Image Generation",
description: "Text-to-image via DALL-E, Imagen, FLUX, MiniMax, SDWebUI, and more.",
endpoint: "/v1/images/generations",
icon: "image",
category: "api",
},
{
id: "omniroute-tts",
name: "Text-to-Speech",
description: "OpenAI / ElevenLabs / Edge / Google / Deepgram voices.",
endpoint: "/v1/audio/speech",
icon: "record_voice_over",
category: "api",
},
{
id: "omniroute-stt",
name: "Speech-to-Text",
description:
"Transcribe audio via OpenAI Whisper, Groq, Gemini, Deepgram, AssemblyAI, and more.",
endpoint: "/v1/audio/transcriptions",
icon: "mic",
category: "api",
},
{
id: "omniroute-embeddings",
name: "Embeddings",
description: "Vectors for RAG / semantic search via OpenAI, Gemini, Mistral, and more.",
endpoint: "/v1/embeddings",
icon: "scatter_plot",
category: "api",
},
{
id: "omniroute-web-search",
name: "Web Search",
description: "Tavily / Exa / Brave / Serper / SearXNG / Google PSE / You.com.",
endpoint: "/v1/search",
icon: "search",
category: "api",
},
{
id: "omniroute-web-fetch",
name: "Web Fetch",
description: "URL → markdown / text / HTML via Firecrawl, Jina, Tavily, Exa.",
endpoint: "/v1/web/fetch",
icon: "language",
category: "api",
},
{
id: "omniroute-mcp",
name: "MCP Server",
description:
"37 tools over SSE/stdio/HTTP: routing, cache, compression, memory, skills, providers, audit.",
endpoint: "/api/mcp/sse",
icon: "electrical_services",
category: "api",
},
{
id: "omniroute-a2a",
name: "A2A Protocol",
description:
"JSON-RPC 2.0 agent-to-agent server with 5 built-in skills: smart-routing, quota, discovery, cost, health.",
endpoint: "/a2a",
icon: "device_hub",
category: "api",
},
{
id: "omniroute-routing",
name: "Routing & Combos",
description:
"Create and configure routing combos, 14 strategies, Auto-combo scoring, and fallback chains.",
endpoint: "/api/combos",
icon: "route",
category: "api",
isNew: true,
},
{
id: "omniroute-compression",
name: "Compression",
description:
"RTK (command output), Caveman (prose), stacked mode, and MCP accessibility-tree filter. Save 6090% tokens.",
endpoint: "/api/settings/compression",
icon: "compress",
category: "api",
isNew: true,
},
{
id: "omniroute-monitoring",
name: "Monitoring & Health",
description:
"Health endpoints, circuit breakers, provider metrics (p50/p95/p99), budget guard, and MCP monitoring tools.",
endpoint: "/api/monitoring/health",
icon: "monitor_heart",
category: "api",
isNew: true,
},
// ── CLI Skills ───────────────────────────────────────────────────────────────
{
id: "omniroute-cli",
name: "CLI (Entry)",
description:
"Install, global flags (--output, --base-url, --api-key), environment variables, and index of all CLI capability skills.",
endpoint: null,
icon: "terminal",
category: "cli",
isEntry: true,
isNew: true,
},
{
id: "omniroute-cli-admin",
name: "CLI Admin",
description:
"Server lifecycle (start/stop/restart), non-interactive setup, doctor diagnostics, backup/restore, autostart, and tunnels.",
endpoint: null,
icon: "manage_accounts",
category: "cli",
isNew: true,
},
{
id: "omniroute-cli-providers",
name: "CLI Providers & Keys",
description:
"Add/test/remove provider connections, manage API keys, rotate credentials, OAuth flows, list models, and manage combos.",
endpoint: null,
icon: "key",
category: "cli",
isNew: true,
},
{
id: "omniroute-cli-cloud",
name: "CLI Cloud Agents",
description:
"Control Codex, Devin, and Jules cloud agents — create tasks, track status, approve plans, send messages, and view sources.",
endpoint: null,
icon: "cloud_sync",
category: "cli",
isNew: true,
},
{
id: "omniroute-cli-eval",
name: "CLI Evals",
description:
"Create and run eval suites, watch live benchmark progress, view scorecards, compare models, and integrate with CI.",
endpoint: null,
icon: "science",
category: "cli",
isNew: true,
},
];
export function getAgentSkillRawUrl(id: string): string {
return `${AGENT_SKILLS_RAW_BASE}/${id}/SKILL.md`;
}
@@ -199,3 +19,428 @@ export function getAgentSkillRawUrl(id: string): string {
export function getAgentSkillBlobUrl(id: string): string {
return `${AGENT_SKILLS_BLOB_BASE}/${id}/SKILL.md`;
}
// ── Curated entry shape ───────────────────────────────────────────────────────
// Only the fields that cannot be derived at runtime go here.
// The full AgentSkill shape (endpoints, cliCommands, rawUrl, githubUrl)
// is composed by catalog.ts at runtime.
export interface CuratedSkillEntry {
id: string;
name: string;
description: string;
category: SkillCategory;
area: SkillArea;
icon?: string;
isEntry?: boolean;
isNew?: boolean;
}
// ── Canonical 42-entry curated list (D28) ────────────────────────────────────
/** Curated metadata for all 42 agent skills. Source-of-truth for the catalog. */
export const CURATED_SKILLS: CuratedSkillEntry[] = [
// ── API Skills (22) ─────────────────────────────────────────────────────────
{
id: "omni-auth",
name: "Authentication",
description:
"Manage API key authentication and session tokens. Start here to authenticate requests via Bearer token, obtain session cookies, and configure login requirements for the OmniRoute API.",
category: "api",
area: "auth",
icon: "lock",
isEntry: true,
},
{
id: "omni-providers",
name: "Providers",
description:
"Manage provider connections, API keys, OAuth flows, and connection tests via the REST API. List, add, update, remove, and test AI provider integrations (OpenAI, Anthropic, Gemini, and 160+).",
category: "api",
area: "providers",
icon: "key",
},
{
id: "omni-models",
name: "Models",
description:
"Query available AI models across all configured providers. List models, resolve model aliases, and browse the full model catalog including provider-specific variants.",
category: "api",
area: "models",
icon: "neurology",
},
{
id: "omni-combos-routing",
name: "Combos & Routing",
description:
"Create and manage routing combos with 14 strategies (priority, weighted, round-robin, Auto-combo, etc.). Configure fallback chains, test routing outcomes, and retrieve combo metrics.",
category: "api",
area: "combos-routing",
icon: "route",
isNew: true,
},
{
id: "omni-api-keys",
name: "API Keys",
description:
"Create, list, rotate, and revoke OmniRoute API keys. Control per-key scopes, spending limits, and expiration. Keys gate access to all proxy and management endpoints.",
category: "api",
area: "api-keys",
icon: "vpn_key",
},
{
id: "omni-usage-logs",
name: "Usage & Logs",
description:
"Access detailed call logs and usage analytics. Filter by provider, model, time range, status, and cost. Export logs and aggregate token usage across all connections.",
category: "api",
area: "usage-logs",
icon: "bar_chart",
},
{
id: "omni-budget",
name: "Budget & Rate Limits",
description:
"Configure spending limits, token quotas, and rate-limit policies per API key or globally. Inspect current consumption and enforce cost controls across providers.",
category: "api",
area: "budget",
icon: "savings",
},
{
id: "omni-settings",
name: "Settings",
description:
"Read and update global application settings: system prompts, thinking budget, IP filters, payload rules, combo defaults, and require-login configuration.",
category: "api",
area: "settings",
icon: "settings",
},
{
id: "omni-proxies",
name: "Proxy Configuration",
description:
"Configure HTTP/HTTPS/SOCKS proxies for upstream provider requests. Set per-provider or global proxy rules, test connectivity, and manage proxy rotation.",
category: "api",
area: "proxies",
icon: "swap_horiz",
},
{
id: "omni-cache",
name: "Cache",
description:
"Manage the LLM response cache. View cache statistics, clear entries, configure TTL policies, and control semantic-similarity caching thresholds.",
category: "api",
area: "cache",
icon: "cached",
},
{
id: "omni-compression",
name: "Compression",
description:
"Configure RTK (command output), Caveman (prose), and stacked compression modes. Manage language packs, custom rules, and test prompt compression reducing tokens by 6090%.",
category: "api",
area: "compression",
icon: "compress",
isNew: true,
},
{
id: "omni-context-rtk",
name: "Context & RTK",
description:
"Configure RTK filters, context engineering rules, and context relay settings. Test compression with real prompt samples and manage context transformation pipelines.",
category: "api",
area: "context-rtk",
icon: "data_object",
isNew: true,
},
{
id: "omni-resilience",
name: "Resilience & Monitoring",
description:
"Monitor provider health, circuit-breaker states, p50/p95/p99 latency metrics, and budget guard alerts. Inspect connection cooldowns and model lockouts in real time.",
category: "api",
area: "resilience",
icon: "monitor_heart",
isNew: true,
},
{
id: "omni-cli-tools",
name: "CLI Tools",
description:
"Manage CLI tool integrations exposed via the API. List, configure, and invoke CLI tool plugins that extend OmniRoute's automation surface.",
category: "api",
area: "cli-tools",
icon: "terminal",
},
{
id: "omni-tunnels",
name: "Tunnels",
description:
"Create and manage secure tunnels (ngrok, Cloudflare Tunnel, custom) to expose OmniRoute to the internet or share access with remote agents and CI pipelines.",
category: "api",
area: "tunnels",
icon: "vpn_lock",
},
{
id: "omni-sync-cloud",
name: "Cloud Sync",
description:
"Synchronise OmniRoute configuration, provider connections, and settings to/from cloud storage. Manage cloud worker authentication and remote backup targets.",
category: "api",
area: "sync-cloud",
icon: "cloud_sync",
},
{
id: "omni-db-backups",
name: "Database & Backups",
description:
"Trigger system backups, restore from backup files, and manage the SQLite database lifecycle. Supports export, import, and incremental snapshot strategies.",
category: "api",
area: "db-backups",
icon: "backup",
},
{
id: "omni-webhooks",
name: "Webhooks",
description:
"Register, list, test, and remove webhook endpoints. Configure event subscriptions (request.completed, provider.error, budget.exceeded, etc.) and manage delivery retries.",
category: "api",
area: "webhooks",
icon: "webhook",
},
{
id: "omni-mcp",
name: "MCP Server",
description:
"Connect to the OmniRoute MCP server (37 tools, 3 transports: SSE/stdio/HTTP). Covers routing, cache, compression, memory, skills, providers, and audit tools across 16 permission scopes.",
category: "api",
area: "mcp",
icon: "electrical_services",
},
{
id: "omni-agents-a2a",
name: "Agents & A2A Protocol",
description:
"Interact with OmniRoute via JSON-RPC 2.0 agent-to-agent protocol. 6 built-in A2A skills: smart-routing, quota-management, provider-discovery, cost-analysis, health-report, list-capabilities.",
category: "api",
area: "agents-a2a",
icon: "device_hub",
},
{
id: "omni-version-manager",
name: "Version Manager",
description:
"Install, start, stop, restart, and update embedded services (9Router, CLIProxyAPI). Monitor service status, retrieve logs, and configure auto-start for local-only service endpoints.",
category: "api",
area: "version-manager",
icon: "manage_history",
},
{
id: "omni-inference",
name: "Inference (OpenAI-compatible)",
description:
"The core OpenAI-compatible inference endpoints: chat completions, embeddings, images, audio (TTS/STT), moderations, rerank, and the Responses API. The primary integration surface for AI agents.",
category: "api",
area: "inference",
icon: "hub",
},
// ── CLI Skills (20) ──────────────────────────────────────────────────────────
{
id: "cli-serve",
name: "CLI: Serve",
description:
"Start, stop, and restart the OmniRoute server from the CLI. Manage daemon mode, port configuration, auto-recovery, system tray integration, and the dashboard open shortcut.",
category: "cli",
area: "cli-serve",
icon: "play_circle",
isEntry: true,
},
{
id: "cli-health",
name: "CLI: Health",
description:
"Check server health, component status, and live metrics from the CLI. Run `health`, `health components`, and `health watch` for a real-time dashboard of circuit breakers and provider status.",
category: "cli",
area: "cli-health",
icon: "favorite",
},
{
id: "cli-providers",
name: "CLI: Providers",
description:
"Manage provider connections from the CLI: list available/configured providers, add, test, test-all, validate, rotate API keys, and view per-provider metrics.",
category: "cli",
area: "cli-providers",
icon: "key",
},
{
id: "cli-keys",
name: "CLI: API Keys",
description:
"Create, list, rotate, and revoke OmniRoute API keys from the CLI. Manage OAuth flows for provider authentication and inspect key scopes and expiration.",
category: "cli",
area: "cli-keys",
icon: "vpn_key",
},
{
id: "cli-models",
name: "CLI: Models",
description:
"Query available AI models, list model aliases, and browse the full model catalog from the CLI. Filter by provider, search by capability, and resolve model name variants.",
category: "cli",
area: "cli-models",
icon: "neurology",
},
{
id: "cli-chat",
name: "CLI: Chat",
description:
"Send chat completions, stream responses, and start an interactive REPL session from the CLI. Supports all OmniRoute providers, combo routing, and system prompt configuration.",
category: "cli",
area: "cli-chat",
icon: "chat",
},
{
id: "cli-routing",
name: "CLI: Routing & Combos",
description:
"Create, list, update, and delete routing combos from the CLI. Test routing strategies, inspect combo metrics, and configure fallback chains interactively.",
category: "cli",
area: "cli-routing",
icon: "route",
},
{
id: "cli-resilience",
name: "CLI: Resilience & Quotas",
description:
"Inspect and manage circuit-breaker states, connection cooldowns, quota limits, and backoff levels from the CLI. Reset stuck providers and configure resilience thresholds.",
category: "cli",
area: "cli-resilience",
icon: "monitor_heart",
},
{
id: "cli-compression",
name: "CLI: Compression",
description:
"Configure and test prompt compression from the CLI. Manage RTK filters, Caveman rules, stacked compression modes, and preview compression output with real prompts.",
category: "cli",
area: "cli-compression",
icon: "compress",
},
{
id: "cli-contexts",
name: "CLI: Contexts & Sessions",
description:
"Manage context engineering configurations, RTK filter sets, and conversation sessions from the CLI. Apply context-relay settings and inspect active context pipelines.",
category: "cli",
area: "cli-contexts",
icon: "data_object",
},
{
id: "cli-cost-usage",
name: "CLI: Cost & Usage",
description:
"View cost breakdowns, token usage, and call logs from the CLI. Filter by provider, model, or date range. Export usage reports and inspect per-connection spending.",
category: "cli",
area: "cli-cost-usage",
icon: "savings",
},
{
id: "cli-mcp",
name: "CLI: MCP",
description:
"Inspect the MCP server status, list registered tools and scopes, run tool invocations, and manage MCP audit logs from the CLI.",
category: "cli",
area: "cli-mcp",
icon: "electrical_services",
},
{
id: "cli-a2a",
name: "CLI: A2A Protocol",
description:
"Interact with the OmniRoute A2A server from the CLI. Send tasks, inspect skill execution history, and test the JSON-RPC 2.0 agent-to-agent protocol interactively.",
category: "cli",
area: "cli-a2a",
icon: "device_hub",
},
{
id: "cli-tunnel",
name: "CLI: Tunnels",
description:
"Start and stop tunnel connections (ngrok, Cloudflare, custom) from the CLI. Inspect active tunnel URLs, configure authentication, and test external reachability.",
category: "cli",
area: "cli-tunnel",
icon: "vpn_lock",
},
{
id: "cli-backup-sync",
name: "CLI: Backup & Sync",
description:
"Backup and restore OmniRoute data from the CLI. Trigger incremental snapshots, sync to cloud storage, manage backup schedules, and restore from archive files.",
category: "cli",
area: "cli-backup-sync",
icon: "backup",
},
{
id: "cli-policy-audit",
name: "CLI: Policy & Audit",
description:
"Inspect audit logs, manage access policies, view telemetry data, and review request history from the CLI. Filter by event type, user, or time range for compliance workflows.",
category: "cli",
area: "cli-policy-audit",
icon: "policy",
},
{
id: "cli-batches",
name: "CLI: Batches & Files",
description:
"Submit and monitor batch inference jobs from the CLI. Upload and manage files for batch processing, retrieve results, and integrate batch pipelines with CI/CD workflows.",
category: "cli",
area: "cli-batches",
icon: "batch_prediction",
},
{
id: "cli-eval",
name: "CLI: Evals",
description:
"Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.",
category: "cli",
area: "cli-eval",
icon: "science",
},
{
id: "cli-plugins-skills",
name: "CLI: Plugins, Skills & Memory",
description:
"Manage Omni Skills (list, install, test, remove), plugins (create, configure), and persistent memory (search, add, clear) from the CLI.",
category: "cli",
area: "cli-plugins-skills",
icon: "extension",
},
{
id: "cli-setup",
name: "CLI: Setup & Config",
description:
"Run initial setup, configure global CLI settings, manage environment variables, check for updates, and configure autostart via the CLI setup and config commands.",
category: "cli",
area: "cli-setup",
icon: "build",
},
];
// ── Backward-compatible re-export ─────────────────────────────────────────────
// TODO(F7): Remove AGENT_SKILLS alias once AgentSkillsPageClient is rewritten.
// The old shape expected `endpoint` (singular string | null) instead of `endpoints` (array).
// This shim preserves the old dashboard until F7 rewrites it.
/** @deprecated Use getCatalog() from src/lib/agentSkills/catalog.ts instead. */
export const AGENT_SKILLS: AgentSkill[] = CURATED_SKILLS.map((s) => ({
...s,
endpoints: s.category === "api" ? [] : undefined,
cliCommands: s.category === "cli" ? [] : undefined,
rawUrl: getAgentSkillRawUrl(s.id),
githubUrl: getAgentSkillBlobUrl(s.id),
}));