Publish markdown deliverables to Confluence with compliant formatting, metadata syncing, and automation hooks. Use when the user wants to publish a document to Confluence, update an existing Confluence page, sync local markdown to Confluence, or mentions push to Confluence, đăng lên Confluence, or cập nhật trang Confluence.
npx claudepluginhub leolionart/claude-skills --plugin confluence-publishingThis skill uses the workspace's default tool permissions.
> ⚠️ **CRITICAL**: All Confluence operations MUST use the bundled Confluence CLI wrapper. Never use web fetch tools or raw curl for authenticated Confluence work. Always use `scripts/confluence-mcp confluence-*` commands for reading, updating, searching, or any Confluence interaction.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
⚠️ CRITICAL: All Confluence operations MUST use the bundled Confluence CLI wrapper. Never use web fetch tools or raw curl for authenticated Confluence work. Always use
scripts/confluence-mcp confluence-*commands for reading, updating, searching, or any Confluence interaction.
scripts/confluence-mcp confluence-update-page or scripts/confluence-mcp confluence-create-page.scripts/confluence-mcp is present and executable (run ./scripts/generate_atlassian_clis.sh if missing).updated_at in the source document and keep created_at unchanged.assets/ (or media/) folder adjacent to the markdown file and plan to store all images/attachments there..mcp.json — local MCP definition with env placeholders (JIRA_URL, JIRA_PERSONAL_TOKEN, CONFLUENCE_URL, CONFLUENCE_PERSONAL_TOKEN)scripts/generate_atlassian_clis.sh — import mcp-atlassian, create local config, compile scripts/mcp-atlassian, and refresh wrappersscripts/confluence-mcp — Confluence wrapper with --output json compatibilityscripts/jira-mcp — Jira wrapper bundled from the same binary so Atlassian workflows can stay in one packagereferences/atlassian_cli.md — quick reference for generate/refresh and common usageMermaid diagrams require special handling for Confluence compatibility. Follow this integrated workflow:
Before publishing, ensure your Mermaid diagram follows these standards:
Diagram Structure:
flowchart TD for top-to-bottom flowsubgraph unless already verified for compatibilityNode Naming Rules:
nodeId["Label"]Decision{"Yes/No?"}Start((Start)), ProcessEnd((Done))note1["Note: ..."]()<>{}:,&" in quotesendStandard Color Palette:
classDef startNode fill:#90EE90,stroke:#2E7D32,stroke-width:2px
classDef processNode fill:#87CEEB,stroke:#333333,stroke-width:1.5px
classDef decisionNode fill:#FFE4B5,stroke:#B26A00,stroke-width:1.5px
classDef handoffNode fill:#FFF5E1,stroke:#FF8C00,stroke-width:1.5px
classDef externalNode fill:#F5E6FF,stroke:#8E44AD,stroke-width:1.5px
classDef endPositive fill:#B2FFB2,stroke:#2E7D32,stroke-width:2px
classDef endNegative fill:#FFB2B2,stroke:#C62828,stroke-width:2px
Compatibility Rules (Mermaid v9/v11):
classDef + class for coloringInstead of using ad-hoc scripts, ensure your mermaid macro is formatted as:
<ac:structured-macro ac:name="mermaid-macro">
<ac:plain-text-body><![CDATA[...diagram...]]></ac:plain-text-body>
</ac:structured-macro>
content_format='storage' when publishingIf your document contains only text, tasks, and lists, proceed directly to the execution checklist.
<ri:url> trực tiếp (preferred)Khi cần chèn ảnh từ URL bên ngoài, không cần download rồi upload attachment nếu không có yêu cầu lưu trữ lâu dài:
<ac:image ac:width="700"><ri:url ri:value="https://example.com/image.jpg"/></ac:image>
Chỉ upload ảnh thành attachment khi:
Storage format cho attached image:
<ac:image ac:width="700"><ri:attachment ri:filename="image.jpg"/></ac:image>
updated_at → current datepublic_confluence_url → existing Confluence URL or draft placeholderpublished_at → keep empty before publish, set after successful publishassets/ folderUse this decision tree to select the correct format:
Does content have bullet lists?
├─ YES → Use wiki format
│ ├─ Simple bullets → wiki format
│ └─ Nested bullets → wiki format
│
└─ NO → Check other complexity
├─ Has tables with line breaks? → wiki format
├─ Has complex nested structures? → wiki format
├─ Has tasks/checklists/Mermaid? → storage format
└─ Simple text and headings only? → markdown OK
Known issue: markdown format with bullet lists often fails to render as proper bullet points in Confluence.
Solution: When content contains bullet lists, always use content_format='wiki'.
Headers:
# Title → h1. Title## Section → h2. Section### Subsection → h3. SubsectionText Formatting:
**bold** → *bold**italic* → _italic_`code` → {{code}}Lists:
- bullet → * bullet** / ***#Code Blocks:
{code:lang} ... {code}Tables:
||Header|||Cell|\\Links:
[text](url) → [text|url]<code>.scripts/confluence-mcp confluence-update-page for existing pages or scripts/confluence-mcp confluence-create-page for new pages.--output json to keep payload compact and predictable.content_format is set correctly (wiki for bullet lists, storage for macros/checklists, markdown only for simple text).public_confluence_url with the live page link and set published_at.scripts/confluence-mcp confluence-get-page --page-id "<PAGE_ID>" --output jsonscripts/confluence-mcp confluence-update-page --output jsonscripts/confluence-mcp confluence-create-page --output json./scripts/generate_atlassian_clis.shtitle parameter is set explicitlywikiwikistoragemarkdown acceptablepublic_confluence_url updated with live page linkpublished_at updated if your metadata format supports it--output json so responses remain compact and parseableBullet points render as continuous text
content_format='markdown' with bullet listscontent_format='wiki' and convert bullets to *Error calling update page with no details
Nested lists not rendering
** and ***