mirror of
https://github.com/affaan-m/ECC.git
synced 2026-10-21 07:21:46 +02:00
feat(pi): curated pi/core skills+prompts profile, CI load test, and 2.2.2 release sync (#3264)
Adds a curated, Pi-native, skills+prompts-only profile at pi/core/ for downstream packagers that mirror GitHub Releases. - manifests/pi-core.json: explicit include lists, per-item exclusion reasons, curation rules, safety allowlists; every root skill and command must be classified. - scripts/build-pi-core.js regenerates pi/core deterministically (package.json from VERSION, LICENSE, README.md, CURATION.md, skills/, commands/); --check fails CI on drift. council is renamed ecc-council inside pi/core only. - Safety checks: no callable endpoints outside the allowlist, no npx/curl|sh/pip install, no secrets, no absolute home paths, no symlinks, valid frontmatter, no duplicate names. - CI: build + drift check and an offline Pi CLI load test of pi/core. - Release: VERSION, package.json and pi/core/package.json at 2.2.2, CHANGELOG, tag-triggered release verification, and a two-week cadence in CONTRIBUTING.md. pi/core: 123 of 293 skills and 24 of 94 commands; 35,006 characters of skill description text.
This commit is contained in:
@@ -239,6 +239,44 @@ jobs:
|
||||
run: node scripts/ci/validate-no-personal-paths.js
|
||||
continue-on-error: false
|
||||
|
||||
pi-core:
|
||||
name: Pi Core Profile
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||
with:
|
||||
node-version: '20.x'
|
||||
|
||||
# Rebuild runs frontmatter validation and the pi/core safety checks
|
||||
# (no callable endpoints, no runtime downloads, no secrets, no absolute
|
||||
# home paths, no symlinks, no duplicate skill names); the diff check
|
||||
# proves the committed profile is up to date.
|
||||
- name: Rebuild pi/core and verify it is up to date
|
||||
run: |
|
||||
node scripts/build-pi-core.js
|
||||
git diff --exit-code pi/core
|
||||
|
||||
- name: Install Pi coding agent CLI
|
||||
run: npm install --global --ignore-scripts --no-audit --no-fund @mariozechner/pi-coding-agent@0.73.1
|
||||
|
||||
# --extension only loads a package's pi.extensions entries; pi/core is a
|
||||
# skills+prompts-only package, so the equivalent --skill/--prompt-template
|
||||
# resource flags are used. The load-test script additionally asserts via
|
||||
# RPC that every curated command actually loaded.
|
||||
- name: Offline load test with the Pi CLI
|
||||
run: |
|
||||
PI_OFFLINE=1 pi --offline --mode rpc --no-session --no-context-files --no-extensions \
|
||||
--skill pi/core/skills --prompt-template pi/core/commands </dev/null >/dev/null
|
||||
node scripts/ci/pi-core-load-test.js
|
||||
|
||||
python-tests:
|
||||
name: Python Lint, Type Check & Test
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -84,6 +84,22 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Verify VERSION matches tag
|
||||
env:
|
||||
TAG_NAME: ${{ github.ref_name }}
|
||||
run: |
|
||||
TAG_VERSION="${TAG_NAME#v}"
|
||||
FILE_VERSION=$(tr -d '[:space:]' < VERSION)
|
||||
if [ "$TAG_VERSION" != "$FILE_VERSION" ]; then
|
||||
echo "::error::Tag version ($TAG_VERSION) does not match VERSION ($FILE_VERSION)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# pi/core/package.json derives its version from VERSION, so a current
|
||||
# profile also proves pi/core is in sync with the tag.
|
||||
- name: Verify pi/core profile is current
|
||||
run: node scripts/build-pi-core.js --check
|
||||
|
||||
- name: Verify release metadata stays in sync
|
||||
run: node tests/plugin-manifest.test.js
|
||||
|
||||
|
||||
Reference in New Issue
Block a user