Skip to content
Back to skills

Issueops

ASecurity

Route an issue-driven work cycle to its current stage skill with `issueops next` and hold the invariants every stage shares. Use to start, resume, or continue an issue cycle: "이슈옵스", "이슈 작업 시작", "이어서 진행".

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

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

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

Scanned November 7, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Issueops?

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

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

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
description: 'Route an issue-driven work cycle to its current stage skill with `issueops next` and hold the invariants every stage shares. Use to start, resume, or continue an issue cycle: "이슈옵스", "이슈 작업 시작", "이어서 진행".'
---

# IssueOps

IssueOps는 이슈, 브랜치, 계획, 실행 lease, 검증 증거, PR/MR을 durable record
하나로 묶는다. 이 스킬은 **라우터**다. 단계의 일은 단계 스킬이 하고, 이 파일은
어느 단계인지 정하는 방법과 모든 단계가 공유하는 불변식만 소유한다.

이 본문은 복사·단독 주입 때도 적용되는 actor 계약이다. 단계 스킬은 설치되어 있으면
사용하되, 없으면 아래 계약과 CLI가 반환한 `next_command`로 진행한다. 명령·필수 입력을
확인할 수 없으면 그 지점만 보고하고 멈춘다. evaluator 자료나 sibling 설치를 요구하지 않는다.
참고 링크는 cwd가 아니라 symlink를 해소한 이 파일 위치에서 찾는다.

## 먼저 실행

```bash
issueops next --json
```

읽기 전용이다(fetch/provider 호출 없음).

1. 사용자나 현재 대화가 지정한 lifecycle ID가 있으면 처음부터
   `issueops next --id "$ISSUEOPS_ID" --json`을 실행한다. 없을 때만 자동 선택한다.
   `selected.id` 또는 `start` 결과의 ID를 이후 명령·인계·압축 요약에 유지한다.
2. `stage.key`를 아래 `## 단계 표`로 바꾸고 해당 스킬을 실행한다. 단계가 끝나면 같은
   ID로 `next`를 다시 읽고 다음 단계로 이어간다. 단계 선택 메뉴를 묻지 않는다.
   중단·취소 요청이면 `next_command`(머지 포함) 대신 `issueops-abandon`(`exits.abandon_command`)으로 간다.
3. actor 플래그는 아래 공통 불변식 (b)를 따르고, 나머지 placeholder는 record·계획·저장소에서 채운다.
   placeholder나 `--confirm` 자체는 사용자 질문 사유가 아니다.

- `ambiguous`라도 대화에 지정된 ID가 있으면 그 ID로 다시 읽고, 다른 사이클을 임의로 선택하거나 정리하지 않는다.
  `none`이면 요청 범위에 맞게 이슈 단계로 들어간다. 머지 대기 사이클 요청과 상태 조회의 처리는
  [next-routing-details.md](references/next-routing-details.md)에 있다.
- `blocked.*`는 아래 중단 규칙을 따른다. 다른 holder의 작업을 대신하거나 상태를 우회하지 않는다.

## 환경별 자동 세션 인계

**브랜치·canonical worktree 준비 후, 구현 진입 전**에 실행 세션을 자동 결정한다.
세션 선택 메뉴는 묻지 않는다. 전체 사이클은 draft PR/MR 발행·execution complete에서,
이슈 작성·계획만 요청했거나 더 좁은 종료점을 정했으면 그 범위에서 끝낸다.

- `issueops-plan`이 워크트리를 준비한 뒤 실행 세션을 고른다. 선택 순서(Herdr 확인 → 현재 세션 또는
  수동 두 번째 터미널, 비대화형 실행은 현재 세션)와 인계 절차는 [session-choice.md](references/session-choice.md)와
  [handoff-observation.md](references/handoff-observation.md)가 본문 계약이다. 인계할 때 그 둘을 읽고 따른다.
- 자동 분기는 실행 위치만 정한다. 원래 요청의 승인 범위·종료점을 그대로 유지하고, 현재 세션 진행·새 세션·
  보류를 명시한 최신 사용자 지시가 자동 분기보다 우선한다. 단계 스킬과 함께 쓰는 하위 스킬도 이 범위를
  따르며 일반적인 "계속할까요" 절차를 확인 지점으로 만들지 않는다([세부](references/session-boundary.md)).

## 단계별 협업

단계 라우팅은 아래 표 하나를 쓴다. 단계별 협업 스킬은 필요한 것만 로드하고 목록은
[stage-collaboration.md](references/stage-collaboration.md)에 있다. 공용 협업은 `gates-ledger`,
`issueops-review`, `issueops-remote-write`(원격 쓰기 전반), `explain`(사용자 보고)이다.
낡은 본문은 `issueops-sync-issue`/`issueops-sync-pr`로 관리 블록을 보존해 갱신한다.
Issue와 PR/MR 생성 스킬을 동시에 읽지 않는다.

## 세션 경계

1·2단계는 worktree 없이 source 준비 세션에서, 3단계도 같은 세션에서 수행한다.
3단계 `execution prepare`가 worktree·lease를 만들고 위 인계를 적용한다.
4단계부터 선택한 세션이 canonical worktree에서 수행한다. current는 기존 lease를 유지하고
새 세션은 release 확인 후 인수한다. 인수는 `replace --preview`에서 시작해 `next_command`를
`claim --claim-current-token`까지 따라가는 것이 유일한 경로다
([세션 경계](references/session-boundary.md)).

## 공통 불변식

**(a) 단계 판별.** 모든 단계 스킬은 선택한 ID의 `issueops next --id "$ISSUEOPS_ID" --json`으로 시작하고
`stage.key`가 자기 단계인지 확인한다. 아니면 표가 지목하는 스킬로 안내한다. `blocked.*`
면 중단한다. phase를 추정하지 않는다.

**(b) actor 플래그.** `next_command_kind`가 `exact`면 `next_command`를 그대로 실행한다. 채우지 못한
자리표시자와 스킬 예시의 변수는 `issueops execution whoami --json` 값으로 바꾼다: `$RECORD_ACTOR_FLAGS` =
`record_actor_flags`, `$ACTOR_FLAGS` = `claim_actor_flags[0]`. 손으로 조립하지 않고, 두 값의 셸 따옴표 처리와
`${=VAR}` 금지는 [불변식 세부 규칙](references/invariant-details.md)을 따른다.

**(c) lease fencing.** durable mutation(phase 전이, record 기록, artifact stage) 전마다
exact lifecycle ID·generation·native actor·canonical cwd를 현재 record와 대조한다.
record 기록은 `RECORD_ACTOR_FLAGS`, lease 전이와 publication은 `ACTOR_FLAGS`를 쓴다. 불일치는 stop이다.
사용자의 "그 세션은 내가 껐어"는 quiescence 증거가 아니다. 모호한 결과는 재실행하지 않고 reconcile한다.
lease 전 준비 기록과 lease 뒤 whoami를 받는 위치는 [불변식 세부 규칙](references/invariant-details.md)을 따른다.

**(d) 편집 대상 확인.** 편집 배치마다 셸 프롬프트를 믿지 말고 `pwd`, branch, HEAD, 물리 경로 비교(`pwd -P`),
두 checkout의 `git status --short`를 실측한다([명령·복구 절차](references/edit-target-check.md)). 도구가 다른
체크아웃에 썼으면 멈춘다. worker 프롬프트에는 exact lifecycle ID, generation, branch, worktree, 허용 경로,
수락 기준, 중단 규칙을 넣는다.

**(e) 코드베이스 존중.** 새로 만들기보다 기존 구현의 확장과 재사용을 먼저 보고, 하위 호환성·성능 영향·side effect를
계획·구현 루프·리뷰에서 명시한다([세 곳의 기준](references/codebase-respect.md)).

**(f) 사용자 보고.** 진행·완료·중단 보고와 질문은 ASD-STE100 기반 보고 규칙
([report-ste100.md](../fluent-korean/references/report-ste100.md))을 따른다. 결론부터 쓰고, 되돌릴 수 없는 위험은 `경고`로 먼저 밝힌다.

## Core contract

durable phase는 `problem`, `grill`, `plan`, `compatibility-review`, `implement`,
`ai-slop-clean`, `feedback`, `pr`, `done`이다. `issue`는 linkage, `cleanup`은 done 뒤 후처리다.
한 cycle은 exact ID·canonical worktree·generation-fenced holder·linked Issue·검증된 PR/MR을 갖는다.
CLI `issueops ... --json`/MCP `issueops_execution`이 state를 소유하고 `execution complete`만
done을 기록한다. hook은 SessionStart의 project-doc context만 제공하며 작업을 맡지 않는다.

## 단계 표

`stage.key`를 스킬과 label로 바꾸는 유일한 표다. CLI는 이 표를 모른다. record의 `phase`는 기록된
durable 단계이고 `stage.key`는 `next`가 고른 다음 할 일이라 둘이 다를 수 있다(예: phase `ai-slop-clean`에서
stage `verify`·`commit-push`). 기록 명령의 응답에 phase가 그대로여도 실패가 아니다. 진행은 `next`로 읽는다.

| stage.key | 스킬 | label |
|---|---|---|
| `none`, `issue` | `issueops-create-issue` | 이슈 확정·생성 |
| `prepare` | `issueops-prepare` | 브랜치 준비 |
| `plan.architecture`, `plan.write`, `plan.review`, `plan.handoff` | `issueops-plan` | 문서 확인·아키텍처·계획·검토·인계 |
| `claim` | 스킬 없음. `next_command` 체인(claimable `claim --claim-current-token`, released `replace --preview`, revoking `replace --finalize-preview`)을 lease가 active(self)가 될 때까지 따라간 뒤 `next`를 다시 실행한다 | 현재 index의 label |
| `implement.enter`, `implement` | `issueops-implement` | 구현 |
| `clean` | `issueops-slop-clean` | AI slop 정리 |
| `docs` | `issueops-docs` | 프로젝트 문서 반영 |
| `verify` | `issueops-verify` | 검증 |
| `commit-push` | `atomic-commit-push` | 커밋·푸시 |
| `pr.create` | `issueops-create-pr` | PR/MR 발행·완료 |
| `pr.complete` | `issueops-complete` | PR/MR 발행·완료 |
| `done` | 머지 전이면 `issueops-merge`(draft 해제만이면 `remote mark-ready`), 머지 뒤면 `issueops-cleanup`. 구분은 `issueops remote merge-pr --id ID --json`의 `already_merged`로 한다 | 머지·정리 |
| `cleanup.resume` | 중단된 cleanup의 preview(`next_command`)부터. abandon은 `issueops-abandon`, 그 외는 `issueops-cleanup` | 머지·정리 |
| `takeover` | 스킬 없음. `next_command`와 그 결과의 `next_command`를 따라간다. 죽은 홀더 인수는 `issueops-abandon`이 설명한다 | 현재 index의 label |
| `blocked.pending`, `blocked.holder_live` | 없음. `next_command`로 상태를 다시 읽는다 | 현재 index의 label |
| `blocked.root_conflict` | 충돌 사이클을 `issueops-cleanup`(머지됨) 또는 `issueops-abandon`(미머지)으로 먼저 정리한다 | 현재 index의 label |
| `unknown`, `invalid` | 없음. `next_command`로 record를 읽고 `warnings`의 missing 키를 사용자에게 보여 준다 | 현재 index의 label |
| `ambiguous` | 사용자에게 `candidates` 중 ID 선택 또는 새 사이클 시작을 요청 | 없음 |

`missing`의 해소 명령은 CLI의 `next_command`가 소유한다.

## 구현·검증 규칙

본문만으로 실행해도 evidence schema를 생략하지 않는다. domain 검토·환경 표·feedback·ready/done 보고 전 draft completion record의
필수 항목은 [delivery-evidence-rules.md](references/delivery-evidence-rules.md)에 있고 완료 보고 전에 읽는다. 테스트 성공만으로 remote 갱신·thread reply·merge readiness·cleanup 완료를 대신하지 않는다.

- behavior change는 focused failing test에서 시작해
  `RED→GREEN→SURFACE→CLEAN` 순서로 검증한다.
- 작업은 canonical worktree에서만 한다. source checkout에 구현하지 않는다.
- 단계 스킬이 이름으로 가리키는 `.issueops/` 문서(`AGENT_WORKFLOW.md`, `VCS.md` 등)가 저장소에 없으면
  "파일 없음"으로 기록하고 그 문서 없이 진행한다. 없는 문서는 막힘이 아니다.
- API/DTO/OpenAPI 변경은 `.issueops/OPEN_API_SPEC.md` gate를 적용한다.
- ai-slop-clean은 실제 diff가 생긴 뒤 실행하고, cleanup 후 관련 검증을 다시
  실행한다.
- publication 전에 구현 diff를 project docs와 양방향으로 대조하고, 스키마 변경이 있으면 실측 증거를 기록한다.
  세부는 [delivery-evidence-rules.md](references/delivery-evidence-rules.md)에 있다.
- Git staging/push는 `atomic-commit-push`, history 작업은 `git-operations`가 소유하며 승인된 issue branch의
  commit·push는 다시 묻지 않는다.
- destructive cleanup은 exact target과 fingerprint를 preview한 뒤 별도 사용자
  승인을 받는다.

## 원격 쓰기

`issueops-remote-write`가 설치되어 있으면 사용한다. 단독 실행 순서와 계약 변경 feedback 규칙은
[remote-write-standalone.md](references/remote-write-standalone.md)를 따른다. `issueops remote`
명령이 있는 쓰기(이슈·PR 본문, 댓글, 답글)는 raw provider 쓰기로 우회하지 않고, 모호한 write는
reconcile하며 중복 생성하지 않는다. CLI가 provider 명령을 직접 안내한 단계(`branch prepare`의 `steps`)는
그 명령을 쓴다.

## Reference map

본문으로 라우팅·권한·증거·중단을 판단하고 필요한 recipe만 `references/`에서 읽는다:
`remote-issue.md`(provider 계층), `evidence-contract.md`(domain/API/live/completion),
`execution.md`(lease/claim/recovery/publication), `session-choice.md`(세션 인계),
`orchestration.md`(child), `cleanup-state.md`(머지 후 정리),
`review-feedback.md`(thread; 봇은 `review-agent-feedback`, 사람 리뷰는 `pr-review`).

## Stop conditions

다음 조건이면 해당 phase나 remote write를 실행하지 않는다. 승인 범위 안에서 조사·수정·
재검증으로 해소할 수 있으면 에이전트가 해소하고 같은 ID로 `next`를 다시 읽는다.
stale 판정이나 테스트 실패 자체를 사용자에게 진행 여부를 물을 이유로 삼지 않는다.

- provider, credentials, project, Issue owner가 모호하다. target branch는
  Execution ownership의 base 선택 순서로 해소하고 질문 사유로 삼지 않는다.
- 사용자가 이슈 없이 하라고 한다(사이클은 늘 이슈에 묶인다). `start` 전에 묻는다.
- intent·success criteria·domain term 해석이 구현을 바꿀 만큼 갈린다.
- architecture open question, compatibility blocker, stale review(`architecture_review_stale` 포함)가 남아 있다.
- branch/worktree/plan/generation/actor가 current record와 맞지 않는다.
- strict PR readiness가 Issue, branch link, plan, worktree, upstream,
  ai-slop-clean, project-doc 반영 판정, 스키마 실측 근거, contract feedback를
  누락했다고 보고한다.
- label·assignee·한국어 body·target branch·live readback이 검증되지 않았다.
- merge evidence 없이 cleanup을 요청한다.

조사·문서·관례로 답할 수 있으면 진행하고 근거를 보고한다. 질문은 해소되지 않는 요구사항,
승인 범위 변경, 필요한 권한/자격 증명, 자동 복구 불가 충돌에 한정한다. 동일 blocker가 두 번의 복구 뒤에도
남으면 명령·원인을 보고하고 중단하며, 다른 holder를 무한 polling하거나 모호한 원격 mutation을 반복하지 않는다.

## IssueOps benchmark artifact contract

Benchmark 응답에는 의도나 계획만 쓰지 말고 labeled evidence를 넣는다. 5개 라벨과
semantic judge 규칙은 [benchmark-artifact.md](references/benchmark-artifact.md)에 있다.

## Execution ownership

base 선택 순서와 보고 규칙은 [base-selection.md](references/base-selection.md)에 있다. 형제 prepare 스킬이 없어도 그 순서를 적용한다.

active holder만 canonical worktree에서 구현·검증·publication·`execution complete`를 수행한다.
complete는 done과 lease 해제만 기록한다. merge·resource 삭제는 별도 승인 단계다.

Files in this skill

  • SKILL.md14.7 KB
  • agents/openai.yaml626 B
  • references/base-selection.md529 B
  • references/benchmark-artifact.md884 B
  • references/cleanup-state.md9.9 KB
  • references/codebase-respect.md508 B
  • references/delivery-evidence-rules.md3.5 KB
  • references/edit-target-check.md664 B
  • references/evidence-contract.md4.4 KB
  • references/execution.md18.5 KB
  • references/handoff-observation.md4.9 KB
  • references/invariant-details.md1.5 KB
  • references/next-routing-details.md1.1 KB
  • references/orchestration.md5.7 KB
  • references/remote-issue.md12.1 KB
  • references/remote-write-standalone.md1004 B
  • references/review-feedback.md7.1 KB
  • references/session-boundary.md1.4 KB
  • references/session-choice-cmux.md6.1 KB
  • references/session-choice-herdr.md19.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.