feat: Shadow Spec + Convergence Broadcasts + Kiloagent Mode (v2.0.0) #118
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 | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| validate: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 | |
| - name: Check SKILL.md files are in sync | |
| run: | | |
| diff skills/havoc-hackathon/SKILL.md .github/skills/havoc-hackathon/SKILL.md || \ | |
| (echo "❌ SKILL.md files have drifted! Update both copies." && exit 1) | |
| echo "✅ SKILL.md files are in sync" | |
| - name: Validate catalog.yml syntax | |
| run: | | |
| python3 -c "import yaml; yaml.safe_load(open('skills/havoc-hackathon/catalog.yml'))" && \ | |
| echo "✅ catalog.yml is valid YAML" | |
| - name: Check catalog.yml required fields | |
| run: | | |
| python3 -c " | |
| import yaml | |
| d = yaml.safe_load(open('skills/havoc-hackathon/catalog.yml')) | |
| required = ['schema_version','id','name','description','emoji','codename','category'] | |
| missing = [f for f in required if f not in d] | |
| if missing: | |
| print(f'❌ Missing required fields: {missing}') | |
| exit(1) | |
| print('✅ All required catalog fields present') | |
| " | |
| - name: Structural validation (SKILL.md + agent.md) | |
| run: python3 tests/validate_skill.py | |
| - name: Preflight checks (SQL + bracket math) | |
| run: python3 tests/preflight.py | |
| - name: Full dry-run simulation (9-phase walkthrough) | |
| run: python3 tests/dry_run_sim.py |