plugins/writing-tools/skills/writing-for-scannability/SKILL.md
--- name: writing-for-scannability description: Use when structuring prose so readers can skim it - drafting or restructuring READMEs, docs, PR or issue bodies, design docs, RFCs, or any long-form text where a wall of prose hides the structure. Also use when explicitly asked to make something scannable or skimmable, convert prose to a list, surface a buried list, fix a wall of text, or decide whether bullets or prose fit. Strong signal: text with parallel sentence shapes, contrast markers ("that
npx skillsauth add technicalpickles/pickled-claude-plugins plugins/writing-tools/skills/writing-for-scannabilityInstall 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.
Most people scan before they read. The job is to format prose so a scanner gets the gist and a committed reader gets the depth, without writing two versions. This is the structural axis of writing: when to surface a buried list, how to front-load for the eye, and how hard to lean on formatting per medium.
It is a different axis from concision (keeping prose tight) and from voice (keeping it human). Concision will happily leave a list buried inside a sentence; this skill decides when to pull it out. Voice keeps the result from reading like a corporate slide deck.
Core principle: if the prose is doing list work, let it be a list. If the prose is doing argument work, leave it.
Reach for this when:
When NOT to use:
Each signal below means a list is trying to escape the paragraph. The shape to reach for: a one-sentence lead-in, then bullets, each starting with its load-bearing term.
| Signal | What it looks like | |--------|--------------------| | Parallel sentence shapes | "X is A. Y is B." repeated skeleton | | Contrast markers | "that's distinct from", "versus", "whereas" | | Bold term + colon | "Workflow: how it runs. Surface: how it deploys." | | Rule of three | three or more siblings in a row | | Embedded series | "create X, query Y, and delete Z" inside one sentence |
Bullets are lossy. They strip the words that say why items sit next to each other. Keep prose when:
If you bullet a passage and the words but, because, so, counterintuitively fall on the floor, the relationships were the point. Put it back as prose.
Once items are bullets, they must share grammatical shape, or the list reads as broken even when the reader can't say why. Reading the items aloud surfaces the break fast.
For steps where order matters, use a numbered list and start each item with an imperative verb: Stop the server. Edit the config. Restart it.
Eye-tracking shows readers scan in an F: across the top, then down the left margin. So the leftmost word of every bullet, heading, and paragraph is the most-seen word on the page.
Formatting (bold, headers, lists, explicit inverted-pyramid sections) costs the writer time and costs the reader some warmth. Heavily formatted prose reads corporate. Whether it's worth it scales with two things, not with medium alone:
High diversity x high durability = lean in hard. Low x low = dial it down.
| Surface | How hard to lean | Why | |---------|------------------|-----| | Tweets | Universal rules only | One entry mode (scroll); no formatting affordances. Front-load harder, there's no slack. | | Slack / chat | Light | Ephemeral but searched. Front-load the first word ("Blocker:", "FYI:"). Headers feel like a memo. | | PR / inline review comments | Dialed down | Conversational. One clear "blocker because X, suggest Y" beats three bulleted sections. | | GitHub issues | Heavy | Multi-audience: triager wants 5-second triage, assignee wants detail. Descriptive title, TL;DR, sections. | | PR descriptions | Heavy | Reviewer orients before diving into the diff. Problem in one line, approach in a paragraph, then deeper sections. | | READMEs | Heavy | Ten seconds to decide if the repo is relevant. Title, one-line what, install, minimal example, links. | | Design docs / RFCs / ADRs | Highest | Durable, multi-mode, read months apart. Headers carry navigation; TL;DR up top; then prose can have all the connective tissue it needs. |
What's universal (every surface, no dialing): front-load the load-bearing word, don't bury the conclusion, keep list items parallel.
Voice guidance often flags "bold-first bullets" (every bullet **term:** definition) as a canned, AI-generated tell. That's not a contradiction with this skill, it's a boundary:
This skill owns how to build a good list. Voice owns don't let it become a monotonous tic. The sliding scale above is the dial that decides which.
If the prose is doing list work, let it be a list. If it's doing argument work, leave it. Front-load the load-bearing word. Make every bullet parallel. Bold the term, not the definition. Conclude first, explain second.
development
Ignore actually-lsp nudges for an ecosystem in this project. Use when the user wants to silence, dismiss, or ignore the LSP setup nudges for a specific ecosystem (Rust, TypeScript, Ruby), or invokes `/actually-lsp-ignore` directly. Writes `dismissed=true` to `.claude/actually-lsp.json`. Persistent across sessions for this project only.
tools
Diagnose and fix LSP setup for the current project's detected ecosystems (Rust, TypeScript, Ruby). Use when the SessionStart hook nudged about a missing LSP plugin, when the env isn't ready (no `bundle install`, no `cargo build`, missing server binary), when LSP calls are failing, or when the user invokes `/actually-lsp-doctor` directly. Walks the per-ecosystem state machine, reports what's missing, then runs the fix.
tools
--- name: investigating-runs description: Use whenever the user mentions a GitHub Actions / GHA run, even casually — invoke this skill before reaching for raw `gh` commands, because the bundled `gha-snapshot` helper distills `gh run view --log-failed` (a firehose) into a readable block with per-job status, failed-step log tails, and annotations. Specific triggers (any one is enough): a `github.com/.../actions/runs/...` URL; the phrase "GitHub Actions" or "GHA"; the `gh run` CLI; a failing workfl
tools
Use when querying or modifying tasks via the taskwarrior CLI - dense recipes for listing, single-field lookups, multi-task batched lookups, full-text search, and the soft description-length convention. Activates on `task list`, `task add`, `task info`, `task done`, "what's on the backlog", "find a task", or any taskwarrior interaction.