65 lines
2.0 KiB
Bash
Executable File
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"
|