feat(skills): bake pi-extensions + mempalace fallback skills
The pi-toolkit global AGENTS.md tells every pi session to read
~/.agents/skills/pi-extensions/SKILL.md at start (the fork/recall
under-utilisation fix), but that skill lived only in the private skillset
repo — so the pointer dangled in any container started without skillset
mounted. Bake fallbacks so the pointer always resolves.
- pi-extensions (Option 1 + Option 2, layered):
* Canonical skill promoted to the public pi-extensions package repo under
skill/ (separate commit there); co-located with the code it documents.
* rootfs/ carries a committed snapshot (the floor).
* Dockerfile.variant copies /opt/pi-extensions/skill/ over the snapshot
after the pinned clone, so a normal build ships the fresh package copy
(recorded via PI_EXTENSIONS_REF) and an old-ref/mirror build still ships
the snapshot. Helper evaluate-extension-usage.py travels with it.
- mempalace (Option 2 only): snapshot in rootfs/. Its consumer skill has no
public package home (mempalace-toolkit ships a different skill,
opencode-mempalace-bridge), so no build-time refresh.
- entrypoint links both (only-when-absent; mounted skillset still wins).
- smoke-test: build-time presence + package-match check + runtime symlink
assertions; readiness gate now waits on the last-linked skill.
- docs: skills/VENDORED.md (provenance + refresh), README, AGENTS.md,
CHANGELOG [Unreleased].
Note: shipped in the NEXT release; v1.2.0 (run 409) predates this.
This commit is contained in:
@@ -11,6 +11,34 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`).
|
||||
|
||||
---
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added
|
||||
|
||||
- **Vendored fallback skills: `pi-extensions` + `mempalace`.** The pi-toolkit
|
||||
global `AGENTS.md` directs every pi session to read
|
||||
`~/.agents/skills/pi-extensions/SKILL.md` at start (the fix for fork/recall
|
||||
under-utilisation). That pointer dangled in a container started **without**
|
||||
the private `skillset` repo mounted. The image now bakes fallback copies of
|
||||
both skills under `/usr/local/share/pi-devbox/skills/`, symlinked in by
|
||||
`entrypoint-user.sh` (only when absent, so a mounted skillset still wins).
|
||||
- **Layered freshness for the `pi-extensions` skill (Option 1 + Option 2).**
|
||||
The canonical skill was promoted into the **public `pi-extensions` package
|
||||
repo** under `skill/` (co-located with the extensions it documents). A
|
||||
committed snapshot in `rootfs/` is the *floor*; `Dockerfile.variant` copies
|
||||
`/opt/pi-extensions/skill/` (the pinned, manifest-recorded clone) over it at
|
||||
build, so a normal build ships the fresh package copy and an old-ref/mirror
|
||||
build still ships the snapshot. `mempalace` is snapshot-only (its consumer
|
||||
skill has no public package home — the `mempalace-toolkit` repo ships a
|
||||
*different* skill, `opencode-mempalace-bridge`). Provenance + refresh steps:
|
||||
`rootfs/usr/local/share/pi-devbox/skills/VENDORED.md`.
|
||||
- **Smoke-test coverage** for the fallback skills: build-time presence of both
|
||||
`SKILL.md`s and the `pi-extensions` helper, a check that the baked
|
||||
`pi-extensions` skill matches the package copy when the clone carries it, and
|
||||
runtime assertions that both are symlinked into `~/.agents/skills/`.
|
||||
|
||||
---
|
||||
|
||||
## v1.2.0 — 2026-06-22
|
||||
|
||||
Minor release: **image-baked agent skills** — a new base mechanism that ships
|
||||
|
||||
Reference in New Issue
Block a user