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 |
Scan to join WeChat group