Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,20 +50,23 @@ jobs:
- name: Install PyYAML for skill extraction
run: pip install pyyaml==6.0.2 httpx==0.28.1

- name: Build skills index (unified multi-source catalog)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Always rebuild — the file isn't committed (gitignored), so a
# fresh checkout starts without it and we want the freshest crawl
# in every deploy. Failure is non-fatal: extract-skills.py will
# fall back to the legacy snapshot cache and the Skills Hub page
# still renders, just without the latest community catalog.
python3 scripts/build_skills_index.py || echo "Skills index build failed (non-fatal)"

- name: Extract skill metadata for dashboard
run: python3 website/scripts/extract-skills.py

- name: Regenerate per-skill docs pages + catalogs
run: python3 website/scripts/generate-skill-docs.py

- name: Build skills index (if not already present)
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ ! -f website/static/api/skills-index.json ]; then
python3 scripts/build_skills_index.py || echo "Skills index build failed (non-fatal)"
fi

- name: Install dependencies
run: npm ci
working-directory: website
Expand Down
65 changes: 10 additions & 55 deletions .github/workflows/skills-index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ on:

permissions:
contents: read
actions: write # to trigger deploy-site.yml on schedule

jobs:
build-index:
Expand Down Expand Up @@ -41,61 +42,15 @@ jobs:
path: website/static/api/skills-index.json
retention-days: 7

deploy-with-index:
# Re-trigger the docs deploy so the refreshed index lands on the live site.
# The deploy itself is owned by deploy-site.yml (which crawls and deploys
# everything in one pipeline); we just kick it on a schedule.
trigger-deploy:
needs: build-index
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deploy.outputs.page_url }}
# Only deploy on schedule or manual trigger (not on every push to the script)
if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
name: skills-index
path: website/static/api/

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 20
cache: npm
cache-dependency-path: website/package-lock.json

- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.11'

- name: Install PyYAML for skill extraction
run: pip install pyyaml==6.0.2

- name: Extract skill metadata for dashboard
run: python3 website/scripts/extract-skills.py

- name: Install dependencies
run: npm ci
working-directory: website

- name: Build Docusaurus
run: npm run build
working-directory: website

- name: Stage deployment
run: |
mkdir -p _site/docs
cp -r landingpage/* _site/
cp -r website/build/* _site/docs/
echo "hermes-agent.nousresearch.com" > _site/CNAME

- name: Upload artifact
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3
with:
path: _site

- name: Deploy to GitHub Pages
id: deploy
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4
- name: Trigger Deploy Site workflow
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh workflow run deploy-site.yml --repo ${{ github.repository }}
4 changes: 3 additions & 1 deletion scripts/build_skills_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
ClawHubSource,
ClaudeMarketplaceSource,
LobeHubSource,
BrowseShSource,
SkillMeta,
)
import httpx
Expand Down Expand Up @@ -260,6 +261,7 @@ def main():
"clawhub": ClawHubSource(),
"claude-marketplace": ClaudeMarketplaceSource(auth=auth),
"lobehub": LobeHubSource(),
"browse-sh": BrowseShSource(),
}

all_skills: list[dict] = []
Expand Down Expand Up @@ -292,7 +294,7 @@ def main():
# Sort
source_order = {"official": 0, "skills-sh": 1, "skills.sh": 1,
"github": 2, "well-known": 3, "clawhub": 4,
"claude-marketplace": 5, "lobehub": 6}
"browse-sh": 5, "claude-marketplace": 6, "lobehub": 7}
deduped.sort(key=lambda s: (source_order.get(s["source"], 99), s["name"]))

# Build index
Expand Down
9 changes: 6 additions & 3 deletions tools/skills_hub.py
Original file line number Diff line number Diff line change
Expand Up @@ -391,12 +391,15 @@ class GitHubSource(SkillSource):
"""Fetch skills from GitHub repos via the Contents API."""

DEFAULT_TAPS = [
{"repo": "openai/skills", "path": "skills/"},
# NOTE: openai/skills moved its content into skills/.curated/ (and
# skills/.system/ for system-level skills). _list_skills_in_repo
# skips directories starting with "." or "_", so we point both
# entries at the inner paths directly.
{"repo": "openai/skills", "path": "skills/.curated/"},
{"repo": "openai/skills", "path": "skills/.system/"},
{"repo": "anthropics/skills", "path": "skills/"},
{"repo": "huggingface/skills", "path": "skills/"},
{"repo": "VoltAgent/awesome-agent-skills", "path": "skills/"},
{"repo": "garrytan/gstack", "path": ""},
{"repo": "MiniMax-AI/cli", "path": "skill/"},
]

def __init__(self, auth: GitHubAuth, extra_taps: Optional[List[Dict]] = None):
Expand Down
1 change: 0 additions & 1 deletion website/docs/user-guide/features/skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,6 @@ Default taps (browsable without any setup):
- [openai/skills](https://github.com/openai/skills)
- [anthropics/skills](https://github.com/anthropics/skills)
- [huggingface/skills](https://github.com/huggingface/skills)
- [VoltAgent/awesome-agent-skills](https://github.com/VoltAgent/awesome-agent-skills)
- [garrytan/gstack](https://github.com/garrytan/gstack)

- Example:
Expand Down
Loading
Loading