Files
mavericksea-ai aa68c3e3b3 fix(constraints): floor-guard reference reads hunk lines as content and runs from the top
Two follow-ups from the review on #600, both already on main before it:

- The diff walk treated any line starting with `---` or `+++` as a file
  header. Inside a hunk those lines are content. An added line that starts
  with `++` (`++n; // eslint-disable-line no-plusplus`) shows as `+++n; ...`
  and was dropped, so the suppression passed. An added line that starts with
  `++ ` was taken as a header, so the lines after it were filed under a
  made-up path and a removed assertion further down the same test file went
  unreported. A removed line starting with `--` never reached the removed
  list either. Headers are now read only between a file's `diff` line and
  its first `@@`.
- Run from a subfolder, `git ls-files --others` listed only that
  subfolder's untracked files, relative to it, while `git diff` covers the
  whole tree from the top. An untracked suppression elsewhere in the
  repository was missed, and one inside the subfolder was reported under a
  different name from the tracked files. The guard now changes to
  `git rev-parse --show-toplevel` first, and exits 2 outside a work tree.

The test gains six cases: five fail on main, and the sixth (outside a work
tree) passes on both and covers the new exit-2 path; 28 pass. The test now
also runs in the macOS/Windows matrix.
2026-09-26 13:27:39 +00:00

168 lines
4.7 KiB
YAML

name: Test Plugin Installation
on:
push:
pull_request:
workflow_dispatch:
jobs:
validate-skills:
name: Validate skill content
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: '24'
- name: Validate all skills
run: node scripts/validate-skills.js
- name: Test skill lint rules
run: node --test scripts/lib/skill-lint-test.js
- name: Validate manifest versions
run: node scripts/validate-versions.js
- name: Test manifest version validator
run: node --test scripts/validate-versions-test.js
- name: Test skill eval runner
run: node --test scripts/run-evals-test.js
- name: Run skill evals (trigger + routing)
run: node scripts/run-evals.js --min-rank1 95
- name: Validate references/ links in skills
run: node scripts/validate-reference-links.js
- name: Test reference-link validator
run: node --test scripts/validate-reference-links-test.js
- name: Test floor-guard reference
run: node --test scripts/floor-guard-reference-test.js
- name: Test session-start hook payload
run: bash hooks/session-start-test.sh
validate-commands:
name: Validate command parity and description sync
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: '24'
- name: Validate commands across all tool directories
run: node scripts/validate-commands.js
- name: Test command validator
run: node --test scripts/validate-commands-test.js
- name: Validate spec/plan/todo artifact paths
run: node scripts/validate-artifact-paths.js
- name: Test artifact-path validator
run: node --test scripts/validate-artifact-paths-test.js
# Ubuntu coverage stays in the existing jobs above, preserving their check names.
validate-platforms:
name: Validate tooling (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest]
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: '24'
- name: Test validators and eval runner
run: >-
node --test
scripts/lib/skill-lint-test.js
scripts/validate-versions-test.js
scripts/run-evals-test.js
scripts/validate-reference-links-test.js
scripts/validate-commands-test.js
scripts/validate-artifact-paths-test.js
scripts/floor-guard-reference-test.js
- name: Validate all skills
run: node scripts/validate-skills.js
- name: Validate manifest versions
run: node scripts/validate-versions.js
- name: Validate references/ links in skills
run: node scripts/validate-reference-links.js
- name: Validate commands across all tool directories
run: node scripts/validate-commands.js
- name: Validate spec/plan/todo artifact paths
run: node scripts/validate-artifact-paths.js
- name: Run skill evals (trigger + routing)
run: node scripts/run-evals.js --min-rank1 95
test-hooks:
name: Hook regression tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Test sdd-cache hooks (stubbed curl, no network)
run: bash hooks/sdd-cache-test.sh
- name: Test simplify-ignore hook
run: bash hooks/simplify-ignore-test.sh
validate:
name: Validate plugin structure
needs: [validate-skills, validate-commands, validate-platforms]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Validate marketplace and plugin manifests
run: claude plugin validate .
test-install:
name: Test plugin installation
runs-on: ubuntu-latest
needs: validate
steps:
- uses: actions/checkout@v6
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Configure git to use HTTPS
run: git config --global url."https://github.com/".insteadOf "git@github.com:"
- name: Add marketplace
run: claude plugin marketplace add ./
- name: List marketplaces
run: claude plugin marketplace list
- name: Install plugin
run: claude plugin install agent-skills@addy-agent-skills --scope user