agent-skill-catalog
Build or refresh a local searchable skill catalog for Codex and other AI agents from explicit SKILL.md roots and optional plugin roots. Use for deterministic catalog JSON, desktop HTML, category evide
SKILL.mdskills/agent-skill-catalog/SKILL.md
GitHubAgent Skill Catalog
Build a read-only catalog from explicit local SKILL.md roots and optional
plugin roots. Never install, edit, or execute scanned content. Observed GitHub
repositories may provide bounded preview images and README evidence; write only
to the selected output directory.
When a family-primary Skill has no repository metadata, the default build runs
a bounded concurrent GitHub discovery pass. Search results are candidates only:
the repository must contain a matching SKILL.md, agree with local content,
and produce one high-confidence result before the URL is associated.
Workflow
The invoking Agent owns the description queue and must complete its next/apply
loop; never hand it to the user.
- Choose
--root PATH, or a config labeling each rootskillorplugin. - Run
python scripts/build_catalog.py --root PATH --output-dir OUTPUT --require-complete-descriptions. - On exit code 3, run
python scripts/description_queue.py next --root PATH --output-dir OUTPUT --batch-size 12(reuse--configwhen applicable). - Write evidence-backed Chinese results to
OUTPUT/description-batch.responses.jsonusingresponse_contract, then runpython scripts/description_queue.py apply --output-dir OUTPUT --input OUTPUT/description-batch.responses.json. Repeat untilbatch_countis zero; progress stays incatalog-curation.json. - Rebuild with
--refresh --require-complete-descriptions; success means exit 0 andsummary.pending_description_count == 0. - Check
summary.image_evidenceand everyimage.status; use only observed GitHub sources. - Open
index.html, or serve it withpython scripts/serve_catalog.py --output-dir OUTPUT --root PATH --require-complete-descriptions.
Output Contract
The output directory contains catalog.json, description-enrichment.json, a
self-contained index.html, and output-owned image/curation files. Absolute
roots stay redacted unless --include-absolute-paths is explicit.
Boundaries
- No remote code execution and no writes to scanned roots.
- GitHub reads are HTTPS-only, host-allowlisted, size-limited, and limited to candidate verification or observed repositories. Use
--no-github-discovery --no-github-imagesfor an offline build; add--no-github-readmeswhen running the description queue. - Manual images live in output-owned
curated-images/andcatalog-curation.json; unavailable proof staysmissing evidence. - Family grouping requires an observed main entry point. Nested
SKILL.mdfiles are grouped under that entry point; standalone siblings join only when their source description states an unambiguous product-owner or routing relationship. Loose keyword mentions remain separate and can use explicit curation. - Refresh reuses recorded roots, config, and curation. The queue validates Agent-written Chinese copy; it does not call a hidden model or require a provider key.
Resources
Read references/workflow.md first; load other references only for the matching
configuration, category, image, or prompt task. Maintainer-only evals and release
evidence stay outside the installed Skill boundary.