{"slug": "show-hn-whetstone-20-claude-code-skills-each-distilled-from-one-real-failure", "title": "Show HN: Whetstone – 20 Claude Code skills, each distilled from one real failure", "summary": "Whetstone, a new open-source project by developer Akbar Sha, releases 20 Claude Code skills, each distilled from one real failure in AI coding agent work. The skills are short, self-contained rule sets with pre-flight checklists, grouped into 'Verify & prove' and 'Plan & design' categories, available on GitHub. The project aims to help AI coding agents and humans apply lessons from concrete failures without original context.", "body_md": "# Every skill\n\nhere is a *scar*.\n\nAgent skills honed on real work. Each one is a short, self-contained rule set\ndistilled from **one concrete failure** — written so an AI coding agent\n(or a human) can apply the lesson without the original context.\n\n## Not general advice. A scar.\n\n### It happened.\n\nEvery skill names the sanitized case it was distilled from — a check that passed against a stand-in, a merge that dropped a field, a green test that could never fail. No hypotheticals.\n\n### It generalizes.\n\nNo project or company detail survives. The lesson is stripped to its mechanism so it transfers to your codebase, your stack, your next incident.\n\n### It has an edge.\n\nEach ends in a pre-flight checklist that fails loudly when a box is unchecked — a gate on \"done,\" not a suggestion you can wave through.\n\nIf it reads like a blog post, it doesn't belong. If it reads like a checklist a tired engineer would thank you for at3am, it does.\n\n## Twenty edges,\n\ngrouped by grind.\n\nEach links to its `SKILL.md`\n\n— the full rule set, the sanitized case, and the pre-flight check.\n\n### Verify & prove\n\n06 skills[verify-through-the-real-path ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/verify-through-the-real-path)\n\n#### Verify Through the Real Path\n\nBefore claiming something works, is done, safe, or fast — verify through the actual trigger, real data, and representative conditions, not a stand-in.\n\n[prove-the-test-can-fail ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/prove-the-test-can-fail)\n\n#### Prove the Test Can Fail\n\nAfter writing a test, or before trusting a green one — make it fail on purpose once, and confirm new branches are reachable by the mocks.\n\n[measure-the-delta-not-the-absolute ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/measure-the-delta-not-the-absolute)\n\n#### Measure the Delta, Not the Absolute\n\nJudging whether your change is clean on a red or noisy baseline — prove it by stash-and-compare, not by which files appear in the failure list.\n\n[test-fixture-realism ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/test-fixture-realism)\n\n#### Test-Fixture Realism\n\nWriting tests against a shared store or fabricated fixtures — make fixtures mirror data reality and assertions unable to pass trivially.\n\n[know-your-aggregate-command-scope ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/know-your-aggregate-command-scope)\n\n#### Know Your Aggregate Command's Scope\n\nBefore citing a test / lint / type-check / build script as proof — confirm what it actually runs, how it forwards args, and whether it caches.\n\n[running-long-background-jobs ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/running-long-background-jobs)\n\n#### Running Long Background Jobs\n\nLaunching or verifying a long-running / detached job, or reconciling a batch against a corpus other processes also write to.\n\n### Plan & design\n\n06 skills[plan-cross-encoding-review ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/plan-cross-encoding-review)\n\n#### Plan Cross-Encoding Review\n\nReviewing a plan or spec — catch the bug where one intent is encoded twice and the copies quietly disagree.\n\n[confirm-the-premise-first ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/confirm-the-premise-first)\n\n#### Confirm the Premise First\n\nDesigning when a choice depends on a technical property — state the ground truth (local vs remote, reversible vs not) before asking downstream questions.\n\n[audit-before-you-build ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/audit-before-you-build)\n\n#### Audit Before You Build\n\nStarting from a ticket, checklist, or spec — grep for what already exists first; trackers record conversations, not deliverables.\n\n[inject-ambient-inputs ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/inject-ambient-inputs)\n\n#### Inject Ambient Inputs\n\nWriting logic that reads the clock, randomness, env, or handles — pass them in as parameters so the pure core tests with no mocking machinery.\n\n[consistency-is-local-first ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/consistency-is-local-first)\n\n#### Consistency Is Local First\n\nAdding code to an existing module — match the nearest sibling's pattern; a repo-wide convention is the default only when the module has none.\n\n[validate-the-users-proposed-mechanism ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/validate-the-users-proposed-mechanism)\n\n#### Validate the User's Proposed Mechanism\n\nA user names a platform, tool, or library — treat it as a proposed mechanism; grep the artifact for disqualifiers before agreeing.\n\n### Change safely\n\n04 skills[grep-the-blast-radius ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/grep-the-blast-radius)\n\n#### Grep the Blast Radius\n\nChanging a shared contract (flag, column, type, endpoint) — the retired name is your consumer index; grep the whole workspace and run cross-boundary suites.\n\n[diff-each-side-against-merge-base ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/diff-each-side-against-merge-base)\n\n#### Diff Each Side Against the Merge Base\n\nResolving a merge or rebase conflict — markers show where git gave up, not the full delta; auto-merge silently drops fields.\n\n[verify-absence-claims ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/verify-absence-claims)\n\n#### Verify Absence Claims\n\nActing on a \"none exists / not found\" claim, especially from delegated research — re-grep it; absence is only as good as the search pattern.\n\n[negative-invariant-testing ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/negative-invariant-testing)\n\n#### Negative-Invariant Testing\n\nProtecting a \"never does X\" constraint — a behavioural test can't see an unused capability; assert structurally on the mechanism's existence.\n\n### Diagnose & review\n\n03 skills[read-the-real-failing-call ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/read-the-real-failing-call)\n\n#### Read the Real Failing Call\n\nHardening against a failure mode — instrument the real failing call before and after, because a plausible hypothesis is not a diagnosis.\n\n[manufacture-review-independence ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/manufacture-review-independence)\n\n#### Manufacture Review Independence\n\nReviewing your own work (author == reviewer) — replace lost independence with scoped parallel passes and adversarial re-reads of the source.\n\n[findings-list-is-not-a-todo-list ↗\n](https://github.com/iamakbarsha1/whetstone/tree/main/skills/findings-list-is-not-a-todo-list)\n\n#### A Findings List Is Not a To-Do List\n\nActing on a review or audit list — re-read each item's disposition and bucket them; some are marked no-fix, some need a human decision.\n\n## Same shape,\n\nevery time.\n\nOne folder, one `SKILL.md`\n\n. Plain Markdown, so any agent that can load a system prompt can use it — the plugin auto-discovery is the only Claude Code-specific part.\n\n-\nfrontmatter\n#### name + description\n\nThe description carries the trigger phrases, so a skill-aware agent surfaces the right skill when the situation matches.\n\n-\nthe rule\n#### The core rule\n\nOne paragraph. The whole lesson, stated once, before any elaboration.\n\n-\nthe cases\n#### Checks\n\nEach rule paired with the sanitized real case it came from — the scar that earned it.\n\n-\nthe gate\n#### Pre-flight check\n\nThe checklist that gates \"done\" and fails loudly when a box is unchecked.\n\n## Install\n\nTwo ways in. The plugin gives you auto-discovery; the manual copy is just folders.\n\n### Claude Code plugin\n\nAdd the marketplace, then install the plugin — all 20 skills come with it. Run both inside Claude Code.\n\n### Manual copy\n\nEach skill is a self-contained folder in the Claude Code skill layout. Copy one, or all of them.", "url": "https://wpnews.pro/news/show-hn-whetstone-20-claude-code-skills-each-distilled-from-one-real-failure", "canonical_source": "https://whetstone.akbarsha.dev/", "published_at": "2026-08-09 20:07:58+00:00", "updated_at": "2026-08-09 20:35:09.452671+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools"], "entities": ["Whetstone", "Claude Code", "Akbar Sha", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/show-hn-whetstone-20-claude-code-skills-each-distilled-from-one-real-failure", "markdown": "https://wpnews.pro/news/show-hn-whetstone-20-claude-code-skills-each-distilled-from-one-real-failure.md", "text": "https://wpnews.pro/news/show-hn-whetstone-20-claude-code-skills-each-distilled-from-one-real-failure.txt", "jsonld": "https://wpnews.pro/news/show-hn-whetstone-20-claude-code-skills-each-distilled-from-one-real-failure.jsonld"}}