name: jira-task-create description: "Interactively create a new Jira issue (and optional sub-tasks) from conversation context — gathers details via dialog and creates in Jira. Triggers: jira-task create, create task, new task; Jira 이슈 만들어, 태스크 등록, 이슈 생성." user-invocable: false argument-hint: "[초기 힌트 / 자연어 설명]" allowed-tools: - Read - Bash - AskUserQuestion - mcp__atlassian__jira_get_user_profile - mcp__atlassian__jira_get_all_projects - mcp__atlassian__jira_search - mcp__atlassian__jira_get_issue - mcp__atlassian__jira_create_issue - mcp__atlassian__jira_add_comment - mcp__atlassian__jira_create_issue_link - mcp__atlassian__jira_get_link_types - mcp__atlassian__jira_link_to_epic
jira-task-create: Create New Jira Issue (with Sub-tasks & Dependencies)
Language Rule: 프로젝트 CLAUDE.md의 Conventions 섹션 참고 (한국어 출력). 추가: AskUserQuestion 질문/선택지, 생성 이슈 본문(summary/description)도 한국어. 이슈 키, 필드명(priority/labels), JSON 키는 영어 유지.
중요: Read skills/jira-task-create/refs/mcp-schema.md — Jira API 파라미터 규칙, 폴백 전략, 방향성 주의사항을 반드시 숙지 후 Step 6을 진행한다.
Overview
신규 Jira 이슈 생성 단계 (PDCA의 init 이전). 완료 후 /jira-task init <parent-key> 또는 start <key>로 합류.
핵심:
- 컨텍스트 우선: 대화에 충분한 정보가 있으면 질문 최소화, 부족하면
AskUserQuestion배치 질문 - 자동 서브태스크 판단: 스킬이 분해 필요 여부 판단 → 초안 제안 → 사용자 확인
- 의존성: 서브태스크 간
Blocks이슈 링크 (없으면 병렬,jira-task-init의 착수 분석과 호환) - 에픽 연결: 상위 이슈를 기존 에픽에 연결 가능
Prerequisites
- Jira MCP 서버 (
atlassian) 연결됨 — 미연결 시/jira setup안내 후 종료 JIRA_DEFAULT_PROJECT환경변수가 있으면 프로젝트 키로 사용, 없으면 Step 2에서 사용자에게 묻는다
Workflow
Step 0: Parse Argument & Check Connection
$ARGUMENTS에서 토큰을 추출한다.--from-requirements <path>토큰을 먼저 인식한다 (위치 무관, 단 한 번만 허용).- 토큰을 발견하면
importMode = true,importPath = <path>로 설정한다. <path>가 누락되었거나 다음 토큰이 또 다른 플래그/옵션이면 E1(경로 누락)으로 처리한다.
- 토큰을 발견하면
- 나머지 텍스트는 자연어 힌트(
topic)로 보존한다 (비어 있어도 OK).
- 인자 충돌 처리:
importMode = true이면서 자연어 힌트가 동시에 존재하는 경우, import를 우선한다.- 자연어 힌트는 Epic description의 추가 컨텍스트로만 사용한다.
- 자동 서브태스크 분해(Step 3/4)는 import 모드에서 절대 동작하지 않는다 (회귀 금지).
- Jira MCP 연결 확인:
mcp__atlassian__jira_get_user_profile호출. 실패하면 "/jira setup을 먼저 실행하세요" 안내 후 종료.
importMode 플래그는 이후 단계 진행 흐름의 분기점이다. importMode = true이면 Step 1.5를 거쳐 Step 1~4를 skip하고 Step 5로 직행한다.
--from-requirements 인자 형식:
- 형식:
/jira-task create --from-requirements <path> <path>: 요구사항 문서의 상대 또는 절대 경로 (예:docs/requirements/sample.requirements.md)- 상대 경로는 워크트리/리포 루트를 기준으로 해석한다.
Step 1.5: Parse Requirements Document (★ import 모드 전용)
실행 조건: importMode = true. importMode = false이면 본 단계를 skip하고 Step 1로 이동한다.
필수: Read skills/jira-task-create/refs/from-requirements-mode.md — 파일 검증·섹션 추출·트리 파싱·ImportPayload 구성·Tree→Issue Mapping 표 전체를 이 파일에서 확인한다.
파싱 성공 시 Step 5(Final Preview)로 점프한다. Step 1~4는 skip한다.
Step 1: Assess Context Sufficiency
import 모드에서는 본 단계를 skip하고 Step 5로 직행한다.
현재 대화 컨텍스트 + 초기 힌트를 합쳐서 아래 필수 정보를 채울 수 있는지 평가한다:
필수 정보:
- Project key —
JIRA_DEFAULT_PROJECT환경변수 또는 대화에서 확인 가능? - Summary (제목) — 명확히 유추 가능?
- Description (무엇을/왜) — 배경·목적·범위가 구체적인가?
- Issue type — Task/Story/Bug/Epic 중 명확한가? (기본값 Task 가능)
- Priority — 명시되었거나 합리적으로 기본값(
Medium) 적용 가능?
판단 기준:
- 필수 정보 중 2개 이상 부족 또는 description이 한 줄 요약 수준 → Step 2로 진행
- 필수 정보가 대부분 충족 → Step 3로 직행하고, 부족한 것만 간단 확인
Step 2: Gather Missing Info via AskUserQuestion (조건부)
import 모드에서는 본 단계를 skip한다.
Phase A — 상위 이슈 핵심 정보 (AskUserQuestion 1회, 여러 question 배치)
부족한 것만 선택적으로 포함:
- 요약(Summary): 이슈 한 줄 제목
- 이슈 타입:
Task/Story/Bug/Epic(기본 추천: 기능→Story, 단일→Task, 버그→Bug) - Priority:
Highest/High/Medium/Low/Lowest(기본:Medium) - 프로젝트 키 (
JIRA_DEFAULT_PROJECT없을 때만):jira_get_all_projects목록에서 선택
Phase B — 설명 보강 (A 답변 후 설명이 여전히 부족하면)
AskUserQuestion으로 배경·AC 힌트·기술 접근·제외 범위 중 필요한 것만 질문.
Phase C — 선택 정보 (A/B 완료 후)
Epic 연결 여부, Labels, Components, Assignee를 배치 질문.
Epic 선택 서브 플로우 (사용자가 "기존 에픽 선택"한 경우):
- JQL:
project = <PROJECT_KEY> AND issuetype = Epic AND status != Done ORDER BY created DESC(limit=10) - 상위 10개 테이블 표시 후
AskUserQuestion으로 에픽 키 선택
Step 3: Decide Sub-task Split (스킬 자동 판단)
import 모드에서는 본 단계를 skip하고 Step 5로 직행한다.
수집된 정보를 바탕으로 스킬이 직접 서브태스크 필요 여부를 판단한다.
| 서브태스크 필요 | 서브태스크 불필요 |
|---|---|
| 여러 레이어 동시 수정 | 단일 파일/함수 수정 |
| 순차 단계가 명확히 구분됨 | 버그 수정 (단일 원인) |
| 독립 검증 가능 단위 3개 이상 | 소규모 리팩토링 / 문서 업데이트 |
판단 결과를 사용자에게 투명하게 공유 후 Step 4 또는 Step 5로 진행.
Step 4: Propose Sub-task Breakdown (분해 필요한 경우)
import 모드에서는 본 단계를 skip하고 Step 5로 직행한다.
초안 테이블 표시 (# / Summary / Type / Priority / Depends on / Parallel?).
설계 규약:
Depends on이 비어 있으면Parallel ✓- 의존성은
Blocks이슈 링크로 저장됨 (init <parent-key>가 착수 가능 분석에 활용)
사용자 확인 (AskUserQuestion): 그대로 진행 / 수정 요청 / 서브태스크 없이 단일 이슈로 / 취소
Step 5: Final Preview
생성 직전에 전체 계획을 한 번 더 요약한다.
Default 모드:
📦 생성 예정 이슈
## Parent Issue
- Project / Summary / Type / Priority / Epic Link / Labels / Components / Assignee
- Description: (요약 3~5줄)
## Sub-tasks (N개) / Issue Links (M개)
Import 모드 (--from-requirements):
Preview 출력 직전에 모든 노드 summary를 일괄 JQL로 중복 검사. 일치 시 ## Duplicate Warning 블록 포함.
breakdownLevel(L1 | L2 | L3)을 Preview 상단에 1줄로 명시한다.
📦 생성 예정 이슈 (import)
Source: docs/requirements/<slug>.requirements.md
Breakdown Level: <L1 Single | L2 Story-only | L3 Epic+Stories+Subtasks>
# L1: ## Task (단건)
# L2: ## Story / ## Sub-tasks (M개) / ## Issue Links (K개)
# L3: ## Epic / ## Stories (N개) / ## Sub-tasks (M개) / ## Issue Links (K개)
최종 확인 (AskUserQuestion): 생성 진행 / 수정 / 취소
Step 6: Create in Jira
모드별 호출 시퀀스:
- default: 6-1 (Parent) → 6-2 (Epic 연결 검증) → 6-3 (Subtask 루프) → 6-4 (링크) → 6-5 (검증)
- import L1 Single: 6-1 (Task 단건) → 6-5 (검증). 6-1b/6-3/6-4 skip.
- import L2 Story-only: 6-1b (Story 1건, parent 없음) → 6-3 (Subtask 루프) → 6-4 (링크) → 6-5 (검증). 6-1/6-2 skip (Epic 생성·연결 없음).
- import L3 Tree: 6-1 (Epic 생성) → 6-2 skip → 6-1b (Story 루프) → 6-3 (Subtask 루프) → 6-4 (링크) → 6-5 (검증).
6-1. 상위 이슈 생성 (default 또는 import L1/L3에서 호출)
additional_fields는 JSON 문자열로 직렬화. priority/labels/epic_key를 dict에 조립 후 json.dumps(). priority 기본값은 Medium (from-requirements-mode.md Step 1.5-5의 추출 규칙과 동일).
폴백 규칙은 호출 모드별로 발동 케이스가 다르다 — from-requirements-mode.md의 Tree→Issue Mapping 표가 단일 진실. 본 절은 요약만 둔다:
- default / import L1: Task 또는 Story 타입 시도. Story 실패 →
Task(default 모드는 +parent=Epic-KEYif epic-link, L1은 parent 없음). - import L3 Epic 생성: Epic 타입 실패 →
Task+ labelepic-substitute. - Subtask 타입 실패:
Task+parent=Story-KEY(6-3 영역 — 본 절 비대상). - import L2 Story 생성: 본 절이 아니라 6-1b가 담당 (Epic 부재로 parent 생략).
폴백 사용 시 사용자에게 즉시 알린다.
6-1b. Story 생성 루프 (★ import 모드 전용)
- L3 Tree: 각 Story에
parent = epic.created_key설정. 폴백:Story실패 →Task+parent=Epic-KEY. - L2 Story-only: Story 1건만 생성.
parent는 설정하지 않음(Epic 부재). 폴백:Story실패 →Task(parent 없음).
생성 직후 (story.index → story.created_key) 누적.
6-2. 에픽 연결 검증 (default 모드 전용)
jira_get_issue로 재조회 → epic link 미설정 시 jira_link_to_epic 폴백 → 이것도 실패 시 경고 후 계속.
6-3. 서브태스크 생성 (순차 루프)
각 서브태스크에 jira_create_issue 개별 호출. import 모드에서 PARENT_KEY = 해당 Story의 created_key.
6-4. 의존성 링크 생성
jira_get_link_types(name_filter="block")로 "Blocks" 타입명 확인 후 jira_create_issue_link 호출.
방향성: "A가 B를 블록" → outward_issue_key=A, inward_issue_key=B.
Import 모드의 (blocks: <ref>) 변환: <N> → Story 키, <N>.<M> → Subtask 키. E7 위반 시 해당 링크 skip + 경고.
6-5. 결과 검증
모든 이슈를 jira_get_issue로 재조회 (fields="summary,issuetype,priority,parent,labels,issuelinks,status", comment_limit=0). 불일치 시 경고.
Step 7: Post Creation Comment (선택)
상위 이슈에 요약 코멘트 게시 (서브태스크 개수, 링크 개수, 병렬 가능 개수, Next 안내). 서브태스크에는 코멘트 생략.
Step 8: Completion Summary
─────────────────────────────────────────
✅ Create Complete
**Parent Issue**: <JIRA_URL>/browse/PROJ-NEW — <summary> [Type, Priority]
**Sub-tasks** (N개): 각 이슈 키 + summary + 병렬/블록 표시
**Links 등록**: Blocks 링크 M개
**Next Steps:**
- `/jira-task init PROJ-NEW` — 서브태스크 기반 worktree 세팅
- 또는 `/jira-task start PROJ-NEW` — 부모 이슈 작업 바로 시작
─────────────────────────────────────────
.jira-context.json은 건드리지 않는다 (새 이슈는 아직 활성 작업이 아님).
Error Handling
공통: MCP 연결 실패 → Step 0 종료 + /jira setup 안내. jira_create_issue 실패 → 타입 미존재 시 Task 폴백, 인증 오류 시 토큰 만료 안내, 필드 오류 시 원본 메시지 표시. 서브태스크 일부 실패 → 성공 것 유지, 실패 목록 표시, 재시도 confirm (자동 롤백 없음).
| # | 시나리오 | 처리 |
|---|---|---|
| E1 | --from-requirements 경로 누락 |
AskUserQuestion으로 경로 요청 |
| E2 | 지정 경로 파일 부재 | 에러 + 종료 |
| E3 | 빈 파일 | 에러 + 종료 |
| E4 | Proposed Issue Breakdown 섹션 부재 |
자연어 모드 폴백 제안 (AskUserQuestion) |
| E5 | 트리 노드 0개 | 보강 입력 요청 또는 종료 |
| E6 | Epic 없이 Story만 존재 | L2 Story-only로 진행 (자동 Epic 생성하지 않음) |
| E7 | sibling 외 (blocks: ...) 참조 |
해당 링크 skip + 경고 |
| E8 | 동일 summary 이슈 존재 | Preview에 ## Duplicate Warning + 진행/취소 confirm |
| E9 | Epic/Story 타입 비활성 | Task + parent 또는 + label epic-substitute 폴백, 즉시 알림 |
| E10 | 트리 들여쓰기 혼용 | 경고 + 첫 자식 기준 진행 (불가 시 종료) |
| E11 | 루트 노드 토큰 식별 실패 (작업/Story/Epic 어느 쪽도 아님) |
자연어 모드 폴백 제안 (AskUserQuestion) |
Non-goals: worktree/branch 생성, .jira-context.json 수정, 구현/테스트/리뷰 수행, 기존 이슈 수정.