Convert Markdown content to Confluence's ADF (Atlassian Document Format) for creating and updating pages. Use when creating Confluence pages from README files, documentation, or any Markdown content. Handles headings, lists, code blocks, tables, links, and more.
From confluencenpx claudepluginhub ramirez-justin/claude-plugins --plugin confluenceThis skill uses the workspace's default tool permissions.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Expert assistance for converting Markdown content to Confluence's ADF (Atlassian Document Format).
ADF (Atlassian Document Format) is Confluence's JSON-based document format representing content as a tree of nodes.
{
"version": 1,
"type": "doc",
"content": [/* nodes */]
}
| Markdown | ADF Mark Type | Example |
|---|---|---|
**bold** | {"type": "strong"} | {"type": "text", "text": "bold", "marks": [{"type": "strong"}]} |
*italic* | {"type": "em"} | {"type": "text", "text": "italic", "marks": [{"type": "em"}]} |
`code` | {"type": "code"} | {"type": "text", "text": "code", "marks": [{"type": "code"}]} |
~~strike~~ | {"type": "strike"} | {"type": "text", "text": "strike", "marks": [{"type": "strike"}]} |
<u>underline</u> | {"type": "underline"} | {"type": "text", "text": "underline", "marks": [{"type": "underline"}]} |
[link](url) | {"type": "link", "attrs": {"href": "url"}} | Text with link mark |
Combined marks: Use array of marks for ***bold italic***
| Markdown | ADF Type | Key Attributes |
|---|---|---|
# Heading | heading | attrs.level: 1-6 |
| Paragraph | paragraph | - |
- bullet | bulletList → listItem | - |
1. ordered | orderedList → listItem | - |
```lang | codeBlock | attrs.language |
> quote | blockquote | - |
--- | rule | - |
| table | | table → tableRow → tableCell/tableHeader | - |
 | mediaSingle → media | attrs: {type: "external", url, alt} |
- [x] task | taskList → taskItem | attrs.state: "DONE"/"TODO" |
{"type": "heading", "attrs": {"level": 1}, "content": [{"type": "text", "text": "Title"}]}
Confluence supports levels 1-6.
Bullet list structure:
{
"type": "bulletList",
"content": [
{"type": "listItem", "content": [
{"type": "paragraph", "content": [{"type": "text", "text": "Item"}]}
]}
]
}
Nested lists: Add another bulletList/orderedList inside the listItem.content array.
{
"type": "codeBlock",
"attrs": {"language": "python"},
"content": [{"type": "text", "text": "def hello():\n print('Hello')"}]
}
Supported languages: javascript, python, java, go, rust, typescript, sql, bash, json, xml, html, css, and more.
{
"type": "table",
"content": [
{"type": "tableRow", "content": [
{"type": "tableHeader", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Header"}]}]},
{"type": "tableHeader", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Header 2"}]}]}
]},
{"type": "tableRow", "content": [
{"type": "tableCell", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Cell"}]}]},
{"type": "tableCell", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Cell 2"}]}]}
]}
]
}
{"type": "panel", "attrs": {"panelType": "info"}, "content": [/* paragraphs */]}
Panel types: info, note, warning, error, success
Convert from: > ℹ️ **Info** or > ⚠️ **Warning**
{"type": "expand", "attrs": {"title": "Click to expand"}, "content": [/* content */]}
Convert from: <details><summary>Title</summary>Content</details>
{"type": "status", "attrs": {"text": "DONE", "color": "green"}}
Colors: neutral, purple, blue, red, yellow, green
{"type": "mention", "attrs": {"id": "user-id", "text": "@username"}}
{"type": "emoji", "attrs": {"shortName": ":smile:", "text": "😀"}}
Markdown Input:
# Project Documentation
This is a **sample project** with `code examples`.
- Feature 1
- Feature 2
```bash
npm install my-package
| Command | Description |
|---|---|
start | Start server |
**ADF Output**:
```json
{
"version": 1,
"type": "doc",
"content": [
{"type": "heading", "attrs": {"level": 1}, "content": [{"type": "text", "text": "Project Documentation"}]},
{"type": "paragraph", "content": [
{"type": "text", "text": "This is a "},
{"type": "text", "text": "sample project", "marks": [{"type": "strong"}]},
{"type": "text", "text": " with "},
{"type": "text", "text": "code examples", "marks": [{"type": "code"}]},
{"type": "text", "text": "."}
]},
{"type": "bulletList", "content": [
{"type": "listItem", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Feature 1"}]}]},
{"type": "listItem", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Feature 2"}]}]}
]},
{"type": "codeBlock", "attrs": {"language": "bash"}, "content": [{"type": "text", "text": "npm install my-package"}]},
{"type": "table", "content": [
{"type": "tableRow", "content": [
{"type": "tableHeader", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Command"}]}]},
{"type": "tableHeader", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Description"}]}]}
]},
{"type": "tableRow", "content": [
{"type": "tableCell", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "start", "marks": [{"type": "code"}]}]}]},
{"type": "tableCell", "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Start server"}]}]}
]}
]}
]
}
| Markdown Feature | Workaround |
|---|---|
| HTML tags | Convert to ADF equivalent or plain text |
| Footnotes | Use numbered references in text |
| Definition lists | Use tables or headings |
| Complex nesting | Flatten or use expand sections |
Add these to improve Markdown content:
When converting Markdown to ADF, I will:
/confluence-create-page or /confluence-update-pageYou: "Convert my README.md to a Confluence page"
Me: "I'll convert your README.md to Confluence ADF format.
[Reads README.md]
I see:
Converting to ADF with enhancements:
Ready to create the page. Which space should I use?"
You: "Space 123456"
Me: [Uses /confluence-create-page with converted ADF]
"Created page 'My Project' in space 123456!"