Skip to content
Back to skills

Issueops Create Issue

ASecurity

Use at the start of an IssueOps cycle, when "issueops next" reports stage none or issue, or for "이슈 만들어줘", "이슈부터 시작하자", "child task 만들어줘". Records intent and publishes a readable Korean issue.

  • 6 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentsgobashgitapi

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add m16khb-org/issueops --skill issueops-create-issue --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Issueops Create Issue?

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

Security grade badge for Issueops Create Issue
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/m16khb-org-issueops-create-issue/badge)](https://www.skillsdirectory.com/skills/m16khb-org-issueops-create-issue)

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: issueops-create-issue
description: Use at the start of an IssueOps cycle, when "issueops next" reports stage none or issue, or for "이슈 만들어줘", "이슈부터 시작하자", "child task 만들어줘". Records intent and publishes a readable Korean issue.
---

# IssueOps Create Issue

**1단계 하나**를 맡는다. 할 일을 확정해 기록하고 팀이 보는 이슈로 만든다.
브랜치·계획·구현은 다음 단계다.

본문은 단독 주입·복사에도 적용된다. sibling 스킬은 설치되어 있을 때 활용하며 없으면
아래 계약과 CLI의 exact `next_command`로 진행한다. evaluator나 sibling 설치는 요구하지 않는다.
선택적 [작성 예시와 배경](references/issue-writing.md)은 symlink를 해소한 이 파일 기준이다.
초안/상태만 요청했으면 그 결과에서 끝낸다. 원격 생성 권한을 추정하지 않는다.

`execution whoami --json`의 `record_actor_flags`를 `$RECORD_ACTOR_FLAGS`,
`claim_actor_flags`를 `$ACTOR_FLAGS`로 그대로 쓴다. durable 기록 직전 exact ID·native actor·
source cwd를 대조하고, execution이 있으면 generation·holder·canonical cwd도 확인한다.
다른 holder나 불일치는 stop이다. lease 전 준비에 가짜 generation을 만들지 않는다.
`feedback add`와 `status`는 유효 root alias다. 이 단계가 인증된 feedback 기록을 맡는다.
`skill-bench`는 미구현이고 `quality inspect`는 semantic skill runner가 아니다.

## 이 스킬이 맞는지 확인

```bash
# ID가 있으면 --id "$ISSUEOPS_ID"를 붙인다. 새 사이클 선택에만 자동 판정을 쓴다.
issueops next --json
```

`none|issue`면 진행한다. 명시적인 새 사이클 요청은 다른 기존 stage/사이클과 무관하게
허용한다. 그 밖에는 `next`가 지목한 단계로 간다. `blocked.*`를 우회하지 않는다.

`start`는 **source checkout**에서만 실행한다. worktree를 record의 repo로 만들지 않는다.

`next`가 기존 사이클을 선택했지만 사용자가 별도의 새 사이클을 명시적으로 요청했다면
첫 명령에 `--new`를 붙인다. `--new`는 `--branch`와 함께 쓸 수 없고 실행할 때마다 새 lifecycle ID를
만든다. 응답을 받았는지 불분명하면 같은 명령을 다시 실행하지 않고 먼저 `issueops list --repo "$SOURCE_ROOT" --json`으로
확인한다. 성공 응답의 ID를 이후 명령에 계속 사용한다.

## 입력 세 가지

세 입력의 조사 출처를 plan-prep evidence 문자열로 남긴다. 조사 방법 전문은
[입력 조사](references/input-research.md)를 읽고 따른다.

1. **사용자가 준 정보.** 원문을 그대로 intent contract의 `--raw-request`에 넣고 요약해 대체하지 않는다.
   기획서·화면 캡처는 설치된 `requirements-analysis`로 먼저 추출해 제약은 `intent record --constraint`에,
   모순과 누락은 `--ambiguity`에 넣는다.
2. **코드베이스 조사.** 만진 심볼·파일·호출 경로를 `--codebase-survey-evidence`에 적고, 이 요청에 걸리는
   ADR·CAUTIONS 항목의 문서 경로와 제목(없으면 대조한 문서 목록)을 `--decisions-evidence`에 적는다. 걸린
   기록은 열어서 이 요청의 범위나 방식을 정하는지 판정하고, 열어 보지 않고 "해당 없음"으로 적지 않는다.
   `.issueops/CONSTITUTION.md`의 원칙에 걸리면 성공 기준이나 제약으로 이슈 본문에 옮긴다.
3. **배경지식과 웹 조사.** 외부 API의 의미나 계약이 걸릴 때만 직접 조사해 `--web-research-evidence`에
   넣는다. 조사하지 않았으면 waive하지 말고 왜 필요 없는지를 evidence로 쓴다. 관련 이슈는
   `--related-score-ref`로 남긴다.

원격 이슈를 쓰기 전에 `.issueops/AGENT_WORKFLOW.md`의 Start·Work 절을 읽는다. Work 절이
가리키는 `.issueops/VCS.md`가 있으면 provider recipe와 CLI 대체 경로를 거기서 확인한다.

## 질문 규칙

모호함을 세 갈래로 나눠 원장처럼 관리한다.

| 분류 | 뜻 | 처리 |
|---|---|---|
| `resolved` | 조사로 답이 나왔다 | 이슈 본문의 근거 절에 답과 출처를 쓴다 |
| `deferred` | 지금 몰라도 구현 방향이 바뀌지 않는다 | 이슈 본문 "열린 결정" 절에 남긴다 |
| `blocking` | 답에 따라 다른 것을 만들게 된다 | 사용자에게 묻는다 |

- **blocking만 묻는다.** 조사로 답할 수 있는 것은 먼저 조사한다.
- 한 번에 한 질문만 한다. 선택지가 있으면 번호로 제시하고 추천안을 먼저 둔다.
- 답을 받으면 그 답이 무엇을 바꾸는지 한 문장으로 되돌려 확인한다.
- 다음을 확인할 때까지 이슈를 만들지 않는다: 사용자에게 보이는 문제와 지금 중요한
  이유, 테스트와 실제 표면으로 검증 가능한 성공 기준, 비목표와 범위 경계, 근거가 필요한
  도메인 용어, 필요한 파일·API·명령·런타임 표면, 구현을 실질적으로 바꿀 열린 결정.

blocking 질문이 둘 이상이거나 답에 따라 만들 것이 갈리면 드래프트를 먼저 만들고,
한 번에 한 질문만 하며 매 답변 뒤 남은 모호함을 확인한다. 설치된 `implementation-planning`의
인터뷰를 활용한다. 드래프트의 `Requirements (confirmed)` 절이 intent contract
`--interpreted-intent`의 원문이 된다. 확정 뒤 드래프트는 지운다 — 이슈 본문이 유일한
계약이다.

## 기록 순서

아래 기록 순서를 지킨다. 항목이 비면 grill 진입이 거부된다.

```bash
issueops start --repo "$SOURCE_ROOT" --json      # ISSUEOPS_ID를 받는다
# 기존 사이클과 별도의 새 사이클을 요청한 경우에만 위 명령에 --new를 붙인다.

issueops intent record --id "$ISSUEOPS_ID" \
  --raw-request "<사용자 원문>" --interpreted-intent "<해석>" \
  --success-criteria "<검증 가능한 기준>" --intent-class trivial|standard \
  [--non-goal "<하지 않을 것>"] $RECORD_ACTOR_FLAGS --json   # --non-goal은 반복 가능, 봉인된 intent.md의 비목표

issueops domain-review record --id "$ISSUEOPS_ID" \
  --model-fit "<도메인 모델과 이 변경의 관계>" $RECORD_ACTOR_FLAGS --json

# 분할 여부를 지금 결정으로 남긴다(split_decision). 분할하지 않으면 그 근거를 쓴다.
issueops decision add --id "$ISSUEOPS_ID" --kind scope \
  --title "no split" --body "<한 owner·한 리뷰로 끝나는 근거>" $RECORD_ACTOR_FLAGS --json
# 분할하면 title을 "split: <child 목록>"으로 쓴다. child는 branch prepare 뒤에 만든다(아래 Parent와 child).

# 관련 이슈·라벨 점수는 plan-prep보다 먼저 만든다. 그 요약이 --related-score-ref다(입력 형식은 발행 세부 규칙).
issueops remote score --input "$SCORE_INPUT" --judge none --json > "$SCORE_FILE"
# 선택하거나 거절한 라벨과 threshold는 본문이 아니라 record에 남긴다.
issueops decision add --id "$ISSUEOPS_ID" --kind review --title "라벨 판단" \
  --body "<threshold, 선택한 라벨, 거절한 라벨, override 여부>" $RECORD_ACTOR_FLAGS --json

issueops plan-prep record --id "$ISSUEOPS_ID" \
  --decisions-evidence "<...>" --related-score-ref "<score 결과의 선택·거절 후보와 threshold 요약>" \
  --web-research-evidence "<...>" --codebase-survey-evidence "<...>" \
  $RECORD_ACTOR_FLAGS --json

issueops phase --id "$ISSUEOPS_ID" --to grill $RECORD_ACTOR_FLAGS --json
```

다음은 원격 write다. 초안을 보여 주고 요청에 발행이 포함되어 있으면 아래 publication
절차로 재승인 없이 진행한다. 승인받은 특정 원문이나 범위를 바꿨으면 먼저 확인받는다.

`remote create-issue` 뒤 `status --json`에 `issue_url`이 없을 때만
`issueops link-issue --id "$ISSUEOPS_ID" --issue-url "$ISSUE_URL" $RECORD_ACTOR_FLAGS --json`을 실행한다.
사용자가 기존 이슈(번호나 URL)를 처리하라고 하면 새로 만들지 않는다. 처리 절차는
[발행 세부 규칙](references/publication-details.md)을 읽고 따른다.

이슈만 요청했으면 다음 세 줄로 완료 보고한다. 전체 작업 요청이면 진행 상황으로 알린 뒤
같은 ID로 `issueops-prepare`를 실행한다. worktree 준비 후 환경별 자동 세션 인계를 적용한다.

```text
ISSUEOPS_ID: <id>
issue: <url>
다음 단계: issueops-prepare
```

## 먼저 고르는 것

| 요청 | 사용할 형식 | 분리 기준 |
|---|---|---|
| 결함·회귀 | `bug` | 재현 절차와 기대/실제 동작을 숫자 목록으로 쓴다 |
| 사용자 기능 | `feature` | 사용자 가치와 완료 조건을 짧은 checklist로 쓴다 |
| 구조·정책 결정 | `proposal` | 대안 비교가 핵심이면 표와 결정 근거를 쓴다 |
| 바로 실행할 작업 | `implementation_task` | 근거·범위·검증을 중심으로 쓴다 |
| parent의 독립 작업 | `child_task` | scope·의존성·wave를 metadata 표로 쓴다 |

**결론은 요약, 근거는 배경, 명령은 검증 절**에 둔다. 다이어그램은 흐름·상태·경계를
문장보다 빨리 이해할 때만 쓴다.

## Parent와 child

기본은 `no split`이다. 한 owner의 검토 가능한 변경이면 아래 근거를 parent에 남긴다.

```text
Large Issue Breakdown Gate: no split
- 독립적인 acceptance와 rollback 경계가 없다.
- 한 owner와 한 MR로 검토할 수 있다.
- 이번 범위는 <파일/모듈> 안에 머문다.
```

다음 중 하나가 있을 때만 split한다.

- 한 Issue에 두면 독립된 delivery·rollback·review가 숨겨진다.
- 사용자가 병렬 ownership 또는 assignee 분리를 명시했다.
- 같은 수정을 여러 base 브랜치에 넣는다(release hotfix와 main 반영 같은 backport). 브랜치마다 PR이 따로
  나오므로 child로 나눈다. 한 이슈에 사이클 둘을 걸면 첫 사이클의 정리가 이슈를 닫고, 이슈 본문의
  계획 검토·진행 결과 구간을 두 사이클이 번갈아 덮어쓴다.

split하면 [분할 절차](references/child-split.md)를 읽고 따른다. `[p]`/`[s]` 실행 class, parent의
`## 하위 Task` 기록, `remote create-child`와 `--operation-id`·reconcile 복구가 거기에 있다.

## 읽기 좋은 body

절 구성은 `issueops remote render-template`이 출력하는 골격을 따른다. 사람이 읽을
문제·범위/비목표·완료 기준·실행 가능한 검증 명령과 기대 결과를 채운다.

```bash
issueops remote render-template --kind issue --template "$TEMPLATE" \
  --provider "$PROVIDER" --title "$TITLE" --json
```

child 본문은 `--kind child --template child_task`로 렌더한다(`--kind issue`는 child_task를 거부한다).
빈 골격의 `ok:false`는 아직 채우지 않은 필수 필드 목록이며 실패가 아니다.

로그는 secret을 제거한 짧은 code block으로만 붙인다. 긴 로그 전체나
스크린샷 대신 재현에 필요한 줄과 파일·명령을 적는다. 해시, 커밋 SHA 전문,
라벨 점수, plan 원문·repo-local plan 경로·`Plan Link`·`TBD`는 본문에 넣지 않는다.
plan-prep 네 항목은 waive로 채우지 않는다. 조사 결과나 불필요한 이유를 evidence로 쓴다.

## Canonical publication

1. 현재 provider 이슈·label 후보를 조사한다. 일치하는 이슈가 있으면 중복 생성 대신
   연결/갱신한다. 선택된 label·관련 이슈만 적용하고(score 기본 threshold 0.70) 무라벨 발행은 하지 않는다.
2. semantic 판단이 필요하면 `remote score --judge prompt`를 fresh 독립 read-only agent에게 주고 결과 JSON을
   `--judge file --judge-file`로 검증한다. 독립 agent가 없으면 deterministic 결과를 쓰고 그 선택을
   기록한다. override·`abstained`·label 생성 규칙은 [발행 세부 규칙](references/publication-details.md)을
   읽고 따른다.
3. 한국어 본문을 `fluent-korean` 스킬로 다듬는다. issueops와 함께 설치되므로 생략하지 않는다(원격 쓰기의
   선행 조건, `issueops-remote-write` 규칙 2). secret을 제거하고 실제
   assignee를 확인한다(`@me` 금지). 사용자가 따로 정하지 않았으면 인증된 사용자를 쓴다:
   `gh api user --jq .login` 또는 `glab api user`의 `username`. git 이메일에서 추측하지 않는다.
   설치된 `issueops-remote-write`를 활용할 수 있다.
4. body file을 읽고 preview의 `readability`를 확인한다. critical은 수정 후 재preview,
   warning은 수정하거나 이유를 기록한다. preview와 동일한 요청에만 `--confirm`을 붙인다.
5. URL·상태·본문 hash·label·assignee·hierarchy를 readback한다. 새 이슈의 본문 baseline은
   `status.issue_create_intent.body_sha256`이다. `body_syncs`는 첫 `sync-issue` 뒤에 생긴다.
   모호한 issue 생성은 `remote reconcile-issue --id ID --json`으로 확인하며 재생성하지 않는다.
   raw provider CLI/MCP 쓰기로 우회하지 않는다. 둘 이상의 artifact면 중단한다.

```bash
# create-issue는 actor 플래그를 받지 않는다(넘기면 flag 오류). 미리보기 뒤 같은 요청에 --confirm.
issueops remote create-issue --id "$ISSUEOPS_ID" --provider "$PROVIDER" \
  --title "$TITLE" --template "$TEMPLATE" --body-file "$BODY_FILE" \
  --label "$LABEL" --assignee "$ASSIGNEE" --json
```

## 품질·성능 게이트

- 품질: preview의 `readability.critical` 0, warning 처리 기록, 원격 write 전
  한국어 검토(`fluent-korean` 호출), 라벨 판단 decision 기록, secret redaction,
  hierarchy/label/assignee readback.
- 성능: issue 단계에서만 이 스킬을 로드한다. PR/MR reference를 함께
  중복 로드하지 않는다. 변경 전후 byte 수와 focused 검증 시간을 기록하되
  측정 없는 성능 개선을 주장하지 않는다.

provider, project authority, owner, body, label/assignee, hierarchy, 또는
durable intent가 모호하면 쓰지 않는다.

Files in this skill

  • SKILL.md13.7 KB
  • agents/openai.yaml646 B
  • references/child-split.md3.2 KB
  • references/input-research.md2.7 KB
  • references/issue-writing.md2 KB
  • references/publication-details.md2.3 KB

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.