Files
ai-coding-skills/scripts/verify-pi-resources.sh
T
2026-04-23 16:26:42 -05:00

65 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
REQUIRED_FILES=(
"docs/PI-RESEARCH.md"
"docs/PI.md"
"docs/PI-SUPERPOWERS.md"
"skills/atlassian/pi/SKILL.md"
"skills/create-plan/pi/SKILL.md"
"skills/create-plan/pi/templates/continuation-runbook.md"
"skills/create-plan/pi/templates/milestone-plan.md"
"skills/create-plan/pi/templates/story-tracker.md"
"skills/do-task/pi/SKILL.md"
"skills/do-task/pi/templates/task-plan.md"
"skills/implement-plan/pi/SKILL.md"
"skills/web-automation/pi/SKILL.md"
"skills/reviewer-runtime/pi/run-review.sh"
"skills/reviewer-runtime/pi/notify-telegram.sh"
"package.json"
)
# These required-file checks are intentionally hard failures: removing any
# required artifact should make this script exit non-zero immediately.
for file in "${REQUIRED_FILES[@]}"; do
test -f "$file"
done
test -x skills/reviewer-runtime/pi/run-review.sh
test -x skills/reviewer-runtime/pi/notify-telegram.sh
find skills/web-automation/pi/scripts -type f -print -quit | grep -q .
find skills/atlassian/pi/scripts -type f -print -quit | grep -q .
for file in skills/create-plan/pi/SKILL.md skills/do-task/pi/SKILL.md skills/implement-plan/pi/SKILL.md; do
grep -q 'docs/PI-SUPERPOWERS.md' "$file"
done
! grep -nE 'update_plan|plan mode|sub-agent|subagents' \
skills/create-plan/pi/SKILL.md \
skills/do-task/pi/SKILL.md \
skills/implement-plan/pi/SKILL.md
node <<'EOF'
const fs = require("fs");
const pkg = JSON.parse(fs.readFileSync("package.json", "utf8"));
if (!pkg.pi || !Array.isArray(pkg.pi.skills) || pkg.pi.skills.length !== 5) {
console.error("package.json must define pi.skills with exactly 5 entries");
process.exit(1);
}
if (!Array.isArray(pkg.files) || pkg.files.length === 0) {
console.error("package.json must define a non-empty files allowlist");
process.exit(1);
}
if (!Array.isArray(pkg.keywords) || !pkg.keywords.includes("pi-package")) {
console.error("package.json must include the pi-package keyword");
process.exit(1);
}
console.log("package metadata ok");
EOF
echo "pi resources verified"