
Atlassian
- 41 installs
- 76 repo stars
- Updated August 4, 2026
- vm0-ai/vm0-skills
Helps with ai & agent building tasks during AI-assisted development.
About
atlassian is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- atlassian
- AI & Agent Building
- AI-coding skill
Atlassian by the numbers
- 41 all-time installs (skills.sh)
- Ranked #8,142 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vm0-ai/vm0-skills --skill atlassianAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 41 |
|---|---|
| repo stars | ★ 76 |
| Last updated | August 4, 2026 |
| Repository | vm0-ai/vm0-skills ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
Troubleshooting
If requests fail, run zero doctor check-connector --env-name ATLASSIAN_TOKEN or zero doctor check-connector --url https://your-domain.atlassian.net/rest/api/3/myself --method GET
Jira — User
Get Current User
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/myself" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Search Users
curl -s -G "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/user/search" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json" \
--data-urlencode "query=john"Jira — Projects
List Projects
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/project" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Get Project
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/project/<project-key>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Jira — Issues
Search Issues (JQL)
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/search/jql" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d "{\"jql\": \"project = PROJ AND status != Done ORDER BY created DESC\", \"maxResults\": 10, \"fields\": [\"key\", \"summary\", \"status\", \"assignee\", \"priority\"]}"Common JQL: project = PROJ, assignee = currentUser(), status = 'In Progress', created >= -7d, labels = bug, priority = High.
Get Issue
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Create Issue
Jira v3 uses Atlassian Document Format (ADF) for rich text fields.
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d "{\"fields\": {\"project\": {\"key\": \"PROJ\"}, \"summary\": \"Bug: Login button not responding\", \"description\": {\"type\": \"doc\", \"version\": 1, \"content\": [{\"type\": \"paragraph\", \"content\": [{\"type\": \"text\", \"text\": \"The login button is not responding.\"}]}]}, \"issuetype\": {\"name\": \"Bug\"}, \"priority\": {\"name\": \"High\"}, \"labels\": [\"mobile\"]}}"Update Issue
curl -s -X PUT "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d "{\"fields\": {\"summary\": \"Updated summary\", \"priority\": {\"name\": \"Highest\"}}}"Delete Issue
curl -s -X DELETE "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN"Assign Issue
curl -s -X PUT "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>/assignee" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"accountId\": \"<account-id>\"}"Get Transitions
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>/transitions" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Transition Issue (Change Status)
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>/transitions" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"transition\": {\"id\": \"31\"}}"Add Comment
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>/comment" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"body\": {\"type\": \"doc\", \"version\": 1, \"content\": [{\"type\": \"paragraph\", \"content\": [{\"type\": \"text\", \"text\": \"Found the root cause. Working on a fix.\"}]}]}}"Get Comments
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>/comment" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Add Labels
curl -s -X PUT "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"update\": {\"labels\": [{\"add\": \"urgent\"}, {\"add\": \"backend\"}]}}"Add Attachment
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>/attachments" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "X-Atlassian-Token: no-check" \
-F "file=@screenshot.png"Get Worklogs
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>/worklog" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Add Worklog
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/rest/api/3/issue/<issue-key>/worklog" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"timeSpentSeconds\": 3600, \"comment\": {\"type\": \"doc\", \"version\": 1, \"content\": [{\"type\": \"paragraph\", \"content\": [{\"type\": \"text\", \"text\": \"Investigated and fixed the issue.\"}]}]}}"Confluence — Spaces (v2)
List Spaces
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/spaces?limit=25" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Get Space
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/spaces/<space-id>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"List Pages in Space
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/spaces/<space-id>/pages?limit=25" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Get Space Labels
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/spaces/<space-id>/labels" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Get Space Permissions
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/spaces/<space-id>/permissions" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Confluence — Pages (v2)
List Pages
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages?limit=25" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Params: space-id, title, status (current/draft/archived), body-format (storage/atlas_doc_format/view), limit, cursor.
Get Page
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages/<page-id>?body-format=storage" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Body format: storage (XHTML), atlas_doc_format (ADF), view (rendered HTML).
Create Page
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"spaceId\": \"<space-id>\", \"status\": \"current\", \"title\": \"My New Page\", \"body\": {\"representation\": \"storage\", \"value\": \"<p>Page content in <strong>XHTML</strong> format.</p>\"}}"Create Child Page
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"spaceId\": \"<space-id>\", \"status\": \"current\", \"title\": \"Child Page\", \"parentId\": \"<parent-page-id>\", \"body\": {\"representation\": \"storage\", \"value\": \"<p>Child page content.</p>\"}}"Update Page
Requires current version number (increment by 1).
curl -s -X PUT "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages/<page-id>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"id\": \"<page-id>\", \"status\": \"current\", \"title\": \"Updated Title\", \"body\": {\"representation\": \"storage\", \"value\": \"<p>Updated content.</p>\"}, \"version\": {\"number\": 2, \"message\": \"Updated via API\"}}"Delete Page
curl -s -X DELETE "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages/<page-id>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN"Get Page Children
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages/<page-id>/children" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Get Page Labels
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages/<page-id>/labels" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Get Page Versions
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages/<page-id>/versions" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Get Page Attachments
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages/<page-id>/attachments" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Get Page Ancestors
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages/<page-id>/ancestors" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Confluence — Comments (v2)
List Footer Comments
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/pages/<page-id>/footer-comments" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Create Footer Comment
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/footer-comments" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"pageId\": \"<page-id>\", \"body\": {\"representation\": \"storage\", \"value\": \"<p>This is a comment.</p>\"}}"Update Comment
curl -s -X PUT "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/footer-comments/<comment-id>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"version\": {\"number\": 2}, \"body\": {\"representation\": \"storage\", \"value\": \"<p>Updated comment.</p>\"}}"Delete Comment
curl -s -X DELETE "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/footer-comments/<comment-id>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN"Confluence — Blog Posts (v2)
List Blog Posts
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/blogposts?limit=25" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Get Blog Post
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/blogposts/<blogpost-id>?body-format=storage" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Create Blog Post
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/blogposts" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"spaceId\": \"<space-id>\", \"status\": \"current\", \"title\": \"Release Notes v2.0\", \"body\": {\"representation\": \"storage\", \"value\": \"<p>What's new in v2.0.</p>\"}}"Update Blog Post
curl -s -X PUT "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/blogposts/<blogpost-id>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Content-Type: application/json" \
-d "{\"id\": \"<blogpost-id>\", \"status\": \"current\", \"title\": \"Release Notes v2.0 (Updated)\", \"body\": {\"representation\": \"storage\", \"value\": \"<p>Updated content.</p>\"}, \"version\": {\"number\": 2}}"Delete Blog Post
curl -s -X DELETE "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/blogposts/<blogpost-id>" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN"Confluence — Labels (v2)
List Labels
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/labels" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Get Pages by Label
curl -s "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/api/v2/labels/<label-id>/pages" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json"Confluence — Search (v1)
Note: CQL search is only available via the v1 API. There is no v2 equivalent.
Search Content (CQL)
curl -s -G "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/rest/api/search" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "Accept: application/json" \
--data-urlencode "cql=type=page AND space=DEV AND text~\"deployment guide\"" \
--data-urlencode "limit=10"Common CQL: type=page AND space=DEV, text~"search term", creator=currentUser(), lastModified >= "2026-01-01", label="meeting-notes", ancestor=12345.
Confluence — Attachments (v1)
Upload Attachment
curl -s -X POST "https://$ATLASSIAN_DOMAIN.atlassian.net/wiki/rest/api/content/<page-id>/child/attachment" \
-u "$ATLASSIAN_EMAIL:$ATLASSIAN_TOKEN" \
--header "X-Atlassian-Token: nocheck" \
-F "file=@document.pdf"Atlassian Document Format (ADF)
Jira API v3 uses ADF for rich text fields (description, comment.body):
{
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{"type": "text", "text": "Plain text"},
{"type": "text", "text": "Bold", "marks": [{"type": "strong"}]},
{"type": "text", "text": "Code", "marks": [{"type": "code"}]}
]
}
]
}Confluence Storage Format (XHTML)
Confluence uses XHTML for page bodies: <p>, <h1>-<h6>, <strong>, <em>, <ul>/<ol>, <table>, <ac:structured-macro>.
Guidelines
1. JQL for Jira searches: Powerful filtering by any field combination. 2. CQL for Confluence searches: Full-text search, space filtering, label queries. Uses v1 endpoint. 3. Check transitions first: Before changing issue status, get available transitions. 4. Version required for page updates: Always get and increment the current version number. 5. ADF for Jira rich text: v3 API requires Atlassian Document Format for description and comments. 6. XHTML for Confluence: Use XHTML storage format for page content (representation: "storage"). 7. Account IDs: Jira Cloud uses account IDs (not usernames) for user references. 8. Pagination: Jira uses startAt + maxResults. Confluence v2 uses cursor-based pagination with cursor and limit. 9. Rate limits: Back off on 429 responses. 10. Confluence v2 API: This skill uses /wiki/api/v2 for pages, spaces, comments, blog posts. CQL search and attachments still use v1 (/wiki/rest/api).
How to Look Up More API Details
- Jira REST API v3: https://developer.atlassian.com/cloud/jira/platform/rest/v3/
- Confluence REST API v2: https://developer.atlassian.com/cloud/confluence/rest/v2/
- JQL Reference: https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/
- CQL Reference: https://developer.atlassian.com/cloud/confluence/advanced-searching-using-cql/
- ADF Reference: https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/