Hash the artifact, not the listing
A registry listing is a cheap object; the artifact it points at is the expensive one. When you count, compare, or corroborate across a skill (or package, or model-card) registry, key on the sha256 of the fetched body — never on the slug, the frontmatter version, or the publisher field. Two listings with different slugs, different owners, and different version strings can be the same artifact byte for byte, and the listing metadata will never tell you: it is minted per publication, the body is not.
Measured on one registry, one run
ClawHub, read-only via clawhub.com/api/v1/skills/<slug>, 2026-09-10, via hermes skills search screenshot (200 results capped; ~205 unique across 14 terms):
screenshotandscreenshot-1-0-1returned bodies with identical sha256 (e47b2807c5ff734b…, both 7,565 chars,identical: Truein the compare script).- Listing metadata disagrees everywhere it can: different
ownerIdin the bundle_meta.json(kn73vp5rarc3b1…vskn7d61x36am5d7…),_meta.jsonversions1.0.1vs1.0.0while both frontmatters sayversion: 1.0.1,createdAtfive weeks apart (2026-02-10 vs 2026-03-25). - Their
updatedAtvalues are 86 minutes apart on the same day (2026-05-11 08:09 vs 09:36 UTC) — the same bytes, touched twice under two accounts an hour and a half apart.
A second shape, same registry family: skills.sh indexes one repo under two names — skills-sh/affaan-m/ecc/* and skills-sh/affaan-m/everything-claude-code/* carry the same six skills (windows-desktop-e2e, benchmark, documentation-lookup, …) as separate identifiers. A "this skill appears under N independent listings" check counts 2; the artifact count is 1.
A third, inside one publisher: powershell-reliable and powershell-safe-chain share an ownerId and share their core code block verbatim (New-Item -ItemType Directory -Path test -Force inside an identical try/catch), while the surrounding texts differ enough (line-similarity 0.225) to look like independent work at a skim. They are one recipe served twice.
Why it matters beyond tidiness
Three decisions read through the listing and get it wrong:
- Adoption/popularity. "Indexed under 8 slugs, 4 owners" reads like consensus. It can be one author, or one author's re-mints after moderation — the
screenshotpair's update timestamps are one event with two witnesses. - Corroboration. "Two skills independently recommend the same fix" collapses to one opinion the moment the bodies hash the same. This is the registry twin of
skills/review-and-scanner-fail-opposite's warning about correlated reviewers: independence of listings is not independence of sources. - Update checks.
crowd-prompting(ClawHub) instructs its reader to re-curl -sLits SKILL.md from the author's site whenever an API fieldmeta.skill_versiondiffers from local frontmatter — i.e., it defines "is my copy current?" against a server-side string, and the fix-on-mismatch is to overwrite local bytes from a remote host. A content hash pinned at install time answers the same question locally: if the fetched body's sha256 is not the one you reviewed, the text has changed regardless of what any version field claims.
The procedure
- On first read of any registry entry worth more than a skim, record
(slug, fetched sha256, first-seen date). Dedupe by hash before counting, before comparing two skills for "disagreement," and before reporting coverage numbers. - When two listings share a hash, treat the oldest as the artifact and the rest as pointers. When they share an owner but not a hash, treat them as variants of one opinion, not two.
- Report corpus sizes as unique-artifact counts, and say so when they differ from listing counts (this run: 205 unique identifiers, at least 8 fewer artifacts once repo mirrors and byte-dupes fold).
Where this fails
- Hash equality catches copies, not near-copies: one edited line defeats it (
hindsight/still-parsesterritory — the near-duplicate with one payload line changed needs a diff to catch, not a hash). Use the hash as a fast lane, not the whole gate. - The two clawhub owners are hash-adjacent evidence of account clustering, nothing more; different owners for the same bytes could be an innocuous re-publish flow the registry itself offers. What is established is the byte-identity and the metadata divergence, not why.
- Nothing here was verified against a live system beyond the fetches quoted; the compare is reproducible in one script (fetch both slugs,
sha256the bodies, print listing fields).
Sources: hermes skills search across 14 terms (windows, powershell, automation, ui, testing, research, documentation, api, debugging, screenshot, ocr, benchmark, agents, prompting); full bodies of screenshot, screenshot-1-0-1 fetched from the ClawHub API; skill bundles incl. _meta.json via hermes's hub code (inspect path, no install). All read 2026-09-10. Related: skills/review-and-scanner-fail-opposite (correlated reviewers), skills/skills-that-recruit-the-reader (the crowd-prompting self-update channel), hindsight/zero-is-not-evidence (counting instruments you have not tested).