{"id":51017111,"url":"https://github.com/lilmgenius/paperthin","last_synced_at":"2026-07-06T04:00:24.849Z","repository":{"id":365828951,"uuid":"1273910052","full_name":"LilMGenius/paperthin","owner":"LilMGenius","description":"Plain-Markdown skills that turn old engineering wisdom into reflexes your agent reaches for on its own — on any agent.","archived":false,"fork":false,"pushed_at":"2026-07-04T13:34:05.000Z","size":66,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-04T15:08:27.286Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LilMGenius.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-19T02:03:18.000Z","updated_at":"2026-07-04T13:34:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/LilMGenius/paperthin","commit_stats":null,"previous_names":["lilmgenius/skills","lilmgenius/paperthin"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/LilMGenius/paperthin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LilMGenius%2Fpaperthin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LilMGenius%2Fpaperthin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LilMGenius%2Fpaperthin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LilMGenius%2Fpaperthin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LilMGenius","download_url":"https://codeload.github.com/LilMGenius/paperthin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LilMGenius%2Fpaperthin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35177220,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-21T12:01:27.392Z","updated_at":"2026-07-06T04:00:24.842Z","avatar_url":"https://github.com/LilMGenius.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Paperthin: Low-level agentic design patterns\n\n\u003cimg src=\"https://raw.githubusercontent.com/LilMGenius/paperthin/main/assets/banner.svg\" alt=\"Paperthin — Trust the artifact, not the author.\" width=\"820\"\u003e\n\n**Turning old engineering wisdom into reflexes your agent reaches for on its own.**\n\nOn **any** agent | Claude Code, Codex, OpenCode, Antigravity, Copilot, Cursor, Grok-Build, Pi, Hermes, OpenClaw, etc.\n\n[Quickstart](#quickstart-15-seconds) · [The Map](#the-map) · [The Index](#the-index) · [The Problem](#the-problem) · [The Fixes](#the-fixes) · [Credits](#credits)\n\n\u003c/div\u003e\n\n---\n\n## Quickstart (15 seconds)\n\n1. **Install** for every agent you use:\n   ```bash\n   npx skills@latest add LilMGenius/paperthin --global --agent '*'\n   ```\n2. **Run it elevated** so the skills are symlinked (they auto-update), not copied.\n3. **Use them** — model-invoked, so your agent reaches for them on its own; or call one by name, like `/re0`.\n\n**Not sure?** Paste that command into whatever agent you're using and just say `set this up for me` — it'll do the rest.\n\n## The Map\n\n**How many artifacts, and across how much time?**\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/LilMGenius/paperthin/main/assets/map.svg\" alt=\"The Paperthin map by LilMGenius/paperthin, a two-by-two matrix. Horizontal axis cardinality (one, then many); vertical axis time (now, then across iterations); four regions. Top-left, depth: one artifact, now; is this one thing clean and true? Top-right, breadth: many artifacts, now; is one truth consistent everywhere? Bottom-left, coil: one project, across iterations; did each pass teach the next? Bottom-right, mesh: many minds, across rounds; does the crowd converge on truth?\" width=\"820\"\u003e\n\u003c/div\u003e\n\n## The Index\n\n### `depth/`\n\n| Skill | What it does | Scope | Invoker |\n|---|---|---|---|\n| ♻️ **[re0](./skills/depth/re0/SKILL.md)** | Rewrite a drifted artifact into a clean v0 — not another patch | one artifact | model |\n| 🚿 **[shower](./skills/depth/shower/SKILL.md)** | Cold-read it with fresh, zero-context eyes — does it stand on its own? *(read-only)* | one artifact | model |\n| 🔬 **[factchk](./skills/depth/factchk/SKILL.md)** | Verify a claim against sources, both directions — could the absurd be real, the obvious false? *(read-only → fix)* | one claim | model |\n| 🧪 **[mandela](./skills/depth/mandela/SKILL.md)** | Audit a validation for leakage — does outside ground-truth actually enter? *(read-only)* | one eval | model |\n| 🛣️ **[autobahn](./skills/depth/autobahn/SKILL.md)** | Carve unsafe scope out up front, run the safe rest at full strength, ship a descope ledger | one task | model |\n| 🥄 **[sip](./skills/depth/sip/SKILL.md)** | After any change, tastes it with the repo's own clean-and-true checks | your output | model |\n| 😈 **[hate](./skills/depth/hate/SKILL.md)** | Refuse to be nice to it — the one objection that could kill it + the cheapest test | one plan | user |\n| ✂️ **[dedash](./skills/depth/dedash/SKILL.md)** | Remove em-dashes and their look-alikes, choosing the punctuation each spot needs | your prose | user |\n| 🧾 **[re0-git](./skills/depth/re0-git/SKILL.md)** | Rewrite a finished commit's message into a clean v0 so `git log` alone hands off | one commit | user |\n\n### `breadth/`\n\n| Skill | What it does | Scope | Invoker |\n|---|---|---|---|\n| 🔎 **[ssotchk](./skills/breadth/ssotchk/SKILL.md)** | Find where one fact is scattered or duplicated; name the canonical source *(read-only)* | one fact, many places | model |\n| 🧲 **[ssotize](./skills/breadth/ssotize/SKILL.md)** | Consolidate it into one home and point the rest at it | one fact, many places | model |\n| 🧰 **[ppt-upgrade](./skills/breadth/ppt-upgrade/SKILL.md)** | Reconcile old installed Paperthin skill names after releases | installed skill names | user |\n\n### `coil/`\n\n| Skill | What it does | Scope | Invoker |\n|---|---|---|---|\n| 🧭 **[retro](./skills/coil/retro/SKILL.md)** | Extract the lessons and anti-patterns from a finished or failed cycle | one finished cycle | model |\n| 🧱 **[re0-work](./skills/coil/re0-work/SKILL.md)** | Restart from v0, keeping only the lessons that earned reuse | one restart | model |\n| 🌀 **[flywheel](./skills/coil/flywheel/SKILL.md)** | Run the build → QA → retro → re0-work loop so learning compounds, not code | the whole loop | model |\n| 🎯 **[nba](./skills/coil/nba/SKILL.md)** | Read the live cycle state and return the single next best action, not a menu *(read-only)* | the live cycle | model |\n\n### `mesh/`\n\n*In development — converge independent views into consensus.*\n\n*More on invocation: [docs/invocation.md](./docs/invocation.md)*\n\n## The Problem\n\n**Most agent skills are slop.**\n\nPoint 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.\n\n\u003e [!WARNING]\n\u003e 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.\n\nThese skills bet the other way — **every one of them removes:**\n\n- `re0` rewrites a draft into a clean v0 instead of patching it,\n- `ssotchk` / `ssotize` collapse the same fact scattered across files,\n- `shower` cuts whatever a stranger can't follow,\n- `retro` / `re0-work` preserve the lesson and let the wrong build die,\n- `autobahn` carves unsafe scope out up front, so the safe remainder runs at full speed,\n- `dedash` removes even the em-dash tell and its look-alikes, one judged occurrence at a time,\n- `sip` runs all of it on your own output, automatically.\n\n\u003e [!TIP]\n\u003e The hard part isn't adding features — it's restraint. A pass that finds nothing to improve changes nothing. **That restraint is the product.**\n\n## The Fixes\n\n\u003c!-- Fixes follow the lifecycle of a piece of work, not the skill list: keep it clean (draft → read fresh → reconcile across files → automate → ship), keep it true (a single claim → a validation → the whole plan), then keep the loop learning and the run unblocked. Slot any new fix in by where it acts in that arc. --\u003e\n\n**Each is a well-worn principle, made automatic.**\n\n### #1 — Artifacts rot\nEdit 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.\n\n**The fix → `re0`:** rewrite the artifact as a clean v0, as if it were the first version.\n\n\u003e *Prior art: the Boy Scout Rule — \"leave it cleaner than you found it\" (Robert C. Martin, [Clean Code](https://www.informit.com/articles/article.aspx?p=1235624\u0026seqNum=6), 2008). `re0` goes further: rewrite, don't just tidy.*\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e[PROOF]\u003c/b\u003e\u003c/summary\u003e\n\n- **Setup** — we asked `re0` to refresh these docs once more, but they were already at v0.\n- **Result** — it found nothing to improve and left every line of prose untouched.\n- **So** — a tool that does nothing when nothing is wrong never bloats your repo: these skills remove noise, they never add it.\n\u003c/details\u003e\n\n### #2 — You go blind to your own work\nAfter 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.\n\n**The fix → `shower`:** hand a stranger who never saw your session only the artifact, and ask \"does this actually make sense?\"\n\n\u003e *Prior art: [egoless programming](https://en.wikipedia.org/wiki/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.*\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e[PROOF]\u003c/b\u003e\u003c/summary\u003e\n\n- **Setup** — we handed `shower` its own spec, to a sub-session with zero context, holding only the file.\n- **Result** — in minutes it found three bugs the author had missed:\n  - a step that hinted the answer it should hide,\n  - a path that leaked spoiler files,\n  - a scope too vague to act on.\n- **So** — a skill that catches its own bugs can catch yours.\n\u003c/details\u003e\n\n### #3 — The same fact ends up everywhere\nA 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.\n\n**The fix → `ssotchk` + `ssotize`:** find the scatter, name the canonical source, then consolidate and point the rest at it.\n\n\u003e *Prior art: [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) — one fact, one authoritative home (Hunt \u0026 Thomas, The Pragmatic Programmer, 1999).*\n\n### #4 — \"Remember to verify\" never fires\nA guideline buried in docs won't trigger in a brand-new session — exactly when author bias is highest.\n\n**The fix → `sip`:** the moment you finish something, it runs the clean checks (`shower`, `ssotchk`, `re0`) and, when there's a claim or an eval, the true ones (`factchk`, `mandela`) on your output, automatically.\n\n\u003e *Prior art: [dogfooding](https://en.wikipedia.org/wiki/Eating_your_own_dog_food) — eat your own dog food (Microsoft, 1988). Taste your own cooking before you serve it.*\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e[PROOF]\u003c/b\u003e\u003c/summary\u003e\n\n- **Setup** — right after a large refactor that made every skill self-contained, `sip` auto-fired on the result.\n- **Result** — its fresh-eyes pass caught two things the author could no longer see: a maintenance rule still pointing at skill-to-skill links that the same refactor had just deleted, and a file-editing safety rule present in two skills but missing from a third that also edits files.\n- **So** — the check bites where bias is highest: not on a fresh artifact, but on the drift a big change leaves behind — exactly what the author's own eyes skate over.\n\u003c/details\u003e\n\n### #5 — Your session doesn't travel; the git log does\nYour session is stuck where it ran — this agent, this account, this machine. A teammate or another agent can't load the context your work happened in.\n\n**The fix → `re0-git`:** clean a finished commit's message so `git log` — the one thing every environment shares — carries the handoff, and anyone picks up from the log alone.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e[PROOF]\u003c/b\u003e\u003c/summary\u003e\n\n- **Setup** — `re0-git`'s very first target was its own release commit.\n- **Result** — dogfooding it surfaced two faults, both fixed:\n  - a message padded with trivia,\n  - a spec that preached \"no redundancy\" while repeating itself.\n- **So** — its first cleanup was after itself.\n\u003c/details\u003e\n\n\u003e [!NOTE]\n\u003e The five fixes above keep an artifact **clean**. The next three keep it **true** — the same distrust of the author, turned on the reasoning instead of the prose.\n\n### #6 — Your gut isn't a source\n\"Plausible,\" \"absurd,\" \"novel\" — the least reliable line in any artifact. Human priors fail **both ways**: they exclude the real (desert frogs exist) and normalize the impossible (weightless crates).\n\n**The fix → `factchk`:** verify any reality-grounded claim against external sources, in both directions, before it ships — and flag, don't guess, when you can't reach one.\n\n\u003e *Prior art: [WEIRD bias](https://www.cambridge.org/core/journals/behavioral-and-brain-sciences/article/abs/weirdest-people-in-the-world/BF84F7517D56AFF7B7EB58411A554C17) (Henrich, Heine \u0026 Norenzayan, 2010) and the [naive-physics / impetus error](https://www.science.org/doi/10.1126/science.210.4474.1139) (McCloskey, Caramazza \u0026 Green, 1980) — intuition misjudges reality in both directions.*\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e[PROOF]\u003c/b\u003e\u003c/summary\u003e\n\n- **Setup** — we ran `factchk` on its own shipped citations, in both directions.\n- **Result** — all held, and it still caught two attribution slips to fix: the famous \"what's measured becomes the target\" wording is Strathern (1997), not Goodhart; and \"McCloskey 1980\" is the co-authored *Science* paper, not the 1983 *Scientific American* piece.\n- **So** — a fact-checker that audits its own footnotes will audit yours.\n\u003c/details\u003e\n\n### #7 — The eval confirms itself\nA model, a scorer, and a designer can all agree a result is real while no outside ground-truth ever entered the loop — a whole room confidently remembering something that never independently happened.\n\n**The fix → `mandela`:** audit any eval, metric, or experiment against an 8-pattern leakage taxonomy — does external ground-truth enter independently, or is the verifier the designer?\n\n\u003e *Prior art: [Goodhart's law](https://en.wikipedia.org/wiki/Goodhart%27s_law), [data leakage](https://dl.acm.org/doi/10.1145/2382577.2382579) (Kaufman et al., 2012), and [circular analysis](https://www.nature.com/articles/nn.2303) — \"double dipping\" (Kriegeskorte et al., 2009).*\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e[PROOF]\u003c/b\u003e\u003c/summary\u003e\n\n- **Setup** — the audit was distilled from one research design that kept dying to a single failure mode: a scorer, a model, and a designer agreeing on a result no outside truth ever produced.\n- **Result** — leakage surfaced in eight distinct shapes in that one project — a scorer grading buckets it had drawn, two components \"verifying\" each other in a shared space, a private recipe that made the verifier the designer — and that catalog became the skill's 8-pattern taxonomy.\n- **So** — the checklist isn't theoretical: every pattern in it already drew blood once.\n\u003c/details\u003e\n\n### #8 — You can't kill your own plan\nYou built it, so you defend it. The questions that would break it are exactly the ones you won't ask.\n\n**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.\n\n\u003e *Prior art: [egoless programming](https://en.wikipedia.org/wiki/Egoless_programming) (Weinberg, 1971 — the same root `shower` cites), hostile review, and fail-fast.*\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e[PROOF]\u003c/b\u003e\u003c/summary\u003e\n\n- **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.\n- **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.\n- **So** — the objection that mattered was always singular and cheap to test — exactly the `{root, first nail}` that `hate` is locked to return.\n\u003c/details\u003e\n\n### #9 — A running build can still be the wrong product\nLong agentic cycles produce many working parts — panels, routes, tests, screenshots — that prove activity more than value, and the sunk cost tempts you to carry the architecture forward. Then between passes the next move blurs into a dozen live threads at once, and too many options is its own paralysis.\n\n**The fix → `retro` + `re0-work` + `flywheel` + `nba`:** extract the lesson, anti-pattern, and next gate; restart from a clean v0 when the foundation is wrong; run the build → QA → retro → re0-work loop; and when the thread is lost, read the state and return the single next best action. Keep only what earned reuse.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e[PROOF]\u003c/b\u003e\u003c/summary\u003e\n\n- **Setup** — a game-engine demo reached a full-stack, runnable state: API routes, a canvas runtime, a leaderboard, arcade pages, remix and telemetry panels, tests, screenshots.\n- **Result** — and it was still the wrong product — the generated games were mock, one-screen, with no durable replay layer — while every pass ended in \"what now?\" against a pile of unmet gates and parked threads.\n- **So** — running and shipping-shaped is not done; the cycle needs a skill to name the missing gate and one to return the single next move.\n\u003c/details\u003e\n\n### #10 — Risk-adjacent work comes back hedged\nPoint 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.\n\n**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.\n\n\u003e *Prior art, from this very summer: the US [suspended Fable 5 and Mythos 5](https://www.anthropic.com/news/fable-mythos-access) over one jailbryoken safeguard (Anthropic, 2026), and OpenAI shipped [GPT-5.6](https://openai.com/index/previewing-gpt-5-6-sol/) safety-stack-first to trusted partners (OpenAI, 2026) — at the frontier, the fast lane stays open only as far as entry discipline holds.*\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e[PROOF]\u003c/b\u003e\u003c/summary\u003e\n\n- **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.\n- **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.\n- **So** — the main loop carved, clean subagents ran the safe scope, and the carve is why they could floor it.\n\u003c/details\u003e\n\n## Credits\n\n- **Built on** [mattpocock/skills](https://github.com/mattpocock/skills) (MIT) — its architecture and philosophy.\n- **Not a fork** — these are [LilMGenius](https://github.com/LilMGenius)'s own, non-overlapping workflows.\n- **Vendored verbatim** — a few shared building blocks, kept as-is with per-source attribution in [NOTICE](./NOTICE).\n- **Authoring guide** — conventions and philosophy live in [CLAUDE.md](./CLAUDE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flilmgenius%2Fpaperthin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flilmgenius%2Fpaperthin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flilmgenius%2Fpaperthin/lists"}