sanjay3290/atlassian
| Manage Jira issues and Confluence wiki pages in Atlassian Cloud. 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).
npx skills add https://github.com/sanjay3290/ai-skills --skill atlassian
Full Jira and Confluence integration with two authentication methods:
No API tokens or instance URLs needed. Uses dynamic client registration and PKCE.
pip 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:
python scripts/auth.py status
For environments where browser-based OAuth isn't available.
pip 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:
python scripts/auth.py status
Logout (clears both OAuth and API token credentials):
python scripts/auth.py logout
The scripts automatically detect which backend to use based on your auth type:
All commands work identically regardless of backend.
python scripts/jira.py search "project = DEV AND status = Open"
python scripts/jira.py search "assignee = currentUser() ORDER BY updated DESC" --limit 10
python scripts/jira.py get DEV-123
python 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 "[email protected]" --labels "backend,urgent"
python scripts/jira.py update DEV-123 --summary "Updated summary" --priority High
python scripts/jira.py update DEV-123 --assignee "[email protected]"
python scripts/jira.py transition DEV-123 "In Progress"
python scripts/jira.py transition DEV-123 "Done"
python scripts/jira.py comment DEV-123 --add "This is a comment"
python scripts/jira.py comment DEV-123 --list
python scripts/jira.py list-projects
python scripts/jira.py list-statuses DEV
python scripts/jira.py auth-info
python scripts/jira.py list-tools
python 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
python scripts/confluence.py read <page-id>
python scripts/confluence.py read <page-id> --json
python scripts/confluence.py list-spaces
python scripts/confluence.py list-spaces --limit 50
python scripts/confluence.py get-space <space-id>
python scripts/confluence.py list-pages --space-id <space-id>
python 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>
python scripts/confluence.py update <page-id> --title "Updated Title"
python scripts/confluence.py update <page-id> --body "<p>New content</p>"
python scripts/confluence.py get-children <page-id>
python scripts/confluence.py auth-info
python 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).
Take sanjay3290/atlassian from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.