Skip to content
Back to skills

Jira Task Epic

ASecurity

Set, show, or clear the project-local Epic scope that jira-task create attaches new issues to. Triggers: jira-task epic, set epic, epic scope; 이번 작업은 epic, 이번 작업 에픽, 에픽 설정, 에픽 지정, 에픽 스코프, 에픽 해제, 현재 에픽 뭐야.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
toolspythongobashgit

Works with

  • cli

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add mzd-hseokkim/jira-claude-code-integration --skill jira-task-epic --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Jira Task Epic?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Jira Task Epic
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mzd-hseokkim-jira-task-epic/badge)](https://www.skillsdirectory.com/skills/mzd-hseokkim-jira-task-epic)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: jira-task-epic
description: "Set, show, or clear the project-local Epic scope that jira-task create attaches new issues to. Triggers: jira-task epic, set epic, epic scope; 이번 작업은 epic, 이번 작업 에픽, 에픽 설정, 에픽 지정, 에픽 스코프, 에픽 해제, 현재 에픽 뭐야."
user-invocable: false
argument-hint: "[set <에픽 키|에픽 이름> | show | clear]"
allowed-tools:
  - Read
  - Write
  - Bash
  - AskUserQuestion
---

# jira-task-epic: Project Epic Scope

**Language Rule**: 프로젝트 CLAUDE.md의 Conventions 섹션 참고 (한국어 출력). 이슈 키·필드명·JSON 키는 영어 유지.

## Overview

"이번 작업은 epic v1.0이야" 한 마디를 `.jira-epic.json`에 고정해 두고, 이후 `/jira-task create`가 그 Epic 아래에 이슈를 만들도록 한다. 스코프가 없으면 create는 지금과 동일하게 Epic 없이 생성한다.

**필수**: `Read skills/_shared/epic-scope.md` — 파일 위치 결정, 스키마, `.gitignore` 등록 블록의 단일 출처.

## Prerequisites

- Jira 호출은 `scripts/jira-cli.py` (규약: `Read skills/_shared/jira-cli.md`). 호출 prompt가 `<scripts>/` 절대 경로를 줬으면 그대로, 없으면 `skills/_shared/script-lookup.md`로 `SCRIPT_NAME="jira-cli.py"` 1회 해석 — `set`(과 `show`의 상태 확인)에서만 필요. `clear`는 파일만 다루므로 연결 없이 동작한다.
- git 레포 안에서 실행. 아니면 "git 레포 안에서 실행해 주세요" 안내 후 종료.

## Workflow

### Step 0: Parse Argument

`$ARGUMENTS`에서 서브액션을 결정한다.

| 입력 | 서브액션 |
|---|---|
| `show`, `status`, 빈 인자 | **show** |
| `clear`, `unset`, `해제`, `없음` | **clear** |
| `set <값>` 또는 그 외 자연어(`v1.0`, `MAE-100`, `이번 작업은 epic v1.0이야`) | **set** (값 = 서브액션 토큰을 제외한 나머지) |

자연어에서 값을 뽑을 때 `epic`/`에픽`/`이번 작업은`/`이야`/`으로` 같은 조사·군더더기는 떼어낸다. 남은 것이 없으면 `AskUserQuestion`으로 Epic 키나 이름을 묻는다.

### Step 1: Resolve File Path

`skills/_shared/epic-scope.md`의 경로 결정 블록을 실행해 `EPIC_FILE`을 얻는다. `NOT_A_GIT_REPO`면 종료.

### Step 2: show

파일이 없으면:

```
📌 Epic 스코프: 설정되지 않음
   `/jira-task epic set <에픽 키 또는 이름>`으로 지정하면 이후 create가 그 Epic 아래에 이슈를 만듭니다.
```

있으면 키/요약/설정 시각을 출력한다. 이때 `python3 "<scripts>/jira-cli.py" get <epicKey>`로 현재 상태를 1회 확인해 출력의 `status`가 `Done`이면 아래 줄을 덧붙인다:

```
⚠️ 이 Epic은 이미 Done 상태입니다. 새 작업은 다른 Epic이 맞는지 확인하세요.
```

### Step 3: clear

파일이 없으면 "설정된 Epic 스코프가 없습니다" 출력 후 종료. 있으면 삭제하고 어떤 Epic이 해제됐는지 알린다.

```bash
rm -f "$EPIC_FILE"
```

### Step 4: set — Epic 해석

입력값이 **이슈 키 형태**(`[A-Z][A-Z0-9]+-\d+`)인지 먼저 본다.

**4-A. 키인 경우**: `python3 "<scripts>/jira-cli.py" get <KEY> --fields project`로 조회 (`summary`/`issuetype`/`status`는 기본 출력, 프로젝트 키는 `--fields project`).

**4-B. 이름인 경우**: JQL로 검색한다.

```bash
python3 "<scripts>/jira-cli.py" search "project = <PROJECT_KEY> AND issuetype = Epic AND summary ~ \"<입력값>\" ORDER BY created DESC" --limit 20
```

`<PROJECT_KEY>`는 `JIRA_DEFAULT_PROJECT` 환경변수. **`JIRA_DEFAULT_PROJECT`가 있으면 `project` 조건은 CLI가 자동 삽입한다** (CLAUDE.md의 스코핑 규칙). 없으면 사용자에게 프로젝트 키를 묻고 JQL에 직접 넣는다.

- 0건 → Step 5의 **N0** 처리
- 1건 → 확정
- 2건 이상 → 키/요약/상태 테이블을 보여주고 `AskUserQuestion`으로 선택

### Step 5: set — 검증

| # | 조건 | 처리 |
|---|---|---|
| N0 | 이름 검색 0건 | 후보 없음 알림 + `AskUserQuestion`(`다른 이름으로 재검색` / `취소`). **Epic을 자동 생성하지 않는다** |
| N1 | `issuetype != Epic` | 거부 + 종료. `jira-cli.py epic-link`가 Epic이 아닌 대상에 실패한다 |
| N2 | `status == Done` | 경고 후 `AskUserQuestion`으로 계속 여부 확인 |
| N3 | `JIRA_DEFAULT_PROJECT`와 프로젝트가 다름 | 경고 후 계속 여부 확인 |

**N1 예외**: 대상이 `epic-substitute` 라벨을 가진 Task면 Epic 타입이 비활성화된 프로젝트의 대체 Epic이다. 이 경우 허용하되, 저장 시 사용자에게 "Epic 타입 대체 이슈로 등록합니다"라고 1줄 알린다.

### Step 6: set — 저장

`skills/_shared/epic-scope.md`의 `.gitignore` 블록을 먼저 실행한 뒤(메인 레포 루트 기준), `Write` 도구로 `EPIC_FILE`을 쓴다.

```json
{
  "epicKey": "<확정 키>",
  "epicSummary": "<Jira summary>",
  "projectKey": "<프로젝트 키>",
  "setAt": "<date -Iseconds 결과>"
}
```

기존 파일이 있으면 덮어쓰되, 이전 값이 무엇이었는지 완료 출력에 표시한다.

### Step 7: Completion Summary

```
─────────────────────────────────────────
📌 Epic 스코프 설정 완료

**Epic**: <JIRA_URL>/browse/MAE-100 — v1.0 릴리스
**저장 위치**: <repo-root>/.jira-epic.json (gitignored)
# 덮어쓴 경우: **이전 값**: MAE-90 — v0.9 릴리스

이후 `/jira-task create`로 만드는 이슈는 이 Epic 아래에 생성됩니다.
해제하려면 `/jira-task epic clear`.
─────────────────────────────────────────
```

## Non-goals

- Epic 신규 생성 (검색 결과가 없어도 만들지 않는다)
- 기존 이슈의 Epic 링크 변경 (이미 만들어진 이슈는 건드리지 않는다)
- `.jira-context.json` 수정, worktree/branch 조작
- `init`/`report`의 JQL 스코핑 — 본 스코프는 **create에만** 영향을 준다

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.