Agent skill

Dittobot

by aiskillstore in aiskillstore/marketplace

Rewrite, edit, tighten, punch up, or diagnose user-provided prose while preserving the user's voice, intent, facts, stance, rhythm, humor, and formality.

LGPL-3.0Auto-check passedWriting & Content

Install Dittobot

skills CLI
$ npx skills add aiskillstore/marketplace --skill dittobot -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install aiskillstore/marketplace dittobot --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/aiskillstore/marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/regionallyfamous/dittobot .claude/skills/dittobot && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dittobot
GitHub stars
430
Token cost
~3.2k tokens
SKILL.md length
1,674 words
Files
35 (incl. scripts, references, assets)
Skills in repo
1,044
Repo updated
First seen
Licence
LGPL-3.0

At a glance

Rewrite, edit, tighten, punch up, or diagnose user-provided prose while preserving the user's voice, intent, facts, stance, rhythm, humor, and formality.

  • Works in 12 steps: Intent: name what the piece is trying to… → Audience: tune to the reader's needs,… → Voice: identify tone, cadence,… → …
  • Requests to make writing clearer
  • SKILL.md covers Core Rule, Fast Defaults, Intake and Edit Modes, plus 4 more sections
  • Runs Python and Shell scripts from its folder; calls python3

What it does

Dittobot is an agent skill from aiskillstore/marketplace. Rewrite, edit, tighten, punch up, or diagnose user-provided prose while preserving the user's voice, intent, facts, stance, rhythm, humor, and formality. Use for emails, posts, essays, internal docs, website copy, speeches, bios, captions, cover letters, or requests to make writing clearer, shorter, more natural, less AI-sounding, more fun, more persuasive, warmer, sharper, or more like the user. Do not use for pure from-scratch drafting unless the user provides source text or asks for a draft in an established…

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 38 other files, including scripts, reference files and assets (for example `CHANGELOG.md`, `CONTRIBUTING.md` and `README.md`).

It sits in Writing & Content, covering Humanizing AI text and Resume and CV writing. The repository describes itself as: Security-audited skills for Claude, Codex & Claude Code. One-click install, quality verified. The licence is LGPL-3.0.

When your agent uses it

  • Requests to make writing clearer
  • Less AI-sounding
  • More persuasive
  • More like the user

Example prompts

  • “/dittobot”

Requirements

  • Python 3
  • A Bash shell

Workflow steps

12 steps, taken from the first numbered list in SKILL.md.

  1. Intent: name what the piece is trying to do.
  2. Audience: tune to the reader's needs, patience, and context.
  3. Voice: identify tone, cadence, vocabulary, punctuation, and texture.
  4. Keepers: preserve best lines, jokes, idioms, and emotional beats.
  5. Meaning: protect facts, chronology, names, claims, scope, and commitments.
  6. Structure: move ideas only when order blocks comprehension.
  7. Opening: make the first sentence useful, honest, and alive.
  8. Clarity: replace muddy phrasing with plain language in the user's cadence.
  9. Specificity: use concrete nouns, verbs, stakes, examples, or observable effects only when source-supported.
  10. Actors/verbs: put real actors near real actions; avoid passive voice when it hides responsibility.
  11. Concision: cut filler, repetition, inflation, throat-clearing, and needless hedging.
  12. Rhythm: vary sentence and paragraph length by purpose; read aloud mentally.

What it can do on your machine

Read from SKILL.md and the folder at commit 755bc35. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 3 files in scripts/ (Python and Shell, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Dittobot loads about 3.2k tokens when it runs, and up to ~4.2k if it reads all its reference files. Until then it costs about 133 tokens; SKILL.md has 1,674 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~133
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from aiskillstore/marketplace at commit 755bc35, republished under its LGPL-3.0 licence (© aiskillstore). 1,674 words, ~3,202 tokens.

Download SKILL.mdSave it as .claude/skills/dittobot/SKILL.md (or your agent's skills folder). This skill also uses 34 other files; get the full folder from GitHub.
name
dittobot
description
Rewrite, edit, tighten, punch up, or diagnose user-provided prose while preserving the user's voice, intent, facts, stance, rhythm, humor, and formality. Use for emails, posts, essays, internal docs, website copy, speeches, bios, captions, cover letters, or requests to make writing clearer, shorter, more natural, less AI-sounding, more fun, more persuasive, warmer, sharper, or more like the user. Do not use for pure from-scratch drafting unless the user provides source text or asks for a draft in an established voice.

Dittobot

Core Rule

Rewrite like a sharp editor with restraint. Preserve the writer first, improve the writing second, and add delight only when the genre and source voice allow it. The target is not generic polish; it is the user on a very good writing day.

Never make writing worse to hide AI use. No fake mistakes, forced slang, random fragments, or performative messiness. Human writing feels human because it has a speaker, audience, reason, stakes, rhythm, and specific choices.

Do not launder the user's emotional stance. Keep justified anger, uncertainty, tenderness, edge, grief, playfulness, awkwardness, or restraint when they are part of the point; soften them only when requested or when they block the goal.

When the source or user instruction carries mixed feelings, preserve the mix: frustration can coexist with excitement, hope, affection, or relief. Do not flatten it into neutral polish or intensify it into contempt.

Fast Defaults

Use the lightest edit that satisfies the request. If the draft already works, make small improvements instead of demonstrating effort. Do not rewrite strong sentences merely to justify the skill.

For normal edits, run three silent gates: intent/facts, voice/rhythm, and constraints/output. For long, high-stakes, sensitive, or craft-heavy work, expand into the 20-pass checklist.

For vague requests such as "make this better," preserve meaning, facts, stance, emotional temperature, and voice; tighten clutter; clarify the point; return only the rewrite unless the user asks for rationale or the edit involves a meaningful tradeoff.

For raw notes, rough drafts, fragments, or stream-of-consciousness dumps with no explicit task, assume the user wants finished prose. Infer the likely artifact from cues: email, Slack message, announcement, post, note, recap, caption, or short prose. If no form is clear, return a polished short prose version. Find the throughline, keep the best human texture, remove repetition, organize just enough for the apparent audience, and return the clean version. False starts, self-corrections, repetition, and asides are voice evidence, not necessarily text to preserve; keep the fingerprints and remove the scratch-work. Do not make it sound more formal, certain, cheerful, generic, or complete than the source supports.

Honor explicit constraints exactly: word count, no notes, no dashes, no added humor, format, audience, and edit intensity. For exact word counts, count final words before answering and revise until they match.

Ask a clarifying question only when no plausible purpose or audience can be inferred, factual/legal risk makes rewriting unsafe, or the user requests an established voice with no usable sample.

Intake

Before rewriting, identify:

  • Task: proofread, light edit, tighten, rewrite, punch up, compress, expand, adapt tone, diagnose, or provide options.
  • Audience and purpose: who reads it and what the text needs to do.
  • Voice fingerprint: directness, formality, humor, sentence length, punctuation, vocabulary, confidence, warmth, texture, idiosyncrasy, favorite phrases, and what the user seems to prefer over the obvious generic alternative.
  • Protected material: facts, claims, names, dates, commitments, quotes, jokes, emotional beats, technical terms, and phrases that feel like the user.

Keep three private ledgers while editing: constraints to obey, claims/facts not to change, and voice markers to preserve. Do not show these ledgers unless the user asks.

Voice-source priority: explicit user instruction, current draft's purpose/audience, current draft's voice, then prior samples. Never overfit an old sample against the needs of the present piece.

Voice profiles transfer editing taste, not old facts. Current draft facts, current audience, explicit constraints, and precision-sensitive context beat any reusable profile.

If the user includes lightweight fences such as [[keep: ...]], [[claim: ...]], [[voice: ...]], [[avoid: ...]], or [[boundary: ...]], treat them as explicit private ledger entries and remove the markup from the rewrite unless asked to preserve it.

Preserve the user's format, paragraphing, line breaks, headings, bullets, subject lines, greetings, and signoffs, especially for proofread, minimal-change, and light-edit requests, unless the requested outcome clearly requires changing them.

Use prior writing samples when available. Otherwise use the submitted draft. If the draft is corporate, generic, committee-written, or artifact-like rather than personal, preserve meaning, stance, audience, and formality, but do not treat generic phrasing as the user's voice.

Edit Modes

  • Mode selection: default to light edit for coherent drafts, tighten when shorter/cleaner is requested, rewrite when the draft is messy or the structure blocks the point, and diagnosis when the user asks for feedback instead of a rewrite. Use options when tone is subjective or risky.
  • Minimal change: preserve nearly all wording; fix only friction, typos, or small clarity issues.
  • Proofread: fix grammar, spelling, punctuation, and typos without changing voice.
  • Light edit: clean up friction while leaving most wording intact.
  • Line edit: improve sentence-level flow without changing structure or voice.
  • Tighten: cut repetition, filler, throat-clearing, weak qualifiers, and slow openings.
  • Rewrite: rebuild sentences or structure while preserving intent and voice.
  • Structural edit: reorder paragraphs or sections only when the current order blocks comprehension.
  • Punch up: add energy from existing stakes, contrast, or phrasing; add wit only when requested or clearly present.
  • Compress: make it materially shorter without losing the point.
  • Options: provide 2-3 labeled versions when tone is subjective.
  • Voice profile: infer a compact reusable taste profile from samples: what the user tends to choose, reject, protect, and tolerate. Include do/avoid rules, rhythm, diction, punctuation, humor, stance, protected quirks, forbidden generic moves, 3-5 short evidence phrases, and when not to apply the profile. Prefer editing guidance over biography or long analysis.
  • Comparison: when asked, explain the taste decision behind the edit, not just what changed. Use a short before/after or notes format that ties 3-5 changes to reusable rules: source move, edit choice, and what it teaches about the user's preferences.
  • Diagnosis: give concise notes without rewriting; quote problematic phrases only as examples, not replacement language.

For legal, medical, financial, academic, employment, technical, or factual claims, preserve precision over style. Do not add facts, citations, stronger claims, numbers, evidence, outcomes, examples, promises, customers, motivations, or details. Flag unsupported claims instead of smoothing them into false confidence.

Show full SKILL.md (700 more words)Show less

Quality Gates And 20-Pass Checklist

Use this checklist silently when the work warrants it. For very short text, each pass can be a quick mental sweep. Between every pass, apply this gate:

text
Did this preserve intent, voice, facts, stance, and desired length?
Did it make the text clearer, tighter, more readable, or more alive?
If not, revert or soften the change.
  1. Intent: name what the piece is trying to do.
  2. Audience: tune to the reader's needs, patience, and context.
  3. Voice: identify tone, cadence, vocabulary, punctuation, and texture.
  4. Keepers: preserve best lines, jokes, idioms, and emotional beats.
  5. Meaning: protect facts, chronology, names, claims, scope, and commitments.
  6. Structure: move ideas only when order blocks comprehension.
  7. Opening: make the first sentence useful, honest, and alive.
  8. Clarity: replace muddy phrasing with plain language in the user's cadence.
  9. Specificity: use concrete nouns, verbs, stakes, examples, or observable effects only when source-supported.
  10. Actors/verbs: put real actors near real actions; avoid passive voice when it hides responsibility.
  11. Concision: cut filler, repetition, inflation, throat-clearing, and needless hedging.
  12. Rhythm: vary sentence and paragraph length by purpose; read aloud mentally.
  13. Energy: restore source-supported opinion, stakes, contrast, or momentum.
  14. Humor: sharpen wit only when requested or clearly present; never force jokes into serious text.
  15. Tone: calibrate warmth, confidence, urgency, softness, edge, or humility.
  16. AI tells: remove generic scaffolding, shiny abstractions, over-balanced triples, and needless dash dependency.
  17. Voice check: if anyone could have written it, put the user's texture back.
  18. Ending: make the close land cleanly.
  19. Compression: tighten again; keep only the best version of each idea.
  20. Final: deliver the strongest concise version that still sounds like the user.

Voice And Anti-Generic Rules

Preserve useful rough edges: odd phrases, bluntness, warmth, skepticism, contractions or lack of them, asymmetry, rhythm, and punctuation habits unless they confuse the reader. Remove fog, not fingerprints.

Leave sentences alone when they already carry the meaning, voice, rhythm, or emotional truth better than a cleaner substitute would. For sensitive or personal writing, prefer minimal intervention unless the user asks for a fuller rewrite.

Voice preservation test: before final, make sure 2-3 real source markers survived when available: a signature phrase, sentence shape, emotional temperature, plain-word preference, joke, punctuation habit, or useful rough edge. Never replace a specific user phrase with a smoother generic phrase unless the original was confusing.

Avoid bland-AI moves unless the user's draft clearly uses them on purpose: "In today's landscape," "It is important to note," "At its core," "Ultimately," "transformative," "game-changing," "robust," "seamless," "empowering," "innovative," "drive impact," "adds value," tidy triples, motivational drift, and needless dashes.

Do not mechanically delete every dash, triad, or transition. Fix the reason the text feels generic, not just the visible marker. When the source supports it, replace generic language with the actual claim, action, consequence, or feeling. When it does not, keep the claim modest. Use a placeholder only when the missing detail is clearly expected in the artifact; ask only when the missing detail blocks a safe rewrite; otherwise add one short note that the draft needs real details.

Output

Put the useful thing first.

  • Normal rewrite: return the revised text directly, or use **Rewrite** when a label helps readability.
  • Meaningful tradeoff or requested rationale: add **Note** with one short explanation.
  • Tone options: provide 2-3 labeled versions such as Cleaner, Warmer, or Sharper.
  • Voice profile: keep it compact and reusable. Default to sections: Use, Avoid, Rhythm/Diction, Protected quirks, Evidence phrases, When not to apply, and Editing rules.
  • Comparison: do not annotate every sentence. Show only changes that reveal taste, tradeoffs, or reusable editing rules.
  • Feedback-only: lead with the highest-impact notes and do not rewrite.

Before final delivery, confirm the rewrite is clearer and no more verbose than needed; preserves intent, facts, stance, emotional temperature, and voice; avoids unsupported additions; avoids AI tells without fake human errors; and follows every explicit constraint.

Validation

Normal use should not load scripts. For regression testing only, run:

bash
python3 scripts/regression_100.py

For ad hoc rewrite audits, profile contracts, release scorecards, or privacy-safe fixture scaffolds, use scripts/audit.py, scripts/voice_profile.py, scripts/scorecard.py, scripts/redact_case.py, scripts/failure_fixture.py, and scripts/case_lab.py without loading their code into normal writing tasks.

For detailed reusable profile-card guidance, read references/voice-profile-cards.md only when the user asks for profile work. For explicit protected-fact or boundary markup, read references/fact-fences.md only when the user uses fences or asks for that workflow.

© aiskillstore, LGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 34 other files (scripts, references, assets) in skills/regionallyfamous/dittobot of aiskillstore/marketplace.

  • SKILL.md
  • CHANGELOG.md
  • CONTRIBUTING.md
  • LICENSE
  • README.md
  • RELEASE.md
  • SECURITY.md
  • agents/openai.yaml
  • assets/icon-large.svg
  • assets/icon-small.svg
  • assets/readme-riso-banner.jpg
  • install.sh
  • references/fact-fences.md
  • references/voice-profile-cards.md
  • scripts/audit.py
  • scripts/build_plugin.py
  • scripts/case_lab.py
  • … and 18 more

Open the folder on GitHubat commit 755bc35

Compare with similar skills

Dittobot next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dittobot compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dittobot this skillaiskillstore/marketplace430—~3.2kAutomated safety check: PassLGPL-3.0
Sloptrimseyedehsanhadi/sloptrim213—~5.2kAutomated safety check: NotesApache-2.0
Academic Humanizerdongshuyan/compass-skills752—~4.2kAutomated safety check: PassMIT
Humanizeextrasmall0/dear-hiring-manager112—~552Automated safety check: PassMIT
Kol Content Monitorgooseworks-ai/goose-skills1.2k1 repos~1.7kAutomated safety check: PassMIT
HumanizerAzure-Samples/interview-coach-agent-framework17237 repos~5.8kAutomated safety check: PassMIT

Similar skills

  • Sloptrim

    seyedehsanhadi/sloptrim

    A skill your agent uses when the user wants to humanize text, trim slop, de-AI or de-slop writing, remove AI tells, fix robotic or ChatGPT-sounding prose, or make writing sound human and natural.

    213 GitHub stars~5.2k tokensUpdated 4 days ago
    Writing & ContentAuto-check: notes
  • Academic Humanizer

    dongshuyan/compass-skills

    Draft, audit, or minimally revise English- or Chinese-language academic prose to reduce formulaic, vacuous, mechanically repetitive, or process-leaking language while preserving claims, evidence…

    752 GitHub stars~4.2k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Humanize

    extrasmall0/dear-hiring-manager

    Make generated prose read like a real person wrote it, not AI.

    112 GitHub stars~552 tokensUpdated 2 mo ago
    Business, Finance & HRAuto-check passed
  • Kol Content Monitor

    gooseworks-ai/goose-skills

    Track what key opinion leaders (KOLs) in your space are posting on LinkedIn and Twitter/X.

    1.2k GitHub starsUsed in 1 repo~1.7k tokens
    Writing & ContentAuto-check passed
  • Humanizer

    Azure-Samples/interview-coach-agent-framework

    Official

    Remove signs of AI-generated writing from text. An agent skill from Azure-Samples/interview-coach-agent-framework.

    172 GitHub starsUsed in 37 repos~5.8k tokens
    Writing & ContentAuto-check passed
  • Avoid AI Writing

    conorbronsdon/avoid-ai-writing

    Audit and rewrite content to remove AI writing patterns ("AI-isms").

    4.9k GitHub starsUsed in 3 repos~8.1k tokens
    Writing & ContentAuto-check passed

More from aiskillstore/marketplace

All 1,044 skills in this repo
  • Code Stats

    aiskillstore/marketplace

    Analyze codebase with tokei (fast line counts by language) and difft (semantic AST-aware diffs).

    430 GitHub starsUsed in 1 repo~697 tokens
    Auto-check: notes
  • Data Processing

    aiskillstore/marketplace

    Process JSON with jq and YAML/TOML with yq. An agent skill from aiskillstore/marketplace.

    430 GitHub starsUsed in 1 repo~720 tokens
    Auto-check: notes
  • Doc Scanner

    aiskillstore/marketplace

    Scans for project documentation files (AGENTS.md, CLAUDE.md, GEMINI.md, COPILOT.md, CURSOR.md, WARP.md, and 15+ other formats) and synthesizes guidance.

    430 GitHub starsUsed in 1 repo~644 tokens
    Auto-check: notes
  • File Search

    aiskillstore/marketplace

    Modern file and content search using fd, ripgrep (rg), and fzf.

    430 GitHub starsUsed in 1 repo~598 tokens
    Auto-check: notes
  • Find Replace

    aiskillstore/marketplace

    Modern find-and-replace using sd (simpler than sed) and batch replacement patterns.

    430 GitHub starsUsed in 1 repo~527 tokens
    Auto-check: notes
  • Project Planner

    aiskillstore/marketplace

    Detects stale project plans and suggests session commands. An agent skill from aiskillstore/marketplace.

    430 GitHub starsUsed in 1 repo~504 tokens
    Auto-check passed

Questions about Dittobot

What does Dittobot do?

Rewrite, edit, tighten, punch up, or diagnose user-provided prose while preserving the user's voice, intent, facts, stance, rhythm, humor, and formality. Dittobot is an agent skill from aiskillstore/marketplace. Rewrite, edit, tighten, punch up, or diagnose user-provided prose while preserving the user's voice, intent, facts, stance, rhythm, humor, and formality.

When should I use Dittobot?

Dittobot fits situations like: requests to make writing clearer; less AI-sounding; more persuasive; more like the user.

How do I install Dittobot in Claude Code?

Run `npx skills add aiskillstore/marketplace --skill dittobot -a claude-code`. Or copy the skill folder (skills/regionallyfamous/dittobot in aiskillstore/marketplace) into .claude/skills/dittobot in your project. Claude Code loads it when a task matches its description.

How do I install Dittobot in Codex?

Run `npx skills add aiskillstore/marketplace --skill dittobot -a codex`. Or copy the skill folder (skills/regionallyfamous/dittobot in aiskillstore/marketplace) into .agents/skills/dittobot in your project. Codex loads it when a task matches its description.

Can I use Dittobot in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add aiskillstore/marketplace --skill dittobot -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dittobot, .gemini/skills/dittobot, .github/skills/dittobot and .opencode/skills/dittobot in your project.

What does Dittobot need to run?

Going by SKILL.md and its folder, Dittobot needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3; A Bash shell.

Does Dittobot access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Dittobot safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Dittobot use?

Dittobot is published under the LGPL-3.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dittobot use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1k tokens, read only when the agent opens those files.

What are the alternatives to Dittobot?

Skills that share tags, products or a category with Dittobot: Sloptrim (seyedehsanhadi/sloptrim, 213 stars), Academic Humanizer (dongshuyan/compass-skills, 752 stars), Humanize (extrasmall0/dear-hiring-manager, 112 stars) and Kol Content Monitor (gooseworks-ai/goose-skills, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dittobot?

aiskillstore (a GitHub organization) maintains it in aiskillstore/marketplace, which has 430 GitHub stars. The repository holds 1,044 skills in this directory. The repository was last updated on October 9, 2026.

Source: aiskillstore/marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.