skills: trim two descriptions to a routing sentence, and assert their pointers
Lint / hadolint (push) Successful in 10s
Lint / skill-floor (push) Successful in 14s
Lint / doc-drift (push) Successful in 18s
Lint / actionlint (push) Successful in 32s
Lint / skill-frontmatter (push) Successful in 15s

Every skill's name and description sit in the system prompt of EVERY request --
that block is the routing index -- while bodies are fetched on demand through
the read tool. Measured on this device: 24 discoverable skills cost 10,609
description chars (~2,652 tokens) per request, against 474,656 chars of bodies
(~119k tokens) that cost nothing until used. Bodies are 45x the descriptions,
which is what the spec's 1024-char description limit is protecting.

credential-incident-response (1022, two characters under the limit) and
pi-devbox-environment (923) were each carrying a table of contents of what
their body covers. Trimmed to what a description is actually for -- answering
"should I load this?" -- reclaiming 1,087 chars (~271 tokens) of permanent
context. 4,154 -> 3,067 across the five baked skills.

WHY ONLY THESE TWO. Both are named BY PATH from the always-loaded managed
block, so neither depends on description-matching to be found. pi-extensions is
left alone deliberately: check-skill-floor.sh compares the vendored copy to the
package repo by DIRECTORY HASH, so trimming ours alone registers as drift and
turns that gate red; and it is the one skill that also ships in the skillset
repo, where it runs on hosts with no pi-devbox managed block and genuinely needs
its description. pi-devbox-firstboot stays fuller than needed because it is the
skill a device with nothing else has to find.

NOTHING WAS DELETED, ONLY RELOCATED -- and that was checked rather than assumed:
all 18 enumerated items were confirmed present in the bodies BEFORE cutting
(frontmatter stripped, so the description's own line could not score its own
claim), and `git diff --stat` confirms both bodies are byte-identical.

THE TRIM CREATES A DEPENDENCY, SO IT IS NOW ASSERTED. smoke-test.sh checks both
pointers by path, next to the firstboot one. The premise of the cut is "the
block names them", which holds only while those lines exist -- reword the block,
drop a pointer, and the skill silently stops being reachable for a device that
did not already know it was there. Verified discriminating: a reworded block
fails the grep.

An instrument failure caught on the way, and the reason the coverage check was
re-run: my first pass used `grep -E 'a\|b'`, where \| is a LITERAL pipe in ERE,
so 8 of 18 items read as 0 hits. Every zero was a pattern containing \| and
every non-zero lacked one -- that correlation, not the content, was the finding.
With real alternation all 18 are present.

Loader re-verified on both trimmed skills: rc=0, no skill diagnostics.
This commit is contained in:
pi@mbp-m1-2020
2026-10-24 11:26:26 +02:00
parent 206fd1ec35
commit 057827a84b
4 changed files with 39 additions and 15 deletions
+26
View File
@@ -73,6 +73,32 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`).
the vendored copies are deliberately in scope: the image ships those bytes, the vendored copies are deliberately in scope: the image ships those bytes,
so the violation is ours to carry whoever typed it. so the violation is ours to carry whoever typed it.
- **Two baked skills' `description` fields trimmed to a routing sentence,
reclaiming ~1,087 characters of permanently-loaded context.** Every skill's
name and description sit in the system prompt of *every* request — that block
is the routing index — while bodies are fetched on demand through the read
tool. Measured here: 24 discoverable skills cost 10,609 description chars
(~2,652 tokens) on every request, against 474,656 chars of bodies (~119k
tokens) that cost nothing until used. `credential-incident-response` (1022,
i.e. two characters under the spec limit) and `pi-devbox-environment` (923)
were each carrying a table of contents of what their body covers.
Both are named **by path** from the always-loaded managed block, so neither
depends on description-matching to be found — which is what makes the cut
safe, and is why only these two were cut. `pi-extensions` was left alone for
two reasons: `check-skill-floor.sh` compares the vendored copy to the package
repo by directory hash, so trimming ours alone registers as drift; and it is
the one skill that also ships in the `skillset` repo, where it runs on hosts
with no pi-devbox managed block and so genuinely needs its description to be
found. All 18 enumerated items were verified present in the bodies first —
the cut relocates nothing, and both bodies are byte-identical.
`smoke-test.sh` now asserts both pointers by path, alongside the firstboot
one. The trim's premise is "the block names them", and that premise holds only
while those lines exist: reword the block, drop a pointer, and the skill
silently stops being reachable for a device that did not already know it was
there. Verified discriminating with a reworded negative control.
### Fixed ### Fixed
- **CI: a smoke job's image could be deleted mid-test by another job's disk - **CI: a smoke job's image could be deleted mid-test by another job's disk
@@ -6,13 +6,7 @@ description: >-
agent-authored note. Load this whenever a task involves a leaked/exposed agent-authored note. Load this whenever a task involves a leaked/exposed
secret, a token rotation, a "is this credential still live?" question, deciding secret, a token rotation, a "is this credential still live?" question, deciding
whether to delete or scrub stored content, proving a corpus is clean, or whether to delete or scrub stored content, proving a corpus is clean, or
choosing scopes for a new API token. Covers the mandatory order of operations choosing scopes for a new API token.
(probe the issuer FIRST — severity before cleanliness), leak-free identity via
sha256[:8] fingerprints and when publishing one is safe,
why revocation beats deletion for anything already replicated, scopes derived
from measured consumers, the three places a secret hides in a Chroma palace, how to prove ABSENCE rather than assume it (instrument strength,
census vs class passes, the tokenisation trap where quoting decides detectability, why git filters never run on symlinks, self-tests that abort),
where this fleet's secrets live, and what rotation does NOT fix.
--- ---
# Credential incident response # Credential incident response
@@ -6,14 +6,7 @@ description: >-
shell prompt is prefixed `[devbox]`, or `~/.ssh-local/config` is present) and shell prompt is prefixed `[devbox]`, or `~/.ssh-local/config` is present) and
the task touches any of: reaching the Docker host or its LAN, SSH, DNS name the task touches any of: reaching the Docker host or its LAN, SSH, DNS name
resolution, what survives container recreate (persistence vs ephemerality), resolution, what survives container recreate (persistence vs ephemerality),
running Python or other REPLs, tmux, or the pi-studio browser UI. Covers the running Python or other REPLs, tmux, or the pi-studio browser UI.
persistence model, the interactive-vs-tool-shell alias gotcha
(dssh/dscp/cat=bat exist only in interactive bash), host + LAN SSH
reachability and ControlMaster, split-horizon DNS mechanisms, the tmux
0-index constraint, uv-first Python, and pi-studio reachability. This skill
teaches MECHANISMS only — concrete hostnames, usernames, internal domains,
nameservers, and even the host OS vary per deployment and MUST be discovered
at runtime, never assumed or hardcoded.
--- ---
# pi-devbox environment # pi-devbox environment
+11
View File
@@ -304,6 +304,17 @@ run "mempalace session-start pointer merged into global AGENTS.md" \
# rewording the paragraph must not be able to silently break the link. # rewording the paragraph must not be able to silently break the link.
run "firstboot skill pointer merged into global AGENTS.md" \ run "firstboot skill pointer merged into global AGENTS.md" \
"grep -q 'pi-devbox-firstboot/SKILL.md' /opt/pi-toolkit/pi-global-AGENTS.md" "grep -q 'pi-devbox-firstboot/SKILL.md' /opt/pi-toolkit/pi-global-AGENTS.md"
# Same path assertion for the two skills whose descriptions were deliberately
# TRIMMED to a routing sentence. Their frontmatter no longer enumerates what
# they cover, on the explicit premise that this block names them by path and so
# they never depend on description-matching to be found. That premise is only
# true while these lines exist, which is exactly why it is asserted rather than
# trusted: reword the block, drop a pointer, and the skill silently stops being
# reachable for a device that did not already know it was there.
run "pi-devbox-environment pointer merged into global AGENTS.md" \
"grep -q 'pi-devbox-environment/SKILL.md' /opt/pi-toolkit/pi-global-AGENTS.md"
run "credential-incident-response pointer merged into global AGENTS.md" \
"grep -q 'credential-incident-response/SKILL.md' /opt/pi-toolkit/pi-global-AGENTS.md"
# Vendored fallback skills (so a no-skillset container still resolves the # Vendored fallback skills (so a no-skillset container still resolves the
# AGENTS.md 'read the pi-extensions skill' pointer). # AGENTS.md 'read the pi-extensions skill' pointer).
run "image-baked pi-extensions fallback skill" \ run "image-baked pi-extensions fallback skill" \