Jira Claude Code Integration
Automate your entire dev workflow â from Jira issue to merged PR â inside Claude Code. Jira ìŽìë¶í° PR ìë£ê¹ì§ ì ëšê³ ìëí íë¬ê·žìž.
Ask AI about Jira Claude Code Integration
Powered by Claude · Grounded in docs
I know everything about Jira Claude Code Integration. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
jira-integration · Claude Code Plugin
[English] | íêµìŽ
Automate your entire dev workflow â from Jira issue to merged PR â inside Claude Code.
Why This Plugin?
Most Jira + AI tools stop at CRUD (read/create/update issues). This plugin automates the entire development lifecycle: approach â implementation â testing â review â PR â done, with every step synced back to Jira automatically.
| This Plugin | Atlassian Official AI | netresearch/jira-skill | |
|---|---|---|---|
| Jira MCP integration | â | â | â Python scripts |
| Full PDCA lifecycle | â | â code gen only | â CRUD only |
| Multi-worktree batch setup | â | â | â |
| Auto Jira status transitions | â | â | manual |
| Approach / Test docs | â | â | â |
| Approach-Impl gap analysis | â | â | â |
| Iterative review (auto-fix + retry) | â | â | â |
| Progress tracking across sessions | â | â | â |
Workflow
graph LR
DSC["/jira-task discover\nTopic â requirements doc"] -.-> N["/jira-task create\nNew issue + sub-tasks"]
N -.-> A["/jira-task init\nBatch worktree setup"]
A --> B["/jira-task start\nIn Progress"]
B --> C["/jira-task approach\nApproach doc (L1/L2/L3)"]
C --> E["/jira-task impl\nImplement"]
E --> F["/jira-task test\nE2E + unit tests"]
F --> G["/jira-task review\nGap analysis + review"]
G --> H["/jira-task merge\nLocal merge"]
H --> I["/jira-task pr\nCreate GitHub PR"]
I --> J["/jira-task done\nDone"]
AUTO["â¡ /jira-task auto\nstartâreview (auto)"]
style DSC fill:#A0522D,color:#fff
style N fill:#8B4513,color:#fff
style A fill:#2B50D4,color:#fff
style J fill:#156030,color:#fff
style AUTO fill:#7B2D8B,color:#fff
Discover (optional first step):
/jira-task discover "<topic>"turns a free-form topic into a structureddocs/requirements/<slug>.requirements.md, which/jira-task create --from-requirements <file>can then consume to bulk-register Epic/Story/Sub-tasks.
Shortcut:
/jira-task auto <ID>runsstart â approach â impl â test â reviewautomatically. Each step runs as an isolated sub-agent, and already-completed steps are skipped. If review fails, it auto-fixes and retries (up to 2Ã).
Each step automatically posts a comment and/or attachment to the Jira issue and transitions its status.
Key Features
Interactive Issue Creation (v0.12.0)
/jira-task create [hint] registers a brand-new Jira issue from conversation context. If context is thin, it asks a few batched questions; if the scope warrants it, it proposes a sub-task breakdown (with Blocks links for dependencies so downstream init can auto-detect ready-to-start sub-tasks). Supports linking to an existing epic.
- No raw
jira_create_issuefootguns: the skill encodes the exactmcp-atlassianschema (e.g.additional_fieldsis a JSON string,parentis a bare key,priorityis{"name": "..."},componentsis a CSV string,assigneemust be top-level). - Auto sub-task decision: the skill judges whether to split based on scope; no flag needed.
- Silent-skip guard: re-fetches created issues to verify priority/labels actually landed (unknown
additional_fieldskeys are otherwise dropped with only a warning).
Auto Mode (v0.9.0)
/jira-task auto PROJ-123 runs the full start â approach â impl â test â review pipeline automatically.
- Sub-agent isolation: Each step runs as an independent sub-agent, preventing context pollution between stages.
- Iterative review: When review finds issues (gap analysis or code quality), auto-fix â test â review retries up to 2 times before stopping.
- Smart resume: Already-completed steps are skipped based on
.jira-context.json. - Scope boundary:
merge,pr,doneare excluded (cross-worktree / externally visible actions require manual confirmation).
Interactive Setup Wizard (v0.6.0)
/jira setup guides you through prerequisites (uv, Python 3.10+), credential collection, MCP server registration, and connection validation â no manual CLI commands needed.
Multi-Worktree Parallel Development (v0.7.0)
/jira-task init supports three argument modes: count (init 5 â bulk setup), issue key (init PROJ-123 â sub-task analysis), or natural language (init "auth êŽë š ìì
" â filtered search). Creates isolated git worktrees for each task.
Document Auto-generation
Generates requirements / approach / test report / review / PR description documents from dedicated templates under templates/, then immediately posts them as Jira attachments and comments via scripts/jira-attach.sh. No copy-paste required.
Reviewer Calibration Log (v0.22.x)
Each /jira-task review run appends a structured entry to docs/review-log/ (redacted per the project's policy). scripts/analyze-review-log.py aggregates pass/fail rates and recurring findings over time so reviewer behavior doesn't silently drift toward self-praise.
Status Transition Automation
start â In Progress, merge â In Review, done â Done. Jira stays up to date without opening a browser.
Approach-Impl Gap Analysis
/jira-task review compares your approach document against actual code changes and flags discrepancies alongside code quality issues.
Session Continuity
Progress is tracked in .jira-context.json. Reopen Claude Code anytime and see exactly where you left off:
Progress: init â â start â â approach â â impl â test â review â merge â pr â done
Prerequisites
| Requirement | Required | Purpose |
|---|---|---|
| Claude Code | Yes | CLI environment |
| Python 3.10+ + uv | Yes | Run MCP server (uvx mcp-atlassian) |
| Git | Yes | Branch / worktree management |
| Jira Cloud account + API Token | Yes | Jira integration |
GitHub CLI (gh) | PR step only | Create GitHub PRs |
Quick Start
# 1. Install the plugin
claude plugin marketplace add mzd-hseokkim/jira-claude-code-integration
claude plugin install jira-integration@jira-claude-code-integration
# 2. Register the Atlassian MCP server
claude mcp add atlassian \
-e JIRA_URL=https://your-domain.atlassian.net \
-e JIRA_USERNAME=your-email@company.com \
-e JIRA_API_TOKEN=your-api-token \
-e JIRA_PROJECTS_FILTER=PROJ \
-- uvx mcp-atlassian
# 3. Verify connection
claude
> /jira
# 4a. (Optional) Create a brand-new issue interactively
> /jira-task create auth 몚ëì OTP 2ì°š ìžìŠ ì¶ê° # â parent + sub-tasks + Blocks links
# 4b. Fetch your top tasks and set up worktrees
> /jira-task init 5
# 5a. Auto mode â run the full pipeline in one command
> cd ../your-project_worktree/PROJ-123
> /jira-task auto # start â approach â impl â test â review
# 5b. Or step-by-step (TASK-ID is auto-detected from branch/directory)
> /jira-task start # Transition to In Progress
> /jira-task approach # Generate approach doc (L1/L2/L3)
> /jira-task impl # Implement based on approach
> /jira-task test # Run tests + post report to Jira
> /jira-task review # Gap analysis + code review
> /jira-task merge # Merge locally (choose strategy)
# 6. Back in the main repo
> cd ../your-project
> /jira-task pr # Push branch + create GitHub PR
> /jira-task done # Transition to Done + post summary
Setup
Step 1: Install the Plugin
claude plugin marketplace add mzd-hseokkim/jira-claude-code-integration
claude plugin install jira-integration@jira-claude-code-integration
# For local dev / testing:
claude --plugin-dir /path/to/jira-claude-code-integration
Tip: Instead of running
claude mcp addmanually, you can use the interactive wizard after installing the plugin:> /jira setupThe wizard checks prerequisites, collects your credentials, registers the MCP server, and validates the connection.
Step 2: Create a Jira API Token
- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Click "Create API token"
- Enter a label (e.g.
claude-code) â Create - Copy the token (shown only once)
Step 3: Register the MCP Server
claude mcp add atlassian \
-e JIRA_URL=https://your-domain.atlassian.net \
-e JIRA_USERNAME=your-email@company.com \
-e JIRA_API_TOKEN=your-api-token \
-e JIRA_PROJECTS_FILTER=PROJ \
-- uvx mcp-atlassian
This saves credentials to .claude/settings.local.json. Add it to .gitignore:
.claude/settings.local.json
| Variable | Required | Description |
|---|---|---|
JIRA_URL | Yes | Jira Cloud URL (no trailing /) |
JIRA_USERNAME | Yes | Atlassian account email |
JIRA_API_TOKEN | Yes | API token from Step 2 |
JIRA_PROJECTS_FILTER | No | Comma-separated project keys (e.g. PROJ,DEV) |
Step 4: Verify Connection
claude
> /jira
Commands
| Command | Run from | Description |
|---|---|---|
/jira | anywhere | Connection status + help |
/jira setup | anywhere | Interactive setup wizard (prerequisites â credentials â MCP registration â validation) |
/jira-task discover [topic] | anywhere | Turn a free-form topic into a requirements doc (docs/requirements/<slug>.requirements.md) for /jira-task create --from-requirements |
/jira-task create [hint] | anywhere | Interactively create a new Jira issue with optional sub-tasks, dependency links, and epic linking |
/jira-task init [N|KEY|desc] | main repo | Fetch tasks + create worktrees (count, issue key, or natural language) |
/jira-task auto <ID> | worktree | Auto-run full pipeline with sub-agent isolation + iterative review |
/jira-task start [ID] | worktree | Start task (branch, In Progress) |
/jira-task approach [ID] | worktree | Generate docs/approach/<ID>.approach.md (L1/L2/L3 level-aware; replaces plan+design) |
/jira-task impl [ID] | worktree | Implement based on approach doc |
/jira-task test [ID] | worktree | Run tests + post report to Jira |
/jira-task review [ID] | worktree | Gap analysis + code review â Jira |
/jira-task merge [ID] | worktree | Merge locally (strategy: ff/squash/rebase) |
/jira-task pr [ID] | main repo | Push branch + create GitHub PR |
/jira-task done [ID] | main repo | Transition Done + post summary |
/jira-task clean <ID...>|--all|--list | main repo | Remove worktree, delete branch, clean MCP config + context |
/jira-task report | anywhere | My assigned issues status report |
/jira-task status | anywhere | Current active task status |
TASK-ID Auto-detection
When working inside a worktree, [ID] can be omitted. It is resolved in this order:
- Git branch name:
feature/PROJ-123âPROJ-123 - Current directory name matching
[A-Z]+-\d+ .jira-context.jsonactive task ID
Project Structure
jira-claude-code-integration/
âââ .claude-plugin/
â âââ plugin.json # Plugin manifest
â âââ marketplace.json
âââ CLAUDE.md # Claude behavior instructions
â
âââ commands/
â âââ jira.md # /jira
â âââ jira-task.md # /jira-task (router)
â âââ dashboard.md # /dashboard (alias of /jira dashboard)
â
âââ skills/ # One SKILL.md per workflow step
â â # Heavy SKILLs use refs/ for split details:
â â # skills/<name>/refs/<topic>.md is loaded
â â # on demand by Read, not into the system
â â # prompt. See SKILL bodies for explicit
â â # `Read skills/<name>/refs/...` calls.
â âââ _shared/ # script-lookup.md ë± ê³µì© ì€ëí«
â âââ jira-setup/ # interactive setup wizard
â âââ jira-dashboard/ # /jira dashboard ëŒì°í
SKILL
â âââ jira-task-discover/ # topic â requirements doc
â â âââ refs/ # conflict-detection / synthesis-confirm / trace-markers
â âââ jira-task-create/ # interactive issue creation
â â âââ refs/ # mcp-schema / from-requirements-mode
â âââ jira-task-init/
â â âââ refs/ # issue-key-mode / worktree-creation
â âââ jira-task-auto/ # auto-run full pipeline
â âââ jira-task-start/
â âââ jira-task-approach/ # level-aware approach doc (replaces plan+design)
â âââ jira-task-impl/
â âââ jira-task-test/
â âââ jira-task-review/ # heavy logic extracted to scripts/append-review-log.py
â âââ jira-local-merge/
â âââ jira-task-pr/
â âââ jira-task-done/
â âââ jira-task-clean/
â âââ jira-task-report/
â
âââ agents/ # Subagent definitions
â âââ jira-reviewer.md # Gap analysis + code quality (forced delegation, opus)
â
âââ hooks/ # Session event hooks
â âââ hooks.json
â âââ scripts/
â âââ session-start.js # Show active task on startup
â âââ stop-sync.js # Remind to sync Jira on exit
â âââ dashboard-ingest.sh # Forward UserPromptSubmit/PreToolUse/PostToolUse/SubagentStop/Notification â POST /ingest
â âââ dashboard-ingest.test.sh # Unit test for dashboard-ingest.sh
â âââ stop-ingest.sh # Forward Stop event (extracts last assistant text from transcript)
â âââ phase-gate.js # Phase dependency hook (disabled by default)
â âââ phase-gate.config.json
â âââ phase-gate.test.js
â âââ phase-gate.scenarios.test.js
â
âââ scripts/ # Helper scripts invoked by skills
â âââ jira-attach.sh # Upload attachments via Jira REST API
â âââ jira-context-update.py # merge/done: completedSteps/status ëêž°í
â âââ clean-worktree.py # Worktree/branch cleanup helper
â âââ cleanup-worktree-mcp.py # done: worktree ëšì MCP config ì 늬
â âââ analyze-review-log.py # Reviewer calibration log analyzer
â âââ append-review-log.py # /jira-task review: append entry to review-log
â âââ append-review-log-wrapper.sh # review SKILL â append-review-log.py wrapper
â âââ propagate-mcp-config.sh # /jira-task init: propagate MCP config to worktree
â âââ dashboard-control.sh # /jira dashboard start/stop/status/setup ì ìŽ
â âââ dashboard/ # Dashboard ìë² + React SPA ìì€
â âââ review_log/ # Stored reviewer calibration entries
â
âââ templates/ # Document templates per workflow step
â âââ requirements.template.md
â âââ approach.template.md
â âââ test-report.template.md
â âââ review.template.md
â âââ pr-description.template.md
â âââ report.template.md
â
âââ docs/ # Plugin reference docs
â âââ mcp-atlassian-tools.md # Tool reference for the Atlassian MCP server
â âââ review-log/ # Review log schema + sample entries
â # (PDCA outputs approach/test/review/
â # requirements are gitignored as
â # per-task artifacts)
â
âââ tests/ # Python tests for analyze-review-log
âââ test_analyze_review_log.py
âââ fixtures/
Phase Gate (ì€íì â íì¬ ë¹íì±í)
/jira-task ëšê³ ížì¶ ìì륌 ê°ì íë PreToolUse hookìŽ ìœëë² ìŽì€ì í¬íšëìŽ ìì§ë§, Ʞ볞ì ìŒë¡ ë¹íì±í ìíì
ëë€. íì±ííë €ë©Ž ëª
ìì ìŒë¡ hookì ë±ë¡íŽìŒ í©ëë€.
구íë ê² (Phase 1.2.1 ~ 1.2.4)
hooks/scripts/phase-gate.config.jsonâ 12 phase ì졎 ê·žëí + artifact íšíŽhooks/scripts/phase-gate.jsâ Node hook ì€í¬ëŠœíž (ìì¡Žì± ë¯žì¶©ì¡± ì ì°šëš, fail-open ì€ê³)hooks/scripts/phase-gate.test.js,phase-gate.scenarios.test.jsâ ëšì 20 + ìëëŠ¬ì€ 5 í ì€íž- bypass ë©ì»€ëìŠ:
JIRA_PHASE_GATE_BYPASS=1(1íì±),.jira-context.jsonìbypassGate: true(ìì)
ì ë¹íì±í ìíìžê°
ìŽ íë¬ê·žìžì 볞ë "ìíë ëšê³ë§ ê³šëŒ ì°ë ë구íš"ìŒë¡ ì€ê³ëììµëë€ (ìì fixë approach ìëµ, 묞ì ìì ì impl ìëµ ë±). phase-gate륌 ìŒë©Ž 몚ë ìžì ëšê³ê° ê°ì ì í ì¡°ê±ŽìŽ ëìŽ ìŽ ì ì°ì±ì 깚ëšëŠœëë€. ë°ëŒì ê°ì ì í ìí¬íë¡ë¥Œ ìíë íë§ ëª ìì ìŒë¡ 쌀 ì ìëë¡ ë¹íì±í ìíë¡ ë¡ëë€.
íì±í ë°©ë²
hooks/hooks.jsonì hooks ê°ì²Žì ë€ì í목ì ì¶ê°íìžì:
"PreToolUse": [
{
"matcher": "Skill",
"hooks": [
{
"type": "command",
"command": "node ${CLAUDE_PLUGIN_ROOT}/hooks/scripts/phase-gate.js",
"timeout": 5
}
]
}
]
컀ì€í°ë§ìŽìŠ
phase-gate.config.jsonì ížì§íŽ ì졎ì±ì ìííê±°ë(requires ë¹ì°êž°), íì artifact륌 ë°êŸžê±°ë, í¹ì ëšê³ë¥Œ enforced: falseë¡ ë ì ììµëë€.
í ì€íž ì€í
npm test # unit 20 + scenarios 5
Worktree Layout
workspace/
âââ your-project/ â main repo (base branch)
âââ your-project_worktree/ â created by /jira-task init
âââ PROJ-101/ â feature/PROJ-101 branch
âââ PROJ-102/
âââ PROJ-103/
Multi-Worktree Merge Strategy
When multiple tasks touch the same files, merging in the wrong order causes conflicts.
Check for file overlap at design time
ââ No overlap â PR in any order
ââ Overlap (independent releases) â Sequential rebase-and-merge
ââ Overlap (release together) â Integration branch strategy
Check before starting implementation:
git diff --name-only main feature/PROJ-101
git diff --name-only main feature/PROJ-102
Available merge strategies when running /jira-task merge:
| Strategy | Description | Equivalent GitHub option |
|---|---|---|
--no-ff (default) | Merge commit, preserves branch history | Create a merge commit |
--squash | Squash all commits into one | Squash and merge |
rebase | Linear history, no merge commit | Rebase and merge |
Troubleshooting
"Atlassian MCP server not connected"
claude mcp list # Check registered servers
claude mcp get atlassian # Verify env vars
uvx mcp-atlassian # Test server directly (Ctrl+C to stop)
pip install uv # Install uv if missing
"Transition failed"
"Show available transitions for PROJ-123"
Transition names vary by Jira workflow. Common names: To Do, In Progress, In Review, Done.
"Authentication failed"
- Verify
JIRA_USERNAMEmatches your Atlassian account email exactly - Confirm
JIRA_URLhas no trailing/ - Check if the API token has expired
"gh CLI not found"
# macOS
brew install gh && gh auth login
# Windows
winget install GitHub.cli && gh auth login
Worktree creation failed
git rev-parse --git-dir # Confirm you're in a git repo
git branch -a | grep feature/ # Check for existing branches
git worktree prune # Clean stale worktree refs
Dashboard
A real-time activity monitor for every Claude Code worktree in your workspace. Hook events from each session (user prompts, tool calls, sub-agent lifecycle, final responses) stream into a browser UI via SSE so you can see at a glance which session is busy, which is waiting on you, and what each one just answered.
Quick Start (ìíŽëŠ)
Claude Code ììì ì¬ëì 컀맚ë í ì€ë¡ Dashboard륌 ììí ì ììµëë€:
/jira dashboard
첫 ì€í ì npm ìì¡Žì± ì€ì¹ì UI ë¹ë륌 ìëìŒë¡ ìíí ë€ ìë²ë¥Œ êž°ëí©ëë€. ë ë²ì§ž ìŽí ì€íë¶í°ë ìºì ê°ì§ë¡ setupì 걎ëë°ê³ ë°ë¡ ììí©ëë€.
| 컀맚ë | ëì |
|---|---|
/jira dashboard | ìí íìž â stoppedìŽë©Ž ìë setup+start |
/jira dashboard start | Dashboard ìì |
/jira dashboard stop | Dashboard ì€ì§ |
/jira dashboard status | íì¬ ìí ì¡°í (URL/PID/ìì ìê°) |
/jira dashboard setup | npm ìì¡Žì± ì€ì¹ ë° UI ë¹ëë§ ìí |
ìë²ë http://127.0.0.1:8765ì ë°ìžë©ë©ëë€.
ìë ì€í (Troubleshooting)
ì¬ëì 컀맚ë ììŽ ì§ì ì€ííŽìŒ íë 겜ì°:
# 1) Install root deps (express, chokidar)
npm install
# 2) Install web deps and build the SPA bundle into scripts/dashboard/public/
npm --prefix scripts/dashboard/web install
npm --prefix scripts/dashboard/web run build
# 3) Start the dashboard server
npm run dashboard
# or: node scripts/dashboard/server.js
After the first build, daily use is just npm run dashboard. Re-run the build step whenever the React source changes.
The server binds to http://127.0.0.1:8765 and opens your default browser automatically.
DASHBOARD_NO_OPEN=1 npm run dashboard # suppress auto-open (CI / headless)
PORT=9000 npm run dashboard # override default port
What you see on each card
- Header â Jira task id (or directory name when no Jira context), issue type, outlined status badge with leading dot (Jira workflow status, distinct from agent activity),
â Ncumulative tool calls in this session,Xë¶ ì last activity, and badges forâµ ìëµ ëêž°/stale/â blocked à N. - SDLC stepper â One chip per
/jira-taskstep (init/start/approach/impl/test/review/merge/pr/done) coloured bycompletedStepsin.jira-context.json. Skipped intermediate steps afterdoneare shown with strikethrough. - Activity panel â Last prompt, Last response (final concluding line of Claude's reply), current tool-in-flight, sub-agent indicator, and a blocked flag. Prompt/response signals are persisted on the server independent of the activity ring buffer so they survive long tool-call bursts.
- Issue links â Below the meta row,
blocks/blocked bychips show related issue keys. Open blockers are highlighted; resolved ones are struck through. - Card border state:
- Blue glow + pulse = busy. Defined as "a
UserPromptSubmitevent without a matchingStopyet" â i.e. Claude is generating right now. Time-independent. - Amber glow + pulse + ìëµ ëêž° badge = busy and most recent
Notificationmentions permission/input/waiting. - Red left stripe +
â blockedbadge = at least one un-resolvedis blocked bylink. - Dim +
stalebadge = Jira status is ìë£ but the worktree still exists (cleanup candidate).
- Blue glow + pulse = busy. Defined as "a
- Header bar (KITT) â Top of viewport scans left-right while connected (SSE live). The connection chip in the top-right fills bottom-up to indicate countdown to the next jira-collector poll.
- Sort & filter â Header has chips for sort key (activity / taskId / summary) and a search field that matches taskId / summary / branch / path.
- View toggle: Cards â Graph (v0.30.x) â Header has a Cards / Graph toggle. Graph mode renders worktrees as a force-directed graph (react-flow + d3-force) showing
blocks/parent/epicrelationships with color-coded edges, marching-ants flow direction, and arrow markers. Parent/epic edges anchor the hierarchy (parent on top, children below); blocks edges connect siblings. Click a node â side panel with the full WorktreeCard. Drag a node â it pins in place (simulation won't drag it back). Status/assignee chip filters dim non-matches; isolated nodes get a dashed border; cycle members get heavier red dashes. - Cleanup button (v0.30.x) â Cards in
stalestate (Jiraìë£but worktree alive) get að ì 늬floating button on hover at the bottom-right. Click â confirm â server runsgit worktree remove+git branch -d. Backend safety: only registered worktrees, only when status is done, dirty trees rejected, branch name read from store (no body injection). - Cards without Jira context (e.g. main repo while running
/jira dashboard) show only directory + path + activity, with stepper and Jira-only fields hidden.
Hooks
Hook events are wired in hooks/hooks.json, forwarded by two small scripts in hooks/scripts/ to POST /ingest, then broadcast via SSE:
| Hook | Forwarder | Used for |
|---|---|---|
UserPromptSubmit | dashboard-ingest.sh | Last prompt + busy detection |
PreToolUse | dashboard-ingest.sh | Current tool, tool-call counter |
PostToolUse | dashboard-ingest.sh | Closes a tool-in-flight marker |
SubagentStop | dashboard-ingest.sh | Sub-agent active indicator |
Notification | dashboard-ingest.sh | Awaiting / blocked detection |
Stop | stop-ingest.sh | Last response preview (reads transcript_path) |
Each ingest is mapped to a worktree path and Jira task id via .jira-context.json. SessionStart and Stop also drive non-dashboard side-effects (Jira context injection, end-of-session reminder) â those forwarders are independent.
Logs
Log file: <workspaceRoot>/logs/dashboard-server.log
- Append-only JSON Lines format; no rotation in this release.
- Sensitive fields (
apiToken,Authorization) are automatically redacted to[REDACTED]before writing. - The server prints the absolute log path to stdout on startup.
Out of Scope
- Log rotation / size capping
- Authentication / remote access (currently localhost-only by design)
- Browser env var (
BROWSER) support on Linux - Windows PowerShell fallback (current:
cmd /c start) - Fallback stdout URL prompt on browser-open failure
Roadmap
- Interactive setup wizard:
/jira setup(v0.6.0) - Auto mode:
/jira-task auto(v0.6.0) - Init argument expansion: count, issue key, natural language (v0.7.0)
- Iterative review: auto-fix + test + review retry loop (v0.8.0)
- Sub-agent isolation: each auto step in independent context (v0.9.0)
- Interactive issue creation:
/jira-task create(v0.12.0) - Requirements discovery:
/jira-task discoverâdocs/requirements/<slug>.requirements.md(v1.1.x) - Reviewer calibration log: review history analyzer (
scripts/analyze-review-log.py) (v0.22.x) - SKILL bloat refactor: 4 heavy SKILLs (create/discover/init/review) compressed from 1,989 â 921 lines (-54%) via
skills/<name>/refs/split + script extraction (v0.24.0) - Dashboard graph view: react-flow + d3-force visualization of
blocks/parent/epicrelationships with hierarchical force layout, drag-to-pin, status/assignee filters, isolated/cycle highlighting (v0.30.x â Epic MAE-249) - Dashboard worktree cleanup button: in-card
ð ì 늬floating action for stale worktrees, with safety guards on the backendPOST /cleanup(v0.30.x) - Plan + Design â unified
/jira-task approach(level-aware L1/L2/L3 sizing) (v0.33.0 â MAE-350) - L3 Epic empty-child sequencing guard for
/jira-task auto(early exit + guidance) (v0.34.0 â MAE-364) - Auto SKILL.md hygiene: Scope Shortfall ì¶ì² trail + PDCA ìë ë¶êž° ìëŽ (v0.34.0 â MAE-366)
- Bitbucket Cloud + GitLab MR support for
/jira-task pr - Jira Server / Data Center (Personal Access Token)
- Sub-task auto-creation from approach doc task breakdown
- Time tracking: auto-log work sessions to Jira
- CI/CD result posting (GitHub Actions, Bitbucket Pipelines)
- Slack / Teams notifications on PR creation and task completion
- English documentation for all templates
License
MIT
íêµìŽ ììœ
ìŽ íë¬ê·žìžì Jira + Claude Code륌 ì°ê²°íë ê°ë° ìí¬íë¡ì° ìëí ë구ì ëë€.
ëì볎ë
Claude Code ììì /jira dashboard í ì€ë¡ ì
ì
·Ʞëì ìë ìíí©ëë€. 첫 ì€í ì npm ìì¡Žì± ì€ì¹ì UI ë¹ë륌 ìëìŒë¡ ì²ëЬíê³ , ë ë²ì§žë¶í°ë ìºì ê°ì§ë¡ ìŠì ììí©ëë€.
| 컀맚ë | ëì |
|---|---|
/jira dashboard | ìí íìž â stoppedìŽë©Ž ìë setup+start |
/jira dashboard start/stop/status/setup | ê°ë³ ì¡ì |
ìë²ë http://127.0.0.1:8765ì ë°ìžë©ëë©° Ʞ볞 ëžëŒì°ì ê° ìëìŒë¡ ìŽëŠœëë€. ìë ì€íì npm run dashboardë¡ë ê°ë¥ (CI/í€ë늬ì€: DASHBOARD_NO_OPEN=1, í¬íž ë³ê²œ: PORT=9000).
ê° worktree 칎ëë ë€ìì 볎ì¬ì€ëë€:
- ìëš ë°°ì§: Jira ìí¬íë¡ ìí(outlined + ì¢ìž¡ dot), ëì ë구 ížì¶ ì(
â N), ë§ì§ë§ íë ìëìê°, ìíë³ ë°°ì§(âµ ìëµ ëêž°/stale/â blocked à N) - SDLC stepper:
.jira-context.jsonìcompletedStepsêž°ë° ëšê³ ì§í.doneí 걎ëëŽ ì€ê° ëšê³ë ì·šìì íì - íë íšë: ë§ì§ë§ prompt, ë§ì§ë§ ìëµì ê²°ë¡ ì€, ì§í ì€ ë구, sub-agent / blocked ìí. prompt/response ì ížë ring bufferì ë³ëë¡ ìë²ì 볎졎ëìŽ ë구 ížì¶ í죌ìë ì¬ëŒì§ì§ ìì
- ìŽì ë§í¬:
blocks/blocked by칩 íì. 믞íŽê²° blockerë ê°ì¡°, ìë£ë ê²ì ì·šìì - 칎ë 볎ë ìí:
- íë íì€ = busy â
UserPromptSubmitìŽíStopìŽ ìì§ ì ìŽ(ìê° ìê³ê° ìì, "ì§êž ìëµ ìì± ì€") - ì°ë² íì€ + ìëµ ëêž° ë°°ì§ â busy + ìµê·Œ
NotificationìŽ permission/input/waitingì í¬íš - ë¹šê° ì¢ìž¡ stripe + â blocked ë°°ì§ â 믞íŽê²°
is blocked byë§í¬ ì¡Žì¬ - dim + stale ë°°ì§ â Jira ìíê° ìë£ìžë° worktreeê° ìì§ ìŽììì(ì 늬 ëì)
- íë íì€ = busy â
- ìëš KITT ë°: SSE ì°ê²° ì ì¢âì° ì€ìº. LIVE 칩ì ë€ì jira-collector pollingê¹ì§ì ì§íë¥ ì ìëâìë¡ fill
- ì ë ¬/íí°: í€ëì ì ë ¬ 칩(ìµê·Œíë / ìŽìí€ / summary) + ì 목 ê²ì íë(taskId/summary/branch/path ë§€ì¹)
- 칎ë/ê·žëí ë·° í êž (v0.30.x): í€ëìì ë 몚ë ì í. ê·žëí 몚ëë worktree륌 force-directed ê·žëí(react-flow + d3-force)ë¡ ë ëë§íì¬
blocks/parent/epicêŽê³ë¥Œ ìì ë¶ëЬë ì£ì§(í륎ë ì ì + íìŽí)ë¡ íì. parent/epic edgeê° ê³ìžµ(ë¶ëªš ì, ìì ìë)ì íì±íê³ blocks edgeë íì ë žë륌 ì°ê²°. ë žë íŽëŠ â ì°ìž¡ ì¬ìŽë íšëì í 칎ë, ë žë ëëê·ž â ê·ž ì늬 ê³ ì (simulationìŽ ëìŽë¹êž°ì§ ìì). status/assignee íí°Â·ê³ 늜 ë žë(dashed border)·ìí ì£ì§(êµµì ë¹šê° ì ì ) ê°ì¡° ì§ì - ì 늬 ë²íŒ (v0.30.x): stale ìí(Jira ìë£ + worktree ì졎) 칎ë ì°íëšì hover ì
ð ì 늬floating ë²íŒ ë žì¶. íŽëŠ â confirm â ìë²ê°git worktree remove+git branch -dì€í. ë°±ìë ìì ì¥ì¹(ë±ë¡ë worktreeë§, ìë£ ìíë§, dirty ê±°ë¶, branch ìŽëŠì storeììë§ ì¡°í) - Jira context ìë 칎ë(ì: ë©ìž ë í¬): ëë í ëŠ¬ëª Â·path·íëë§ íì, stepperì Jira ì ì© íëë ìšê¹
Hook íëŠ: hooks/hooks.json â hooks/scripts/dashboard-ingest.sh(UserPromptSubmit·PreToolUse·PostToolUse·SubagentStop·Notification) / hooks/scripts/stop-ingest.sh(Stop, transcriptìì ë§ì§ë§ assistant í
ì€íž ì¶ì¶) â POST /ingest â SSE. ìë² ë¡ê·žë <workspaceRoot>/logs/dashboard-server.log(JSON Lines, ë¯Œê° íë ìë redact).
íµì¬ í¹ì§
/jira-task discover [죌ì ]â ìì°ìŽ ì£Œì 륌 ì구ì¬í 묞ì(docs/requirements/<slug>.requirements.md)ë¡ ë³í./jira-task create --from-requirements <íìŒ>곌 ìì° ì°ëëìŽ Epic/Story/Sub-task ìŒêŽ ë±ë¡ì ì ë ¥ìŒë¡ ì¬ì©ëš (v1.1.x)/jira-task create [ííž]â ëí 컚í ì€íž êž°ë°ìŒë¡ ì ê· Jira ìŽì륌 ëíí ìì±. ë²ìê° í¬ë©Ž ìëžíì€í¬ ë¶íŽë¥Œ ì€í¬ìŽ ì§ì ì ìíê³ , ì졎ì±ìBlocksë§í¬ë¡ ë±ë¡ëìŽ ìŽíinitì "ì°©ì ê°ë¥ ë¶ì"곌 ìì° ì°ë. Ʞ졎 ìíœ ì°ê²° ì§ì.mcp-atlassianìjira_create_issueíë ê·ìœ(JSON stringadditional_fields, bare-keyparent, CSVcomponentsë±)ì ì€í¬ì ë°ì ë°ë³µ ì€íš ë°©ì§ (v0.12.0)/jira-task initâ ì«ì(init 5), ìŽì í€(init PROJ-123), ìì°ìŽ(init "ìžìŠ êŽë š") ìž ê°ì§ 몚ëë¡ worktree ìŒêŽ ìì± (v0.7.0)- Auto 몚ë (
/jira-task auto PROJ-123): ê° ëšê³ë¥Œ ë 늜 sub-agentë¡ ì€ííì¬ ì»ší ì€íž ì€ìŒ ë°©ì§. review 믞íµê³Œ ì ìë ìì â ì¬í ì€íž â ì¬ëŠ¬ë·° ìµë 2í ë°ë³µ (v0.9.0) - ì€ì ììë (
/jira setup): ì¬ì ì걎 íìž â ì격ìŠëª ì ë ¥ â MCP ë±ë¡ â ì°ê²° ê²ìŠ ëíí ìëŽ (v0.6.0) - ì ê·Œ ì€ê³(approach) â 구í â í
ì€íž â 늬뷰 â PR â ìë£ê¹ì§ ì ëšê³ 컀맚ëí (plan/design ë ëšê³ë v0.33.0ìì
approachë¡ íµí©) - ê° ëšê³ ìë£ ì Jira ìœë©ížÂ·ì²šë¶íìŒÂ·ìí ì ìŽ ìë ì²ëЬ
- approach 묞ìì ì€ì 구í ìœë ê° Gap ìë ë¶ì
- Reviewer Calibration Log â ë§€ review 결곌륌
docs/review-log/ì ëì íê³scripts/analyze-review-log.pyë¡ íµê³ŒìšÂ·ë°ë³µ ì§ì íšíŽì ë¶ìíŽ ëŠ¬ë·°ìŽ self-praise drift ë°©ì§ (v0.22.x) .jira-context.jsonìŒë¡ ìžì ê° ì§í ìí© ìë ë³µì
ì€ì¹
claude plugin marketplace add mzd-hseokkim/jira-claude-code-integration
claude plugin install jira-integration@jira-claude-code-integration
íë¬ê·žìž ì€ì¹ í /jira setupì ì€íí멎 ëííìŒë¡ MCP ìë²ë¥Œ ì€ì í ì ììµëë€. ëë ì§ì ë±ë¡:
claude mcp add atlassian \
-e JIRA_URL=https://your-domain.atlassian.net \
-e JIRA_USERNAME=your-email@company.com \
-e JIRA_API_TOKEN=your-api-token \
-- uvx mcp-atlassian
ììží ì€ì ì ììž ì€ì ì¹ì ì ì°žê³ íìžì.
êž°í
- 컀맚ë 목ë¡, Worktree ì ëµ, ížë¬ëžìí ë± ììž ëŽì©ì ì묞 ì¹ì ì ëìŒíê² êž°ì ëìŽ ììµëë€.
- ìŽì·ì ìì GitHub Issuesì ëšê²šì£Œìžì.
