Help us improve
Share bugs, ideas, or general feedback.
From jira-integration
Generates a level-aware approach document (plan + design) for Jira tasks, adjusting depth by L1/L2/L3 scale. Fetches issue data and requirements inputs.
npx claudepluginhub mzd-hseokkim/jira-claude-code-integration --plugin jira-integrationHow this skill is triggered — by the user, by Claude, or both
Slash command
/jira-integration:jira-task-approach <TASK-ID><TASK-ID>This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Language Rule**: 프로젝트 CLAUDE.md의 Conventions 섹션 참고 (한국어 출력, Jira 코멘트 제목은 영어).
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Language Rule: 프로젝트 CLAUDE.md의 Conventions 섹션 참고 (한국어 출력, Jira 코멘트 제목은 영어).
jira-task-approach는 기존 plan + design 두 단계를 단일 단계로 통합한다. 작업 규모(L1/L2/L3)에 따라 분량과 깊이를 조정한다 — 작은 작업에 무거운 설계 문서를 쓰지 않는다.
입력:
<TASK-ID> (필수).jira-context.json.cachedIssue (Cache-First Fetch).jira-context.json.breakdownLevel (있으면 우선)docs/requirements/<slug>.requirements.md의 Technical Approach Hint 섹션 (있으면 입력)출력:
docs/approach/<TASK-ID>.approach.md비목표:
레벨 결정 우선순위:
.jira-context.json.breakdownLevel ("L1" | "L2" | "L3") — Sub 1.3에서 기록된 값. hit이면 그대로 사용.Subtask, Task, Bug → L1Story → L2Epic → L3📐 Approach level: L2 (issuetype Story 폴백) / 격상 시 사유 명시 📐 L2 (Task지만 스키마 변경 → 격상).사용자가 다음 턴에 자연어로 변경 요청 시("L1로 줄여줘") 그대로 따른다 — 별도 플래그 없음.
.jira-context.json의 cachedIssue를 먼저 확인 (CLAUDE.md "Cache-First Fetch" 참고).
key === <TASK-ID> AND summary/description/issuetype 모두 존재 AND fetchedAt 존재. → fetch 생략.mcp__atlassian__jira_get_issue 호출:
fields="summary,status,description,issuetype,parent,subtasks,issuelinks,priority"comment_limit=0subtasks/issuelinks 포함이 중요.cachedIssue 갱신. fetchedAt은 new Date().toISOString() (UTC Z).docs/requirements/*.requirements.md를 Glob으로 확인.
채택한 파일에서 다음 섹션을 추출:
## Technical Approach Hint (필수 입력 — 있으면 그대로 인용)## Codebase Context (참고)## Functional Requirements (참고)## Open Questions (남아 있는 P1/P2/[CONFLICT]가 있으면 approach 문서의 Open Items로 이월)requirements 파일이 없으면 Step 3에서 Source 섹션을 N/A — discover 생략으로 표기.
레벨별 출력 템플릿은 Read skills/jira-task-approach/refs/level-templates.md 후 해당 레벨 블록만 사용한다.
레벨이 L3일 때만 적용. Step 1에서 fetch/cache한 cachedIssue의 subtasks + issuelinks(is blocked by 역방향 포함)를 합쳐 child Story 후보 수를 센다. 0건이면 빈 시퀀싱 표만 만들어지므로 여기서 조기 종료한다.
사용자에게 안내 출력:
⚠️ L3 Epic의 child Story가 0건입니다.
먼저 `/jira-task create` 또는 Jira에서 child issue를 분해 등록한 뒤 다시 실행하세요.
문서 생성/Jira 코멘트/첨부 모두 건너뛴다.
.jira-context.json의 completedSteps에 "approach"를 추가하지 않는다 (실행되지 않은 것으로 간주).
정상 종료(에러 아님). 후속 Step 3.1~5는 수행하지 않는다.
L1/L2 또는 child 1건 이상의 L3는 본 가드를 통과하여 3.1로 진입한다.
mkdir -p docs/approach
perl -0777 -pe 's/<!--.*?-->//gs' templates/approach.template.md \
> docs/approach/<TASK-ID>.approach.md
refs/level-templates.md에서 결정된 레벨의 출력 형식만 복사하여 본문 영역을 채운다. 다른 레벨 블록은 사용하지 않는다.
subtasks + issuelinks (is blocked by 역방향 포함).문서 헤더의 placeholder 일괄 치환:
{task_id} → 실제 TASK-ID{summary} → cachedIssue.summary{level} → L1 | L2 | L3{level_name} → Single | Story | Epicmcp__atlassian__jira_add_comment:
## Approach Document Created
- **Level**: <L1/L2/L3> (<Single/Story/Epic>)
- **핵심**: <Approach Summary 1줄>
상세 내용은 첨부된 `<TASK-ID>.approach.md`를 참고하세요.
공용 스크립트로 첨부 업로드:
SCRIPT_NAME="jira-attach.sh" OUT_VAR="JIRA_ATTACH_SH"
# Read skills/_shared/script-lookup.md and execute its lookup block here
[ -n "$JIRA_ATTACH_SH" ] && bash "$JIRA_ATTACH_SH" <TASK-ID> docs/approach/<TASK-ID>.approach.md
실패 시 로컬 파일 경로 안내 후 계속 진행.
skills/_shared/context-update.md 패턴으로 worktree-local + aggregate .jira-context.json을 갱신 (approach는 Jira transition 없음 → STATUS="-"):
SCRIPT_NAME="jira-context-update.py" OUT_VAR="JIRA_CTX_UPDATE_PY"
# Read skills/_shared/script-lookup.md and execute its lookup block here
python3 "$JIRA_CTX_UPDATE_PY" <TASK-ID> approach "-" \
"<worktree>/.jira-context.json" \
"<repoRoot>/.jira-context.json"
이후 출력:
---
✅ **Approach Complete** — <TASK-ID>
- 레벨: <L1/L2/L3>
- 산출물: `docs/approach/<TASK-ID>.approach.md`
- Jira 코멘트 게시됨
- Jira 첨부파일 업로드됨 (또는 실패 시 로컬 경로 안내)
**Progress**: init → start → **approach ✓** → impl → test → review → merge → pr → done
**Next**: `/jira-task impl <TASK-ID>` — approach 기반으로 구현을 시작합니다
---