You pushed. The listings still say last week. Sync them.

One install chains two skills: Upstream-Check fetches every clone and returns a verdict per repo — fast-forward-only pushes, screened for secrets — plus a drift report measuring each published listing against the ground truth of repos that actually ship a SKILL.md. Wordsmith then writes the corrected descriptions, topics and README rows. Two failures, one pass: work that never left the machine, and numbers that quietly disagreed.

7 verdicts 1 secret screen 0 forced pushes 2-3 options per drift

for coding agents · free, open, MIT

install

Copy one line. Audit the drift, then rewrite what moved.

The install line from the repo README. The chain needs upstream-check and wordsmith; the audit half ships its own behavior tests, the polish half writes the fixes.

npx skills add arm-pz/upstream-polish --skill upstream-polish

the workflow

Verdicts first. Copy second. Nothing forced.

Phase one fetches every clone in the root, classifies each repo, and — only with --push and only after a secret screen — fast-forwards the clean ones. The drift register then compares every published surface against repos shipping a SKILL.md, and Wordsmith rewrites what disagreed.

Push audit 7 verdicts

push-ready, level, behind, diverged, no-upstream, no-remote, unreadable — each with a defined action.

  • read-only without --push
  • fast-forward only
  • credential-shaped lines block a push
  • diverged is explained, never touched

Drift report vs ground truth

Site index, homepage, marketplace manifest and READMEs measured against every owned repo that ships a SKILL.md.

  • absent listings named
  • phantom entries checked
  • both site indexes compared
  • offline means inconclusive

Polished fixes 2-3 each

Wordsmith rewrites drifted descriptions, topics and README rows so every surface tells the same story as the repos.

  • one line per fix
  • numbers from the same run
  • handover kit for listings
  • boundary prose stays with tune-skill

Outside its boundary 2 siblings

The verdict engine itself is upstream-check; making a fresh repo discoverable at all is findable. This chain runs when state and listings disagree after work exists. It does not commit loose work to make a number look tidy.

  • no force-push ever
  • no commits of other people's WIP

ground rules

What it refuses to do.

Read before inferring

git status compares against a remote-tracking ref nobody refreshed; it lies about “up to date” until something is fetched. Every verdict comes from a fetch, or is labelled possibly stale.

Unreadable is INCONCLUSIVE

A failed fetch or an unparseable listing is reported as inconclusive — never counted as an empty one. A silent zero is how drift gets blessed.

A dirty tree is context, not a blocker

Pushes send commits, so uncommitted files stay local and are named as such. Nobody's loose work gets committed to make an audit pass.

Repos and listings, telling the same story again.

Free, open, and every fix traces back to a fetch or a counted listing.

Install upstream-polish Read the source