atlassian-cli
A powerful command-line tool for managing Jira and Confluence built on top of atlassian-python-api.
Features
- 🐛 Jira: List, create, update, delete issues; manage projects, sprints, users
- 📄 Confluence: Manage spaces, pages, attachments; search with CQL
- 🔐 Flexible auth: Config file + environment variable support
- 🎨 Rich output: Pretty, table, JSON, and lines formats (using rich)
- 📝 Markdown support: Create pages from Markdown with code block conversion
- 💾 File output: Save page content to file (--output / -o)
- ☁️ Cloud & Server: Supports both Atlassian Cloud and self-hosted instances
Installation
pip install python-atlassian-cli
Quick Start
1. Configure credentials
atlassian-cli config set
You'll be prompted for:
- URL: e.g.
https://mycompany.atlassian.net - Username: your email address
- API Token: get one at https://id.atlassian.com/manage/api-tokens
2. Or use environment variables
export ATLASSIAN_URL=https://mycompany.atlassian.net
export ATLASSIAN_USERNAME=user@example.com
export ATLASSIAN_API_TOKEN=your_api_token
3. Verify connection
atlassian-cli whoami
Jira Commands
Issues
# List issues (assigned to me by default / by project / assignee / status)
atlassian-cli jira issue list
atlassian-cli jira issue list --project MYPROJ
atlassian-cli jira issue list --assignee me
atlassian-cli jira issue list --status "In Progress"
atlassian-cli jira issue list --jql "project = MYPROJ AND sprint in openSprints()"
# Different output formats
atlassian-cli jira issue list --format table
atlassian-cli jira issue list --format json
# Get a specific issue
atlassian-cli jira issue get PROJ-123
atlassian-cli jira issue get PROJ-123 --format json
# Create an issue (Tip: use 'jira project types PROJ' to see valid names/IDs)
atlassian-cli jira issue create --project PROJ --summary "Fix login bug" --type Bug --priority High
atlassian-cli jira issue create \
--project PROJ \
--summary "New feature" \
--description "Detailed description here" \
--type Story \
--assignee alice@example.com \
--labels backend --labels api \
--field "Team=W-team" \ # Custom fields (Team, etc.)
--link "blocks=PROJ-100" # Issue links
--link "relates=PROJ-200"
# Update an issue
atlassian-cli jira issue update PROJ-123 --summary "Updated title"
atlassian-cli jira issue update PROJ-123 --priority Highest --assignee bob@example.com
# Transition an issue
atlassian-cli jira issue transition PROJ-123 "In Progress"
atlassian-cli jira issue transition PROJ-123 Done
# Add a comment
atlassian-cli jira issue comment PROJ-123 "This is fixed in v2.1.0"
# Delete an issue (with confirmation, or -y to skip)
atlassian-cli jira issue delete PROJ-123
atlassian-cli jira issue delete PROJ-123 -y # skip confirmation
Projects
# List all projects
atlassian-cli jira project list
atlassian-cli jira project list --format json
# Get project details
atlassian-cli jira project get MYPROJ
# List valid issue types and IDs for a project
atlassian-cli jira project types MYPROJ
Sprints
# List sprints for a board
atlassian-cli jira sprint list 42
atlassian-cli jira sprint list 42 --state future
atlassian-cli jira sprint list 42 --state closed
Users
# Search for users
atlassian-cli jira user search "alice"
atlassian-cli jira user search "alice@example.com" --format json
Confluence Commands
Spaces
# List all spaces
atlassian-cli confluence space list
atlassian-cli confluence space list --limit 50
# Get space details
atlassian-cli confluence space get MYSPACE
# Create a new space
atlassian-cli confluence space create --key NEWSP --name "New Space" --description "Team workspace"
Pages
# List pages in a space
atlassian-cli confluence page list MYSPACE
atlassian-cli confluence page list MYSPACE --format table
atlassian-cli confluence page list MYSPACE --format lines # one line per page
atlassian-cli confluence page list MYSPACE --parent 12345 # child pages
# Get a page
atlassian-cli confluence page get 67890
atlassian-cli confluence page get 67890 --format json
atlassian-cli confluence page get 67890 --format html # raw HTML body
atlassian-cli confluence page get 67890 --format markdown # convert to Markdown
atlassian-cli confluence page get 67890 --format brief # brief info with ancestry (default)
atlassian-cli confluence page get 67890 -o page.md # save to file
# Create a page
atlassian-cli confluence page create --space MYSPACE --title "Meeting Notes" --html "<p>Notes here</p>"
atlassian-cli confluence page create --space MYSPACE --title "From File" --html-file content.html
atlassian-cli confluence page create --space MYSPACE --title "From Markdown" --md "# Hello"
atlassian-cli confluence page create --space MYSPACE --title "From Markdown File" --md-file readme.md
atlassian-cli confluence page create --space MYSPACE --title "Subpage" --parent 12345
# Update a page
atlassian-cli confluence page update 67890 --title "Updated Title"
atlassian-cli confluence page update 67890 --html "<p>Updated</p>"
atlassian-cli confluence page update 67890 --html-file updated.html
atlassian-cli confluence page update 67890 --minor-edit
# Move a page
atlassian-cli confluence page move 67890 --parent 99999
# Delete a page (with confirmation)
atlassian-cli confluence page delete 67890
# Search pages with CQL
atlassian-cli confluence page search "deployment guide"
atlassian-cli confluence page search "API" --space TECH
atlassian-cli confluence page search "authentication" --format table
atlassian-cli confluence page search "" --creator me --space Testing # pages I created
atlassian-cli confluence page search "" --creator "KevinHan" --space Testing # by user
Attachments
# List attachments on a page
atlassian-cli confluence attachment list 67890
# Upload a file to a page
atlassian-cli confluence attachment upload 67890 ./diagram.png --comment "Architecture diagram"
Configuration
Config is stored at ~/.atlassian-cli/config.json with 600 permissions.
{
"url": "https://mycompany.atlassian.net",
"username": "user@example.com",
"api_token": "your_api_token",
"cloud": true
}
Environment variables take precedence over the config file:
| Variable | Description |
|---|---|
ATLASSIAN_URL |
Atlassian instance URL |
ATLASSIAN_USERNAME |
Your email address |
ATLASSIAN_API_TOKEN |
Your API token |
ATLASSIAN_CLOUD |
true (Cloud) or false (Server) |
Show current config (token redacted):
atlassian-cli config show
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Lint
ruff check atlassian_cli/
# Format
black atlassian_cli/
# Type check
mypy atlassian_cli/
Project Structure
atlassian-cli/
├── atlassian_cli/
│ ├── __init__.py
│ ├── main.py # CLI entry point & top-level commands
│ ├── config.py # Config file & env var management
│ ├── commands/
│ │ ├── jira_commands.py # All Jira subcommands
│ │ └── confluence_commands.py # All Confluence subcommands
│ └── utils/
│ ├── client.py # Atlassian API client factory
│ └── formatter.py # Output formatting helpers
├── tests/
│ └── test_cli.py # Full test suite
├── pyproject.toml
└── README.md
License
MIT
Metadata
Release files for python-atlassian-cli 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python_atlassian_cli-0.1.3.tar.gz | 23.4 kB | Details |
Release files / python_atlassian_cli-0.1.3.tar.gz
| Download URL | python_atlassian_cli-0.1.3.tar.gz |
|---|---|
| Size | 23.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2d6d3c44538a61f19ed24ad3a4b6d52b50a0f750f08091e1248f2b7a538c5f2c
|
|
BLAKE2b-256 checksum How to use checksums |
e03a7637e03ea90f9590dca35dbd4db5c8b272b6815af486f688f158bc921e81
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|