Fork-friendly, GitHub-native template for building a marketplace of reusable agent skills.
Author: Zhouyou Gu
License: MIT
Most teams can build one good skill, but struggle to share, review, and reuse skills across contributors.
This project exists to solve that by giving you a simple, repeatable system:
- Keep skills in a clear folder structure.
- Validate skill quality automatically in CI.
- Generate machine-readable registry files for agents.
- Publish a searchable static UI on GitHub Pages.
In short: this template turns random skill files into a real, maintainable ecosystem.
This template is intentionally opinionated:
- GitHub-first workflow: contributors use pull requests, not ad-hoc uploads.
- Schema-first quality: bad metadata is blocked early.
- Static hosting simplicity: no backend required for discovery UI.
- Agent compatibility: skills expose MCP-style tool contracts.
- Forkability: anyone can create their own marketplace with minimal edits.
- Maintainers: run and moderate a skill marketplace.
- Contributors: submit new skills using a consistent format.
- Agent/tool builders: discover skills from
registry/index.json.
- Codex skill runtime instructions (
SKILL.md) per skill - Skill metadata schema (
skill.yaml) - Tool contract schema (
tool.json) - Validation scripts (strict checks)
- Generated registry (
registry/index.json) - Generated search index (
registry/search.json) - Searchable marketplace UI (
marketplace/) - GitHub Actions pipeline for validate/build/deploy
Contributor
|
v
Add skill folder (skills/<id>/...)
|
v
Pull Request
|
v
CI pipeline
|-- validate metadata and tool schema
|-- build registry/index.json
`-- build registry/search.json
|
v
GitHub Pages UI + agent-readable registry
Agent discovery flow:
Agent/Client
|
v
registry/index.json
|
v
skill metadata + tool schema path
|
v
install metadata and tool invocation contract
skill-marketplace-template/
├─ skills/ # Source of truth skill folders
│ └─ <skill-id>/
│ ├─ SKILL.md # Codex installer-compatible skill instructions
│ ├─ skill.yaml # Skill metadata
│ ├─ tool.json # Tool input/output contract
│ ├─ README.md # Human docs for the skill (recommended)
│ └─ examples/ # Usage examples (recommended)
├─ schemas/ # JSON Schemas used for strict validation
├─ config/marketplace.json # Marketplace branding + category policy
├─ scripts/ # Validation and generation scripts
├─ registry/index.json # Generated machine registry (local/CI artifact)
├─ registry/search.json # Generated search index (local/CI artifact)
├─ marketplace/ # Static frontend for GitHub Pages
├─ .github/workflows/build.yml # CI/CD pipeline
├─ index.html # Root redirect to marketplace/
└─ README.md
Important rule: registry/*.json is generated and not tracked in git.
- Python 3.11+
- Git
- A GitHub repository (template/fork)
Edit config/marketplace.json:
title: marketplace namedescription: one-line value propositionauthor: maintainer/owner namelicense: license labelurl: GitHub Pages URLcategories: allowed category list (controlled vocabulary)
Footer attribution note:
The footer license link and template attribution in marketplace/app.js are intentionally fixed constants, not config-driven branding fields.
python3 scripts/validate_skills.py
python3 scripts/verify_install_targets.py
python3 scripts/build_registry.py
python3 scripts/build_search_index.pypython3 -m http.server 8000Open:
http://localhost:8000/(redirects to marketplace)http://localhost:8000/marketplace/
- Push to
main - GitHub Actions validates and deploys Pages
Detailed skill authoring specification now lives in README.md, including:
- Required file structure and naming rules
- Full contracts for
SKILL.md,skill.yaml, andtool.json - Validation/build commands and contributor checklist
Purpose:
- Canonical machine-readable marketplace registry.
- Contains marketplace metadata and rich skill entries.
Includes (per skill):
- identity + description
- category + tags + difficulty
- install metadata
- resolved repo URL
- tool summary (
name/title/description)
Purpose:
- Pre-tokenized client-side search index for the static UI.
Includes (per skill):
idcategory- token list
- normalized text blob
Both generated files are deterministic and sorted by id.
Workflow: .github/workflows/build.yml
On pull_request and push to main:
- Install Python dependencies (
pyyaml,jsonschema) - Run validation script
- Verify
install.pipandinstall.npmtargets resolve in real registries - Build
registry/index.json - Build
registry/search.json - Fail if validation or generation fails
On push to main:
- Rebuild
registry/index.jsonandregistry/search.json - Deploy GitHub Pages artifact (including generated registry files)
When in doubt, remember this chain:
skills/is the source of truth.scripts/turns the source of truth into registry files.registry/is what UI/agents consume.marketplace/is only a viewer over registry data.
If something looks wrong in UI, first check skill metadata and regenerate registry files.
-
SKILL.mdnot found- Error: Codex install fails with missing
SKILL.md. - Fix: add
SKILL.mdin eachskills/<id>/folder with valid frontmatter.
- Error: Codex install fails with missing
-
idmismatch- Error: skill
iddoes not match folder name. - Fix: make folder name and
skill.yaml:ididentical.
- Error: skill
-
Invalid category
- Error: category not in configured category list.
- Fix: either update
config/marketplace.jsonor choose an allowed category.
-
Missing tool schema
- Error:
agent.tool_schemapath missing or invalid. - Fix: create file and keep path relative to skill folder.
- Error:
-
CI fails while generating registry/search
- Error: build scripts fail in CI due to invalid skill metadata, schema, or tool paths.
- Fix: run validation/build scripts locally, fix the reported issue, and push again.
- Keep PRs small and focused (prefer one skill per PR).
- Include
SKILL.mdfor each skill; addREADME.mdas recommended human-facing docs. - Run validation/build scripts locally before pushing.
- Do not add arbitrary install command fields; use
pipand/ornpmonly.
Planned command style:
skill marketplace add https://<user>.github.io/<repo>/registry/index.json
skill search scraping
skill install web-scrapingCurrent status:
- Registry format is ready for CLI consumers.
- Full installer behavior remains a future extension.
- v1: registry + UI + CI (current template direction)
- v1.1: CLI installer integration
- Future: trust tiers, stronger security policy checks, richer search ranking
MIT License - see LICENSE.
Copyright (c) 2026 Zhouyou Gu