Atlassian CLI (acli)
acli is a real, installed command-line tool that talks to the user's actual Jira and
Confluence Cloud site. When a request touches Jira or Confluence, reach for acli instead
of speculating about what a ticket might say or asking the user to go look it up — you can
just look it up.
Every command has its own --help. Flags shift between acli releases, so if something in
this skill doesn't match reality, run acli <command> --help and trust that output over
this document.
Before doing anything
Check auth once per session, don't assume:
acli jira auth status
acli confluence auth status
If not authenticated, tell the user and run acli auth login (opens an OAuth browser
flow — this needs the user present, don't try to script around it).
Only one site is usually configured. If the user mentions a specific Atlassian site
and the auth status shows a different one, flag the mismatch rather than silently
querying the wrong site. Use acli auth switch / acli jira auth switch /
acli confluence auth switch if they have multiple accounts configured.
Don't guess IDs. Project keys, board IDs, sprint IDs, space keys, and space/page IDs
are all opaque numbers or short codes you can't reliably infer. Look them up first:
acli jira project list, acli jira board search, acli confluence space list, etc.
The one exception is a work item key the user already gave you (e.g. PROJ-123).
General patterns that apply everywhere
- Add
--json when you need to parse the output yourself (e.g. to extract a field or
feed it into another command). Skip it when just relaying a quick answer to the user —
the default table/text output is often more readable for that.
- Add
--web to open something in the browser instead of printing it, when the user
wants to look at something rather than have you summarize it.
- Bulk/targeting flags are consistent across
jira workitem subcommands: most of
assign, edit, transition, clone, and comment accept a target via --key "KEY-1,KEY-2", --jql "...", or --filter <id> — pick whichever the user's request
naturally maps to (a JQL query for "all bugs in PROJ assigned to me", explicit keys for
"these three tickets").
- Mutating/bulk commands prompt for confirmation unless you pass
--yes (or -y).
Only pass --yes for actions the user has clearly already approved (e.g. they explicitly
asked you to transition/assign/delete something) — for anything destructive or
irreversible (delete, archive), state exactly what you're about to do first if there's
any ambiguity about scope, especially for JQL/filter-based bulk targeting where the
affected set isn't obvious from the command alone.
- JQL is the query language for Jira search (
--jql on workitem search, edit,
assign, transition, clone, sprint list-workitems). See
references/jql.md for a cheat sheet if you're unsure of the syntax.
Jira quick reference
Full command tree and flags: references/jira.md. The most common operations:
| Task |
Command |
| Find/search tickets |
acli jira workitem search --jql "..." |
| View one ticket |
acli jira workitem view KEY-123 |
| Create a ticket |
acli jira workitem create --project KEY --type Task --summary "..." |
| Edit fields |
acli jira workitem edit --key KEY-123 --summary "..." |
| Change status |
acli jira workitem transition --key KEY-123 --status "Done" |
| Comment |
acli jira workitem comment create --key KEY-123 --body "..." |
| Assign |
acli jira workitem assign --key KEY-123 --assignee "@me" |
| Link two items |
acli jira workitem link create --out KEY-1 --in KEY-2 --type Blocks |
| List projects |
acli jira project list |
| List/search boards |
acli jira board search --project KEY |
| Sprint details / items |
acli jira sprint view --id N / acli jira sprint list-workitems --board N --sprint N |
A few things worth knowing before you reach for them:
workitem create supports --from-json/--generate-json for structured/bulk-ish input,
and create-bulk exists separately for creating many issues at once from CSV/JSON.
--assignee "@me" self-assigns; --assignee default resets to the project default.
- Descriptions and comment bodies accept plain text or full Atlassian Document Format
(ADF) JSON if the user needs rich formatting.
Confluence quick reference
Full command tree and flags: references/confluence.md. The most common operations:
| Task |
Command |
| Find spaces |
acli confluence space list |
| Create a space |
acli confluence space create --key KEY --name "..." |
| View a page |
acli confluence page view --id 123456789 |
| List/create blog posts |
acli confluence blog list --space-id N / acli confluence blog create --space-id N --title "..." --body "..." |
Important gap: as of the currently installed acli version, confluence page only
supports view — there is no page create or page update subcommand. If the user wants
to create or edit a Confluence page (not a blog post), don't fabricate a command for it.
Tell them acli doesn't support page authoring yet, run acli confluence page --help to
confirm whether that's still true (acli gets new subcommands regularly), and fall back to
pointing them at the Confluence web UI, or asking if a blog post (acli confluence blog create) would work instead.
Output formats
Most search/list commands support --json and often --csv in addition to the default
human-readable table. When the user wants to pipe results somewhere else, save them to a
file, or you need to extract specific fields programmatically, use --json and parse it
rather than scraping the table output.
1---2name: atlassian-cli3description: Use the `acli` (Atlassian CLI) tool to look up, search, create, edit, comment on, transition, or link Jira work items (issues/tickets/bugs/stories/epics), sprints, boards, and projects, and to view, create, or list Confluence pages, blogs, and spaces. Trigger this skill any time the user mentions Jira, Confluence, a ticket/issue key like "PROJ-123", sprints, boards, JQL, or wants to check/update/report on work tracked in Atlassian tools — even if they don't say "acli" or "CLI" explicitly, e.g. "what's the status of PROJ-123", "assign this bug to me", "list my open tickets", "find the Confluence page about onboarding". Prefer this over guessing at a REST API call or telling the user to check the web UI themselves.4---56# Atlassian CLI (acli)78`acli` is a real, installed command-line tool that talks to the user's actual Jira and9Confluence Cloud site. When a request touches Jira or Confluence, reach for `acli` instead10of speculating about what a ticket might say or asking the user to go look it up — you can11just look it up.1213Every command has its own `--help`. Flags shift between acli releases, so if something in14this skill doesn't match reality, run `acli <command> --help` and trust that output over15this document.1617## Before doing anything18191. **Check auth once per session**, don't assume:20 ```21 acli jira auth status22 acli confluence auth status23 ```24 If not authenticated, tell the user and run `acli auth login` (opens an OAuth browser25 flow — this needs the user present, don't try to script around it).26272. **Only one site is usually configured.** If the user mentions a specific Atlassian site28 and the auth status shows a different one, flag the mismatch rather than silently29 querying the wrong site. Use `acli auth switch` / `acli jira auth switch` /30 `acli confluence auth switch` if they have multiple accounts configured.31323. **Don't guess IDs.** Project keys, board IDs, sprint IDs, space keys, and space/page IDs33 are all opaque numbers or short codes you can't reliably infer. Look them up first:34 `acli jira project list`, `acli jira board search`, `acli confluence space list`, etc.35 The one exception is a work item key the user already gave you (e.g. `PROJ-123`).3637## General patterns that apply everywhere3839- **Add `--json` when you need to parse the output yourself** (e.g. to extract a field or40 feed it into another command). Skip it when just relaying a quick answer to the user —41 the default table/text output is often more readable for that.42- **Add `--web` to open something in the browser** instead of printing it, when the user43 wants to *look at* something rather than have you summarize it.44- **Bulk/targeting flags are consistent across `jira workitem` subcommands**: most of45 `assign`, `edit`, `transition`, `clone`, and `comment` accept a target via `--key46 "KEY-1,KEY-2"`, `--jql "..."`, or `--filter <id>` — pick whichever the user's request47 naturally maps to (a JQL query for "all bugs in PROJ assigned to me", explicit keys for48 "these three tickets").49- **Mutating/bulk commands prompt for confirmation** unless you pass `--yes` (or `-y`).50 Only pass `--yes` for actions the user has clearly already approved (e.g. they explicitly51 asked you to transition/assign/delete something) — for anything destructive or52 irreversible (delete, archive), state exactly what you're about to do first if there's53 any ambiguity about scope, especially for JQL/filter-based bulk targeting where the54 affected set isn't obvious from the command alone.55- **JQL is the query language for Jira search** (`--jql` on `workitem search`, `edit`,56 `assign`, `transition`, `clone`, `sprint list-workitems`). See57 `references/jql.md` for a cheat sheet if you're unsure of the syntax.5859## Jira quick reference6061Full command tree and flags: `references/jira.md`. The most common operations:6263| Task | Command |64|---|---|65| Find/search tickets | `acli jira workitem search --jql "..."` |66| View one ticket | `acli jira workitem view KEY-123` |67| Create a ticket | `acli jira workitem create --project KEY --type Task --summary "..."` |68| Edit fields | `acli jira workitem edit --key KEY-123 --summary "..."` |69| Change status | `acli jira workitem transition --key KEY-123 --status "Done"` |70| Comment | `acli jira workitem comment create --key KEY-123 --body "..."` |71| Assign | `acli jira workitem assign --key KEY-123 --assignee "@me"` |72| Link two items | `acli jira workitem link create --out KEY-1 --in KEY-2 --type Blocks` |73| List projects | `acli jira project list` |74| List/search boards | `acli jira board search --project KEY` |75| Sprint details / items | `acli jira sprint view --id N` / `acli jira sprint list-workitems --board N --sprint N` |7677A few things worth knowing before you reach for them:78- `workitem create` supports `--from-json`/`--generate-json` for structured/bulk-ish input,79 and `create-bulk` exists separately for creating many issues at once from CSV/JSON.80- `--assignee "@me"` self-assigns; `--assignee default` resets to the project default.81- Descriptions and comment bodies accept plain text or full Atlassian Document Format82 (ADF) JSON if the user needs rich formatting.8384## Confluence quick reference8586Full command tree and flags: `references/confluence.md`. The most common operations:8788| Task | Command |89|---|---|90| Find spaces | `acli confluence space list` |91| Create a space | `acli confluence space create --key KEY --name "..."` |92| View a page | `acli confluence page view --id 123456789` |93| List/create blog posts | `acli confluence blog list --space-id N` / `acli confluence blog create --space-id N --title "..." --body "..."` |9495**Important gap:** as of the currently installed acli version, `confluence page` only96supports `view` — there is no `page create` or `page update` subcommand. If the user wants97to create or edit a Confluence *page* (not a blog post), don't fabricate a command for it.98Tell them acli doesn't support page authoring yet, run `acli confluence page --help` to99confirm whether that's still true (acli gets new subcommands regularly), and fall back to100pointing them at the Confluence web UI, or asking if a blog post (`acli confluence blog101create`) would work instead.102103## Output formats104105Most search/list commands support `--json` and often `--csv` in addition to the default106human-readable table. When the user wants to pipe results somewhere else, save them to a107file, or you need to extract specific fields programmatically, use `--json` and parse it108rather than scraping the table output.