name: Skills Registry CI permissions: contents: write on: push: branches: ["main", "feat/*"] pull_request: branches: ["main"] workflow_dispatch: jobs: validate-and-build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.10" - name: Install dependencies run: | pip install pyyaml - name: 🔍 Validate Skills (Soft Mode) run: | python3 scripts/validate_skills.py - name: 🏗️ Generate Index run: | python3 scripts/generate_index.py - name: 📝 Update README run: | python3 scripts/update_readme.py - name: Set up Node uses: actions/setup-node@v4 with: node-version: "lts/*" - name: Install npm dependencies run: npm ci - name: Audit npm dependencies run: npm audit --audit-level=high continue-on-error: true - name: Run tests run: npm run test - name: 📦 Build catalog run: npm run catalog - name: Set up GitHub credentials (for auto-sync) if: github.event_name == 'push' && github.ref == 'refs/heads/main' run: | git config --global user.name 'github-actions[bot]' git config --global user.email 'github-actions[bot]@users.noreply.github.com' git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git - name: Auto-commit registry drift (main only) if: github.event_name == 'push' && github.ref == 'refs/heads/main' run: | # If no changes, exit successfully git diff --quiet && exit 0 git add README.md skills_index.json data/catalog.json data/bundles.json data/aliases.json CATALOG.md || true # If nothing to commit, exit successfully git diff --cached --quiet && exit 0 git commit -m "chore: sync generated registry files [ci skip]" git push origin HEAD - name: 🚨 Check for Uncommitted Drift run: | if ! git diff --quiet; then echo "❌ Detected uncommitted changes produced by registry/readme/catalog scripts." echo echo "To fix locally, run the FULL Validation Chain, then commit and push:" echo " npm run chain" echo " npm run catalog" echo " git add README.md skills_index.json data/catalog.json data/bundles.json data/aliases.json CATALOG.md" echo " git commit -m \"chore: sync generated registry files\"" echo " git push" exit 1 fi