Skip to content

Run the gates that were being run by hand #2

Run the gates that were being run by hand

Run the gates that were being run by hand #2

Workflow file for this run

name: Validate
# The skills in this repository are markdown: nothing compiles and no test suite
# runs, so a defect stays invisible until someone reads the exact line. Until
# now every gate was run by hand, which means they were run when someone
# remembered. These are the same checks, on every change.
on:
pull_request:
push:
branches: [main]
permissions:
contents: read
jobs:
gates:
name: Framework gates
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install PyYAML
run: pip install --quiet pyyaml
# Frontmatter, manifests, counts, links, credential shapes, retired
# mechanisms, and the vendor-neutrality boundary. Each gate exists
# because the thing it checks actually broke once.
- name: Framework gates
run: python3 scripts/validate-framework.py
plugin-validate:
name: claude plugin validate
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "22"
# Pinned on purpose. An unpinned validator means a green pull request can
# turn red tomorrow with no change in this repository, and a behaviour
# change in the checker arrives silently. Bump it deliberately.
- name: Install Claude Code
env:
CLAUDE_CODE_VERSION: 2.1.221
run: npm install --global --no-fund --no-audit "@anthropic-ai/claude-code@${CLAUDE_CODE_VERSION}"
# Runs without credentials — it reads the plugin off disk. This is the
# check that first caught a skill whose frontmatter did not parse, which
# had been loading with empty metadata and could never auto-trigger.
- name: Validate the plugin
run: claude plugin validate ./claude
installer:
name: install.sh still works
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# install.sh is the path for Cursor, Kiro and VS Code and stays supported
# through the plugin transition, so it must keep running.
- name: Dry-run every editor
run: ./install.sh --dry-run --editors=all --scope=project --yes