[English] | 한국어
Automate your entire dev workflow — from Jira issue to merged PR — inside Claude Code.
Most Jira + AI tools stop at CRUD (read/create/update issues). This plugin automates the entire development lifecycle: planning → design → 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 |
| Plan / Design / Test docs | ✅ | ❌ | ❌ |
| Design-Impl gap analysis | ✅ | ❌ | ❌ |
| Iterative review (auto-fix + retry) | ✅ | ❌ | ❌ |
| Progress tracking across sessions | ✅ | ❌ | ❌ |
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 plan\nPlanning doc"]
C --> D["/jira-task design\nDesign doc"]
D --> 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 → plan → design → 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.
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 → plan → design → 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 / plan / design / 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.
Design-Impl Gap Analysis
/jira-task review compares your design 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 ✓ → plan ✓ → design → impl → test → review → merge → pr → done
| 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 |
# 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 → plan → design → 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 plan # Generate planning doc
> /jira-task design # Generate design doc
> /jira-task impl # Implement based on design
> /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 summaryclaude 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-integrationTip: 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.
- 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)
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-atlassianThis 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) |
claude
> /jira| 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 plan [ID] |
worktree | Generate docs/plan/<ID>.plan.md |
/jira-task design [ID] |
worktree | Generate docs/design/<ID>.design.md |
/jira-task impl [ID] |
worktree | Implement based on design 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 |
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
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)
│
├── 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.
│ ├── jira-setup/ # interactive setup wizard
│ ├── 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-plan/
│ ├── jira-task-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
│ ├── 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
│ ├── clean-worktree.py # Worktree/branch cleanup helper
│ ├── bulk-register-roadmap.py # One-off Epic/Story/Sub-task bulk-register
│ ├── analyze-review-log.py # Reviewer calibration log analyzer
│ ├── append-review-log.py # /jira-task review: append entry to review-log
│ ├── propagate-mcp-config.sh # /jira-task init: propagate MCP config to worktree
│ └── review_log/ # Stored reviewer calibration entries
│
├── templates/ # Document templates per workflow step
│ ├── requirements.template.md
│ ├── plan.template.md
│ ├── design.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 plan/design/test/review/
│ # requirements are gitignored as
│ # per-task artifacts)
│
└── tests/ # Python tests for analyze-review-log
├── test_analyze_review_log.py
└── fixtures/
/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는 plan/design 생략, 문서 작업은 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 5workspace/
├── your-project/ ← main repo (base branch)
└── your-project_worktree/ ← created by /jira-task init
├── PROJ-101/ ← feature/PROJ-101 branch
├── PROJ-102/
└── PROJ-103/
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-102Available 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 |
"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 loginWorktree 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 refsA 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.
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에 바인딩됩니다.
슬래시 커맨드 없이 직접 실행해야 하는 경우:
# 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.jsAfter 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- 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/plan/design/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.
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.
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.
- 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
- 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) - Bitbucket Cloud + GitLab MR support for
/jira-task pr - Jira Server / Data Center (Personal Access Token)
- Sub-task auto-creation from design 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
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) - 기획 → 설계 → 구현 → 테스트 → 리뷰 → PR → 완료까지 전 단계 커맨드화
- 각 단계 완료 시 Jira 코멘트·첨부파일·상태 전이 자동 처리
- 설계 문서와 실제 구현 코드 간 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에 남겨주세요.