skills/role-viewpoint-writing_style/SKILL.md
Writing style guide for Jason Warren. Applies whenever writing or editing substantive prose for Jason — drafting sections, reports, documentation, or rewriting passages.
npx skillsauth add jasonwarrenuk/goblin-mode writing-styleInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill exists because AI-generated prose has recognisable tells, and Jason has identified the specific patterns that bother him most. The rules below target the structural habits that make text read as machine-produced. Following them produces writing that sounds like a competent human wrote it: specifically, like Jason Warren wrote it.
Jason's writing has a particular character. Before applying any rule, internalise what it's doing:
Conviction without performance. He holds views and states them directly. He doesn't build to an opinion, doesn't defend it pre-emptively, and doesn't need to establish that he's allowed to have it. The authority is assumed, not asserted.
Complexity is interesting, not a problem. He doesn't simplify difficult things; he makes them navigable. The reader is assumed capable. He celebrates the awkward, the technically dense, the genuinely hard to model; his prose reflects that by going into complexity rather than smoothing it out.
The specific and the general move together. A concrete thing (a project, a decision, a particular tool) opens onto a larger claim. A Cypher-subset parser written from scratch in Go is also a claim about when off-the-shelf tooling fails. Neither the specific nor the general floats free of the other.
Personal, but structured. The perspective is genuinely his (neurodivergent angles, self-reflection, the theatre director backstory) and the structure is deliberate without being visible. Paragraphs have shape; you shouldn't feel it as scaffolding.
Casual register, British idiom. Not formal, not affected. Conversational in the way that someone who has thought carefully about something is conversational when they explain it. Never American colloquialisms.
Short declarative sentences that make one specific, testable claim. Stop there. Don't add a clause explaining why the claim matters.
Let examples carry the weight. A concrete specific does the work a summarising sentence pretends to do. Name the thing; trust the reader.
The dry close earns itself when the restraint is the point. "And kept going from there." "Know when to stop." One per passage, never a pattern.
Origin and motivation: factual and sequential. Name what happened. The reader draws conclusions. Don't editorialize about what it meant.
Personal claims stay first-person and direct. "I can't build a good tool without understanding the problem it models" rather than "a tool that doesn't understand its problem is X."
State opinions inline. Don't build to them, don't summarise them afterwards, don't soften them with hedges.
Make difficult things navigable, not simple. Assume the reader is capable. Go into the complexity; don't flatten it.
The specific and the general move together. Ground abstract claims in a named concrete thing. Don't let either float.
No Oxford commas.
No em-dashes. Every occurrence is a failure. Replace with a colon, semicolon, comma, or restructure. This is non-negotiable.
No capstone sentences that summarise what the preceding examples already showed. If you find yourself writing "In both cases, X" or "The difference is Y": delete it.
No AI generic framing. Named tells: "is a short walk", "turned out to be shorter than expected", "could be reasoned about", "what the projects share is", "the result is a system that". These are structural habits, not vocabulary; any sentence with the same shape is suspect.
No vague competence claims. "I build things that run" describes the minimum bar. State what's distinctive, not what's assumed.
Only include what you can defend specifically. Hedged preferences ("a strong preference"), generic descriptors ("full-stack developer"), tools you can't justify: cut them. If it can't be said with conviction, it shouldn't be said at all.
Fabricated specifics are worse than vague ones. If you don't know the detail, omit it or ask. Don't invent.
The reason for something must be true and specific to that thing. Not the nearest plausible analogue. Jason built Drift because ADHD makes ongoing manual maintenance harder than building the infrastructure to automate it. That's the real reason, and it's more interesting than any generic justification.
No asserting authority or mimicking professional language. Don't establish credentials; the work does that. Don't write like a CV, a press release, or a cover letter.
No American colloquialisms.
No contrastive couplets. "Not X, but Y" / "less about X, more about Y" / "not just X": these define a thing against what it isn't. State what it is.
No sycophancy, no hedging. Direct answers only.
Jason's instruction for extended copy tasks: "this should involve lots of checking in with me; we're emulating my voice, so you need to check what that means. Page by page, paragraph by paragraph, string by string if necessary."
This means:
Run this before presenting any proposed copy to Jason. Do not show him a first draft.
Only after passing this check should the draft reach Jason.
Key rulings from the About page pass. These carry forward to all subsequent batches.
Accepted patterns (confirmed Jason's voice):
Rejected patterns (confirmed tells):
Rulings that carry forward:
tools
{{ 𝚫𝚫𝚫 }} Rebuild roadmap-system.zip, the distributable snapshot of the roadmap tooling (scripts, HTML template, conventions reference, and every roadmap-touching skill, including this one).
tools
--- name: "Suggest: Task" description: "{{ 𝚫𝚫𝚫 }} Suggest the next logical task — grounded in the roadmap's pre-vetted ready-set when one exists, codebase analysis otherwise" when_to_use: "When you don't know what to work on next and want a grounded recommendation rather than picking arbitrarily." model: haiku effort: low disable-model-invocation: true allowed-tools: ["Read", "Glob", "Grep", "Bash(python3:*)", "Bash(npm:*)", "Bash(bun:*)", "Bash(pnpm:*)", "Bash(deno:*)"] argument-hint: [named
development
{{ 𝛀𝛀𝛀 }} Convert an old simple-style roadmap (single Markdown, four statuses, <a name> anchors, roadmaps.json pointer registry) into the rich phase-array format (roadmaps.json source of truth + PHASE task list + prose overview).
data-ai
{{ ƔƔƔ }} Create a pull request to main — wordy or shiny (with screenshots), ready-for-review or draft