Motivation
User is reading the README on npm and reacting: "a lot of this looks like LLM slop." Reviewer audits (review-the-nit + review-oss-marketing-bro) confirm the diagnosis: over-explained paragraphs, internal-lore references no outsider knows, seven-step pipelines crammed into one sentence, em dashes (CLAUDE.md forbids them), defensive caveats stacked five-deep, and a Testing section that reads like an auditor's report instead of a sales pitch.
User's target: README should be "this rules, here's how you use it" — snappy enough a human can scan it in 30 seconds and want to install. LLM-targeted detail (every overload, every pipeline step, every config knob, every mutation-survivor classification) moves to llms.txt.
Scope (three surfaces)
- README.md — rewrite for human readers; cut slop; promote the differentiator above the fold; fix dead links.
- llms.txt — absorb the technical detail moved out of README. Already exists as the canonical agent-orientation doc; this work expands it.
- Demo prose — apply the same lens to kit intros, section headers, blurbs, and result strings. The cooking kit (most recent) is the biggest surface; geometry and data-storage need a pass too.
User-flagged items (concrete)
- Dead Crouton demo link (
README.md:31, 141). The "Settlers of Crouton" demo route was never built or has been cut; the README links #crouton and #/crouton to nothing. Cited only in source-code comments now. Either ship the demo or remove the links.
- Scaling-functions use case not surfaced. The library is useful for scaling functions (the cooking demo's recipe machine is a live demo of this — slider scales a recipe, every ingredient translates). README and main-demo home page don't call this out as a use case.
- Memoize feature isn't visible in the main-demo home page.
forge's memoize config knob is real and useful; nothing in the demo shows it in action.
- Cooking blurb is bloated (
README.md:35). Three sentences with internal-lore Settlers-of-Crouton reference. User's preferred voice: "teaspoons, teacups, the usual suspects, but also international units, sugar comparisons, and more."
- Testing section is LLM slop (
README.md:199-207). User just wants: "comprehensive unit tests, fuzz via fast-check, mutation via Stryker" with the headline numbers. Per-file mutation breakdown + Stryker-disable-comment policy moves to llms.txt or TESTING.md.
- Custom-dimension prefix convention is verbal diarrhea (
README.md:143). The blockquote is also incoherent: the build-your-own example uses bare COUNT = 'count', then the blockquote tells kit authors not to use bare strings. Reader whiplash. Fix shape:
- Update build-your-own example to use the namespaced form (
'@mycorp/count' or similar)
- Shrink the blockquote to one line that points at the demo
- The convention should be demonstrated IN the demo, not explained in prose
- The seven-step cross-dim pipeline at
README.md:166 is the worst single sentence in the file (nine items in one comma-spliced run). Cut from README; move to llms.txt.
- Em dashes at
README.md:205 and demo/src/components/kits/cooking/sections/comparison-machine/index.tsx:41. CLAUDE.md forbids. Replace with semicolons or rephrase.
Reviewer consensus (review-the-nit + review-oss-marketing-bro)
Move to llms.txt (or TESTING.md / EXTENDING.md)
- Stryker-disable policy and per-file mutation breakdown (
README.md:207)
- Custom-dimension prefix rationale long-form (
README.md:143)
linear(scale) tree-shake foot-gun warning (README.md:156)
(string & {}) brand explanation (README.md:189)
- Cross-dim pipeline ordering (
README.md:166)
- "Where 3.0.0-beta changes a row" prose (
README.md:75); the table footnote is enough
- Validator return contract (
README.md:185)
- 18.5k expect() count and per-file mutation breakdown
Hero is paying the price (oss-marketing-bro)
README.md:27 tagline is "Forge anything measurable. Not just physics." Two issues:
- "Not just physics" is a negation; negations don't sell, they defend
- The differentiator (cross-dimensional, one Coke ≈ N donuts) doesn't appear until the table at
README.md:82 — three screens down on mobile
Proposal: lead with the differentiator. Something shaped like "One Coke ≈ 9.75 sugar cubes. A units library that does cross-dimensional conversion and catches dimension mismatches at compile time." The Coke number is the screenshot-worthy quotable; it belongs in pixel one.
"What this isn't" is momentum death (oss-marketing-bro)
Lines 63-72 are five negations stacked right after the Coke example landed the value. "Not a CLI" addresses a buyer who was never going to install anyway. Reframe positively ("ESM-only library, Node 22+, no peer deps; converts values, does not simulate") or delete and let the Install section carry the scope info.
Sections that are tight, leave alone
Hero badges, Quick start, the vs. convert-units table itself, tree-shaking measurement table, Install, the Settlers-of-Crouton cities-recipe example code (the good version of what the rest should sound like), config-options table, Development, Community, Extending, For agents, License.
Demo prose audit (initial findings)
demo/src/components/kits/cooking/index.tsx:58-65 — 90-word header <p> overstuffed with NIST-factor sidebar and "LARGER/SMALLER" caps that reads like an LLM proving it knows the topic.
demo/src/components/kits/cooking/sections/comparison-machine/index.tsx:70-76 — 60-word two-sentence intro doing the work the per-pill hint fields already do.
Geometry and data-storage kits need the same pass; haven't audited yet.
Acceptance criteria
Branch / commit shape
Branch: feat/documentation-improvements
Commit prefix: feat(docs) (per user's note)
Motivation
User is reading the README on npm and reacting: "a lot of this looks like LLM slop." Reviewer audits (
review-the-nit+review-oss-marketing-bro) confirm the diagnosis: over-explained paragraphs, internal-lore references no outsider knows, seven-step pipelines crammed into one sentence, em dashes (CLAUDE.md forbids them), defensive caveats stacked five-deep, and a Testing section that reads like an auditor's report instead of a sales pitch.User's target: README should be "this rules, here's how you use it" — snappy enough a human can scan it in 30 seconds and want to install. LLM-targeted detail (every overload, every pipeline step, every config knob, every mutation-survivor classification) moves to
llms.txt.Scope (three surfaces)
User-flagged items (concrete)
README.md:31, 141). The "Settlers of Crouton" demo route was never built or has been cut; the README links#croutonand#/croutonto nothing. Cited only in source-code comments now. Either ship the demo or remove the links.forge'smemoizeconfig knob is real and useful; nothing in the demo shows it in action.README.md:35). Three sentences with internal-lore Settlers-of-Crouton reference. User's preferred voice: "teaspoons, teacups, the usual suspects, but also international units, sugar comparisons, and more."README.md:199-207). User just wants: "comprehensive unit tests, fuzz via fast-check, mutation via Stryker" with the headline numbers. Per-file mutation breakdown + Stryker-disable-comment policy moves tollms.txtorTESTING.md.README.md:143). The blockquote is also incoherent: the build-your-own example uses bareCOUNT = 'count', then the blockquote tells kit authors not to use bare strings. Reader whiplash. Fix shape:'@mycorp/count'or similar)README.md:166is the worst single sentence in the file (nine items in one comma-spliced run). Cut from README; move tollms.txt.README.md:205anddemo/src/components/kits/cooking/sections/comparison-machine/index.tsx:41. CLAUDE.md forbids. Replace with semicolons or rephrase.Reviewer consensus (
review-the-nit+review-oss-marketing-bro)Move to llms.txt (or TESTING.md / EXTENDING.md)
README.md:207)README.md:143)linear(scale)tree-shake foot-gun warning (README.md:156)(string & {})brand explanation (README.md:189)README.md:166)README.md:75); the table footnote is enoughREADME.md:185)Hero is paying the price (oss-marketing-bro)
README.md:27tagline is "Forge anything measurable. Not just physics." Two issues:README.md:82— three screens down on mobileProposal: lead with the differentiator. Something shaped like "One Coke ≈ 9.75 sugar cubes. A units library that does cross-dimensional conversion and catches dimension mismatches at compile time." The Coke number is the screenshot-worthy quotable; it belongs in pixel one.
"What this isn't" is momentum death (oss-marketing-bro)
Lines 63-72 are five negations stacked right after the Coke example landed the value. "Not a CLI" addresses a buyer who was never going to install anyway. Reframe positively ("ESM-only library, Node 22+, no peer deps; converts values, does not simulate") or delete and let the Install section carry the scope info.
Sections that are tight, leave alone
Hero badges, Quick start, the
vs. convert-unitstable itself, tree-shaking measurement table, Install, the Settlers-of-Crouton cities-recipe example code (the good version of what the rest should sound like), config-options table, Development, Community, Extending, For agents, License.Demo prose audit (initial findings)
demo/src/components/kits/cooking/index.tsx:58-65— 90-word header<p>overstuffed with NIST-factor sidebar and "LARGER/SMALLER" caps that reads like an LLM proving it knows the topic.demo/src/components/kits/cooking/sections/comparison-machine/index.tsx:70-76— 60-word two-sentence intro doing the work the per-pillhintfields already do.Geometry and data-storage kits need the same pass; haven't audited yet.
Acceptance criteria
README.md,llms.txt, or demo sourceBranch / commit shape
Branch:
feat/documentation-improvementsCommit prefix:
feat(docs)(per user's note)