atlasctl
v0.4.2
Published
Atlassian CLI for Confluence and Jira
Readme
atlasctl
CLI for Atlassian workflows: Confluence pages and Jira issues.
Features:
- Get a Confluence page with all comments and nested replies
- Create a Confluence page from markdown
- Create a Jira issue with markdown description (converted to ADF)
- Inline comment metadata included when available
Requirements
- Node.js 18+
Install
Global (from npm)
npm install -g atlasctlLocal development
Requires Bun for building and testing.
bun installRun directly:
bun run src/cli.ts --helpConfiguration
Config file path:
~/.atlasctl.jsonSet required values:
atlasctl config set site your-domain.atlassian.net
atlasctl config set email [email protected]
atlasctl config set apikey <atlassian-api-token>Or run guided setup for all required fields:
atlasctl config setGuided setup requires an interactive terminal.
Read values:
atlasctl config get site
atlasctl config get email
atlasctl config get apikeyNotes:
apikeyis always redacted when read (***hidden***).config showalso redactsapikey.
Commands
atlasctl config set
atlasctl config set <site|email|apikey> <value>
atlasctl config get <site|email|apikey>
atlasctl config show
atlasctl confluence page get <id-or-url> [--output <file>] [--pretty]
atlasctl confluence page create --space <key> --title <title> [--parent <id-or-url>] [--body <md>] [--body-file <file>] [--pretty]
atlasctl jira issue create --project <key> --summary <text> --type <name> [--description <md>] [--description-file <file>] [--priority <name>] [--labels <csv>] [--assignee <id>] [--pretty]
atlasctl --help
atlasctl --help-llm
atlasctl --versionGet a Confluence page
By page ID:
atlasctl confluence page get 22982787097 --prettyBy URL:
atlasctl confluence page get "https://your-domain.atlassian.net/wiki/spaces/ENG/pages/22982787097/Page+Title"Or write output to disk:
atlasctl confluence page get 22982787097 --output page.json --prettyCreate a Confluence page
Create a page in a space with markdown content:
atlasctl confluence page create --space ENG --title "My Page" --body "# Hello\n\nWorld" --prettyRead body from a file:
atlasctl confluence page create --space ENG --title "My Page" --body-file content.mdCreate as a child of an existing page:
atlasctl confluence page create --space ENG --title "Child Page" --parent 12345 --body "child content"The --parent option accepts a numeric page ID or a full Confluence page URL.
Body content can also be piped via stdin when neither --body nor --body-file is provided:
cat content.md | atlasctl confluence page create --space ENG --title "Piped Page"Returns JSON with id, title, space, and url.
Create a Jira issue
Create a task:
atlasctl jira issue create --project PROJ --summary "Fix login bug" --type Task --prettyWith a markdown description (converted to Atlassian Document Format automatically):
atlasctl jira issue create --project PROJ --summary "Add dark mode" --type Story \
--description "# Requirements\n\nSupport dark theme" --priority HighRead description from a file:
atlasctl jira issue create --project PROJ --summary "Detailed issue" --type Bug \
--description-file desc.mdWith labels and assignee:
atlasctl jira issue create --project PROJ --summary "Update deps" --type Task \
--labels "tech-debt,chore" --assignee 5b10ac8d82e05b22cc7d4ef5Returns JSON with key, id, url, and summary.
URL and site matching
When using a URL input, the URL host must match configured site.
Example mismatch error:
- URL host:
foo.atlassian.net - Config site:
bar.atlassian.net
The command will fail fast to avoid calling the wrong tenant.
Output shape
confluence page get returns JSON with:
page: core page metadata and body HTMLcomments: tree of comments and repliesmeta: fetch timestamp and total comment count
Inline comments include:
inlineContext.textSelectioninlineContext.markerRefinlineContext.resolved
Development
Run tests:
bun testOptional bundle build:
bun run buildPublish to npm
bun test
npm login
npm publish --access publicIf atlasctl is already taken on npm, switch to a scoped package name (for example @your-scope/atlasctl) while keeping the bin name as atlasctl.
