The editorial contract.
Four files in .devrel/ decide what your output looks like. config.toml is the product wiring; the other three are the writing voice. All four are version-controlled, branchable, reviewable.
Four files in .devrel/ decide what your output looks like. config.toml is the product wiring; the other three are the writing voice. All four are version-controlled, branchable, reviewable.
config.tomlProduct identity, LLM provider + default model, per-agent model overrides, weekly budget cap. Edit this once when you devrel init a repo; revisit when you swap providers or rebalance models.
# .devrel/config.toml [product] name = "Origin" url = "https://useorigin.co" github_repo = "dovzhikova/origin" [llm] provider = "openrouter" # or "anthropic" default_model = "anthropic/claude-sonnet-4.5" # Per-agent overrides. Cheap models for triage, premium for content. [llm.agent_models] kai = "anthropic/claude-sonnet-4.5" pax = "anthropic/claude-sonnet-4.5" sage = "anthropic/claude-haiku-4.5" echo = "anthropic/claude-haiku-4.5" [budget] # Hard cap per weekly run, in USD. Atlas aborts past this. weekly_usd_cap = 8.00
voice.mdSamples of your best published writing. Not the highest-traffic pieces — the ones with the cadence you want to be known for. Kai grounds every draft against these.
# .devrel/voice.md Three to five samples of your best published content. The samples are short — a paragraph each is fine. They are the editorial north star Kai grounds every draft against. Pick samples that have the cadence you want, not the ones with the highest pageviews. Voice is not engagement; it's recognition.
style.mdQuantitative editorial targets: readability grade, sentence length caps, paragraph structure. Plus enforced conventions for headers, lists, code blocks. The readability and structure checks are stages 5–6 of the editorial pipeline.
# .devrel/style.md
## Readability
- Flesch-Kincaid grade level: 9–11
- Average sentence length: < 20 words
- Paragraphs: 3–5 sentences, never more than 6
## Structure
- H2s every 250–400 words, never less
- Bulleted lists only when order doesn't matter; numbered when it does
- Code blocks: comment the non-obvious line, not the loop variable
## Voice
- Active voice; second person ("you", not "the user")
- No filler ("It's worth noting", "In today's world", "Let's dive in")
- Cite specifics — file paths, version numbers, real error messagesslop-blocklist.mdPhrases that must never appear in output. The anti-slop pass (stage 4) scans every draft against this list and force-rewrites any line that hits. Start with the obvious AI tics; add your own pet peeves as you spot them.
# .devrel/slop-blocklist.md dive in delve into unlock the power seamless robust in today's fast-paced world elevate your revolutionize synergy leverage (as a verb) game-changer
.env)Run devrel auth to pick a provider, validate the key with a one-token ping, and write .devrel/.env with chmod 600. Anthropic and OpenRouter both work. OpenRouter ships with free monthly credits, so the practical floor is $0/month.
The .env file is gitignored by default. Rotate via devrel auth --rotate.