一键导入
api-confluence
Confluence REST API for pages, spaces, and content. Uses API token for headless/CI. Activate for Confluence operations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Confluence REST API for pages, spaces, and content. Uses API token for headless/CI. Activate for Confluence operations.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
AI Agent Community API interaction. Post errors, questions, solutions and interact with other agents.
GitHub REST API for issues, PRs, repos. Uses PAT for headless/CI. Activate for GitHub operations.
Google Calendar API for events and schedules. Uses OAuth2 refresh token for headless/CI. Activate for calendar operations.
Jira REST API for issues, projects, sprints. Uses API token for headless/CI. Activate for Jira operations.
Notion REST API for pages, databases, blocks. Uses internal integration token for headless/CI. Activate for Notion operations.
Slack Web API for messaging, channels, and notifications. Uses Bot token for headless/CI. Activate for Slack operations.
| name | api-confluence |
| description | Confluence REST API for pages, spaces, and content. Uses API token for headless/CI. Activate for Confluence operations. |
| allowed-tools | Bash, Read, Grep |
| user-invocable | true |
| quality_grade | C |
| quality_checked | "2026-03-19T00:00:00.000Z" |
Credentials File: .credentials/atlassian.json
{
"base_url": "https://yourcompany.atlassian.net",
"user_email": "your@email.com",
"api_token": "..."
}
Create token at: https://id.atlassian.com/manage-profile/security/api-tokens
Load credentials before API calls:
ATLASSIAN_BASE_URL=$(jq -r '.base_url' /Users/dhlee/Git/personal/neuron/.credentials/atlassian.json)
ATLASSIAN_USER_EMAIL=$(jq -r '.user_email' /Users/dhlee/Git/personal/neuron/.credentials/atlassian.json)
ATLASSIAN_API_TOKEN=$(jq -r '.api_token' /Users/dhlee/Git/personal/neuron/.credentials/atlassian.json)
$ATLASSIAN_BASE_URL/wiki/rest/api
-u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN"
-H "Content-Type: application/json"
-H "Accept: application/json"
curl -s -u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
"$ATLASSIAN_BASE_URL/wiki/rest/api/user/current"
curl -s -u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
"$ATLASSIAN_BASE_URL/wiki/rest/api/space"
curl -s -u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
"$ATLASSIAN_BASE_URL/wiki/rest/api/space/{spaceKey}"
curl -s -u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
"$ATLASSIAN_BASE_URL/wiki/rest/api/content/search?cql=text~'search term'"
curl -s -u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
"$ATLASSIAN_BASE_URL/wiki/rest/api/content/{pageId}?expand=body.storage,version"
curl -s -u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
"$ATLASSIAN_BASE_URL/wiki/rest/api/content?title=Page%20Title&spaceKey={spaceKey}&expand=body.storage"
curl -s -X POST \
-u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "page",
"title": "New Page Title",
"space": {"key": "{spaceKey}"},
"body": {
"storage": {
"value": "<p>Page content in HTML</p>",
"representation": "storage"
}
}
}' \
"$ATLASSIAN_BASE_URL/wiki/rest/api/content"
curl -s -X PUT \
-u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"version": {"number": 2},
"title": "Updated Title",
"type": "page",
"body": {
"storage": {
"value": "<p>Updated content</p>",
"representation": "storage"
}
}
}' \
"$ATLASSIAN_BASE_URL/wiki/rest/api/content/{pageId}"
curl -s -u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
"$ATLASSIAN_BASE_URL/wiki/rest/api/content/{pageId}/child/page"
curl -s -X POST \
-u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
-H "Content-Type: application/json" \
-d '[{"prefix": "global", "name": "label-name"}]' \
"$ATLASSIAN_BASE_URL/wiki/rest/api/content/{pageId}/label"
curl -s -u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
"$ATLASSIAN_BASE_URL/wiki/rest/api/content/{pageId}/label"
Common CQL queries:
space=SPACEKEY - Content in specific spacetype=page - Only pagestitle~"keyword" - Title contains keywordtext~"keyword" - Content contains keywordlabel=labelname - Content with labelcreator=currentUser() - Created by current userCombine with AND/OR:
space=DEV AND type=page AND label=api
| Status | Meaning | Action |
|---|---|---|
| 401 | Invalid credentials | Check email and API token |
| 403 | No permission | Verify space/page permissions |
| 404 | Not found | Check page ID or space key |
| 409 | Version conflict | Get latest version and retry |
| 429 | Rate limited | Wait and retry |
NEVER hardcode naming conventions. Always infer from existing pages.
Before creating any page:
# 1. Get existing page titles under parent
curl -s -u "$ATLASSIAN_USER_EMAIL:$ATLASSIAN_API_TOKEN" \
"$ATLASSIAN_BASE_URL/wiki/rest/api/content/{parentPageId}/child/page" \
| jq '.results[] | .title'
# 2. AI infers pattern from titles like:
# "MTNG-0004-Title", "MTNG-0005-Title"
# → Pattern: MTNG-{4-digit}-{title}
# → Next: MTNG-0006-{new-title}
This approach lets the convention evolve in Confluence without touching the skill file.