v1.4.1: guarantee on-brand WCAG AA + test all output formats + refres… #10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Validate Skill | |
| # Runs whenever the skill definition or its engine changes, plus on PRs and | |
| # manual dispatch. Cheap (Python stdlib only, ~15s). | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - 'SKILL.md' | |
| - 'INSTRUCTIONS.md' | |
| - 'scripts/**' | |
| - 'agents/**' | |
| - '.github/workflows/validate.yml' | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| jobs: | |
| validate: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Validate SKILL.md frontmatter | |
| # Equivalent to WorkBuddy's `package_skill.py` validation: | |
| # required fields, hyphen-case name, no angle brackets in description. | |
| run: python scripts/validate_skill.py . | |
| - name: Generator smoke + robustness + golden + contrast tests | |
| # Same script contributors run locally, so "passes CI" == "passes | |
| # scripts/smoke_test.py". Covers: cool/warm/balanced brands produce | |
| # non-empty tokens.css + preview.html; every --color-* value is valid | |
| # hex; semantic sanity (guards the HSL->RGB regression where a blue | |
| # brand emitted a blue "error"); 9 frozen golden token values for | |
| # #2563EB plus WCAG AA contrast assertions on text/surface, dark text/bg | |
| # and on-brand; extreme/degenerate brands (black/white/gray/short/ | |
| # lowercase) don't crash; invalid input is rejected with a non-zero exit. | |
| run: python scripts/smoke_test.py | |
| - name: Summary | |
| if: always() | |
| run: echo "Validation complete — frontmatter + generator smoke + extreme-color robustness + semantic sanity." |