The catalog
A guide to read first
Every project gets a writing guide, generated from the config, with where an entry goes and the guidelines no rule can check.
prosebook keeps the copy in one typed catalog and holds every string to your writing rules, with a lint, a judge, and a CLI an agent can drive.
npx prosebook lintRun the command in any codebase. Nothing is installed or set up, and no file is written.
Edit the text. The lint runs as you type, with the rules of a strict project.
The catalog
The app
t('sync.about')Unlock seamless, powerful sync across all your devices!
banned-word"unlock" claims an improvement without naming itbanned-word"seamless" promises a feeling rather than saying what happensbanned-word"powerful" is marketing: say what it doesAgents write most copy now. prosebook gives an agent a guide to read, a CLI to drive, and checks for the habits that give generated text away.
Every project gets a writing guide, generated from the config, with where an entry goes and the guidelines no rule can check.
Finding, linting, extracting and renaming all run from a shell, and every problem states the fix.
Built-in guidelines name the habits of generated copy, such as instructions on a button or a sentence that leans on what only the writer saw.
A decision model holds each entry to the guidelines no rule can check. Only changed entries are asked again, and a language model can suggest the rewrite.
A preset gives the copy a tone. The tone goes into the writing guide, the translation prompt and the judge's notes, with the lint rules that fit.
prosebook.config.ts
Plain and neutral, for services anyone may have to use: government, health, banking, insurance.
WRITING.md
state on errorYour application was not sent. Check your internet connection, then send the application again.state on emptyYou have no applications. Start one to apply for a permit.state on toastApplication sentprosebook.config.ts
Calm, exact and brief, for tools people use at work all day.
WRITING.md
state on errorThe report could not be exported: an export holds 10,000 rows at most. Choose a shorter date range.state on emptyNo invoices match the filters. Clear a filter to see more.state on toastInvoice sentprosebook.config.ts
Warm and direct, for apps people choose to use.
WRITING.md
state on errorWe couldn't save your list. Check your connection, then try again.state on emptyYou haven't saved any recipes yet. Tap the heart on a recipe to add the recipe here.state on toastRecipe savedprosebook.config.ts
Terse and exact, for developers and operators.
WRITING.md
state on errorBuild failed: npm run build exited with code 1. Open the build log for the error.state on emptyNo API keys. Create one to call the API from a server.state on toastKey copiedprosebook.config.ts
Light and personable, for products people use for fun: games, hobbies, lifestyle.
WRITING.md
state on errorWe couldn't load your shelf. Check your connection, then try again.state on emptyNothing on your shelf yet. Add a book to break the silence.state on toastShelved!The words live in YAML, each with the context a translator needs, and the code holds only keys.
A misspelled key or a missing argument is a type error, and completing a key shows the text behind the key.
Change a source text, and each translation made from the old words is marked stale.
In dev, hold Alt to see the key behind each string. Alt-click a string to rewrite the entry in place.
This page runs the inspector too. Hold Alt over any text.
Hardcoded JSX text moves into the catalog, a sentence at a time.
The README and the guides are held to the same rules and guidelines.
One catalog generates Rust, Swift and Kotlin, and the string resources of Android and Apple.
No parser ships, and a build keeps only the messages the code reads.
The copy a pull request changes is posted as a comment, word by word.
Accented, padded text shows the strings the catalog missed.
Three commands add prosebook to a project, write a first entry, and generate the typed modules.
npm install prosebook
npx prosebook init
npx prosebook generate