Provisional private workspace. Canonical binary family:
atl-*.
This repository designs and implements true-to-API Atlassian CLIs:
atl-jirafor Jiraatl-conffor Confluenceatl-bbfor Bitbucket Cloud
All three are implemented and share one command tree built in internal/cli.
The posture is inherited from bb, Auro's original Bitbucket Cloud CLI, with atl-bb as the unified-name successor: official API behavior first, deterministic targeting, structured output for agents, no fake parity when Atlassian does not expose a real API path.
All three CLIs are implemented and merged to main. The shared foundation
(root command, global flags, output rendering, config, auth, the raw api
escape hatch, offline resolve/browse) plus the per-product surfaces below
are complete; see docs/command-contract.md for the
exact command behavior and known limitations.
atl-jira—project,issue(view/list, create/edit/transition,assign/watch/unwatch/watchers,link+link types,workloglist/add,attachment,commentcreate/edit/delete),field list,search issues(JQL), andstatus.atl-conf—space,page(view/list/children/ancestors/versions plus create/edit/delete),blogpost(list/view/create/edit),page comment,page label,attachment(list/download/upload),search(CQL + text), andstatus. It is a mixed-version client (REST v2, with documented v1 fallbacks for CQL search, the current-user lookup, label writes, and attachment upload — see ADR 0004).atl-bb—repo(incl. create/delete),pr(incl. approve/decline/merge),pipeline(incl. stop/steps/log),issue(incl. update),workspace,project(incl. delete),commit,src/file,branch,tag,deployment,environment,search, andstatus, with built-in git-checkout repository inference.
Destructive verbs (repo delete, project delete, page delete, …) require an
explicit --yes (see ADR 0003).
Shared across every binary: version, auth, api, resolve, browse,
plus alias (command shorthands) and extension (gh-style <binary>-<name>
external commands). Output is human-readable by default and verbatim API JSON
under --json/--jq; list/search commands take --limit and --all
(follow all pages); tokens are stored in the OS keychain (or a 0600-mode
fallback file).
The phased build history (Phases 1–9 for the shared foundation and the Jira/Confluence MVPs and depth, then B0–B3c for the Bitbucket rewrite) is recorded in the archived phase plans under docs/archive/.
go test ./...
go run ./cmd/atl-jira project list --site work
go run ./cmd/atl-conf space list --site work
go run ./cmd/atl-conf search cql 'type = page' --site work
go run ./cmd/atl-conf page create --space DEV --title Notes \
--body '<p>hi</p>' --body-format storage --site work
go run ./cmd/atl-jira issue view PROJ-1 --site work --jq '.fields.status.name'
go run ./cmd/atl-bb repo view acme/widgets --site work --jsonTo skip the repeated --site, set a default once with
atl-jira auth default work (or export ATL_SITE=work); the flag still wins
when given. Resolution order is --site → ATL_SITE → default_site.
See docs/command-contract.md for the implemented command surface and known limitations, docs/auth-runbook.md for end-to-end authentication setup, and CONTRIBUTING.md for the development loop, PR workflow, and test-harness conventions.
Each release attaches one
archive per platform bundling all three binaries, plus checksums.txt. Download
the archive for your OS/arch, verify it, and put the binaries on your PATH —
no Go toolchain needed. Step-by-step (with checksum verification) is in
docs/consuming.md.
From a clone of this repo (Go 1.26+):
make install # go install all three binaries into $GOBIN
make build # or: write ./bin/atl-jira, ./bin/atl-conf, ./bin/atl-bb
go install ./cmd/atl-jira # or one at a timemake build and make install stamp version metadata into each binary via
-ldflags (reported by atl-* version); override it with
make build VERSION=1.2.0. Run make help for the full target list
(check, test, vet, fmt, lint, docs, clean); make check is the
pre-merge gate (fmt-check + compile + vet + test).
The per-command Markdown reference is generated on demand (not committed) with
make docs, which wraps go run ./cmd/gen-docs.
This is a private module.
go install <module>/cmd/atl-jira@latestworks only if your environment can fetch it (GOPRIVATEset plus repo access); from a local clone the commands above always work.
This repo also ships a reusable atlassian-cli skill for agents.
Install it from this repo with:
npx skills add https://github.com/aurokin/atlassian-cli --skill atlassian-cliYou can also inspect the skill directly in skills/atlassian-cli.
Start here — the living docs:
- docs/README.md — documentation index
- docs/command-contract.md — the implemented command surface
- docs/consuming.md — using the CLIs from scripts/agents: install, output/exit-code contract, pagination
- docs/auth-design.md / docs/auth-runbook.md — auth model and setup
- docs/token-scopes.md — starter scope sets for scoped API tokens
- docs/access-error-model.md — structured errors and exit codes
- docs/shared-architecture.md — how the three CLIs share a foundation
- docs/adr/ — architecture decision records (the why behind standing choices)
- docs/releasing.md — how releases are cut; docs/engineering-notes.md — contributor conventions and gotchas
- docs/integration-testing.md — the live integration suite
The completed phase plans, MVP specs, and the Bitbucket-rewrite arc are kept as historical records under docs/archive/.
- Keep Jira, Confluence, and Bitbucket as separate CLIs from the user's perspective.
- Do not over-abstract; promote shared shapes only once implementation has proven the seam (as was done for
internal/restutiland the sharedalias/extensioncommands). - Keep docs/command-contract.md current whenever a change alters command behavior.
- Never store real tokens, passwords, OAuth refresh tokens, cookies, or private credential files in this repo.
