Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when writing or editing committed markdown docs: wrap prose at 80 columns on semantic boundaries and use reference-style links for long URLs.
.claude/skills/markdown-semantic-wrap/SKILL.md| Model | Lift | Δ tokens | Δ turns | Cases | Verified |
|---|---|---|---|---|---|
| gemini-3.5-flashbest | +96% | — | 0% | 24 | 86d ago |
| gemini-3.6-flash | +35% | +242% | 0% | 23 | 53d ago |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | — | — |
| case-08 | ✗→✓ | ▲ Improved | — | — |
| case-02 | ✗→✓ | ▲ Improved | — | — |
| case-22 | ✗→✓ | ▲ Improved | — | — |
| case-16 | ✗→✓ | ▲ Improved | — | — |
Enforces semantic line-wrapping for prose in committed markdown (.md) files: every prose line breaks at or before 80 columns, on a sentence / clause / conjunction / word boundary in that priority, and overflowing URLs become reference-style links. Apply when writing or editing any markdown that will be committed (READMEs, docs, design notes, skill files). The goal is one clean git diff per edited sentence.
a paragraph as a single long line; break it across multiple lines.
break at the FIRST boundary that exists, scanning this order:
. , ! , or ? . Prefer onesentence per line when sentences fit under 80.
, , ; , or : .and , but , or , nor ,yet , so .
Always break at the latest qualifying boundary that still keeps the line ≤ 80, not the earliest.
even if that pushes the line past 80: inline code like_this , link text [text], link URLs (https://…), image syntax , and emphasis spans **bold** / _italic_. Overflow is acceptable; splitting the span is not.
[text](url) would push its line past 80 columns, rewrite it as [text][id] in the prose and add a [id]: url definition on its own line at the end of the current section (after the last paragraph, before the next heading) or at the end of the file. When the same URL appears more than once, define ONE shared [id] and reuse it.
columns is left as [text](url). Do not convert links that fit.
the lead-in prose and the first - or 1. item.
after each heading. Exception: a heading on the file's first line needs no blank line above it.
# Heading / ## Subheading. Never usesetext underlines (Heading then a line of === or ---).
to where the text starts: 2 spaces under - , 3 spaces under 1. .
> prefix), andevery wrapped line keeps its own > prefix.
table rows (each pipe row stays on one line at any width), fenced code blocks, headings, YAML/TOML frontmatter, raw HTML blocks, [id]: url link-definition lines, and image-only lines.
Rule 1 + 2.1 — one long line → one sentence per line (sentence breaks).
markdownBEFORE: Install the plugin with npm. Configure it in your settings file. Restart the editor to activate. AFTER: Install the plugin with npm. Configure it in your settings file. Restart the editor to activate.
Rule 2.2 — long sentence breaks at a clause boundary (after a comma).
markdownBEFORE: When the configuration file is missing, the system falls back to sensible defaults for all settings. AFTER: When the configuration file is missing, the system falls back to sensible defaults for all settings.
Rule 2.3 — no clause boundary fits, so break before a conjunction.
markdownBEFORE: The parser reads the input file and transforms each node into an output token. AFTER: The parser reads the input file and transforms each node into an output token.
Rule 2.4 — no sentence/clause/conjunction, fall back to a word break.
markdownBEFORE: The implementation requires understanding the underlying architecture thoroughly. AFTER: The implementation requires understanding the underlying architecture thoroughly.
Rule 3 — keep a code span intact even past column 80.
markdownBEFORE (split mid-span — wrong): Pass the client-supplied `idempotency_ key` so retries do not double-charge. AFTER (span stays whole; break elsewhere): Pass the client-supplied `idempotency_key` so retries do not double-charge.
Rule 4 — overflowing inline URL → reference-style link.
markdownBEFORE: See the [complete formatting guide](https://google.github.io/styleguide/docguide/style.html) for details. AFTER: See the [complete formatting guide][fmt] for details. [fmt]: https://google.github.io/styleguide/docguide/style.html
Rule 6 — blank line before a list.
markdownBEFORE: The release includes three changes: - streaming responses - a memory-leak fix AFTER: The release includes three changes: - streaming responses - a memory-leak fix
Rule 7 + 8 — heading spacing and ATX form.
markdownBEFORE: Some text. Overview ======== More text. AFTER: Some text. ## Overview More text.
Rule 9 — wrap a long list-item description with aligned continuation.
markdownBEFORE: - **markdown-formatting**: Canonical conventions for diff-friendly documentation generation and review. AFTER: - **markdown-formatting**: Canonical conventions for diff-friendly documentation generation and review.
Rule 10 — blockquote wraps at 78 and keeps the prefix.
markdownBEFORE: > This is a very long blockquote line that exceeds 80 characters when you include the prefix. AFTER: > This is a very long blockquote line that exceeds > 80 characters when you include the prefix.
Rule 11 — a wide table row is NOT wrapped.
markdownAFTER (left on one line at any width): | Plan | Requests/mo | Price | | Enterprise | unlimited | custom |
blank line below it still applies.
leave it on its own line and exceed 80. Atomic spans (Rule 3) win over the 80-column ceiling.
for a link that already stays under 80.
[id] definition, referenced from bothspots; do not define two ids for the same target.
applies to prose only, not to fenced or indented code.
table, then leave every pipe row unwrapped.
THAT item's marker, accounting for its indentation.
or before column 80.
clause boundary is available before column 80. Always prefer the highest-priority boundary that fits.
Always keep the span whole, even if the line runs long.
[text](url).Always convert it to [text][id] plus a trailing [id]: url.
put one blank line before the list.
=== / ---) underlines for headings. Alwaysuse ATX # headings.
rows on one line.
model's default for documentation prose).
[text](https://very/long/url) for a URL that blows past80 columns instead of a reference-style link.
few characters earlier.
after a heading.
code_span or a [link](url) across two lines tosatisfy the 80-column rule.
[id]: url.# headings only.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-23 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.5-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +35 percentage points is the difference between those two pass rates over the 23 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.5-flash | verified | 6/27/2026 | +96% |
Other measured skills in the registry, with their headline benchmark lift.