Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Specialized skill for processing Markdown and MDX documentation. Supports parsing, rendering, TOC generation, link validation, frontmatter processing, and diagram embedding.
.claude/skills/a5c-ai-markdown-processor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 197% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 54% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 223% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 159% | 0% |
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.
This skill enables comprehensive Markdown/MDX processing including:
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 }]; } }); }
Generate and insert TOC:
markdown<!-- Original document --> # Document Title ## Introduction Content here... ## Architecture ### System Overview Content here... ### Components Content here... ## Conclusion Content here... --- <!-- Generated TOC --> ## Table of Contents - [Introduction](#introduction) - [Architecture](#architecture) - [System Overview](#system-overview) - [Components](#components) - [Conclusion](#conclusion)
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'] } } };
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' } ] } };
Embed and validate diagrams:
`markdown# System Architecture ## C4 Context Diagram
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
@startuml participant User participant System participant Database
User -> System: Request System -> Database: Query Database --> System: Result System --> User: Response @enduml
Process MDX with React components:
mdx--- title: Interactive Documentation --- import { CodeBlock, Alert, Tabs } from '@components'; # Interactive Guide <Alert type="info"> This is an interactive documentation page. </Alert> ## Code Examples <Tabs> <Tab label="JavaScript"> ```javascript const hello = () => console.log('Hello'); ``` </Tab> <Tab label="Python"> ```python def hello(): print('Hello') ``` </Tab> </Tabs> ## API Reference <CodeBlock language="typescript" live={true} code={` interface User { id: string; name: string; } `} />
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
This skill is foundational and integrates with:
| Server | Description | Usage | |--------|-------------|-------| | All documentation MCP servers | Markdown is universal output | Rendering and validation |
markdown# Document Title > Brief description or abstract ## Table of Contents <!-- toc --> ## 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...
yamlstyle_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"
markdown<!-- Good: Descriptive alt text -->  <!-- Good: Descriptive link text --> See the [installation guide](./install.md) for setup instructions. <!-- Bad: Non-descriptive --> Click [here](./install.md).
This skill integrates with ALL documentation-generating processes:
c4-model-documentation.js - Architecture docsadr-documentation.js - Decision recordsapi-design-specification.js - API documentationWhen 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 | 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 |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 13,123 | 16,833 | +28% | 1 | 1 | 0% | 1,577 | 4,683 | +197% | 0 | 0 | — |
case-02 | fail→pass | 16,271 | 11,672 | -28% | 1 | 1 | 0% | 3,032 | 4,682 | +54% | 0 | 0 | — |
case-03 | fail→fail | 24,864 | 20,876 | -16% | 1 | 1 | 0% | 4,447 | 5,584 | +26% | 0 | 0 | — |
case-04 | pass→pass | 12,658 | 8,531 | -33% | 1 | 1 | 0% | 1,621 | 4,206 | +159% | 0 | 0 | — |
case-05 | fail→fail | 10,116 | 11,457 | +13% | 1 | 1 | 0% | 1,996 | 4,396 | +120% | 0 | 0 | — |
case-06 | pass→pass | 7,846 | 8,022 | +2% | 1 | 1 | 0% | 502 | 2,799 | +458% | 0 | 0 | — |
case-07 | fail→pass | 9,642 | 9,180 | -5% | 1 | 1 | 0% | 962 | 3,107 | +223% | 0 | 0 | — |
case-08 | pass→pass | 22,174 | 32,848 | +48% | 1 | 1 | 0% | 3,272 | 6,577 | +101% | 0 | 0 | — |
case-09 | pass→pass | 9,522 | 9,926 | +4% | 1 | 1 | 0% | 1,727 | 3,126 | +81% | 0 | 0 | — |
case-10 | pass→pass | 16,299 | 15,810 | -3% | 1 | 1 | 0% | 3,383 | 4,727 | +40% | 0 | 0 | — |
case-11 | pass→pass | 11,845 | 7,758 | -35% | 1 | 1 | 0% | 1,248 | 2,757 | +121% | 0 | 0 | — |
case-12 | pass→pass | 8,705 | 10,808 | +24% | 1 | 1 | 0% | 818 | 3,306 | +304% | 0 | 0 | — |
case-13 | pass→pass | 12,311 | 13,916 | +13% | 1 | 1 | 0% | 1,553 | 4,188 | +170% | 0 | 0 | — |
case-14 | pass→pass | 9,032 | 3,388 | -62% | 1 | 1 | 0% | 687 | 2,902 | +322% | 0 | 0 | — |
case-15 | fail→fail | 18,388 | 11,713 | -36% | 1 | 1 | 0% | 2,686 | 4,436 | +65% | 0 | 0 | — |
case-16 | pass→pass | 21,575 | 22,773 | +6% | 1 | 1 | 0% | 2,761 | 5,255 | +90% | 0 | 0 | — |
case-17 | pass→pass | 16,209 | 10,279 | -37% | 1 | 1 | 0% | 2,001 | 4,236 | +112% | 0 | 0 | — |
case-18 | fail→pass | 11,262 | 3,373 | -70% | 1 | 1 | 0% | 1,919 | 2,762 | +44% | 0 | 0 | — |
case-19 | pass→pass | 16,675 | 14,611 | -12% | 1 | 1 | 0% | 2,315 | 4,303 | +86% | 0 | 0 | — |
case-20 | fail→fail | 21,298 | 14,705 | -31% | 1 | 1 | 0% | 3,482 | 5,427 | +56% | 0 | 0 | — |
case-21 | fail→fail | 14,243 | 20,096 | +41% | 1 | 1 | 0% | 1,795 | 5,417 | +202% | 0 | 0 | — |
case-22 | fail→fail | 24,471 | 25,925 | +6% | 1 | 1 | 0% | 3,982 | 6,812 | +71% | 0 | 0 | — |
case-23 | pass→pass | 12,269 | 7,764 | -37% | 1 | 1 | 0% | 2,011 | 2,812 | +40% | 0 | 0 | — |
case-24 | pass→pass | 21,730 | 21,591 | -1% | 1 | 1 | 0% | 2,653 | 4,915 | +85% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 24 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.