mcpField
P
project-create-issues

project-create-issues

github.com/fandhe-ai开发2863 次安装3 天前更新
代码仓库

关于 project-create-issues

project-create-issues 是将 GitHub Project 中的草稿条目转换为 Issue 的技能,适用于整理项目任务的用户。它会保留转换前的字段值,并可将新 Issue 关联为父子任务。

主要功能

  1. 01筛选并选择草稿条目
  2. 02将草稿转换为 Issue
  3. 03保存并恢复项目字段值
  4. 04将子 Issue 关联至父 Issue
  5. 05汇总创建结果

适用场景

  1. 01把项目草稿转成可跟踪的 Issue
  2. 02将相关任务整理为父子 Issue
  3. 03保留转换前的 Status、Priority 和 Size

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/project-create-issues确认已加载。

详细介绍

来自项目 README

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タイトルPrioritySizeSub-issue
1#42feat: ソーシャルログインHighL#40 の子
2#43feat: パスワードリセットMediumM#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 無効にして実行する。ネットワーク遮断を解除できない環境では実行できない。

评论

支持 Markdown