From ghflow
GitHub 이슈를 조직 템플릿에 맞춰 생성하는 스킬. 사용자가 '이슈 만들어줘', '이슈 생성', '버그 리포트', '기능 제안', '작업 등록', 'create issue', 'github issue', '/create-issue' 등을 말하면 트리거한다. 이슈와 관련된 요청이면 적극적으로 이 스킬을 사용할 것. Usage: /create-issue [-y] <사용자 의도>
npx claudepluginhub hbs9312/hbs9312-plugins --plugin ghflowThis skill uses the workspace's default tool permissions.
GitHub 이슈를 조직/레포의 이슈 템플릿에 맞춰 생성한다. 사용자의 의도를 파악하여 적절한 템플릿을 선택하고, 내용을 채워 이슈를 발행한다.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
GitHub 이슈를 조직/레포의 이슈 템플릿에 맞춰 생성한다. 사용자의 의도를 파악하여 적절한 템플릿을 선택하고, 내용을 채워 이슈를 발행한다.
/create-issue <사용자 의도>
/create-issue -y <사용자 의도> # 확인 없이 즉시 생성
템플릿은 세션 시작 시 ghflow SessionStart 훅이 현재 레포와 조직의 .github 레포에서 미리 가져와 파일로 저장해 둔다. 이 스킬은 자체 캐싱을 하지 않고, 훅이 남긴 파일을 그대로 읽어 사용한다.
읽어야 할 경로:
REPO_ID=$(gh repo view --json nameWithOwner --jq '.nameWithOwner')
SLUG=$(echo "$REPO_ID" | tr '/' '_' | sed 's|_|__|') # "org/repo" → "org__repo"
TEMPLATES_FILE="/tmp/ghflow/${SLUG}/templates.json"
또는 더 간단히:
SLUG="$(echo "$REPO_ID" | sed 's|/|__|')"
cat "/tmp/ghflow/${SLUG}/templates.json"
파일 구조:
{
"repo": "soy-media/velvetalk-fe",
"fetched_at": "2026-04-13T...",
"issue_templates": [
{
"source": "soy-media/velvetalk-fe" | "soy-media/.github",
"filename": "bug_report.md",
"name": "버그 리포트",
"title_prefix": "[BUG] ",
"labels": ["bug"],
"assignees": [],
"body": "## 🐛 버그 설명\n..."
},
...
],
"pr_templates": [...]
}
템플릿 조회 규칙:
issue_templates 배열만 사용 (PR용은 create-pr에서 사용).github 레포 템플릿이 병합되어 있으며, 파일명이 겹치면 현재 레포가 우선한다 (훅이 처리함)issue_templates가 비어 있으면: 사용자에게 "세션 시작 훅이 아직 실행되지 않았거나 템플릿을 찾지 못했습니다. 세션을 재시작하거나 템플릿 없이 진행할지 물어봐주세요"라고 안내하고 계속할지 확인한다. 계속하면 자유 양식으로 본문을 작성한다.사용자의 입력에서 다음을 판단한다:
| 판단 항목 | 설명 |
|---|---|
| 템플릿 종류 | issue_templates 배열 중 하나를 선택. name/filename으로 의도에서 자연스럽게 추론 |
| 제목 | 템플릿의 title_prefix 뒤에 붙을 간결한 제목 |
| 본문 내용 | 템플릿의 body 각 섹션을 채울 내용 |
| 라벨 | 템플릿 기본 라벨(labels) + 사용자가 추가로 지정한 라벨 |
| Assignees | 기본: 현재 사용자 본인. 별도 지시가 있으면 추가 |
컨텍스트가 부족한 경우:
사용자의 입력만으로 템플릿 섹션을 채우기 어렵다면, 부족한 부분을 구체적으로 짚어서 되물어야 한다. 예시:
단, 모든 섹션을 강제로 채울 필요는 없다. 사용자가 제공한 정보로 핵심 섹션을 채울 수 있으면 나머지는 비워두거나 적절히 생략한다.
-y 플래그가 없으면, 이슈를 생성하기 전에 다음 형식으로 미리보기를 보여주고 확인을 받는다:
## 이슈 미리보기
- **레포**: soy-media/velvetalk-fe
- **유형**: 기능 제안 (템플릿 출처: soy-media/.github)
- **제목**: [FEAT] 채팅방 메시지 검색 기능
- **라벨**: enhancement
- **Assignees**: hbs9312
---
### 본문
## 🚀 기능 제안 배경
채팅방에서 이전 대화 내용을 찾기 어려움...
## 💡 제안하는 기능
...
---
> 이대로 이슈를 생성할까요?
사용자가 수정을 요청하면 반영 후 다시 미리보기를 보여준다.
-y 플래그가 있으면, 미리보기 없이 바로 생성한다.
gh issue create \
--repo <org>/<repo> \
--title "<title_prefix><제목>" \
--body "<본문>" \
--label "<라벨1>,<라벨2>" \
--assignee "<사용자>,<추가 assignee>"
생성 후 이슈 URL을 사용자에게 알려준다.
gh api user --jq '.login'body는 frontmatter 이후의 마크다운 본문이다.