Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion .github/workflows/scaffold-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -248,11 +248,23 @@ jobs:
# 2. Interactive `skills add …/framework` (no --all) relies on
# metadata.internal hiding — assert repo-root discovery surfaces
# exactly the curated set and nothing internal.
# The curated catalog is every skills/<dir>/ holding a SKILL.md — the
# same tree @objectstack/skills ships whole (packages/skills/scripts/
# sync-catalog.mjs), read the same way as the package-catalog step
# below. ⛔ Never a name glob or an allow-list here: a skill added to
# skills/ would red this step until a governed edit of this file.
# An internal skill placed in skills/ still fails: the CLI hides
# metadata.internal skills, so the installed set (assertion 1) or the
# listed count (assertion 2) falls short of the directory set.
run: |
cd "$RUNNER_TEMP"
node "$GITHUB_WORKSPACE/packages/create-objectstack/bin/create-objectstack.js" skills-probe --skip-install --skip-skills
cd skills-probe
expected=$(cd "$GITHUB_WORKSPACE/skills" && ls -d objectstack-*/ | tr -d '/' | sort)
expected=$(for d in "$GITHUB_WORKSPACE"/skills/*/; do if [ -f "${d}SKILL.md" ]; then basename "$d"; fi; done | sort)
if [ -z "$expected" ]; then
echo "::error::skills/ holds no <skill>/SKILL.md — the curated catalog this step compares against is empty"
exit 1
fi
expected_count=$(echo "$expected" | wc -l | tr -d ' ')

npx -y skills add "$GITHUB_WORKSPACE/skills" --all --copy
Expand Down
Loading