name: Build Skills Index on: schedule: # Run twice daily: 6 AM and 6 PM UTC - cron: '0 6,18 * * *' workflow_dispatch: # Manual trigger push: branches: [main] paths: - 'scripts/build_skills_index.py' - '.github/workflows/skills-index.yml' permissions: contents: read jobs: build-index: # Only run on the upstream repository, not on forks if: github.repository == 'NousResearch/hermes-agent' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: pip install httpx pyyaml - name: Build skills index env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: python scripts/build_skills_index.py - name: Upload index artifact uses: actions/upload-artifact@v4 with: name: skills-index path: website/static/api/skills-index.json retention-days: 7 deploy-with-index: 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' steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: name: skills-index path: website/static/api/ - uses: actions/setup-node@v4 with: node-version: 20 cache: npm cache-dependency-path: website/package-lock.json - uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install PyYAML for skill extraction run: pip install pyyaml - 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@v3 with: path: _site - name: Deploy to GitHub Pages id: deploy uses: actions/deploy-pages@v4