confluence-sync
Push a Smart SDLC document to a Confluence page, creating or updating it. Use when the user says 'sync to Confluence', 'publish to Confluence', or 'update the Confluence page'.
- License 许可
- MIT
- 最近更新
- 2026-05-12
- Stars
- ★ 8
- Forks
- 1
01 前言 Front Matter
- name
- confluence-sync
- description
- Push a Smart SDLC document to a Confluence page, creating or updating it. Use when the user says 'sync to Confluence', 'publish to Confluence', or 'update the Confluence page'.
03 SKILL.md 正文
Confluence — Sync Document
Goal
Push a Smart SDLC artifact (PRD, architecture doc, sprint plan, etc.) to a Confluence page. Creates the page if it doesn't exist; updates it if it does.
Prerequisite Check
Check integrations.confluence in _superml/config.yml. If missing: "Run confluence-connect first."
Step 1: Identify the Document
Ask:
- Which document are you syncing? (PRD, architecture, sprint plan, retrospective, etc.)
- Do you have a target Confluence page URL or page ID? (Optional — will create new if not provided)
Load the document file.
Step 2: Convert to Confluence Format
Convert Markdown to Confluence Storage Format (XHTML):
- Headers:
##→<h2>...</h2> - Bold:
**text**→<strong>text</strong> - Code blocks:
```lang ```→<ac:structured-macro ac:name="code">... - Tables: Markdown table → Confluence table XHTML
- Checkboxes:
- [x]→ ✅- [ ]→ ○
Step 3: Check If Page Exists
If a page ID was provided:
curl -u {email}:{api_token} \
"https://{domain}.atlassian.net/wiki/rest/api/content/{page_id}" \
| jq '.id, .version.number, .title'
If no page ID, search by title:
curl -u {email}:{api_token} \
"https://{domain}.atlassian.net/wiki/rest/api/content?title={title}&spaceKey={space}" \
| jq '.results[0].id, .results[0].version.number'
Step 4A: Create New Page
If page does not exist:
curl -X POST -u {email}:{api_token} \
-H "Content-Type: application/json" \
"https://{domain}.atlassian.net/wiki/rest/api/content" \
-d '{
"type": "page",
"title": "{title}",
"space": {"key": "{space_key}"},
"ancestors": [{"id": "{parent_page_id}"}],
"body": {"storage": {"value": "{xhtml_content}", "representation": "storage"}}
}'
Step 4B: Update Existing Page
curl -X PUT -u {email}:{api_token} \
-H "Content-Type: application/json" \
"https://{domain}.atlassian.net/wiki/rest/api/content/{page_id}" \
-d '{
"version": {"number": {next_version}},
"title": "{title}",
"type": "page",
"body": {"storage": {"value": "{xhtml_content}", "representation": "storage"}}
}'
Step 5: Update Config
Log the sync in _superml/config.yml:
integrations:
confluence:
last_sync:
document: "{doc_type}"
page_id: "{page_id}"
page_url: "{page_url}"
synced_at: "{timestamp}"
Done
✅ Synced to Confluence: {page_url}
04 同仓库更多 Skills
jira-sync
Bulk sync all epics and stories from the local backlog to JIRA. Use when the user says 'sync to JIRA', 'push everything to JIRA', or 'create all JIRA tickets'.
jira-create-story
Create a single story ticket in JIRA from a local story file. Use when the user says 'create this story in JIRA' or 'push story to JIRA'.
jira-create-epic
Create an epic in JIRA from a planning artifact. Use when the user says 'create this epic in JIRA' or 'push epic to JIRA'.
jira-connect
Set up and verify JIRA integration. Use when the user says 'connect to JIRA', 'set up JIRA', or 'configure JIRA'.
jira-conflict-detect
Check if a story is already being worked on by another team member. Use before starting any story implementation.
gitlab-create-mr
Create a GitLab Merge Request for the current story branch. Use when the user says 'create an MR', 'open a merge request', or 'ready for review' in a GitLab project.