Skip to content

docs: correct the README claims that drifted away from the live watch - #119

Merged
askalf merged 3 commits into
masterfrom
docs/readme-live-claims
Jul 25, 2026
Merged

docs: correct the README claims that drifted away from the live watch#119
askalf merged 3 commits into
masterfrom
docs/readme-live-claims

Conversation

@askalf

@askalf askalf commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Four factual claims no longer matched reality. Two of them predate this week.

README said reality
watch runs "every Monday" cron is 17 6 * * *daily since the 07-20 flip
watch re-scans "every week" the same error, a second time, further down
"all 255 official plugins" 273 on today's run
@askalf/truecopy@0.8.0, hook #v0.8.0 npm latest and package.json are both 0.10.0

The hook install one mattered a little more than the others: the command now derives its tag from the running build, so the snippet was advertising an older pin than the tool would actually write.

Two deliberate choices

The plugin count is removed, not corrected. Any hardcoded number goes stale the next time the catalog grows — 255 → 258 → 273 in three weeks — and the live badge sits directly above that sentence already carrying the real figure. Prose naming a number the badge contradicts is worse than prose naming none.

The historical study figures are untouched — 2,019 skills, "255 catalog plugins, 177 vendor repos", 66,541 on ClawHub, 68,560 total. Those describe published audits at a point in time and are cited from the blog posts. Updating them to today would misstate what was actually measured.

Docs only; no behaviour changed. The two behavioural README edits from this week — the hook decision-table row for a check that could not complete, and matching a signer on the whole public key — already shipped in #111 and #112.

askalf added 3 commits July 25, 2026 11:43
…links

The 2026-07-25 watch reported linkSkips: 8 — the first run where that number was
visible at all. All eight are redis-development, and they are not an attack:

  plugins/redis-development/skills/redis-core -> ../../../skills/redis-core

Redis keeps its canonical skills at the top of redis/agent-skills and each
plugin symlinks the ones it ships. That is an ordinary monorepo layout.

The catalog fetches that plugin as a git-subdir source, so the corpus row points
at plugins/redis-development while marketplace-fetch clones the WHOLE repo. The
escaping-link rule confined discovery to the row directory, so links reaching one
level up resolved "outside" and were refused — even though the targets were
sitting in the corpus the whole time.

So eight real skills in the official directory have never been scanned. Before
the link work they were skipped in silence (lstat isDirectory() is false for a
symlink); since then they were at least counted. Now they are scanned.

discoverMarketplaceSkills takes `confine`, a boundary that may be an ANCESTOR of
the scanned root, and the watch passes the fetched repo (new `repoDir` on each
corpus row). Deliberately one-directional: a confine that is not an ancestor is
ignored, so a bad value can only narrow the boundary back to the scanned
directory, never redirect discovery somewhere unrelated. A link that leaves the
repo is still refused and still reported.

Verified end-to-end against the real vendor tree at the catalog-pinned sha
(3d6f255), staged the way the corpus stages it:

  before (no repoDir): skills 0, linkSkips 8
  after  (repoDir)   : skills 8, linkSkips 0, poisoned 0, advisories 3

All eight scan clean; the three advisories are capability mentions (a secret env
var read, an exfiltration-intent mention in redis-security), none blocking. So
this adds coverage without moving the badge.

Note on the first attempt: my staging harness set repoDir to the plugin dir
itself, the widening correctly did nothing, and the run looked identical. The
harness was wrong, not the code — worth stating because "no change" was the
right output for the input it was given.
Four factual claims no longer matched reality. Two predate this week.

1. "re-audits all 255 official plugins every Monday" — the cron has been daily
   ('17 6 * * *') since the 07-20 flip; the README was never updated. Today the
   directory is 273 plugins, not 255.
2. "re-scans the full official plugin directory every week" — the same error, a
   second time, further down.
3. The pinned-install example still said 0.8.0; npm latest and package.json are
   both 0.10.0.
4. The hook install snippet pinned #v0.8.0. `hook install` now derives the tag
   from the running build, so the example was showing an older pin than the tool
   would actually write.

The plugin COUNT is removed rather than corrected. Any hardcoded number goes
stale the next time the catalog grows — 255 to 258 to 273 in three weeks — and
the badge directly above that sentence already carries the live figure. Prose
naming a number the badge contradicts is worse than prose naming none.

The historical study figures are deliberately untouched: 2,019 skills, 255
catalog plugins and 177 vendor repos, 66,541 on ClawHub, 68,560 total. Those
describe published audits at a point in time and are cited from the blog posts.
Updating them to today would misstate what was actually measured.

Docs only. Nothing about the gate behaviour changed — the two behavioural README
edits from this week (the hook decision-table row for a check that could not
complete, and matching a signer on the whole public key) already shipped with
their own PRs.

@sprayberry-reviewer sprayberry-reviewer left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review from the Sprayberry Labs fleet code reviewer.

Verdict: Clean docs-only fix — no blocking issues, approving.

What I checked

  • gh pr diff — the full unified diff (README.md only, 4 lines changed / 4 lines removed, single file).
  • CI check-rollup (gh pr checks): CodeQL, analyze, test × 6 platforms/node-versions, and "verify pinned skills" all pass.
  • Each of the four factual corrections against the PR description's claim table:
    1. README.md: **every Monday****every day** (watch cadence hunk 1) — matches the stated cron flip to 17 6 * * * (daily).
    2. README.md: re-audits all 255 official pluginsre-audits the full official plugin directory — the hardcoded catalog count is removed rather than bumped to today's 273, consistent with the PR's stated rationale (a live badge already carries the real number; a stale hardcoded figure would drift again).
    3. README.md: @askalf/truecopy@0.8.0@askalf/truecopy@0.10.0 (pinned-release install line).
    4. README.md: hook snippet tag #v0.8.0#v0.10.0.
    5. README.md: the second every weekevery day occurrence further down (hunk 4), the "same error, a second time" the PR body mentions.
  • The historical study figures (2,019 skills / 255 catalog plugins / 177 vendor repos / 66,541 / 68,560) are correctly left untouched in the diff — they're cited as point-in-time audit results from the linked blog posts, not live claims, so leaving them alone is the right call.

No logic, no code paths, no test surface changed — this is a pure prose/version-string correction to README.md, and every substitution in the diff traces cleanly to a claim in the PR's before/after table. All CI checks are green.

What's good

Clear before/after table in the PR description made verifying each substitution fast and unambiguous; the choice to remove rather than "fix" the hardcoded plugin count is the more maintainable call given the live badge sitting right above it.

No blocking findings.

@askalf
askalf merged commit 72fd312 into master Jul 25, 2026
9 checks passed
@askalf
askalf deleted the docs/readme-live-claims branch July 25, 2026 16:54
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.

2 participants