ワンクリックで
lint-clean-markdown
Write markdown that passes markdownlint on first attempt — encode the most common rules as muscle memory
メニュー
Write markdown that passes markdownlint on first attempt — encode the most common rules as muscle memory
End-to-end academic paper drafting for CHI, HBR, journals, and conferences with venue-specific templates, drafting workflows, and revision strategies.
Detect, create, and manage the AI-Memory fleet communication channel. Fires on bootstrap, session start (announcements), and feedback writes.
Generate on-brand Alex — ACT Edition SVG banners for documents (READMEs, plans, notes, release artifacts)
Patterns for fiction, narrative structure, character development, dialogue, and storytelling craft.
Convert Word documents (.docx) to clean Markdown with image extraction and pandoc cleanup
Greeting-triggered self-check — recognise greetings, check Edition version against the upstream tag, scan AI-Memory announcements, and report inside the greeting reply
| type | skill |
| lifecycle | stable |
| name | lint-clean-markdown |
| description | Write markdown that passes markdownlint on first attempt — encode the most common rules as muscle memory |
| tier | standard |
| inheritance | inheritable |
| applyTo | **/*.md |
| currency | "2026-05-01T00:00:00.000Z" |
| lastReviewed | "2026-05-01T00:00:00.000Z" |
Eliminate the edit-lint-fix cycle by writing markdown correctly the first time.
.md filesWhen in doubt: add a blank line.
Roughly 90% of markdown lint errors are missing blank lines. Lists, code blocks, and headings all need breathing room.
| Rule | Code | Pattern | Mnemonic |
|---|---|---|---|
| Blank lines around lists | MD032 | \n- item\n- item\n | "Lists breathe" |
| Blank lines around fences | MD031 | \n\``code```\n` | "Code breathes" |
| Blank line before headings | MD022 | text\n\n## Head | "Headers breathe" |
| Use dash for lists | MD004 | - not * or + | "Dash dash dash" |
| No trailing whitespace | MD009 | No spaces at line end | "Clean endings" |
| Hard line break in prose | (no MD code) | End line with \ then newline | "Backslash breaks" |
| Single final newline | MD047 | One \n at EOF | "One newline" |
| Language on fences | MD040 | ```js not ``` | "Name your code" |
| Consistent fence style | MD046 | Use ``` not indent | "Fences only" |
| No bold as heading | MD036 | Use ## not **text** | "Headers are headers" |
| Table separator spacing | MD060 | Space around pipes | "Tables breathe too" |
❌ Wrong: text immediately before/after list
✅ Correct: blank line before first - AND after last -
**Why**:
- Reason one
- Reason two
**Result**: Something
❌ Wrong: text touching the fence markers
✅ Correct: blank line before opening ``` AND after closing ```
❌ Wrong: Some text.\n## Heading
✅ Correct: Some text.\n\n## Heading
The problem: Markdown collapses consecutive lines into one wrapped paragraph. A block of metadata like **Date**:, **Author**:, **Status**: on consecutive lines renders as one run-on sentence unless you force breaks.
The wrong fixes:
text ) — works in most renderers, but lints as MD009 (no trailing whitespace) and is invisible in source review.<br/> tag — works but mixes HTML into prose markdown; flagged as MD033 in many configs.The right fix: end each line with a backslash (\) followed by a newline. This is the CommonMark hard-line-break form. Renders identically to two spaces, but is visible in source review and lints clean.
❌ Wrong (renders as one wrapped paragraph):
**Date**: 2026-05-01
**Author**: Supervisor
**Status**: Analysis
✅ Correct (renders as three lines):
**Date**: 2026-05-01 \
**Author**: Supervisor \
**Status**: Analysis
Note the spacing: one space before the backslash, then the newline. The last line in the block does not need the backslash (no break needed after the final line).
When this rule fires:
**Label**: value lines that should visually be separate but should not have full paragraph spacing between themWhen this rule does NOT fire:
- or 1. instead)<br/> for in-cell line breaks)❌ Wrong: * item or + item
✅ Correct: - item
❌ Wrong: ``` (no language)
✅ Correct: ```javascript or ```text or ```markdown
textWhen showing a template/pattern (not a renderable diagram), use ```text instead of ```mermaid. The Mermaid parser will fail on placeholder text like [DIAGRAM_TYPE].
Every ```mermaid block must declare its diagram type on the first line (flowchart TB, sequenceDiagram, etc.) — otherwise it renders blank.
You cannot nest fenced code blocks in markdown. When documenting code-block rules:
`js`This skill itself demonstrates the solution.
Before writing markdown, plan for:
| ---- | separator row