🫶

Claude Code と一緒にissueを作ろう!

に公開

エージェント型のコーディングツール が自立的に Pull Request を作成してくれる昨今、人が見ても AI が見ても、内容が明確な issue を作っておくことは大切です。

と、思いつつも、とりあえず忘れないようにとタイトルだけ書き残した issue を作りっぱなしになってしまっていたりします。

現状、定期的に見回りをして内容を整理しているのですが、今回は Claude Code にそのサポートをしてもらうためのスラッシュコマンドを作ってみました。

作りたいもの

今回作りたいのは、雑に作った issue の内容を読み取り、 Claude Code と対話しながら内容を整理してもらうためのコマンドです。

次のようなものを想定します。

  1. タイトルだけ書いた issue を指定すると、Claude Code がその内容を推測
  2. テンプレートに沿って issue の叩き台を作成
  3. 対話的に内容を詰めていき、最終的に issue を更新

MCP サーバー の設定

まず、GitHub issue を読み込めるように設定します。

GitHub CLI を直接叩いてもらってもいいのですが、今回は MCP 経由で GitHub の操作を行います。

参考

https://docs.anthropic.com/en/docs/claude-code/mcp

https://github.com/github/github-mcp-server

以下のように PAT で設定をしました。

claude mcp add --transport http github -s user https://api.githubcopilot.com/mcp/ -H "Authorization: Bearer <your_github_pat>"

-sは設定を反映のスコープを指定するオプションです。

  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "Authorization": "Bearer <your_github_pat>"
      }
    }
  }

PAT の権限としては、issue の読み書き、コードとメタデータの読み取り権限あたりがついていれば十分です。

スラッシュコマンドの作成

次に、スラッシュコマンドとして、次の指示を登録します。
スラッシュコマンドの作り方については、こちらにまとまっています。
https://docs.anthropic.com/ja/docs/claude-code/slash-commands

次の内容を、~/.claude/commands/tidy-issue.mdへ保存しました。

作成したスラッシュコマンド

# GitHub Issue の整理コマンド

## 基本指示

次の手順で issue の内容を整理する。

1. タイトルを元に当該 issue の種類を推測する。
2. 種類に応じて issue のテンプレートを確認する
3. issue に記載されている内容がテンプレートの内容を満たしていなければ、ユーザと対話的に内容を整理し、埋めていく
   1. コードベースを確認し、内容の叩き台を作成し、ユーザーに確認してもらうこと
   2. 内容が推測できない場合は、無理に作成せず、ユーザーに委ねること
   3. ユーザーが回答しやすいように、質問・確認は 1 点ずつ行うこと
4. コードベースを確認し、記載内容の妥当性を確認する。不明瞭な点があれば、ユーザーに追加の記載をお願いする
5. 内容の作成が完了したら、issue の内容を更新する

!`read -ra ARGS <<< "$ARGUMENTS"`

repository: ${ARGS[0]}
issue number: ${ARGS[1]}

issue number が指定されていない場合は、当該リポジトリの オープンされた issue を新しい順に確認し、内容が充足していない issue を選定し、ユーザーに提示する。

repository が指定されていない場合は、ユーザーに入力を促し、終了する。

## issue の種類

issue には次の種類が存在する

- 機能追加
- バグ報告

## 種類ごとのテンプレート

### 機能追加

```

# 背景

[背景情報をここに記載]

# 仕様

## 入力

- [入力仕様をここに記載]

## 出力

- [出力仕様をここに記載]

# その他

[補足事項をここに記載]

```

### バグ報告

```

# 概要

<!-- バグの内容を明確かつ簡潔に説明。 -->

[バグの概要をここに記載]

# 再現手順

1. [手順 1]
2. [手順 2]
3. [手順 3]

# 想定挙動

<!-- 何が起こると予想したかを明確かつ簡潔に説明。 -->

[想定していた動作をここに記載]

# その他

[補足事項をここに記載]
```

実行結果

こちらの画像を 3D データに変換するプロジェクトにて実行結果を確認してみます。

まず、新しいフォーマットの出力をサポートする issue を雑に起票します。
雑に起票した issue

先ほど作成したスラッシュコマンドを実行します。
コマンドの通りにリポジトリ内の issue を探索していますね。
スラッシュコマンドで指示

タイトルから内容を推測し、テンプレートに沿った内容が提案されています。
issueの叩き台

対話的に内容を詰めていきます。
特に、この STL ファイルの出力形式の部分、作成者である私にはまったく知識がありませんでした。こういった形で考慮できていなかった仕様について考えられるのはいいですね。
対話的に微調整

最終的な出力はこちら。
指定したテンプレートに沿って、内容が整理されています。
最終的な出力

まとめ

Claude Code のスラッシュコマンドを使って、雑に作った issue を対話的に整理するツールを作ってみました。

タイトルだけ書いて放置しがちな issue も、Claude Code と一緒に整理すれば、AI も人間も理解しやすい内容に仕上がります。特に、自分が詳しくない領域の考慮点を提案してくれるのは助かりますね。

皆さんも、自分のワークフローに合わせたコマンドをぜひ作ってみてください。

株式会社TechSword

Discussion