A token-efficient Jira integration for Claude Code that uses the Atlassian CLI (ACLI) instead of MCP tool schemas. Idle cost is ~80 tokens compared to ~24,500 for the official Rovo MCP — a 99.7% reduction.
Instead of injecting dozens of tool schemas into every message, this plugin provides Claude Code skills — markdown procedures that are loaded on-demand. Skills invoke acli commands via bash, so there is zero MCP overhead.
Two execution modes are available per session:
- Direct mode — Claude runs ACLI commands in the main conversation. Fast for quick one-off operations.
- Subagent mode — Claude delegates to a specialist agent in a separate context window. Keeps the main conversation clean for bulk or multi-step workflows.
- Claude Code CLI installed and configured
- A Jira Cloud instance you have access to (Jira Server and Data Center are not supported)
The plugin requires the Atlassian CLI (ACLI), the official Atlassian command-line tool:
brew tap atlassian/homebrew-acli && brew install acliOn Linux or Windows (WSL), see the ACLI documentation for alternative installation methods.
acli jira auth loginThis launches an interactive wizard that walks you through authentication. You can also use acli jira auth login --web to authenticate directly via your browser.
Don't have ACLI yet? That's fine — install the plugin first (step 3). A startup hook runs on every session and will tell you exactly what's missing and how to fix it. You can set up ACLI at any point; the plugin will detect it on the next session start or the first time you mention Jira.
Plugin installation is a two-step process — add the marketplace, then install the plugin from it.
From a local clone:
git clone https://github.com/jackhutson/jira-plugin.gitThen inside Claude Code:
/plugin marketplace add ./jira-plugin /plugin install jira@jira-marketplace From GitHub (no clone needed):
/plugin marketplace add jackhutson/jira-plugin /plugin install jira@jira-marketplace After installing, run /reload-plugins to load the skills.
Start a new Claude Code session. The plugin's startup hook automatically checks that ACLI is installed and authenticated — you'll see a warning with setup instructions if anything is missing.
You can also verify manually:
acli jira auth statusThe plugin checks for ACLI and valid authentication at two points:
- Session startup — A hook runs automatically when Claude Code starts (and on resume/clear/compact). If ACLI is missing or auth has expired, it injects a warning with copy-pasteable setup commands into the session context.
- First Jira use — The
jiraskill runsacli jira auth statusbefore doing any work. If something is wrong, Claude will tell you what to run — it never attempts to authenticate on your behalf.
This means you can safely install the plugin before ACLI. Everything degrades gracefully with actionable guidance.
The plugin provides six skills, loaded only when needed:
| Skill | Trigger examples | What it does |
|---|---|---|
| jira | Any Jira mention | Entry point — checks prereqs, selects mode, routes to workflow skills |
| jira-context | "Show me PROJ-123", "pull context" | Fetches ticket details, subtasks, and comments as structured markdown |
| jira-progress | "Start working on X", "mark as done", "blocked" | Transitions a ticket through workflow stages (start, review, done, block, reopen) |
| jira-work | "Work on PROJ-123", "pick up X" | Claims a ticket, loads context, does the work, updates Jira throughout |
| jira-decompose | "Break this spec into tickets" | Analyzes a spec/plan and proposes an epic + child ticket hierarchy |
| jira-workflow | "Configure workflow for PROJ" | Discovers project workflow statuses and caches them for future use |
Different Jira projects use different status names. The first time you use jira-progress or jira-work on a project, the plugin detects it's unconfigured and offers two discovery paths:
- Auto-discover — searches existing tickets to infer status names, proposes a mapping for your approval
- Rovo prompt — generates a prompt you paste into Jira's Rovo AI to get the full workflow definition
Discovered workflows are cached in config/workflows.json so discovery only runs once per project.
jira-plugin/ ├── .claude/ │ └── settings.local.json # Permissions whitelist for plugin tool access ├── .claude-plugin/ │ ├── plugin.json # Plugin metadata │ └── marketplace.json # Distribution config ├── agents/ │ └── jira-agent.md # Subagent for isolated ACLI execution ├── config/ │ ├── workflows.json.example # Seed template (copy to workflows.json) │ └── workflows.json # Your project workflow mappings (gitignored) ├── hooks/ │ ├── hooks.json # SessionStart hook registration │ ├── run-hook.cmd # Cross-platform hook wrapper │ └── session-start # Checks ACLI install & auth on startup ├── skills/ │ ├── jira/ # Entry skill: mode selection & routing │ ├── jira-context/ # Pull ticket context │ ├── jira-progress/ # Update ticket by workflow stage │ ├── jira-decompose/ # Break spec into tickets │ ├── jira-work/ # Claim & work a ticket end-to-end │ └── jira-workflow/ # Discover & configure workflows └── docs/ └── plans/ # Design & implementation documents Maps project keys to their Jira workflow statuses. Populated automatically by the jira-workflow skill. A seed template is provided at config/workflows.json.example — copy it to get started:
cp config/workflows.json.example config/workflows.jsonExample after discovery:
{ "projects": { "PL": { "statuses": { "start": "In Progress", "review": "In Review", "done": "Done", "block": "Blocked", "reopen": "To Do" } } } }You can edit this file manually if you prefer.
Permissions whitelist for the plugin's tool access (bash commands, web fetches to Atlassian domains). Installed with the plugin.
"ACLI not installed" — Run brew tap atlassian/homebrew-acli && brew install acli
"Authentication expired" — Run acli jira auth login
Transition fails with "status not found" — Your project may use custom status names. Run /jira:jira-workflow to re-discover and update the cached mapping.
Permission denied on hooks — Ensure the hook script is executable: chmod +x hooks/session-start
MIT