Skip to content

feat: portability and safety guards (v0.9.0) - #22

Merged
chipfighter merged 7 commits into
mainfrom
feat/skill-portability-and-safety
Aug 2, 2026
Merged

chipfighter merged 7 commits into
mainfrom
feat/skill-portability-and-safety

Conversation

@chipfighter

Copy link
Copy Markdown
Owner

Guards only. No skill behavior changes, and the fixed context baseline is
untouched at 4580 characters.

What this closes

Every skill now carries its own license. The README tells people to copy
skills/ on its own; a copied skill previously carried no terms at all.

The two agentskills.io limits every host reads are enforced. A conformant
name and a description within 1024 characters. Claude Code is lenient about
both, so a violation keeps working here and fails silently wherever else the
directory is copied.

Cursor and Copilot envelopes are covered by tests. The hook already emitted
all four SessionStart envelope shapes and usage-lib.sh already detected all
four hosts, but only Claude Code and Codex had tests — the two nobody runs
daily could have been dropped by a refactor without anything failing. They are
documented as conformant-but-unproven, not supported, because nobody has run
them end to end.

The shipped surface is scanned in CI. Network egress, credential and
private-key paths, piping into a shell, decoded or indirect execution, and
invisible or bidirectional Unicode that hides instructions from a human reading
the diff. Every rule carries a sample it must still match, so a pattern that
quietly stops working fails the build instead of reporting success forever.

A pre-existing bug is fixed. tests/test-hooks.sh was unrunnable on
Windows: it tried python3 and python only, both of which resolve to the
Microsoft Store stubs that pass command -v and exit 49 — the condition the
file's own comment already described. Confirmed pre-existing against the base
commit before fixing.

Verification

All four suites pass locally: metadata, safety, Linux hook via Git Bash, and
Windows hook. Fixed context measured at 4580 against a 4580 budget, unchanged.

Both new test groups were checked against deliberate breakage rather than
trusted for passing once. Cursor's output field was renamed and a curl line
was planted in a shipped file; each was caught, then reverted.

🤖 Generated with Claude Code

chipfighter and others added 7 commits July 31, 2026 22:18
The candidate list tried python3 and python only. On a Windows install both
resolve to the Microsoft Store stubs that pass `command -v` and then exit 49,
which the file's own comment already described. The real interpreter there is
the `py` launcher, so the suite was unrunnable on the Git Bash setup the README
tells Windows users to install.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The README tells people to copy skills/ on its own, and a copied skill then
carried no terms at all. Every SKILL.md now states license: MIT.

The metadata test also enforces the two spec limits every host reads: a
conformant name and a description within 1024 characters. Claude Code is
lenient about both, so a violation keeps working here and fails silently
wherever else the directory is copied. Neither field counts toward the fixed
context budget, which stays at 4580.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The hook already emits all four SessionStart envelopes and usage-lib already
detects all four hosts, but only Claude Code and Codex had tests. The two
nobody runs day to day could have been dropped by a refactor without anything
failing.

Covers the envelope field each host reads, the recorded platform, the absence
of guide seeding outside the two primary hosts, and the neutral invocation note
that non-primary hosts receive instead of Claude Code's Skill-tool wording.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A skill is executable context: it enters an agent already holding the user's
credentials and file system. Public catalogues scanned in 2026 carried prompt
injection and credential exfiltration in a large minority of entries, so this
plugin should check the claim rather than promise it.

Scans every shipped file for network egress, credential and private-key paths,
piping into a shell, decoded or indirect execution, and invisible or
bidirectional Unicode that hides instructions from a human reading the diff.

Each rule carries a sample it must still match. A scanner whose pattern quietly
stops matching is worse than no scanner, because it reports success forever.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
States the agentskills.io conformance the tests now enforce, names the four
SessionStart envelopes, and marks Cursor and Copilot as conformant-but-unproven
rather than supported, because nobody has run them end to end.

Adds a security section covering what the scan checks, the no-network and
no-telemetry claim, and the single local sink that claim depends on.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Portability and safety guards only. No skill behavior changes and the fixed
context baseline is untouched at 4580.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
CLAUDE.md was ignored as local working notes but its Codex twin was not, so the
same seeded skeleton was tracked or untracked depending only on which host
created it first.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chipfighter
chipfighter merged commit d5b7814 into main Aug 2, 2026
2 checks passed
@chipfighter
chipfighter deleted the feat/skill-portability-and-safety branch August 2, 2026 09:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant