A skill your agent uses when the user asks to "create an agent catalog", "generate agent catalog source", "build agent catalog from repo", "catalog my agents", or wants to scan a repository…
Install the "create-agent-catalog-source" agent skill from https://github.com/kubeflow/hub/tree/main/.agents/skills/create-agent-catalog-source into .claude/skills/create-agent-catalog-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-agent-catalog-source", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add kubeflow/hub --skill create-agent-catalog-source -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "create-agent-catalog-source" agent skill from https://github.com/kubeflow/hub/tree/main/.agents/skills/create-agent-catalog-source into .agents/skills/create-agent-catalog-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-agent-catalog-source", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add kubeflow/hub --skill create-agent-catalog-source -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "create-agent-catalog-source" agent skill from https://github.com/kubeflow/hub/tree/main/.agents/skills/create-agent-catalog-source into .cursor/skills/create-agent-catalog-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-agent-catalog-source", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add kubeflow/hub --skill create-agent-catalog-source -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "create-agent-catalog-source" agent skill from https://github.com/kubeflow/hub/tree/main/.agents/skills/create-agent-catalog-source into .gemini/skills/create-agent-catalog-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-agent-catalog-source", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add kubeflow/hub --skill create-agent-catalog-source -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "create-agent-catalog-source" agent skill from https://github.com/kubeflow/hub/tree/main/.agents/skills/create-agent-catalog-source into .github/skills/create-agent-catalog-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-agent-catalog-source", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add kubeflow/hub --skill create-agent-catalog-source -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "create-agent-catalog-source" agent skill from https://github.com/kubeflow/hub/tree/main/.agents/skills/create-agent-catalog-source into .opencode/skills/create-agent-catalog-source/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-agent-catalog-source", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Facts
Skill name
create-agent-catalog-source
GitHub stars
186
Token cost
~5.4k tokens
SKILL.md length
2,088 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
Apache-2.0
At a glance
A skill your agent uses when the user asks to "create an agent catalog", "generate agent catalog source", "build agent catalog from repo", "catalog my agents", or wants to scan a repository…
Works in 6 steps: Resolve Input → Discover Agents — Convention Scan → Discover Agents — Heuristic Scan → …
The user asks to create an agent catalog
SKILL.md covers Step 1: Resolve Input, Step 2: Discover Agents —…, Step 3: Discover Agents —… and Step 4: User Confirmation, plus 2 more sections
Calls git, kubectl and yq; reaches github.com; needs API_KEY
What it does
Create Agent Catalog Source is an agent skill from kubeflow/hub. Use this skill when the user asks to "create an agent catalog", "generate agent catalog source", "build agent catalog from repo", "catalog my agents", or wants to scan a repository containing agent templates and/or agent metadata to produce a custom agent catalog source YAML for the agents catalog. Trigger phrases include: "create agent catalog source", "generate agent catalog", "catalog agents from repo", "agent catalog from repository", "custom agent catalog".
Its SKILL.md is about 5.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in AI & LLM Engineering, covering Building AI agents. It works with Git and GitHub. The repository describes itself as: Model Registry provides a single pane of glass for ML model developers to index and manage models, versions, and ML artifacts metadata. It fills a gap between model… The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 3369d7e. It shows what the files ask for, not the result of running them.
Tool permissions
Pre-approves these tools, so the agent can use them without asking each time:
Bash
Read
Grep
Glob
Write
AskUserQuestion
WebFetch
From allowed-tools in the SKILL.md frontmatter.
Runs code
Shell commands in SKILL.md call:
git
kubectl
yq
From the folder's file list and the shell code blocks in SKILL.md.
Network
Hosts in commands or code, which the agent is likely to contact:
github.com
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names these keys or tokens, usually read from environment variables:
API_KEY
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Create Agent Catalog Source loads about 5.4k tokens when it runs. Until then it costs about 124 tokens; SKILL.md has 2,088 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~124
When it runs· the whole SKILL.md, loaded when a task matches
~5.4k
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
Safety
Auto-check: notes
The automated check noted patterns worth knowing about, such as sudo or a known installer.
NoteMentions a .env fileSKILL.md:188
t Variables", "Configuration", "Setup", ".env" that list variable names
NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
Download SKILL.mdSave it as .claude/skills/create-agent-catalog-source/SKILL.md (or your agent's skills folder).
name
create-agent-catalog-source
description
Use this skill when the user asks to "create an agent catalog", "generate agent catalog source", "build agent catalog from repo", "catalog my agents", or wants to scan a repository containing agent templates and/or agent metadata to produce a custom agent catalog source YAML for the agents catalog. Trigger phrases include: "create agent catalog source", "generate agent catalog", "catalog agents from repo", "agent catalog from repository", "custom agent catalog".
Store the remote URL and branch name for later use when building repositoryUrl per agent.
Check the output directory:
bash
test -d <original-cwd>/.agent-catalog
If .agent-catalog/ already exists, ask the user whether to overwrite or choose a different output
path using AskUserQuestion. Store the chosen path as <output-dir> (default: <original-cwd>/.agent-catalog).
All subsequent steps use <output-dir> when writing output files.
Step 2: Discover Agents — Convention Scan
Search the target repository for directories containing an agent.yaml file. This is the
preferred agent metadata format. Inform the user:
"Scanning for agent.yaml files (preferred convention)..."
env (object with required and optional string arrays, optional)
Note any additional top-level fields — these will become customProperties.
Check for a companion README.md in the same directory:bash
test -f <agent-dir>/README.md
If README.md exists, read its full content for the readme field.
Compute the agent's relative path from the repo root (for repositoryUrl).
Collect all discovered agents into a list. Track for each:
Relative path within the repo
Parsed agent.yaml fields
Whether README.md was found
Any extra fields for customProperties
Discovery source: "convention"
Validation per agent:
If name is missing, derive it from the directory name (kebab-case).
If framework is missing, flag it as needing user input.
If description is missing, try to extract the first paragraph from README.md if available.
Always proceed to Step 3 (Heuristic Scan) regardless of how many agents the convention
scan found. The heuristic scan may discover additional agents in non-standard formats
(e.g., YAML files not named agent.yaml, or agents documented only in Markdown).
Step 3: Discover Agents — Heuristic Scan
This step always runs after the convention scan to find additional agents that may use
non-standard file names or only have Markdown documentation.
Inform the user:
"Scanning for additional agents via YAML heuristic and Markdown analysis..."
3a: YAML Heuristic Scan
Search for YAML files that look like they describe an agent:
For each YAML file, read it and check if it is "agent-like":
It must contain a name field (string)
It must contain at least one of: framework, description, or env
Exclude files that look like CI configs, Dockerfiles, Kubernetes manifests (check for
apiVersion, kind, services, jobs, steps top-level keys — these are not agents)
For qualifying files:
Extract the same known fields as the convention scan
Agent keywords — search for:
agent, tool-calling, ReAct, chain-of-thought, orchestrator, agentic,
function calling, tool use
Environment variable documentation — look for sections with headers like
"Environment Variables", "Configuration", "Setup", ".env" that list variable names
Description extraction — extract the first paragraph after the top-level heading
as a candidate description
A Markdown file is a candidate if it has at least one framework mention AND at least one
agent keyword.
For qualifying Markdown files, extract as many of the 7 required catalog fields as possible:
name — infer from the filename or first heading (kebab-cased)
displayName — infer from the first heading (original casing)
framework — from the framework mention found
description — from the first paragraph after the top-level heading
labels — default [] (user can add during confirmation)
logo — default "" (user can provide during confirmation)
env — extract from environment variable documentation: look for bullet lists or
tables listing variable names. Parse required/optional indicators from the text
(e.g., "required", "optional", "Yes", "No"). If a var is listed without an indicator,
default to required: true
Set readme to the full file content
Set discovery source to "markdown-inference"
Flag all fields as draft — the user must confirm/edit
Merge Results
Combine convention-scan, YAML-heuristic, and markdown-inference results into a single list:
Deduplicate: If a heuristic/markdown candidate is from the same directory as a
convention-scan agent, skip the heuristic candidate (convention already captured it).
Merge within heuristic: If a YAML-heuristic candidate and a markdown-inference
candidate are from the same directory, merge them — prefer YAML fields, supplement
with Markdown-extracted description/readme.
Proceed to Step 3c (Generate agent.yaml) with the merged list.
If zero agents total after all scans, tell the user:
"No agents found in this repository. To use this skill, organize your agents with an
agent.yaml file per agent directory. Here is the expected format:"
Then print an example agent.yaml:
yaml
name: my-agent
displayName: My Agent
framework: langgraph
description: A custom agent that does X
labels:
- tool-calling
- rag
env:
required:
- API_KEY
- MODEL_ENDPOINT
optional:
- DEBUG
And stop.
3c: Generate agent.yaml for Heuristic-Discovered Agents
Every agent in the catalog must have an agent.yaml file. Convention-scanned agents already
have one. For each agent discovered via yaml-heuristic or markdown-inference, generate
an agent.yaml matching the format expected by the agents catalog.
Important: The generated agent.yaml is NOT written to the agent's source directory —
it is assembled in memory and included only in the catalog output (as the templates entry
in <output-dir>/catalog.yaml). The agent's source directory remains unchanged.
For each heuristic/markdown-discovered agent:
Assemble the agent.yaml content from the extracted metadata using this exact format:
displayName: from extracted metadata, or title-cased from name if not available
framework: from extracted metadata
description: from extracted metadata
labels: from extracted metadata, default []
logo: from extracted metadata, default ""
env.required / env.optional: from extracted environment variable documentation.
If no env vars were found, use required: [] and optional: []
Display the generated agent.yaml to the user:
"Generated agent.yaml for agent <name> (discovered via <source>):"
yaml
<full assembled content>
Use AskUserQuestion to ask the user to confirm:
"Accept (Recommended)" — the generated agent.yaml is correct
"Deny" — reject this agent; it will be excluded entirely from the catalog
If the user chooses Accept:
Ask: "Would you like to amend any fields before finalizing? (y/N)"
If yes: let the user specify which fields to change and their new values.
Update the assembled content. Display the updated version for final confirmation.
Store the confirmed agent.yaml content for use in Step 5 (templates field).
If the user chooses Deny:
Remove this agent from the discovered agents list.
Inform the user:
"Agent <name> has been excluded from the catalog."
After processing all heuristic/markdown agents, report the final count:
"N agents confirmed with agent.yaml files. Proceeding to catalog source configuration."
If all heuristic/markdown agents were denied and no convention agents exist either,
stop with the same "No agents found" message as above.
Proceed to Step 4 with only the confirmed agents.
Show full SKILL.md (798 more words)Show less
Step 4: User Confirmation
Present all discovered agents to the user in a summary table. Format:
For markdown-inference sourced agents, also show the draft metadata:
Agent #4 (search-bot) — inferred from Markdown, please review:
name: search-bot
framework: langgraph (inferred from README mention)
description: "A search bot that uses LangGraph to orchestrate web search tools"
[Edit any field? y/N]
Use AskUserQuestion to ask:
"Include all discovered agents, or select which to include?"
Options: "Include all (Recommended)", "Let me select", "Add agents manually"
If "Let me select": ask which numbers to include (comma-separated)
If "Add agents manually": ask for the path to an agent directory, read its files,
and add it to the list. Repeat until the user is done.
Required fields check. Every agent in the catalog MUST have all 7 of these fields
(even if some use default/empty values):
name (string, non-empty)
displayName (string, non-empty)
description (string, non-empty)
framework (string, non-empty)
labels (string array, may be [])
logo (string, may be "")
env (array of {name, required}, may be [])
For any agent missing a non-empty required field (name, displayName, description,
or framework), ask the user to provide the value. For labels, logo, and env,
use defaults ([], "", []) if not available, but show the user what defaults were
applied so they can override.
For markdown-inference agents, present each one's draft metadata for ALL 7 required
fields and ask if the user wants to edit any. Let them type corrections inline.
"What should the catalog source be named?"
Default: the repository name (derived from git remote or directory name)
The user can accept or type a custom name
"Would you like to add labels to this catalog source? (e.g., 'Custom', 'Internal')"
Default: no labels (empty array)
If yes, ask for comma-separated label strings
Store the confirmed agents list, source name, and source labels for output generation.
Step 5: Generate Catalog YAML
Create the output directory:
bash
mkdir -p <output-dir>
Build the catalog YAML content. The output must match this exact schema (compatible with
the model-registry yamlAgentCatalog consumer):
From confirmed metadata. Must be kebab-case and unique within the catalog.
displayName
From confirmed metadata. If empty, title-case the name (replace hyphens with spaces, capitalize each word).
description
From confirmed metadata.
readme
Full content of the agent's README.md. Use YAML literal block scalar (`
repositoryUrl
<git-remote-url>/tree/<branch>/<agent-relative-path>. Empty string if no git remote was detected.
framework
From confirmed metadata.
labels
From agent.yaml labels field. Default []. Always include this field.
logo
From agent.yaml logo field. Default "". Always include this field.
env
Transform from {required: [...], optional: [...]} to flat list: each required var gets {name: X, required: true}, each optional var gets {name: X, required: false}. For markdown-inferred agents, use env vars extracted from the README. Default []. Always include this field.
templates
The templates content must always reflect the final confirmed metadata — including any edits the user made in Step 4. Convert the final metadata to a compact JSON string using ./bin/yq. The result becomes a single template entry: {name: "agent.yaml", content: "<json>"}. For all agents, assemble a YAML representation of the final confirmed fields, write it to a temporary file (TMPFILE=$(mktemp /tmp/agent-yaml-XXXXXX.yaml)), run ./bin/yq "$TMPFILE" -o json -I 0, capture stdout, then clean up (rm "$TMPFILE"). For convention-discovered agents where the user edited fields in Step 4: the on-disk agent.yaml is now out of sync — ask the user whether they want to update the original agent.yaml file in the source repository to match. Always include this field.
customProperties
For each top-level field in agent.yaml NOT in the known set (name, displayName, framework, description, labels, logo, env), create an entry: {metadataType: "MetadataStringValue", string_value: "<value-as-string>"}. Omit the field entirely if there are no extra fields.
IMPORTANT: The 7 required fields (name, displayName, description, framework,
labels, logo, env) must be present on EVERY agent entry in the catalog, regardless
of discovery source. Use empty defaults ([], "") where no value was found.
Write the catalog file to <output-dir>/catalog.yaml.
Ensure the file ends with a newline character.
Validate: Read back the written file and confirm:
It is valid YAML
It has a source: key
It has an agents: array with the expected number of entries
Each agent has ALL 7 required fields present: name, displayName, description,
framework, labels, logo, env
Report to the user:
"Catalog written to <output-dir>/catalog.yaml with N agents."
Step 6: Generate Deployment Artifacts
6a: Sources Config Snippet
Derive the source ID from the confirmed source name:
Lowercase the name
Replace spaces with underscores
Remove any characters that are not alphanumeric or underscores
Write <output-dir>/sources-snippet.yaml with the following content:
The yamlCatalogPath uses a placeholder — the user will update this to match the actual
mount path in their deployment.
If the user chose no labels, use: labels: []
6b: Deploy Script
Write <output-dir>/deploy.sh with the following content:
bash
#!/bin/bash
# Deploy custom agent catalog source to Kubernetes
# Generated by /create-agent-catalog-source
#
# Prerequisites:
# - kubectl (or oc) CLI logged into the target cluster
# - Appropriate permissions to create ConfigMaps in the target namespace
#
# Usage:
# cd <project-root>
# NAMESPACE=my-namespace <output-dir>/deploy.sh
set -euo pipefail
NAMESPACE="${NAMESPACE:-kubeflow}"
CONFIGMAP_NAME="<derived-source-id>-catalog"
echo "Creating ConfigMap '$CONFIGMAP_NAME' in namespace '$NAMESPACE'..."
kubectl create configmap "$CONFIGMAP_NAME" \
--from-file=catalog.yaml=<output-dir>/catalog.yaml \
-n "$NAMESPACE" --dry-run=client -o yaml | kubectl apply -f -
echo ""
echo "ConfigMap created successfully."
echo ""
echo "Next steps:"
echo " 1. Mount the ConfigMap into the model-registry catalog deployment."
echo " 2. Edit the existing catalog sources ConfigMap to add this agent source:"
echo " kubectl edit configmap <sources-configmap-name> -n $NAMESPACE"
echo ""
echo " Add the following under the 'agent_catalogs' section:"
echo ""
cat <output-dir>/sources-snippet.yaml
echo ""
echo " 3. Update the yamlCatalogPath to match the mount path in your deployment."
echo " 4. The catalog service will hot-reload the new source automatically."
Make the deploy script executable:
bash
chmod +x <output-dir>/deploy.sh
Replace <derived-source-id> in the script with the actual derived source ID value
before writing.
6c: Cleanup
If a temporary clone was created in Step 1:
bash
rm -rf "$TMPDIR"
6d: Final Summary
Print to the user:
Agent catalog source generated successfully!
Output directory: <output-dir>/
catalog.yaml — Agent catalog data (N agents)
sources-snippet.yaml — Sources config snippet (paste into existing sources ConfigMap)
deploy.sh — Deployment script for Kubernetes
To deploy:
1. Run: <output-dir>/deploy.sh
2. Edit the existing sources ConfigMap to add the snippet from sources-snippet.yaml
3. The catalog service will hot-reload automatically — no restart needed.
Source name: <confirmed-source-name>
Source ID: <derived-source-id>
Note: Source IDs must be unique across all catalog types (models, MCP servers, agents)
in your model-registry deployment. If you have an existing source with ID
'<derived-source-id>', choose a different name.
Create Agent Catalog Source next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
Create Agent Catalog Source compared with similar skills
Skill
Stars
Used in
Tokens
Auto-check
Licence
Repo updated
Create Agent Catalog Source this skillkubeflow/hub
Primary entrypoint for coding agents using CAIRA as reference material to design and build generative AI solutions with Azure AI Foundry, Azure OpenAI-compatible endpoints, agent frameworks, APIs…
Reviews changes in the langchain-azure monorepo using package-specific knowledge of langchain-azure-ai, langchain-azure-compute, langchain-azure-cosmosdb, langchain-azure-postgresql…
Scaffold a new catalog plugin: run catalog-gen, replace all panic("TODO") stubs with minimal working implementations, generate OpenAPI server stubs, and verify the build compiles.
A skill your agent uses when the user asks to "create an agent catalog", "generate agent catalog source", "build agent catalog from repo", "catalog my agents", or wants to scan a repository…. Create Agent Catalog Source is an agent skill from kubeflow/hub. Use this skill when the user asks to "create an agent catalog", "generate agent catalog source", "build agent catalog from repo", "catalog my agents", or wants to scan a repository containing agent templates and/or agent metadata to produce a custom agent catalog source YAML for the agents catalog.
When should I use Create Agent Catalog Source?
Create Agent Catalog Source fits situations like: the user asks to create an agent catalog; generate agent catalog source; build agent catalog from repo; catalog my agents.
How do I install Create Agent Catalog Source in Claude Code?
Run `npx skills add kubeflow/hub --skill create-agent-catalog-source -a claude-code`. Or copy the skill folder (.agents/skills/create-agent-catalog-source in kubeflow/hub) into .claude/skills/create-agent-catalog-source in your project. Claude Code loads it when a task matches its description.
How do I install Create Agent Catalog Source in Codex?
Run `npx skills add kubeflow/hub --skill create-agent-catalog-source -a codex`. Or copy the skill folder (.agents/skills/create-agent-catalog-source in kubeflow/hub) into .agents/skills/create-agent-catalog-source in your project. Codex loads it when a task matches its description.
Can I use Create Agent Catalog Source in Cursor, Gemini CLI or GitHub Copilot?
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kubeflow/hub --skill create-agent-catalog-source -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-agent-catalog-source, .gemini/skills/create-agent-catalog-source, .github/skills/create-agent-catalog-source and .opencode/skills/create-agent-catalog-source in your project.
What does Create Agent Catalog Source need to run?
Going by SKILL.md and its folder, Create Agent Catalog Source needs the command-line tools its instructions call (git, kubectl and yq) and credentials named API_KEY. Our summary lists: Docker; A credential in API_KEY. Its frontmatter pre-approves these tools: Bash, Read, Grep, Glob, Write, AskUserQuestion, WebFetch.
Does Create Agent Catalog Source access the network?
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Is Create Agent Catalog Source safe to install?
Our automated static check of SKILL.md found notes only (mentions a .env file; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
What licence does Create Agent Catalog Source use?
Create Agent Catalog Source is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Create Agent Catalog Source use?
About 5.4k tokens (SKILL.md is roughly 22k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
What are the alternatives to Create Agent Catalog Source?
Skills that share tags, products or a category with Create Agent Catalog Source: GitHub (swarmclawai/swarmclaw, 687 stars), Fix Art Issues (OpenPipe/ART, 11k stars), Image Matcher Integration (Vincentqyw/image-matching-webui, 1.3k stars) and Caira (microsoft/CAIRA, 229 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Create Agent Catalog Source?
kubeflow (a GitHub organization) maintains it in kubeflow/hub, which has 186 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 6, 2026.
Source: kubeflow/hub on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.