Consolidate the repository into clearer apps, tools, and layered docs areas so contributors can navigate and maintain it more reliably. Align validation, metadata sync, and CI around the same canonical workflow to reduce drift across local checks and GitHub Actions.
110 lines
3.1 KiB
YAML
110 lines
3.1 KiB
YAML
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: Set up Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "lts/*"
|
|
|
|
- name: Install npm dependencies
|
|
run: npm ci
|
|
|
|
- name: Verify directory structure
|
|
run: |
|
|
test -d skills/
|
|
test -d apps/web-app/
|
|
test -d tools/scripts/
|
|
test -d tools/lib/
|
|
test -f README.md
|
|
test -f CONTRIBUTING.md
|
|
|
|
- name: 🔍 Validate Skills (Soft Mode)
|
|
run: |
|
|
npm run validate
|
|
|
|
- name: 🔗 Validate References
|
|
run: |
|
|
npm run validate:references
|
|
|
|
- name: 🏗️ Generate Index
|
|
run: |
|
|
npm run index
|
|
|
|
- name: 📝 Update README
|
|
run: |
|
|
npm run readme
|
|
|
|
- name: Audit npm dependencies
|
|
run: npm audit --audit-level=high
|
|
continue-on-error: true
|
|
|
|
- name: Run tests
|
|
env:
|
|
ENABLE_NETWORK_TESTS: "1"
|
|
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 user.name 'github-actions[bot]'
|
|
git config 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
|
|
|
|
# Pull with rebase to integrate remote changes
|
|
git pull origin main --rebase || true
|
|
|
|
git add README.md skills_index.json data/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/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
|