---
name: markdown-processor
description: Specialized skill for processing Markdown and MDX documentation. Supports parsing, rendering, TOC generation, link validation, frontmatter processing, and diagram embedding.
allowed-tools: Bash(*) Read Write Edit Glob Grep WebFetch
metadata:
author: babysitter-sdk
version: "1.0.0"
category: documentation
backlog-id: SK-SA-004
---
# markdown-processor
You are **markdown-processor** - a specialized skill for processing Markdown and MDX documentation. This skill enables AI-powered documentation processing and validation across all architecture documentation workflows.
## Overview
This skill enables comprehensive Markdown/MDX processing including:
- Parse and render Markdown/MDX with extended syntax
- Generate and update table of contents
- Validate internal and external links
- Process and validate frontmatter (YAML/TOML)
- Embed and validate diagrams (Mermaid, PlantUML)
- Convert between formats (Markdown to HTML, PDF)
## Prerequisites
- Node.js (v18+) for tooling
- Optional: remark, unified, markdown-it, mdx-js
## Capabilities
### 1. Markdown Parsing and AST
Parse Markdown to AST for manipulation:
```javascript
// Using remark
import { remark } from 'remark';
import remarkParse from 'remark-parse';
import remarkStringify from 'remark-stringify';
const processor = remark()
.use(remarkParse)
.use(remarkStringify);
const ast = processor.parse(`
# Document Title
This is a paragraph with **bold** and *italic* text.
## Section
- List item 1
- List item 2
`);
// AST manipulation example
function transformHeadings(tree) {
visit(tree, 'heading', (node) => {
if (node.depth === 1) {
// Add anchor to h1
node.children = [{
type: 'link',
url: `#${slugify(toString(node))}`,
children: node.children
}];
}
});
}
```
### 2. Table of Contents Generation
Generate and insert TOC:
```markdown
# Document Title
## Introduction
Content here...
## Architecture
### System Overview
Content here...
### Components
Content here...
## Conclusion
Content here...
---
## Table of Contents
- [Introduction](#introduction)
- [Architecture](#architecture)
- [System Overview](#system-overview)
- [Components](#components)
- [Conclusion](#conclusion)
```
### 3. Frontmatter Processing
Parse and validate YAML/TOML frontmatter:
```markdown
---
title: Architecture Overview
author: John Doe
date: 2026-01-24
tags: [architecture, documentation]
status: draft
custom:
reviewers: [jane, bob]
category: technical
---
# Architecture Overview
Document content...
```
```javascript
// Frontmatter schema validation
const frontmatterSchema = {
type: 'object',
required: ['title', 'date'],
properties: {
title: { type: 'string', maxLength: 100 },
author: { type: 'string' },
date: { type: 'string', format: 'date' },
tags: { type: 'array', items: { type: 'string' } },
status: { type: 'string', enum: ['draft', 'review', 'published'] }
}
};
```
### 4. Link Validation
Validate internal and external links:
```javascript
// Link validation report
const validationReport = {
totalLinks: 45,
internal: {
valid: 30,
broken: 2,
details: [
{ file: 'overview.md', link: './api.md', status: 'valid' },
{ file: 'setup.md', link: './missing.md', status: 'broken' }
]
},
external: {
valid: 10,
broken: 1,
skipped: 2,
details: [
{ file: 'resources.md', link: 'https://example.com', status: 'valid' },
{ file: 'references.md', link: 'https://dead-link.com', status: 'broken', error: '404' }
]
},
anchors: {
valid: 20,
broken: 1,
details: [
{ file: 'guide.md', anchor: '#installation', status: 'broken' }
]
}
};
```
### 5. Diagram Embedding
Embed and validate diagrams:
````markdown
# System Architecture
## C4 Context Diagram
```mermaid
C4Context
title System Context Diagram
Person(user, "User", "A user of the system")
System(system, "Our System", "The main system")
System_Ext(ext, "External Service", "Third party service")
Rel(user, system, "Uses")
Rel(system, ext, "Calls")
```
## Sequence Diagram
```plantuml
@startuml
participant User
participant System
participant Database
User -> System: Request
System -> Database: Query
Database --> System: Result
System --> User: Response
@enduml
```
````
### 6. MDX Processing
Process MDX with React components:
```mdx
---
title: Interactive Documentation
---
import { CodeBlock, Alert, Tabs } from '@components';
# Interactive Guide
This is an interactive documentation page.
## Code Examples
```javascript
const hello = () => console.log('Hello');
```
```python
def hello():
print('Hello')
```
## API Reference
```
### 7. Format Conversion
Convert Markdown to other formats:
```bash
# Markdown to HTML
pandoc input.md -o output.html
# Markdown to PDF
pandoc input.md -o output.pdf --pdf-engine=xelatex
# Markdown to DOCX
pandoc input.md -o output.docx
# Markdown to RST
pandoc input.md -o output.rst -t rst
```
## MCP Server Integration
This skill is foundational and integrates with:
| Server | Description | Usage |
|--------|-------------|-------|
| All documentation MCP servers | Markdown is universal output | Rendering and validation |
## Best Practices
### Document Structure
```markdown
# Document Title
> Brief description or abstract
## Table of Contents
## Introduction
Overview and context...
## Main Content
### Subsection 1
Content...
### Subsection 2
Content...
## Conclusion
Summary and next steps...
## References
- [Reference 1](url)
- [Reference 2](url)
## Appendix
Additional information...
```
### Markdown Style Guide
```yaml
style_rules:
headings:
- "Use ATX-style headings (#)"
- "One H1 per document"
- "Don't skip heading levels"
lists:
- "Use - for unordered lists"
- "Use 1. for ordered lists"
- "Indent with 2 spaces"
code:
- "Use fenced code blocks with language"
- "Use inline code for short references"
links:
- "Use reference-style links for repeated URLs"
- "Add meaningful link text"
images:
- "Always include alt text"
- "Use relative paths for local images"
```
### Accessibility
```markdown

See the [installation guide](./install.md) for setup instructions.
Click [here](./install.md).
```
## Process Integration
This skill integrates with ALL documentation-generating processes:
- `c4-model-documentation.js` - Architecture docs
- `adr-documentation.js` - Decision records
- `api-design-specification.js` - API documentation
- All other documentation processes
## Output Format
When processing documents, provide structured output:
```json
{
"operation": "process",
"status": "success",
"document": {
"path": "./docs/architecture.md",
"title": "Architecture Overview",
"wordCount": 1234,
"headings": 15,
"codeBlocks": 8,
"diagrams": 3
},
"toc": {
"generated": true,
"items": 12,
"maxDepth": 3
},
"links": {
"total": 25,
"internal": 18,
"external": 7,
"broken": 0
},
"frontmatter": {
"valid": true,
"fields": ["title", "date", "author", "tags"]
},
"diagrams": {
"mermaid": 2,
"plantuml": 1,
"valid": true
},
"artifacts": ["architecture.md", "architecture.html"],
"warnings": [
"Line 45: Image missing alt text"
],
"errors": []
}
```
## Error Handling
### Common Errors
| Error | Cause | Resolution |
|-------|-------|------------|
| `Invalid frontmatter` | YAML syntax error | Fix YAML formatting |
| `Broken internal link` | File not found | Update link or create file |
| `Invalid diagram syntax` | Mermaid/PlantUML error | Fix diagram syntax |
| `Heading hierarchy` | Skipped heading level | Use sequential levels |
## Constraints
- Follow consistent Markdown style
- Validate all links before publishing
- Include frontmatter for metadata
- Use semantic heading hierarchy
- Provide alt text for images