Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Manage Jira issues and Confluence wiki pages in Atlassian Cloud. Use when: (1) searching/creating/updating Jira issues with JQL, (2) searching/reading/creating Confluence pages with CQL, (3) managing Jira workflows, transitions, and comments, (4) browsing Confluence spaces and page hierarchies. Supports OAuth 2.1 via MCP server (recommended) or API token authentication (fallback).
.claude/skills/sanjay3290-atlassian/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 125% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 48% | 0% |
Full Jira and Confluence integration with two authentication methods:
No API tokens or instance URLs needed. Uses dynamic client registration and PKCE.
bashpip install -r requirements.txt python scripts/auth.py login --oauth
A browser opens for Atlassian authorization. Select which products (Jira, Confluence, Compass) to grant access. Tokens are stored in the system keyring and auto-refresh when expired.
Check status:
bashpython scripts/auth.py status
For environments where browser-based OAuth isn't available.
bashpip install -r requirements.txt python scripts/auth.py login
Follow the prompts to enter your Atlassian URL, email, and API token. Credentials are stored securely in the system keyring.
Create an API token at: https://id.atlassian.com/manage-profile/security/api-tokens
Check authentication status:
bashpython scripts/auth.py status
Logout (clears both OAuth and API token credentials):
bashpython scripts/auth.py logout
The scripts automatically detect which backend to use based on your auth type:
All commands work identically regardless of backend.
bashpython scripts/jira.py search "project = DEV AND status = Open" python scripts/jira.py search "assignee = currentUser() ORDER BY updated DESC" --limit 10
bashpython scripts/jira.py get DEV-123
bashpython scripts/jira.py create --project DEV --summary "Fix login bug" --type Bug python scripts/jira.py create --project DEV --summary "New feature" --type Story \ --description "Details here" --priority High --assignee "user@example.com" --labels "backend,urgent"
bashpython scripts/jira.py update DEV-123 --summary "Updated summary" --priority High python scripts/jira.py update DEV-123 --assignee "user@example.com"
bashpython scripts/jira.py transition DEV-123 "In Progress" python scripts/jira.py transition DEV-123 "Done"
bashpython scripts/jira.py comment DEV-123 --add "This is a comment" python scripts/jira.py comment DEV-123 --list
bashpython scripts/jira.py list-projects python scripts/jira.py list-statuses DEV
bashpython scripts/jira.py auth-info
bashpython scripts/jira.py list-tools
bashpython scripts/confluence.py search "deployment guide" python scripts/confluence.py search "type=page AND space=DEV AND text~\"deployment\"" python scripts/confluence.py search "onboarding" --limit 10
bashpython scripts/confluence.py read <page-id> python scripts/confluence.py read <page-id> --json
bashpython scripts/confluence.py list-spaces python scripts/confluence.py list-spaces --limit 50
bashpython scripts/confluence.py get-space <space-id>
bashpython scripts/confluence.py list-pages --space-id <space-id>
bashpython scripts/confluence.py create --title "New Page" --space-id <space-id> python scripts/confluence.py create --title "Guide" --space-id <id> --body "<p>Content here</p>" python scripts/confluence.py create --title "Child" --space-id <id> --parent-id <parent-id>
bashpython scripts/confluence.py update <page-id> --title "Updated Title" python scripts/confluence.py update <page-id> --body "<p>New content</p>"
bashpython scripts/confluence.py get-children <page-id>
bashpython scripts/confluence.py auth-info
bashpython scripts/confluence.py list-tools
| Command | Description | Required Args | |---------|-------------|---------------| | search | Search issues with JQL | jql | | get | Get issue details | issue_key | | create | Create new issue | --project, --summary, --type | | update | Update existing issue | issue_key | | transition | Change issue status | issue_key, status | | comment | Add or list comments | issue_key | | list-projects | List accessible projects | - | | list-statuses | List statuses for project | project_key | | auth-info | Test API connection | - | | list-tools | List MCP tools (OAuth only) | - |
| Command | Description | Required Args | |---------|-------------|---------------| | search | Search using CQL | query | | read | Get page content | page_id | | list-spaces | List all spaces | - | | get-space | Get space details | space_id | | list-pages | List pages in a space | --space-id | | create | Create new page | --title, --space-id | | update | Update existing page | page_id | | get-children | Get child pages | page_id | | auth-info | Test API connection | - | | list-tools | List MCP tools (OAuth only) | - |
Add --json flag to any script command for machine-readable output.
Credentials stored securely using the system keyring:
Service name: atlassian-skill
OAuth tokens auto-refresh when expired (if refresh token is available).
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-25 | pass→pass | 13,761 | 10,813 | -21% | 1 | 1 | 0% | 2,177 | 3,214 | +48% | 0 | 0 | — |
case-01 | fail→pass | 8,937 | 2,409 | -73% | 1 | 1 | 0% | 1,498 | 1,957 | +31% | 0 | 0 | — |
case-02 | fail→fail | 7,767 | 8,247 | +6% | 1 | 1 | 0% | 1,433 | 2,108 | +47% | 0 | 0 | — |
case-03 | fail→fail | 8,535 | 7,914 | -7% | 1 | 1 | 0% | 1,620 | 2,160 | +33% | 0 | 0 | — |
case-04 | fail→pass | 6,171 | 2,238 | -64% | 1 | 1 | 0% | 858 | 1,931 | +125% | 0 | 0 | — |
case-05 | fail→pass | 8,137 | 1,949 | -76% | 1 | 1 | 0% | 1,449 | 1,882 | +30% | 0 | 0 | — |
case-06 | fail→pass | 7,591 | 5,119 | -33% | 1 | 1 | 0% | 1,253 | 2,029 | +62% | 0 | 0 | — |
case-07 | fail→pass | 7,513 | 1,632 | -78% | 1 | 1 | 0% | 1,223 | 1,807 | +48% | 0 | 0 | — |
case-08 | fail→fail | 4,436 | 4,991 | +13% | 1 | 1 | 0% | 480 | 1,775 | +270% | 0 | 0 | — |
case-09 | fail→pass | 8,910 | 1,640 | -82% | 1 | 1 | 0% | 1,519 | 1,810 | +19% | 0 | 0 | — |
case-10 | fail→pass | 6,897 | 4,233 | -39% | 1 | 1 | 0% | 1,052 | 1,803 | +71% | 0 | 0 | — |
case-11 | fail→pass | 10,877 | 3,849 | -65% | 1 | 1 | 0% | 1,308 | 1,743 | +33% | 0 | 0 | — |
case-12 | fail→pass | 10,465 | 1,776 | -83% | 1 | 1 | 0% | 1,880 | 1,858 | -1% | 0 | 0 | — |
case-13 | fail→pass | 7,566 | 1,558 | -79% | 1 | 1 | 0% | 1,119 | 1,786 | +60% | 0 | 0 | — |
case-14 | fail→pass | 8,457 | 2,119 | -75% | 1 | 1 | 0% | 1,373 | 1,912 | +39% | 0 | 0 | — |
case-15 | fail→pass | 8,204 | 4,247 | -48% | 1 | 1 | 0% | 1,230 | 1,767 | +44% | 0 | 0 | — |
case-16 | fail→pass | 6,608 | 1,406 | -79% | 1 | 1 | 0% | 1,129 | 1,755 | +55% | 0 | 0 | — |
case-17 | fail→pass | 6,343 | 4,178 | -34% | 1 | 1 | 0% | 1,019 | 1,730 | +70% | 0 | 0 | — |
case-18 | fail→pass | 6,638 | 5,914 | -11% | 1 | 1 | 0% | 1,164 | 2,094 | +80% | 0 | 0 | — |
case-19 | fail→pass | 8,016 | 4,687 | -42% | 1 | 1 | 0% | 1,457 | 2,374 | +63% | 0 | 0 | — |
case-20 | fail→pass | 10,426 | 4,137 | -60% | 1 | 1 | 0% | 1,782 | 1,790 | +0% | 0 | 0 | — |
case-21 | fail→pass | 11,028 | 2,211 | -80% | 1 | 1 | 0% | 1,966 | 1,883 | -4% | 0 | 0 | — |
case-22 | fail→pass | 20,494 | 2,481 | -88% | 1 | 1 | 0% | 3,572 | 1,977 | -45% | 0 | 0 | — |
case-23 | pass→pass | 10,581 | 6,518 | -38% | 1 | 1 | 0% | 1,723 | 2,645 | +54% | 0 | 0 | — |
case-24 | pass→pass | 12,561 | 7,891 | -37% | 1 | 1 | 0% | 1,918 | 2,801 | +46% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 22 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +76 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.