From labyrinthe-acli
Create, view, update, and delete Confluence pages. View pages via ACLI, create/update/delete via Confluence REST API. WHEN: confluence page, create page, edit page, update page, delete page, view page, wiki page, confluence content, page children, child pages, confluence write, publish page, new page, page crud.
How this skill is triggered — by the user, by Claude, or both
Slash command
/labyrinthe-acli:confluence-pageThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
View, create, update, and delete Confluence pages. Uses ACLI for viewing and the Confluence REST API v2 for write operations.
View, create, update, and delete Confluence pages. Uses ACLI for viewing and the Confluence REST API v2 for write operations.
$ACLI_SITE and $ACLI_EMAIL are available$ACLI_TOKEN must be set in the profile (the same API token used for acli auth login)If $ACLI_TOKEN is not set when a write operation is needed, guide the user:
Your profile needs an API token for Confluence write operations. Update your profile with
/acli-profileand include your API token.
acli confluence page view --site "$ACLI_SITE" --id "PAGE_ID"
With body content:
acli confluence page view --site "$ACLI_SITE" --id "PAGE_ID" \
--body-format view
Specific version:
acli confluence page view --site "$ACLI_SITE" --id "PAGE_ID" \
--version 3
JSON output (useful for extracting version number before updates):
acli confluence page view --site "$ACLI_SITE" --id "PAGE_ID" --json
Step 1: Get the numeric space ID (required by the API):
acli confluence space view --site "$ACLI_SITE" --key "SPACE_KEY" --json
Step 2: Create the page:
curl -s -X POST \
"https://$ACLI_SITE/wiki/api/v2/pages" \
-H "Authorization: Basic $(echo -n "$ACLI_EMAIL:$ACLI_TOKEN" | base64)" \
-H "Content-Type: application/json" \
-d '{
"spaceId": "SPACE_ID",
"status": "current",
"title": "Page Title",
"body": {
"representation": "storage",
"value": "<p>Page content here</p>"
}
}'
Create under a parent page:
curl -s -X POST \
"https://$ACLI_SITE/wiki/api/v2/pages" \
-H "Authorization: Basic $(echo -n "$ACLI_EMAIL:$ACLI_TOKEN" | base64)" \
-H "Content-Type: application/json" \
-d '{
"spaceId": "SPACE_ID",
"parentId": "PARENT_PAGE_ID",
"status": "current",
"title": "Child Page Title",
"body": {
"representation": "storage",
"value": "<p>Child page content</p>"
}
}'
Create as draft:
curl -s -X POST \
"https://$ACLI_SITE/wiki/api/v2/pages" \
-H "Authorization: Basic $(echo -n "$ACLI_EMAIL:$ACLI_TOKEN" | base64)" \
-H "Content-Type: application/json" \
-d '{
"spaceId": "SPACE_ID",
"status": "draft",
"title": "Draft Page",
"body": {
"representation": "storage",
"value": "<p>Work in progress</p>"
}
}'
Important: Always fetch the current page first to get the version number.
Step 1: Get current version:
acli confluence page view --site "$ACLI_SITE" --id "PAGE_ID" --json
Step 2: Update with incremented version number:
curl -s -X PUT \
"https://$ACLI_SITE/wiki/api/v2/pages/PAGE_ID" \
-H "Authorization: Basic $(echo -n "$ACLI_EMAIL:$ACLI_TOKEN" | base64)" \
-H "Content-Type: application/json" \
-d '{
"id": "PAGE_ID",
"status": "current",
"title": "Updated Page Title",
"body": {
"representation": "storage",
"value": "<p>Updated content</p>"
},
"version": {
"number": CURRENT_VERSION_PLUS_ONE,
"message": "Updated via ACLI skill"
}
}'
curl -s -X DELETE \
"https://$ACLI_SITE/wiki/api/v2/pages/PAGE_ID" \
-H "Authorization: Basic $(echo -n "$ACLI_EMAIL:$ACLI_TOKEN" | base64)"
curl -s -X GET \
"https://$ACLI_SITE/wiki/api/v2/pages/PAGE_ID/children?limit=25" \
-H "Authorization: Basic $(echo -n "$ACLI_EMAIL:$ACLI_TOKEN" | base64)"
Page content uses Confluence storage format (XHTML-based). Common elements:
| Element | Syntax |
|---|---|
| Paragraph | <p>text</p> |
| Headings | <h1> through <h6> |
| Bold | <strong>text</strong> |
| Italic | <em>text</em> |
| Bullet list | <ul><li>item</li></ul> |
| Numbered list | <ol><li>item</li></ol> |
| Link | <a href="url">text</a> |
| Table | <table><tr><th>Header</th></tr><tr><td>Cell</td></tr></table> |
| Code block | <ac:structured-macro ac:name="code"><ac:plain-text-body><![CDATA[code here]]></ac:plain-text-body></ac:structured-macro> |
| Info panel | <ac:structured-macro ac:name="info"><ac:rich-text-body><p>Info text</p></ac:rich-text-body></ac:structured-macro> |
See storage-format.md for the full reference.
$ACLI_SITE -- never hardcode site URLs$ACLI_TOKEN is empty or unset, do not attempt REST API calls; guide the user to update their profilespaceId, not the space key -- always resolve the key to an ID via space view --key KEY --json firstbase64 encoding for the auth header -- this works in bash on all platforms (macOS, Linux, Windows Git Bash)$ACLI_SITE or $ACLI_TOKEN is not setnpx claudepluginhub charlesmatte/atlassian-cli-skills --plugin labyrinthe-acliRead, search, create, update, move, delete, and convert Confluence pages and attachments using confluence-cli from the terminal or agents.
Automates Confluence page creation, updates, content search, space management, labels, and hierarchy navigation via Rube MCP and Composio toolkit. Requires active OAuth connection.
Automates Confluence page creation, content search, space management, label tagging, and hierarchy navigation via Rube MCP (Composio). Always searches tools first for current schemas.