docs-style-tone — Style and Tone Analysis
Workflow#
- Gather the docs — get the list of pages in scope and read their content. If a semantic/graph search tool over the markdown is available (self-hosted
markdown-lsp, or a connected Docsbook workspace), prefer it — it's faster and cheaper than scanning files; otherwise read the files directly withgrep/find. Prioritize Tier 1 pages (quick-start, pricing, auth, install) first. Sample a few pages across different types (tutorial, reference, how-to) to calibrate general style before flagging specifics. - Apply checklist — check voice and person, filler and marketing words, sentence length and structure, headings, and terminology consistency. Apply tone expectations per page type.
- Produce report — return one JSON issue object per finding, sorted by severity.
Guardrails#
- Do not edit any documentation files — surface findings only.
- Ask whether the project has a style guide before starting — analyze against that if yes, use defaults if no.
- Flag passive voice in instructions; passive in reference pages may be intentional — ask the user about the strictness level.
- "Simply", "just", "easily" — flag for review, not removal — context determines whether they're condescending.
- Terminology inconsistency is only a problem when the same concept has multiple names — precise technical synonyms used in appropriate contexts are not flagged.
Inputs#
This skill needs two things, by whatever means are available:
- The list of pages in scope — a docs folder, a sitemap, or a doc graph.
- The content of each page — read on demand.
Acceleration (optional). Graph/semantic search over the docs makes navigation faster and cheaper than scanning files. You can self-host it with
markdown-lsp, or get the same capability in the cloud by connecting a Docsbook workspace. With nothing connected, plain file reads andgrep/findwork fine.
Checklist#
Voice and Person#
- Active voice is the default — "The system returns an error" → "Docsbook returns an error"
- Second person ("you") — not third person ("the user") or first person plural ("we recommend")
- Imperative for instructions — "Click Save" not "You should click Save"
- Present tense — "This returns a JSON object" not "This will return a JSON object"
- First person plural is acceptable for opinions only — "We recommend using X" in explanation pages
Filler and Marketing Words#
Words to flag (not ban — context matters, but flag for review):
| Word/Pattern | Why It's a Problem |
|---|---|
| "simply", "just", "easily" | Condescending when reader is stuck |
| "powerful", "robust", "flexible" | Empty marketing words with no specifics |
| "seamlessly", "effortlessly" | Promises that may not match user experience |
| "of course", "obviously", "naturally" | Excludes readers who don't find it obvious |
| "please note that" | Filler before a note — use a callout instead |
| "in order to" | Replace with "to" |
| "utilize" | Replace with "use" |
| "leverage" | Replace with "use" |
| "make sure to" | Replace with "ensure" or remove |
Sentence Length and Structure#
- Sentences under 25 words on average
- Paragraphs 2-4 sentences — no wall-of-text paragraphs
- One idea per sentence — split compound sentences when they contain two distinct ideas
- Lists for 3+ parallel items — not a run-on sentence with "and" connectors
- Lead with the main clause — avoid burying the key information at the end
Headings#
- Sentence case — "Set up a custom domain" not "Set Up A Custom Domain"
- No click-bait headings — "You won't believe how easy this is" has no place in docs
- Descriptive, not clever — "Configuration options" not "Getting fancy"
- Parallel structure in sibling headings — all nouns, or all verb phrases, not mixed
Terminology Consistency#
- Single term for each concept — pick one and stick to it
- Define terms at first use — especially abbreviations and jargon
- Product names are exact — "Docsbook" not "docsbook", "DocBook", or "docs book"
- No synonyms for the same UI element — if it's called "workspace" in the UI, call it "workspace" everywhere
Tone by Page Type#
| Type | Expected Tone |
|---|---|
| Tutorial | Encouraging, supportive — "You've just created your first workspace!" |
| How-to guide | Efficient, task-focused — no preamble, get to the steps |
| Reference | Neutral, precise — no personality, just facts |
| Explanation | Conversational but authoritative — "Here's why this matters..." |
What to Look For#
| Severity | Problem | Detection |
|---|---|---|
high |
Terminology inconsistency — same concept, different words | grep for "workspace|project|repo" in same context |
high |
Passive voice in instructions | "is clicked", "should be set", "will be returned" |
high |
"simply" / "just" / "easily" in a how-to or tutorial | grep pattern |
medium |
Sentence over 40 words | Word count per sentence |
medium |
Marketing adjectives without specifics | "powerful", "robust", "seamless" |
medium |
Second-person inconsistency — mixed "you" and "the user" | grep pattern |
medium |
"In order to" (verbose) | Replace with "to" |
medium |
Heading not in sentence case | Capital letters in non-proper nouns |
low |
"Please note that" filler | Replace with a callout |
low |
"Utilize" instead of "use" | Direct replacement |
low |
Undefined abbreviation at first use | Scan for abbreviation patterns |
Output Format#
{
"type": "condescending_filler",
"severity": "high",
"skill": "docs-style-tone",
"location": "docs/quick-start.md#line-23",
"found": "'Simply click the Connect button and you're done.' — 'simply' implies the task is trivial, which feels dismissive when a user is stuck.",
"suggestion": "Remove 'Simply': 'Click the Connect button to finish setup.'",
"action": "remove_filler_word",
"constraints": {
"word": "simply"
}
}{
"type": "passive_voice_in_instruction",
"severity": "high",
"skill": "docs-style-tone",
"location": "docs/guides/authentication.md#line-45",
"found": "'The API key should be added to the .env file' — passive voice buries who does the action.",
"suggestion": "Use active imperative: 'Add the API key to your .env file:'",
"action": "rewrite_to_active_voice",
"constraints": {}
}{
"type": "terminology_inconsistency",
"severity": "high",
"skill": "docs-style-tone",
"location": "docs/api/workspaces.md",
"found": "Page uses 'workspace' (lines 1-30) and 'project' (lines 31-60) to refer to the same concept.",
"suggestion": "Use 'workspace' consistently throughout, matching the UI label.",
"action": "normalize_terminology",
"constraints": {
"canonical_term": "workspace",
"replace": ["project"]
}
}{
"type": "marketing_adjective",
"severity": "medium",
"skill": "docs-style-tone",
"location": "docs/concepts/architecture.md#line-8",
"found": "'Docsbook's powerful indexing engine...' — 'powerful' adds no information.",
"suggestion": "Replace with a specific claim: 'Docsbook's indexing engine processes a 500-page repo in under 30 seconds', or remove the adjective entirely.",
"action": "replace_with_specific_claim",
"constraints": {}
}Acceptance Criteria#
- Every page in scope has been scanned — no pages silently skipped.
- All high findings include a specific before/after suggestion.
- Terminology issues list the canonical term and all variants found.
- Output is valid JSON per the format above, one object per finding.
Related Skills#
docs-content-types— tone expectations differ per content typedocs-audience— vocabulary level is a style decisiondocs-accessibility— plain language is also an accessibility concerndocs-analyze— orchestrator