npx skills add ...
npx skills add huytieu/cog-second-brain --skill publish-to-confluence
Publish any markdown file from the vault to Confluence with format conversion and approval gate
npx skills add huytieu/cog-second-brain --skill publish-to-confluence
Check agent_mode in 00-inbox/MY-PROFILE.md frontmatter:
agent_mode: team — no significant benefit for this skill (single sequential operation)agent_mode: solo — standard execution/publish-to-confluenceRead 00-inbox/MY-INTEGRATIONS.md — Confluence MUST be listed under Active Integrations
Get current timestamp: Run date '+%Y-%m-%d %H:%M' using Bash
Determine what to publish:
Option A: User specifies a file path
Option B: User describes the document
Option C: Just-generated document If this skill is invoked right after generating a PRD, release notes, or other document, use that document.
Ask the user (if not already provided):
If the user doesn't know the space or parent page:
Convert the markdown document to Confluence storage format (XHTML):
Conversion rules:
| Markdown | Confluence Storage Format |
|---|---|
# Heading | <h1>Heading</h1> |
## Heading | <h2>Heading</h2> |
**bold** | <strong>bold</strong> |
*italic* | <em>italic</em> |
- list item | <ul><li>list item</li></ul> |
1. list item | <ol><li>list item</li></ol> |
[text](url) | <a href="url">text</a> |
`code` | <code>code</code> |
| Code blocks | <ac:structured-macro ac:name="code"><ac:plain-text-body><![CDATA[...]]></ac:plain-text-body></ac:structured-macro> |
| Tables | <table><tbody><tr><th>...</th></tr><tr><td>...</td></tr></tbody></table> |
> blockquote | <blockquote><p>quote</p></blockquote> |
--- | <hr /> |
- [ ] task | <ac:task-list><ac:task><ac:task-status>incomplete</ac:task-status><ac:task-body>task</ac:task-body></ac:task></ac:task-list> |
- [x] task | Same with complete status |
| YAML frontmatter | Strip entirely (not displayed in Confluence) |
Important conversion notes:
CRITICAL: NEVER publish without explicit user approval.
Present a summary to the user:
Wait for explicit "yes" before proceeding.
After successful publishing:
Confirm to the user:
Update the source vault file (add published metadata to frontmatter):
Log the publication for future reference.
If the vault file already has confluence_page_id in its frontmatter:
| Scenario | Behavior |
|---|---|
| Confluence not active | Stop and inform user; suggest alternative platforms |
| Confluence API fails | Save the converted XHTML to a file so user can manually paste it |
| Authentication failure | Inform user their Confluence credentials may need refreshing |
| Page already exists (same title) | Ask user: update existing, create with different title, or cancel |
| Very large document | Warn user about page size; suggest splitting into child pages |
| Complex markdown (unsupported elements) | Convert best-effort, warn about any elements that couldn't be converted |