feat(pi): implement milestone M5 - package surface
This commit is contained in:
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
Cross-agent skill collection for **Codex**, **Claude Code**, **OpenCode**, and **Cursor**.
|
Cross-agent skill collection for **Codex**, **Claude Code**, **OpenCode**, and **Cursor**.
|
||||||
|
|
||||||
|
Pi package support is also included for the pi-native variants in this repo.
|
||||||
|
|
||||||
This repo is organized similarly to `obra/superpowers` and is designed to scale to many skills over time.
|
This repo is organized similarly to `obra/superpowers` and is designed to scale to many skills over time.
|
||||||
|
|
||||||
## Goals
|
## Goals
|
||||||
@@ -91,3 +93,28 @@ ai-coding-skills/
|
|||||||
## Compatibility Policy
|
## Compatibility Policy
|
||||||
|
|
||||||
Each skill should explicitly document agent compatibility and any prerequisites directly in its own `SKILL.md`.
|
Each skill should explicitly document agent compatibility and any prerequisites directly in its own `SKILL.md`.
|
||||||
|
|
||||||
|
## Pi Package
|
||||||
|
|
||||||
|
The repo root now includes a pi package manifest that ships only the pi-specific surface:
|
||||||
|
|
||||||
|
- `skills/*/pi/` for the five supported skill families
|
||||||
|
- `skills/reviewer-runtime/pi/`
|
||||||
|
- `docs/PI*.md`
|
||||||
|
- `scripts/verify-pi-resources.sh`
|
||||||
|
|
||||||
|
Install it into project-local pi settings from this checkout with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pi install -l /absolute/path/to/ai-coding-skills
|
||||||
|
pi list
|
||||||
|
```
|
||||||
|
|
||||||
|
Before publishing or sharing a tarball, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/verify-pi-resources.sh
|
||||||
|
npm pack --dry-run --json
|
||||||
|
```
|
||||||
|
|
||||||
|
Additional pi-specific guidance lives in [docs/PI.md](docs/PI.md).
|
||||||
|
|||||||
+13
-1
@@ -42,6 +42,13 @@ V1 uses one repo-level pi package rather than per-skill packages. The package su
|
|||||||
|
|
||||||
The package metadata and allowlist live at repo root so `pi install -l /absolute/path/to/ai-coding-skills` works without extra wrapping.
|
The package metadata and allowlist live at repo root so `pi install -l /absolute/path/to/ai-coding-skills` works without extra wrapping.
|
||||||
|
|
||||||
|
Current manifest shape:
|
||||||
|
|
||||||
|
- package name: `ai-coding-skills-pi`
|
||||||
|
- discovery keyword: `pi-package`
|
||||||
|
- `pi.skills`: the five `skills/<family>/pi` directories
|
||||||
|
- `files`: allowlisted to pi skill variants, pi docs, pi reviewer runtime helpers, and `scripts/verify-pi-resources.sh`
|
||||||
|
|
||||||
## Install Options
|
## Install Options
|
||||||
|
|
||||||
### Local Skill Copy
|
### Local Skill Copy
|
||||||
@@ -61,7 +68,12 @@ pi install -l /absolute/path/to/ai-coding-skills
|
|||||||
pi list
|
pi list
|
||||||
```
|
```
|
||||||
|
|
||||||
Package details are finalized by the packaging milestone and verified by `scripts/verify-pi-resources.sh` once that script is added in M5.
|
Verify the package surface before packaging or publishing:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/verify-pi-resources.sh
|
||||||
|
npm pack --dry-run --json
|
||||||
|
```
|
||||||
|
|
||||||
## Extension Decision
|
## Extension Decision
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"name": "ai-coding-skills-pi",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"description": "Pi variants and shared runtime helpers for ai-coding-skills.",
|
||||||
|
"license": "UNLICENSED",
|
||||||
|
"private": true,
|
||||||
|
"keywords": [
|
||||||
|
"pi-package",
|
||||||
|
"agent-skills",
|
||||||
|
"pi"
|
||||||
|
],
|
||||||
|
"files": [
|
||||||
|
"README.md",
|
||||||
|
"docs/ATLASSIAN.md",
|
||||||
|
"docs/CREATE-PLAN.md",
|
||||||
|
"docs/DO-TASK.md",
|
||||||
|
"docs/IMPLEMENT-PLAN.md",
|
||||||
|
"docs/README.md",
|
||||||
|
"docs/TELEGRAM-NOTIFICATIONS.md",
|
||||||
|
"docs/PI.md",
|
||||||
|
"docs/PI-RESEARCH.md",
|
||||||
|
"docs/PI-SUPERPOWERS.md",
|
||||||
|
"docs/WEB-AUTOMATION.md",
|
||||||
|
"skills/atlassian/pi",
|
||||||
|
"skills/create-plan/pi",
|
||||||
|
"skills/do-task/pi",
|
||||||
|
"skills/implement-plan/pi",
|
||||||
|
"skills/web-automation/pi",
|
||||||
|
"skills/reviewer-runtime/pi",
|
||||||
|
"scripts/verify-pi-resources.sh"
|
||||||
|
],
|
||||||
|
"pi": {
|
||||||
|
"skills": [
|
||||||
|
"./skills/atlassian/pi",
|
||||||
|
"./skills/create-plan/pi",
|
||||||
|
"./skills/do-task/pi",
|
||||||
|
"./skills/implement-plan/pi",
|
||||||
|
"./skills/web-automation/pi"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Executable
+62
@@ -0,0 +1,62 @@
|
|||||||
|
#!/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"
|
||||||
|
)
|
||||||
|
|
||||||
|
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"
|
||||||
Reference in New Issue
Block a user