npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

paperthin

v0.17.4

Published

Low-level agentic design patterns. Turning old engineering wisdom into reflexes your agent reaches for on its own—on any agent.

Readme

Paperthin: Low-level agentic design patterns

Turning old engineering wisdom into reflexes your agent reaches for on its own.

On any agent | Claude Code, Codex, OpenCode, Antigravity, Copilot, Cursor, Grok-Build, Pi, Hermes, OpenClaw, etc.

Quickstart · The Map · The Index · The Problem · The Fixes · Credits

Read in: English · 中文 · हिन्दी · Español · العربية · Português · Русский · 日本語 · Français · Deutsch · 한국어


Quickstart (15 seconds)

  1. Install for every agent you use:
    npx skills@latest add LilMGenius/paperthin --global --agent '*'
  2. Run it from an elevated/admin shell if your OS asks so the skills are symlinked (they auto-update), not copied.
  3. Stay current — run /re0-upgrade whenever you want to update; it also wires a quiet session-start notice for when new skills ship.
  4. Use them — call any skill by name, like /re0; model-invoked ones also fire on their own.

Not sure? Paste that command into whatever agent you're using and just say set this up for me, it'll do the rest.

The Map

How many artifacts, and across how much time?

The Index

depth/

| Skill | What it does | Scope | Invoker | Read-only | |---|---|---|---|---| | ♻️ re0 | Rewrite a drifted artifact into a clean v0, not another patch | one artifact | model | | | 🧭 readchk | Check the model's read of the request; surface only a real surviving fork | one instruction | model | ✔ | | 🏹 aim | Read handed-over data and propose the intent to confirm, instead of asking for it | one data drop | model | ✔ | | 📏 modelchk | Size the cheapest sufficient tier and reasoning effort | one task | model | ✔ | | 😈 hate | Refuse to be nice: the one objection that could kill it, plus the cheapest test | one plan | user | | | 🧠 macrothink | Strip the bait, fan out fresh reads, report divergence first | one direction | user | ✔ | | 🧐 feynman | Press a just-made decision until you can explain it, or the gap is flagged | one decision | user | ✔ | | 🛣️ autobahn | Carve unsafe scope out up front, run the safe rest at full strength, log the descope | one task | model | | | 🔃 reorder | Realign a drifted listing into a logical order under one stated principle; move items only, reword nothing | one listing | user | | | 🧰 detool | Replace incidental stack nouns with the mechanism they mean | one durable artifact | model | | | ✂️ dedash | Remove em-dashes and look-alikes, picking the punctuation each spot needs | your prose | user | | | 🗜️ debloat | Compress a bloated artifact to its load-bearing density; cut words, never a rule | one artifact | user | | | 🚿 shower | Cold-read it with fresh, zero-context eyes: does it stand alone? | one artifact | model | ✔ | | 🔬 factchk | Verify what's asserted against sources both ways: could the absurd be real, the obvious false? | one claim | model | | | 🧪 mandela | Audit for leakage: does outside ground-truth actually enter? | one eval | model | ✔ | | 🥄 sip | After any change, taste it with the repo's own clean-and-true checks | your output | model | | | 🧾 re0-git | Rewrite a finished commit's message so git log alone hands off | one commit | user | | | 🚀 re0-release | Run the shipping and releasing checklist, then tag and publish once confirmed | one release | user | | | 🤝 re0-merge | Review and land a contribution: gate it, keep the author's credit, approve before closing, explain any change | one contribution | user | |

breadth/

| Skill | What it does | Scope | Invoker | Read-only | |---|---|---|---|---| | 🧲 ssotize | Audit scatter, then consolidate to one home and point the rest at it | one fact, many places | model | | | 🧰 re0-upgrade | Upgrade to the full current catalog in one command: retire renamed, add new, all confirmed first | your skill install | user | |

coil/

| Skill | What it does | Scope | Invoker | Read-only | |---|---|---|---|---| | 🗂️ re0-plan | Open a new iteration folder with DESIGN/WORKFLOW/EVIDENCE before re0-loop's first turn | one new cycle | user | | | 🌀 re0-loop | Run the build → QA → re0-memo → re0-work loop so learning compounds, not code | the whole loop | model | | | 🧭 re0-memo | Pull the lessons and anti-patterns from a finished or failed cycle | one finished cycle | model | | | 🧱 re0-work | Start over from v0, keeping only the lessons that earned reuse | one restart | model | | | 🗺️ catchup | Rebuild lost context from live state: what needs them, what changed, what new words mean | one re-entry | model | ✔ | | 🎯 nba | Read the live cycle state and return the single next best action, not a menu | the live cycle | model | ✔ |

mesh/

| Skill | What it does | Scope | Invoker | Read-only | |---|---|---|---|---| | 🔺 prism | Split one artifact across independent lenses; return where they clash and the question that resolves it | one artifact | user | ✔ |

More on invocation: docs/invocation.md

The Problem

Most agent skills are slop.

Point an agent at a goal and it adds — more files, more options, more "helpful" boilerplate. Adding looks like progress, and nothing ever makes it go back and delete.

[!WARNING] Repeat that across a project and you get the familiar AI-generated toolkit: near-duplicate skills, dead settings, a README that says the same thing three times. Plausible, busy, and quietly unmaintainable.

These skills bet the other way — every one of them removes:

  • re0 rewrites a draft into a clean v0 instead of patching it,
  • readchk restates the request and asks only when a real fork survives,
  • aim reads a handed-over data drop and proposes the intent to confirm, instead of asking for it,
  • modelchk sizes the cheapest sufficient capability tier and reasoning effort before the work starts,
  • macrothink fans out fresh reads and reports divergence before convergence reads as proof,
  • feynman presses a just-made decision until you can explain it to a skeptic, or names the gap you can't,
  • prism splits one artifact across independent lenses and returns where they clash, never their average,
  • autobahn carves unsafe scope out up front, so the safe remainder runs at full speed,
  • detool strips incidental stack nouns from portable content, leaving the mechanism they meant,
  • dedash removes even the em-dash tell and its look-alikes, one judged occurrence at a time,
  • debloat compresses a bloated artifact to its load-bearing density, cutting words but never a rule,
  • shower cuts whatever a stranger can't follow,
  • ssotize audits scattered facts, asks approval, then folds them into one home,
  • reorder realigns a drifted listing under one principle, moving items and rewording nothing,
  • sip runs all of it on your own output, automatically,
  • re0-memo / re0-work / re0-loop preserve the lesson, let the wrong build die, and keep the cycle running,
  • catchup / nba reload the human's map from live state, then return the one next move.

[!TIP] The hard part isn't adding features — it's restraint. A pass that finds nothing to improve changes nothing. That restraint is the product.

The Fixes

Each is a well-worn principle, made automatic.

#1 — Artifacts rot

Edit a doc one piece at a time across a session and it bloats: stale deltas, duplicated noise, changelog scars. Patching on top just preserves the rot.

The fix → re0: rewrite the artifact as a clean v0, as if it were the first version.

Prior art: the Boy Scout Rule — "leave it cleaner than you found it" (Robert C. Martin, Clean Code, 2008). re0 goes further: rewrite, don't just tidy.

  • Setup — we asked re0 to refresh these docs once more, but they were already at v0.
  • Result — it found nothing to improve and left every line of prose untouched.
  • So — a tool that does nothing when nothing is wrong never bloats your repo: these skills remove noise, they never add it.

#2 — You can build the wrong request perfectly

A long or bundled instruction has enough surface area for a subtle misread: the agent starts work, stays coherent, and only later proves it optimized the wrong target.

The fix → readchk: restate the instruction internally, cross-check it against available context, proceed silently when the read is resolved, and ask only when one real fork survives.

  • Setup — its first casebook mixed flexible ordering, a concrete file creation, a resolved "that", and a bundled ambiguous update.
  • Result — it surfaced only the real forks and stayed silent on the concrete and context-resolved cases.
  • So — the check catches expensive misreads without turning clear instructions into confirmation theater.

#3 — Sizing the run becomes guesswork

Some work is run with too much horsepower because "stronger" feels safer; some is run too cheaply until the failure costs more than the saved tokens. The same guessing hits the reasoning-effort dial: max it on everything and burn tokens, or skim a task that needed real deliberation. All of it is guessing wearing operational clothing.

The fix → modelchk: from one risk read, recommend two coordinates — the cheapest sufficient capability tier (fast, standard, frontier) and the reasoning effort within it (glance to exhaustive), each on a neutral scale. It advises; it never routes, pins, or names a concrete model or level.

  • Setup — its task cards spanned overpowered review, cheap mechanical work, model-branded input, and release-risk work — and later, per-run reasoning effort that varies by vendor and even by model.
  • Result — it kept neutral tier language (fast/standard/frontier) and added a neutral effort scale that binds to the model's own ladder positions rather than any vendor's level names, named the proof surface separately, and rejected routing authority on both dials.
  • So — sizing the run becomes a bounded two-dial recommendation instead of a vendor claim or a reflexive escalation.

#4 — You can't kill your own plan

You built it, so you defend it. The questions that would break it are exactly the ones you won't ask.

The fix → hate: refuse to be nice to the plan — return the one load-bearing objection that could kill it and the cheapest experiment that would prove it matters. User-invoked: you point it at a plan deliberately.

Prior art: egoless programming (Weinberg, 1971 — the same root shower cites), hostile review, and fail-fast.

  • Setup — every research pass closed with an adversarial critic, and its verdict was always one root cause plus the cheapest test that would settle it, never a checklist.
  • Result — it killed a recombination engine with "one more box drawn, not a sharper tip", and a human-holdout protocol on the numbers alone: n≈24 where 36 was needed, a family-wise error rate near 34%, and a design that cited a principle while implementing its opposite.
  • So — the objection that mattered was always singular and cheap to test — exactly the {root, first nail} that hate is locked to return.

#5 — One framing becomes the whole world

Examples, names, and first plausible answers can trap a session before the plan even looks risky. A single agent may keep improving the inherited frame instead of noticing a different read.

The fix → macrothink: user-invoke a read-only fan-out: strip the session's bait, ask 2 to 5 fresh reads for the underlying problem, and report divergence first. Same-model convergence is reassurance only, never proof.

  • Setup — its founding cases tested bait stripping, convergence-as-reassurance, and constraint completeness.
  • Result — it stayed user-invoked, read-only, capped at 2 to 5 reads, with divergence first and explicit bans on majority vote, averaging, and "verified" wording from same-model convergence.
  • So — plurality is used to expose blind spots, not to manufacture consensus.

#6 — Risk-adjacent work comes back hedged

Point an agent at a task that brushes guardrails — scraping, licensing, privacy, security — and you get the worst of both worlds: the risky sliver triggers refusals and retries, while the safe 90% comes back hedged, diluted, or quietly missing.

The fix → autobahn: carve guardrail-adjacent items out of scope before execution, each with a safe alternative and an archive entry; run the remaining scope at full strength in a fresh subagent that only ever sees the carved prompt, not the risky input; ship a descope ledger so every exclusion is a visible decision, not a silent gap. It removes the ask rather than slipping it past. The autobahn has no speed limit because entry discipline is strict.

Prior art, from this very summer: the US suspended Fable 5 and Mythos 5 over one jailbroken safeguard (Anthropic, 2026), and OpenAI shipped GPT-5.6 safety-stack-first to trusted partners (OpenAI, 2026) — at the frontier, the fast lane stays open only as far as entry discipline holds.

  • Setup — the method was lifted from a live rewrite of a confidential strategy doc that was risk-adjacent on four axes at once: stealth tooling, trademarked names, privacy-adjacent profiling, scraping gray zones.
  • Result — a main loop plus ten subagents ran the frontier model end to end with zero flags, zero refusals, zero fallbacks — and every descoped item's safe alternative turned out to be the better product anyway.
  • So — the main loop carved, clean subagents ran the safe scope, and the carve is why they could floor it.

#7 — Portable docs smuggle their toolchain

A durable artifact says it should work across agents, hosts, and time, but its prose quietly depends on one vendor, model, CLI, path, quota, or UI. Portability dies by nouns.

The fix → detool: classify the text by role first, then replace incidental stack coupling in portable content with the mechanism it meant, while leaving provenance, runbooks, and tool-subject claims concrete.

  • Setup — its founding cases covered durable content, provenance, operational runbooks, and comparative claims about named tools.
  • Result — portable content moved to mechanism language while concrete paths, commands, and named tool subjects stayed when they were evidence or instructions.
  • So — tool nouns are removed only when they are accidental coupling, not when they are the artifact's subject or proof.

#8 — You go blind to your own work

After a long session you're the one person who can't read your own work straight: you know too much, so your brain quietly fills every gap and the holes turn invisible.

The fix → shower: hand a stranger who never saw your session only the artifact, and ask "does this actually make sense?"

Prior art: egoless programming — you can't review your own work objectively; someone else must (Gerald Weinberg, 1971). Here, that someone is a context-free sub-session.

  • Setup — we handed shower its own spec, to a sub-session with zero context, holding only the file.
  • Result — in minutes it found three bugs the author had missed:
    • a step that hinted the answer it should hide,
    • a path that leaked spoiler files,
    • a scope too vague to act on.
  • So — a skill that catches its own bugs can catch yours.

#9 — The same fact ends up everywhere

A timeout value, a decision, a status — copied into a README, a doc, a ticket, and a Slack thread. The copies drift, and now no one knows which is true.

The fix → ssotize: find the scatter, name the canonical source, ask approval for the mutation plan, then consolidate and point the rest at it.

Prior art: DRY — one fact, one authoritative home (Hunt & Thomas, The Pragmatic Programmer, 1999).

  • Setup — a pilot milestone landed in a strategy repo, and its status lived in six files at once: the plan that gated on it, the re0-memo, an eval-co