Skip to content

chore(deps): bump vendor/superpowers from f268f7c to 3dcbd5c (#10) #18

chore(deps): bump vendor/superpowers from f268f7c to 3dcbd5c (#10)

chore(deps): bump vendor/superpowers from f268f7c to 3dcbd5c (#10) #18

Workflow file for this run

name: CI
on:
push:
branches: [master]
pull_request:
jobs:
lint:
name: shellcheck + repo integrity
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: bash syntax check
run: bash -n install.sh tests/smoke.sh
- name: shellcheck
run: shellcheck install.sh tests/smoke.sh
- name: alias symlinks are relative and resolve to stage skills
run: |
for l in skills/*; do
[ -L "$l" ] || continue
target="$(readlink "$l")"
case "$target" in
/*) echo "::error::$l is an absolute symlink"; exit 1 ;;
esac
[ -f "$l/SKILL.md" ] || { echo "::error::$l does not resolve to a skill"; exit 1; }
done
- name: every stage skill and agent named in install.sh exists on disk
run: |
for s in forge anvil temper quench hone smithy; do
[ -f "skills/$s/SKILL.md" ] || { echo "::error::skills/$s/SKILL.md missing"; exit 1; }
done
for a in bdd-scenario-writer tdd-test-generator playwright-e2e-tester fastapi-implementer labcoat; do
[ -f "agents/$a.md" ] || { echo "::error::agents/$a.md missing"; exit 1; }
done
- name: frontmatter lint (name + description)
run: |
for f in skills/*/SKILL.md agents/*.md; do
head -1 "$f" | grep -qx -- '---' || { echo "::error::$f has no YAML frontmatter"; exit 1; }
awk '/^---$/{c++; next} c==1 && /^name:/{n=1} c==1 && /^description:/{d=1} END{exit !(n && d)}' "$f" \
|| { echo "::error::$f frontmatter is missing name or description"; exit 1; }
done
smoke:
name: install/uninstall smoke test
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
with:
submodules: recursive
- name: smoke test (default bash)
run: tests/smoke.sh
- name: smoke test (stock macOS bash 3.2)
if: runner.os == 'macOS'
run: SMOKE_BASH=/bin/bash tests/smoke.sh
changelog:
name: changelog updated
if: github.event_name == 'pull_request' && github.actor != 'dependabot[bot]'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- name: PR touches CHANGELOG.md
run: |
git fetch origin "${{ github.base_ref }}" --depth=1
if git diff --name-only "origin/${{ github.base_ref }}...HEAD" | grep -qx 'CHANGELOG.md'; then
echo "CHANGELOG.md updated"
else
echo "::error::every PR must update CHANGELOG.md under [Unreleased] (see CLAUDE.md)"
exit 1
fi