mcpField
N
new-issue

new-issue

github.com/tenfyzhong開発044 回インストール2 週間前に更新
リポジトリ

new-issue について

会話の内容をもとに GitHub Issue を下書きし、作成するスキルです。リポジトリの指定または現在の Git プロジェクトからの検出に対応し、送信前に下書きの確認を求めます。

主な機能

  1. 01gh 認証とリポジトリへのアクセス確認
  2. 02指定または自動検出によるリポジトリ選択
  3. 03英語の Issue タイトルと説明の作成
  4. 04確認・修正用の下書き提示
  5. 05Issue 作成と URL の報告

活用シーン

  1. 01会話をもとにしたバグ報告の作成
  2. 02機能リクエストの構造化された GitHub Issue 化
  3. 03指定リポジトリへの Issue の送信

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tenfyzhong/skills-hub --skill new-issue

インストール後、Claude Code で/new-issueを入力して読み込まれたか確認します。

詳細

新しい Issue スキル

現在の会話のコンテキストに基づいて GitHub Issue を作成します。

前提条件の確認(最初に必ず確認)

モードの判定:ユーザーが対象リポジトリを指定したか確認します。

ユーザー入力モードGit リポジトリが必要
https://github.com/owner/repo明示いいえ
owner/repo明示いいえ
リポジトリの指定なし自動検出はい
常に必要:
# Check if gh CLI is available and authenticated
gh auth status

gh で認証されていない場合 → 「まず gh auth login を実行してください。」

自動検出モードのみ(リポジトリの指定なし):
# Check if in a git repository
git rev-parse --is-inside-work-tree

# Get repository info
gh repo view --json owner,name,url

Git リポジトリ内におらず、対象も指定されていない場合 → 「対象のリポジトリ(例:owner/repo または GitHub URL)を指定するか、Git プロジェクトに移動してください。」

入力

ユーザーは次のようなフレーズでこのスキルを起動します:

  • 「new issue」
  • 「create issue」
  • 「file an issue」
  • 「report this bug」
  • 「submit feature request」

任意:ユーザーは対象リポジトリを指定できます:

  • 完全な URL:https://github.com/owner/repo
  • 短縮形式:owner/repo

Issue のコンテキストは次の情報から取得します:

  • 現在までの会話履歴
  • 問題や機能についてのユーザーの説明
  • 話題に上ったコードスニペットやエラーメッセージ
  • 言及された関連ファイルパス

ワークフロー

ステップ 1:対象リポジトリを決定する

ケース A:ユーザーがリポジトリを指定した場合

ユーザーの入力を解析して owner/repo を抽出します:

# From URL: https://github.com/owner/repo or https://github.com/owner/repo/...
# Extract: owner/repo

# From short form: owner/repo
# Use directly

# Validate the repository exists and is accessible
gh repo view "$TARGET_REPO" --json owner,name,url

リポジトリが見つからない、またはアクセスできない場合 → 「リポジトリ '$TARGET_REPO' が見つからないか、アクセス権がありません。」

ケース B:現在の Git リポジトリから自動検出する場合

# Get repository info and check if it's a fork
gh repo view --json owner,name,isFork,parent,url

# If it's a fork, get parent (upstream) info
IS_FORK=$(gh repo view --json isFork -q '.isFork')
if [ "$IS_FORK" = "true" ]; then
  UPSTREAM_OWNER=$(gh repo view --json parent -q '.parent.owner.login')
  UPSTREAM_NAME=$(gh repo view --json parent -q '.parent.name')
  TARGET_REPO="$UPSTREAM_OWNER/$UPSTREAM_NAME"
else
  # Use current repo as target
  TARGET_REPO=$(gh repo view --json owner,name -q '.owner.login + "/" + .name')
fi
ステップ 2:コンテキストを分析して Issue の内容を生成する

会話のコンテキストに基づいて、次を生成します:

言語要件:

  • Issue のタイトルと説明のすべての内容は、必ず英語にします。
  • 会話が別の言語で行われている場合は、英語に翻訳または要約します。

タイトルの生成ルール:

  1. 簡潔にします(80 文字未満)。
  2. 明確な場合は、Issue の種類を示すプレフィックスで始めます:[Bug]、[Feature]、[Enhancement]、[Question]
  3. 中核となる問題や要望を明確に記述します。
  4. 適切な場合は命令形を使います。
  5. 英語のみを使用します。

説明の生成:

該当するセクションを使って説明を構成します:

## Description

[Clear explanation of the issue/feature request]

## Context

[Relevant background information from the conversation]

## Steps to Reproduce (for bugs)

1. [Step 1]
2. [Step 2]
3. [Expected vs Actual behavior]

## Proposed Solution (if discussed)

[Any solutions discussed in the conversation]

## Additional Information

- [Relevant code snippets]
- [Error messages]
- [Environment details if relevant]
ステップ 3:ユーザーに下書きを提示して確認してもらう(重要)

必ず question ツールを使って下書きを提示し、ユーザーの確認を得てください。

生成した Issue をユーザーに提示します:

## Issue Draft

**Target Repository**: [TARGET_REPO]

**Title**: [Generated Title]

**Description**:
[Generated Description]

---

Please review the above issue draft.

question ツールを使って、次のように質問します:

Options:
1. "Submit as-is" - Create the issue with current content
2. "Modify title" - Change the issue title
3. "Modify description" - Change the issue description
4. "Cancel" - Do not create the issue
ステップ 4:ユーザーによる変更に対応する

ユーザーが変更を選択した場合:

タイトルの変更の場合:

  • 新しいタイトルをユーザーに尋ねます。
  • 更新した下書きを表示します。
  • 確認のため、ステップ 3 に戻ります。

説明の変更の場合:

  • どのような変更を希望するか、ユーザーに尋ねます。
  • ユーザーは次の内容を指定できます:
    • 追加、削除、変更する具体的なテキスト
    • 「もっと短くする」や「X について詳しくする」といった一般的な指示
  • 更新した下書きを表示します。
  • 確認のため、ステップ 3 に戻ります。

ユーザーが確認するかキャンセルするまで繰り返します。

ステップ 5:Issue を作成する

ユーザーが確認したら、Issue を作成します:

# Create issue on the target repository
gh issue create \
  --repo "$TARGET_REPO" \
  --title "$ISSUE_TITLE" \
  --body "$ISSUE_BODY"

書式を保持するため、本文には HEREDOC を使用します:

gh issue create --repo "$TARGET_REPO" --title "$ISSUE_TITLE" --body "$(cat <<'EOF'
## Description

[Description content here]

## Context

[Context content here]

EOF
)"
ステップ 6:結果を報告する

Issue の作成後、次を提示します:

# Get the created issue details
gh issue view --repo "$TARGET_REPO" <ISSUE_NUMBER> --json number,title,url,state

出力形式


Issue を正常に作成しました

Issue: #[NUMBER] - [TITLE] リポジトリ: [TARGET_REPO] URL: [ISSUE_URL]

概要

[送信した内容の簡単な確認]


エラー処理

状況対応
コンテキストが提供されていない作成する Issue についてユーザーに説明を求める
ユーザーがキャンセルした「Issue の作成をキャンセルしました。Issue は作成されていません。」
API エラーエラーを報告し、権限を確認するよう提案する
レート制限ユーザーに知らせ、しばらく待つよう提案する
書き込み権限がない「[REPO] で Issue を作成する権限がありません。まずフォークすることを検討してください。」
リポジトリが指定されておらず、Git リポジトリ内にもいない対象リポジトリを指定するか、Git プロジェクトに移動するようユーザーに求める
リポジトリ形式が無効「リポジトリの形式が無効です。'owner/repo' または GitHub の完全な URL を使用してください。」

よくある間違い

  • 英語以外の言語でタイトルや説明を生成する
  • イシューの作成前に明示的なユーザー確認を省略する
  • イシューの本文に秘密情報や機密データを含める

重要な注意事項

  1. 必ず確認する:明示的なユーザー確認なしにイシューを作成してはいけません
  2. コンテキストを保持する:イシューに関連する会話のコンテキストを含めてください
  3. 柔軟な対象指定:リポジトリを明示的に指定する(URL または owner/repo)か、git から自動検出します
  4. フォークの考慮:自動検出する場合、フォークでは上流のリポジトリを対象にします
  5. 書式設定:イシューの本文では適切な Markdown 書式を使用してください
  6. プライバシー:イシューに機密情報(API キー、パスワードなど)を含めないでください
  7. 反復:送信前に複数回修正できるようにします

コメント