Agent Skills

project-create-issues

プロジェクトのドラフトアイテム (DraftIssue) を実 GitHub Issue に変換し、Status/Priority/Size 等のフィールド値を引き継ぐ。親 Issue を指定または新規作成して `gh api .../sub_issues` で sub-issue として紐付け可能。「ドラフトを Issue 化」「DraftIssue を変換」「プロジェクトのタスクを Issue にして」などで使用。

Install

npx skills add https://github.com/fandhe-ai/agent-cli-skills --skill project-create-issues
SKILL.md

project-create-issues

プロジェクト内のドラフトアイテムを GitHub Issue に変換し、親子関係(sub-issues)を設定します。

前提条件

  • 対象の GitHub Project にドラフトアイテムが存在すること
  • gh CLI がインストールされ、認証済みであること(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 無効にして実行する。ネットワーク遮断を解除できない環境では実行できない。

Search skills and MCP servers

Fuzzy search across 23,137 skills and servers