Skip to content

documentation improvements #33

Description

@the-simian

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)

  1. README.md — rewrite for human readers; cut slop; promote the differentiator above the fold; fix dead links.
  2. llms.txt — absorb the technical detail moved out of README. Already exists as the canonical agent-orientation doc; this work expands it.
  3. 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)

  1. 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.
  2. 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.
  3. 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.
  4. 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."
  5. 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.
  6. 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
  7. 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.
  8. 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

  • README rewrites: cooking blurb, Testing section, hero, "What this isn't", custom-dimension prefix note, dead Crouton links removed
  • llms.txt absorbs the technical detail listed above
  • No em dashes anywhere in README.md, llms.txt, or demo source
  • Build-your-own example demonstrates the namespaced-dimension convention rather than explaining it in prose
  • Demo: cooking kit intro + comparator intro tightened; geometry + data-storage prose audited
  • Main demo surfaces scaling-functions use case + memoize feature
  • No internal-lore references (Settlers-of-Crouton, etc.) in user-facing prose

Branch / commit shape

Branch: feat/documentation-improvements
Commit prefix: feat(docs) (per user's note)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions