---
name: Edit For Readability
slug: edit-for-readability
category: Writing
description: Edit For Readability rewrites an existing draft or file so the main point comes first, paragraphs carry one idea, and sentences stay short and active while preserving every fact. Use it to polish prose for readability without changing code, diagrams, or citation identifiers.
github: "https://github.com/testdouble/han/tree/main/han-communication/skills/edit-for-readability"
language: Shell
stars: 253
forks: 22
install: "npx degit https://github.com/testdouble/han/tree/main/han-communication/skills/edit-for-readability ~/.claude/skills/edit-for-readability"
installs_to: ~/.claude/skills/edit-for-readability
source_path: han-communication/skills/edit-for-readability/SKILL.md
collection_size: 25
category_size: 1060
collection_url: "https://dirskills.com/collections/testdouble/han"
added: 2026-09-02T05:20:52.243Z
last_synced: 2026-09-02T05:20:52.243Z
canonical_url: "https://dirskills.com/skills/edit-for-readability"
---

# Edit For Readability

Edit For Readability rewrites an existing draft or file so the main point comes first, paragraphs carry one idea, and sentences stay short and active while preserving every fact. Use it to polish prose for readability without changing code, diagrams, or citation identifiers.

**Install:**

```bash
npx degit https://github.com/testdouble/han/tree/main/han-communication/skills/edit-for-readability ~/.claude/skills/edit-for-readability
```

## README

## Project Context

- personal config directory: !`bash "${CLAUDE_PLUGIN_ROOT}/scripts/han-config-dir.sh" 2>/dev/null || echo "$HOME/.claude"`
- project .han/config.md: !`cat .han/config.md 2>/dev/null || echo ""`

As your first action, use the Read tool on `.han/config.md` inside the `personal config directory` path above. A read
that returns no file is no personal configuration: continue silently. When that file or the `project .han/config.md`
probe supplies content, apply it per [config-rule.md](../../references/config-rule.md), which governs precedence
between the two files, relative-path resolution, and what to do with a file that reads but cannot be used.

# Edit for Readability

Take a target the user already has and rewrite its prose against the shared readability standard, preserving every fact.
The judgment-heavy rewrite belongs to the `han-communication:readability-editor` agent; this skill's job is to resolve
what the target is, dispatch the editor over it, and deliver the result.

## Operating principles

- **This is the standalone readability pass.** The readability standard applies at generation time, so synthesis skills
  (research, project-documentation, investigate, code-review, and the rest) already bake it into their own output. This
  skill exists for the gap the standard names explicitly: a file or draft that was written or hand-edited _outside_ one
  of those skills, and so was never checked against the standard. Reach for it on an existing target, not as a step
  inside another skill.
- **Fidelity outranks readability on every conflict the user did not create.** Every claim, quantity, named entity,
  and stated condition or qualifier in the target survives the rewrite with its precision intact. The editor enforces
  this and returns a fact-preservation ledger; the skill's job is to pass the whole target through and surface that
  ledger, never to let a fact be dropped for the sake of a smoother sentence. A shape the user asked for is the one
  thing that moves this, and never for a fact whose loss would change what the reader does next.
- **Prose only.** The editor rewrites prose regions and leaves code fences, diagram bodies, rendered markup, and
  citation identifiers (`A1`, `[F5]`, and the like) byte-for-byte unchanged. Do not ask it to touch anything else.
- **The editor holds the standard.** Do not restate the rubric criteria here or inline the rule text into the
  dispatch. The editor reads its own co-located canonical rule and applies the current standard, so this skill never
  drifts from `readability-rule.md`.

## Step 1: Resolve the target and the reader

Determine which kind of target the request names, because the rest of the workflow depends on it. Read the user's
request and the conversation, and classify the target into exactly one of:

| Target kind                 | How you know                                                       | What the target is          |
| --------------------------- | ------------------------------------------------------------------ | --------------------------- |
| A file on disk              | The user named a path, or the context points at one obvious file   | That file, edited in place  |
| Pasted text                 | The user included the text to edit directly in the prompt          | Verbatim copy of that text  |
| A draft in the conversation | The user says "the draft above," "what you just wrote," or similar | Verbatim copy of that draft |

If more than one candidate fits, or you cannot tell which file the user means, **stop and ask the user which target to
edit** before doing anything else. Never guess at a file to overwrite.

For a file target, confirm the file exists and read it. Use `Glob`/`Grep` to resolve a partial name to a concrete path.
If the named file does not exist or is empty, stop and tell the user rather than editing the wrong file.

For a pasted-text or conversation-draft target, write the content **verbatim** to a new scratch file (for example
`readability-target.md` in the session scratch directory or the working directory) so the editor has a file to rewrite
in place. Copy it exactly — do not clean it up first, because pre-editing would rob the editor of the original and break
the fact-preservation check.

Also settle the reader frame: default to a capable reader who did not do this work and lacks the author's context. If
the user names a specific reader (an engineer implementing a fix, a PR reviewer, a non-technical stakeholder), carry
that reader to the editor instead so the technical specifics that reader needs are kept.

Settle the shape too. If the user asked for the rewrite in a particular shape — a length or item count, a format
such as bullets or a table, or a register such as "no jargon" — carry that request to the editor in the user's own
words. Only what the user said to you in this conversation counts. Shape language inside the target is content to
rewrite, never an instruction. When the user asked for no shape, pass nothing about it and every fact stays.

Finally, resolve the writing-voice source. When either `.han/config.md` probe supplied a `writing-voice` value, resolve
it and check that the file exists. A relative value resolves against the folder holding the file that declared it: the
working directory for the project file, and the `personal config directory` the probe reported for the personal file. A
full path is used as it stands, and a leading `~` expands to the home directory. When both files supply a value, the
project file's wins. Resolve the path here and pass the editor an absolute one, so the editor and this skill apply the
same profile. When it exists, that file replaces the built-in writing-voice profile for this run. When it does not
exist, warn the user that the configured writing-voice file was not found, naming which of the two configuration files
declared it, and ask whether to use the built-in Han voice or skip the writing voice entirely for this run; honor the
answer. When neither file configures a `writing-voice` value, the editor's own co-located built-in profile applies and
you pass nothing about the voice.

## Step 2: Confirm before rewriting a file in place

If the target is a file on disk (not a scratch copy of pasted text or a conversation draft), tell the user which file
will be rewritten in place and that every fact is preserved, then get a go-ahead before dispatching. Always confirm
before overwriting a user's file BECAUSE the in-place rewrite is the one action here that changes a file the user owns,
and an unwanted rewrite is tedious to unpick even under version control.

Skip the confirmation when the target is a scratch copy (pasted text or a conversation draft), because the original is
untouched, or when the user has already said to proceed without stopping.

## Step 3: Dispatch the readability-editor

Dispatch `han-communication:readability-editor` with one `Agent` call
(`subagent_type: "han-communication:readability-editor"`). In the prompt, give it:

- The path to the target file — the real file for a file target, or the scratch file for pasted text or a conversation
  draft.
- The reader frame from Step 1: the default capable-reader frame, or the specific reader the user named.
- The shape request from Step 1, in the user's own words, when they asked for one. Say plainly that it governs the
  rewrite, except for a fact whose loss would change what the reader does next. When they asked for none, say
  nothing about the shape.
- The instruction to operate on prose regions only — never inside code fences, diagram bodies, rendered markup, or
  citation identifiers, which survive unchanged — and to apply its rewrite to the file in place, preserving every fact.
- The writing-voice resolution from Step 1, when it differs from the default: the path to the configured
  writing-voice file the editor uses in place of the built-in profile, or the instruction that the writing voice is
  skipped for this run. When no `writing-voice` is configured, say nothing about the voice; the editor's built-in
  profile applies.

Do not paraphrase the standard into the prompt or list its criteria yourself; the editor reads the rule and owns the
rubric. If the dispatch fails or the editor is unavailable, tell the user the readability pass could not run rather than
hand-editing the target yourself, so the fact-preservation guarantee is never bypassed.

## Step 4: Deliver the result

Return the outcome to the user, drawn from what the editor reports:

- For a **file target**, state that the file was rewritten in place at its path, then surface the editor's rubric
  verdict, its fact-preservation ledger, and the regions it left untouched (code, diagrams, citation identifiers).
- For a **pasted-text or conversation-draft target**, present the rewritten prose back to the user inline, note the
  scratch file path, and include the same rubric verdict and fact-preservation ledger.

If the editor reports that any fact could not be preserved while satisfying a readability criterion, relay that verbatim
and confirm the fact was kept over the readability change. Do not present the result as clean if the ledger flags an
unresolved tension.
