Repository navigation
v0.5.5
Package @prowl-ai/prowl-skill 0.5.5 · plugins prowl 0.4.3, prowl-cli 0.2.5.
A release you start by editing one line, a gate that can actually stop it, and the
gaps a /skill-audit run found. Against the Agent Skills standard both skills scored
0 GAP / 9 PASS before this; what follows is the surrounding repository catching up
to them.
Added
-
auto-tag.yml. A push tomainwhosepackage.jsonversion has no matching
v*tag cuts the tag, which startsrelease.ymlexactly as a hand-pushed tag
would. A merge that does not bump the version publishes nothing — this repository
decided against publishing on every merge and the reason still holds, so the trigger
is the version bump inside the merge, not the merge. Deciding to release stays a
reviewed edit to one line; only the mechanical part after it is automated.It refuses to tag a version with no
CHANGELOGsection, because that failure lands
after the tag is public and the tag then looks delivered while nothing shipped —
a class that already cost this project one false release. And it warns loudly when
TAG_PATis unset: GitHub will not start a workflow from a tag pushed with
GITHUB_TOKEN, so without that secret the tag is created and releases nothing. -
$schemaanddisplayNamein both plugin manifests, both Codex manifests and
both marketplace files.--strictpassed without them; the standard asks for them. -
CONTRIBUTING.mdandSECURITY.md, which a public repository should not lack.
SECURITY leads with the thing that actually costs money: aprowl_key is
billing-bearing, a leak is somebody spending your wallet, and revoking comes before
tidying git history. -
npm and CI badges in the README, beside the four that were already there.
-
The forge description is now a checked surface.
check:toolsreads the GitHub
repo description through the public API and judges it like any file — it had said
408for two months while every file on disk said448, drift on the one published
surface a file walk cannot see. Unreachable is a note, not drift: being rate-limited
says nothing about what the description says. Both descriptions corrected; the check
now reports 10 surfaces agreeing rather than 9.
Fixed
-
validatenow gatesrelease.release.ymlre-implemented the checks as its
own steps, so a redvalidaterun could not stop a publish. It is aneeds:
dependency on the reusable workflow now — the fix a sibling project made after
tagging v0.4.1 with its own validate red and watching npm serve it four minutes
later. -
claude plugin validate --strictis its own CI job. Themanifestsjob only
proved the JSON parses, which says nothing about whether Claude Code would load the
plugins. -
The registry is polled after publish. The read replica lags the write master, so
a fresh publish can still404on read; "published" is a claim until it is served.
Added to both skills
-
The untrusted-output rule, which neither page carried. These tools return scraped
pages, SERP snippets, ad copy, reviews and LLM output built from them — text an
attacker can write, aimed at exactly the kind of agent that reads it. Both pages now
say that tool output is data: never a directive, never the chooser of the next call,
never a justification for spend. -
The MCP protocol version in
compatibility, read from a live handshake rather
than recalled: the server negotiates2025-06-18(serverInforeportsprowl_mcp
1.29.0, while/mcp/healthand the hosted document still say 1.4.0 — theirs to fix).
Not done, deliberately
The mechanical auditor's only two findings were --house rules of the ssheleg skill
family: a Use when … opener and Russian trigger phrases in the description. These
skills are not part of that family and ship under @prowl-ai to an English-speaking
audience, so both were declined rather than silently skipped.