project-create-issues
プロジェクトのドラフトアイテム (DraftIssue) を実 GitHub Issue に変換し、Status/Priority/Size 等のフィールド値を引き継ぐ。親 Issue を指定または新規作成して `gh api .../sub_issues` で sub-issue として紐付け可能。「ドラフトを Issue 化」「DraftIssue を変換」「プロジェクトのタスクを Issue にして」などで使用。
How do I install this agent skill?
npx skills add https://github.com/fandhe-ai/agent-cli-skills --skill project-create-issuesIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill is designed to convert GitHub Project draft items into real issues. It is generally safe for its intended purpose but lacks sanitization for draft content, which creates a surface for indirect prompt injection.
- Socketpass
No alerts
- Snykwarn
Risk: MEDIUM · 1 issue
What does this agent skill do?
project-create-issues
プロジェクト内のドラフトアイテムを GitHub Issue に変換し、親子関係(sub-issues)を設定します。
前提条件
- 対象の GitHub Project にドラフトアイテムが存在すること
ghCLI がインストールされ、認証済みであること(projectスコープ付き)
フロー
Step 1: ドラフトアイテムを取得する
gh project item-list <number> \
--owner <owner> \
--format json \
--limit 999
JSON 出力からタイプが DraftIssue のアイテムをフィルタする。
Step 2: 変換対象をユーザーに確認する
ドラフトアイテムの一覧を表示し、変換対象を確認:
- 全件変換
- 特定のアイテムのみ選択
Step 3: 親 Issue を決定する
ユーザーに以下を確認:
- 既存の親 Issue 番号を指定する
- 新規に親 Issue を作成する
- 親 Issue なし(個別 Issue のみ作成)
新規作成の場合:
gh issue create \
--title "feat: プロジェクト名" \
--body "$(cat <<'EOF'
## 概要
プロジェクトのトラッキング Issue。
## サブタスク
(sub-issues として自動追加されます)
EOF
)"
Step 4: ドラフトのフィールド値を保存する
変換前に各ドラフトアイテムのフィールド値を取得・保存する:
gh project item-list <number> \
--owner <owner> \
--format json \
--limit 999
各アイテムの Status, Priority, Size 等のフィールド値を記録しておく。
Step 5: Issue を作成してプロジェクトに追加する
各ドラフトアイテムに対して:
# 1. Issue を作成
gh issue create \
--title "<ドラフトのタイトル>" \
--body "<ドラフトの本文>" \
--repo <owner>/<repo>
# 2. 作成した Issue をプロジェクトに追加
gh project item-add <number> \
--owner <owner> \
--url <issue-url> \
--format json
# 3. 新しいアイテムにフィールド値をコピー
gh project item-edit \
--id <new-item-id> \
--field-id <field-id> \
--project-id <project-id> \
--single-select-option-id <option-id>
# 4. 元のドラフトアイテムを削除
gh project item-delete <number> \
--owner <owner> \
--id <draft-item-id>
Issue タイトルは Conventional Commits 形式を推奨: feat:, fix:, chore: 等。
Step 6: Sub-issue として紐付ける
親 Issue が指定されている場合、各子 Issue を sub-issue として紐付ける:
# 子 Issue の database id(ノード ID ではない数値 id)を取得する
child_id=$(gh api "repos/{owner}/{repo}/issues/{child_number}" --jq '.id')
gh api \
--method POST \
"repos/{owner}/{repo}/issues/{parent_number}/sub_issues" \
-F "sub_issue_id=${child_id}"
Note:
sub_issue_idには issue 番号でもノード ID でもなく database id(gh api repos/{owner}/{repo}/issues/<number> --jq '.id'の数値)を渡す。数値として送るため-Fを使う。
Step 7: 結果を報告する
作成された Issue の一覧を表示:
| # | Issue | タイトル | Priority | Size | Sub-issue |
|---|---|---|---|---|---|
| 1 | #42 | feat: ソーシャルログイン | High | L | #40 の子 |
| 2 | #43 | feat: パスワードリセット | Medium | M | #40 の子 |
注意事項
- Issue タイトルは Conventional Commits 形式を推奨
- ドラフト→Issue 変換時にフィールド値が失われるため、Step 4 で事前に保存しておく
- ラベル・アサイニー・マイルストーンが必要な場合はユーザーに確認する
- 大量のドラフト変換時は GitHub API レート制限に注意する
- ネットワークを要する(主に API 経由。後述の「sandbox 環境での実行」節を参照)
検証
Step 7 完了後、以下で作成された Issue とプロジェクトへの追加を確認する:
gh issue list --state open --limit 20
gh project item-list <number> --owner <owner> --format json --limit 999
変換前のドラフトが消え、実 Issue がプロジェクトに追加されていれば完了。親 Issue の sub-issues は gh api repos/{owner}/{repo}/issues/{parent_number}/sub_issues で確認する。
sandbox 環境での実行
このスキルはネットワーク越しの GitHub 操作(ドラフト→Issue 変換・プロジェクト追加)を必須とする。該当コマンドはコマンド単位で sandbox 無効にして実行する。ネットワーク遮断を解除できない環境では実行できない。
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/fandhe-ai/agent-cli-skills/project-create-issues">View project-create-issues on skillZs</a>