Skip to content

feat: subagent roles + structural sealing for contradiction-lift (v0.37.0) #219

feat: subagent roles + structural sealing for contradiction-lift (v0.37.0)

feat: subagent roles + structural sealing for contradiction-lift (v0.37.0) #219

Workflow file for this run

name: CI
on:
push:
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run helper tests
run: bash scripts/test-helpers.sh
- name: Run Claude collaboration helper tests
run: bash skills/claude-collab/scripts/test-claude-helpers.sh
- name: Run hook tests
run: bash hooks/test-enforce-skill-usage.sh
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Shellcheck
run: shellcheck --source-path=SCRIPTDIR -x scripts/*.sh hooks/*.sh skills/claude-collab/scripts/*.sh
- uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install PyYAML
run: python -m pip install --upgrade pip pyyaml
- name: Lint JSON
run: |
python - <<'PY'
import json
import glob
import sys
files = glob.glob(".claude-plugin/*.json")
failed = False
for path in files:
try:
with open(path, "r", encoding="utf-8") as f:
json.load(f)
except Exception as e:
print(f"JSON lint failed: {path}: {e}")
failed = True
if failed:
sys.exit(1)
print(f"Checked {len(files)} JSON file(s).")
PY
- name: Lint YAML
run: |
python - <<'PY'
import glob
import sys
import yaml
files = glob.glob("skills/**/*.yaml", recursive=True)
failed = False
for path in files:
try:
with open(path, "r", encoding="utf-8") as f:
yaml.safe_load(f)
except Exception as e:
print(f"YAML lint failed: {path}: {e}")
failed = True
if failed:
sys.exit(1)
print(f"Checked {len(files)} YAML file(s).")
PY
- name: Plugin consistency lint
run: bash scripts/lint-plugin.sh