npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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 atlasctl

Local development

Requires Bun for building and testing.

bun install

Run directly:

bun run src/cli.ts --help

Configuration

Config file path:

~/.atlasctl.json

Set 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 set

Guided setup requires an interactive terminal.

Read values:

atlasctl config get site
atlasctl config get email
atlasctl config get apikey

Notes:

  • apikey is always redacted when read (***hidden***).
  • config show also redacts apikey.

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 --version

Get a Confluence page

By page ID:

atlasctl confluence page get 22982787097 --pretty

By 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 --pretty

Create 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" --pretty

Read body from a file:

atlasctl confluence page create --space ENG --title "My Page" --body-file content.md

Create 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 --pretty

With 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 High

Read description from a file:

atlasctl jira issue create --project PROJ --summary "Detailed issue" --type Bug \
  --description-file desc.md

With labels and assignee:

atlasctl jira issue create --project PROJ --summary "Update deps" --type Task \
  --labels "tech-debt,chore" --assignee 5b10ac8d82e05b22cc7d4ef5

Returns 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 HTML
  • comments: tree of comments and replies
  • meta: fetch timestamp and total comment count

Inline comments include:

  • inlineContext.textSelection
  • inlineContext.markerRef
  • inlineContext.resolved

Development

Run tests:

bun test

Optional bundle build:

bun run build

Publish to npm

bun test
npm login
npm publish --access public

If atlasctl is already taken on npm, switch to a scoped package name (for example @your-scope/atlasctl) while keeping the bin name as atlasctl.