Markdown Authoring Skill
This skill ensures markdown documents follow best practices for syntax, structure, accessibility, and content quality.
Markdown Flavors
This project follows CommonMark with GitHub Flavored Markdown (GFM) extensions:
| Feature | CommonMark | GFM Extension |
|---|---|---|
| Headings | ✓ | |
| Emphasis | ✓ | |
| Links | ✓ | Autolinks |
| Images | ✓ | |
| Code blocks | ✓ | Syntax highlighting |
| Blockquotes | ✓ | |
| Lists | ✓ | Task lists |
| Tables | ✓ | |
| Strikethrough | ✓ |
Document Structure
Single H1 Rule
Every document should have exactly one H1 heading as the title:
# Document Title Content begins here... ## First Section ## Second Section
Heading Hierarchy
Follow logical heading levels - never skip levels:
# Title (H1) ## Major Section (H2) ### Subsection (H3) #### Detail (H4) ## Another Major Section (H2)
Avoid:
# Title ### Skipped H2! <!-- BAD: Jumped from H1 to H3 -->
Document Template
# Document Title Brief description or introduction paragraph. ## Table of Contents - [Section One](#section-one) - [Section Two](#section-two) - [Section Three](#section-three) ## Section One Content here. ## Section Two Content here. ## Section Three Content here. ## Related - [Link to related doc](./related.md)
YAML Frontmatter
Basic Frontmatter
Add metadata at the top of documents:
--- title: Document Title description: Brief description for SEO and previews author: Author Name date: 2024-01-15 tags: - documentation - guide --- # Document Title Content begins after frontmatter.
Common Frontmatter Fields
| Field | Purpose | Example |
|---|---|---|
title | Document title | "Getting Started Guide" |
description | SEO/preview text | "Learn how to..." |
author | Content author | "Jane Doe" |
date | Publication date | 2024-01-15 |
updated | Last modified | 2024-03-20 |
tags | Categorization | [guide, tutorial] |
draft | Publication status | true or false |
order | Sort position | 1, 2, 3 |
Blog Post Frontmatter
--- title: How to Build Web Components description: A comprehensive guide to creating custom elements author: Jane Doe date: 2024-01-15 tags: - javascript - web-components - tutorial image: /images/blog/web-components.jpg ---
Documentation Frontmatter
--- title: API Reference description: Complete API documentation sidebar_position: 3 ---
Text Formatting
Emphasis
*italic* or _italic_ **bold** or __bold__ ***bold italic*** or ___bold italic___ ~~strikethrough~~
Prefer asterisks (*) over underscores (_) for consistency.
Inline Code
Use backticks for code, commands, filenames, and technical terms:
Run `npm install` to install dependencies. Edit the `package.json` file. The `useState` hook manages state.
Links
Inline Links
[Link text](https://example.com) [Link with title](https://example.com "Title text")
Reference Links
For repeated URLs or cleaner text:
Read the [documentation][docs] for more details. See the [API reference][api] for endpoints. [docs]: https://example.com/docs [api]: https://example.com/api
Internal Links
Use relative paths for internal links:
See [Getting Started](./getting-started.md) Read the [API docs](../api/reference.md) Jump to [Installation](#installation)
Anchor Links
Link to headings using lowercase, hyphenated IDs:
## Installation Steps ... See [Installation Steps](#installation-steps) above.
Accessible Link Text
Use descriptive link text:
<!-- BAD --> [Click here](./guide.md) for the guide. For more info, [read this](./docs.md). <!-- GOOD --> Read the [installation guide](./guide.md). See the [API documentation](./docs.md) for details.
Images
Basic Syntax

Images with Titles

Reference Images
![Application logo][logo] [logo]: ./images/logo.png "Application Logo"
Alt Text Guidelines
Write meaningful alt text:
<!-- BAD -->    <!-- GOOD -->  
When to Use Empty Alt
For decorative images only:

Code Blocks
Fenced Code Blocks
Always specify the language for syntax highlighting:
```javascript
function greet(name) {
return `Hello, ${name}!`;
}
```
Common Language Identifiers
| Language | Identifier |
|---|---|
| JavaScript | javascript or js |
| TypeScript | typescript or ts |
| HTML | html |
| CSS | css |
| JSON | json |
| YAML | yaml |
| Bash/Shell | bash or shell |
| Python | python or py |
| Markdown | markdown or md |
| Plain text | text or plaintext |
Code Block with Filename
Use a comment or heading to indicate the file:
**`src/utils.js`**
```javascript
export function formatDate(date) {
return date.toISOString();
}
```
Diff Syntax
Show changes with diff highlighting:
```diff - const old = "value"; + const updated = "new value"; ```
Lists
Unordered Lists
Use hyphens consistently:
- First item - Second item - Third item
Ordered Lists
1. First step 2. Second step 3. Third step
Nested Lists
Indent with 2 or 4 spaces (be consistent):
- Parent item
- Child item
- Another child
- Grandchild
- Another parent
Task Lists (GFM)
- [x] Completed task - [ ] Incomplete task - [ ] Another todo
List Content
For multi-paragraph list items:
1. First step Additional details about the first step. Can span multiple lines. 2. Second step More information here.
Tables
Basic Tables
| Header 1 | Header 2 | Header 3 | |----------|----------|----------| | Cell 1 | Cell 2 | Cell 3 | | Cell 4 | Cell 5 | Cell 6 |
Column Alignment
| Left | Center | Right | |:-----|:------:|------:| | L | C | R | | L | C | R |
Table Best Practices
- •Keep tables simple - complex data may need different format
- •Use alignment for numeric data (right-align numbers)
- •Keep cell content concise
- •Consider using lists for very long content
Blockquotes
Basic Blockquotes
> This is a blockquote. > It can span multiple lines.
Nested Blockquotes
> Outer quote > > > Nested quote
Callouts/Admonitions
Use blockquotes with emphasis for callouts:
> **Note:** Important information here. > **Warning:** Be careful about this. > **Tip:** Helpful suggestion here.
Or with emoji for visual distinction:
> 📝 **Note:** Information to highlight. > ⚠️ **Warning:** Proceed with caution. > 💡 **Tip:** Helpful suggestion. > 🚨 **Danger:** Critical warning.
Horizontal Rules
Use three hyphens with blank lines:
Content above. --- Content below.
Escaping
Escape special characters with backslash:
\*not italic\* \# not a heading \[not a link\]
Line Breaks
Paragraphs
Separate paragraphs with blank lines:
First paragraph. Second paragraph.
Hard Line Breaks
Use two trailing spaces or <br> for line breaks within a paragraph:
Line one Line two (note two spaces above) Or use: Line one<br> Line two
Accessibility
Heading Structure
Screen readers use headings for navigation:
- •Use one H1 per document
- •Don't skip heading levels
- •Use headings for structure, not styling
Descriptive Links
<!-- Screen reader announces: "link, click here" - unhelpful --> [Click here](./guide.md) <!-- Screen reader announces: "link, installation guide" - clear --> [Installation guide](./guide.md)
Image Alt Text
- •Describe the content and function
- •Keep it concise but meaningful
- •Use empty alt for decorative images
Tables
- •Use header rows
- •Keep structure simple
- •Provide context before complex tables
Code Blocks
- •Specify language for syntax highlighting
- •Provide context before code examples
- •Explain what code does, not just show it
Content Quality
Integration with Content Skills
The content-writer skill applies to markdown:
- •Run spell check:
npm run lint:spelling - •Run grammar check:
npm run lint:grammar - •Check reading level for technical vs general content
Consistency
- •Use consistent heading capitalization (Title Case or Sentence case)
- •Use consistent list markers (hyphens, not mixed)
- •Use consistent code fence style (backticks, not indentation)
- •Use consistent emphasis style (asterisks, not underscores)
File Naming
README.md # Repository root CHANGELOG.md # Version history CONTRIBUTING.md # Contribution guide docs/ # Documentation folder getting-started.md api-reference.md troubleshooting.md
Markdown Checklist
Before finalizing markdown documents:
Structure
- • Single H1 as document title
- • Logical heading hierarchy (no skipped levels)
- • Table of contents for long documents
- • Frontmatter with appropriate metadata
Content
- • Descriptive link text (not "click here")
- • Alt text for all images (except decorative)
- • Language specified for code blocks
- • Spell check passed
Formatting
- • Consistent list markers
- • Consistent emphasis style
- • Proper table alignment
- • Blank lines around blocks (headings, code, lists)
Links
- • Internal links use relative paths
- • External links work
- • Anchor links match heading IDs
Common Mistakes
| Mistake | Problem | Solution |
|---|---|---|
| Skipped heading levels | Poor accessibility | Use sequential levels |
| No code language | No syntax highlighting | Add language identifier |
| "Click here" links | Poor accessibility | Use descriptive text |
| Missing alt text | Screen readers can't describe | Add meaningful alt |
| Inconsistent lists | Visual inconsistency | Pick one marker style |
| No frontmatter | Missing metadata | Add YAML frontmatter |
| Broken internal links | 404 errors | Use relative paths, verify |
Related Skills
| Skill | Relationship |
|---|---|
content-writer | Spelling, grammar, reading level |
i18n | Multilingual documentation |
git-workflow | Commit messages, changelogs |