Closed9

Claude Code Action を調べる

sikeda107sikeda107

Claude Code Action で Claude Code を GitHub に統合しよう

.github/workflows/claude.yml の claude code を実施しているところ

  - name: Run Claude Code
    id: claude
    uses: anthropics/claude-code-action@beta
    with:
      anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
      allowed_tools: [
        "bash",
        "git",
        "gh"
      ]
  - name: Run Claude Code
    id: claude
    uses: anthropics/claude-code-action@beta
    with:
      anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
      # レビューを依頼するプロンプトを指定
      direct_prompt: |
        あなたは優秀な編集者です。PRの内容を確認し、以下の点についてレビューしてください。
        - 誤字脱字や文法の誤り
        - 内容の不明瞭な箇所
        - 記事の構成や流れ
sikeda107sikeda107

GHA のリポジトリ
anthropics/claude-code-action

examples に例がある

examples/claude-auto-review.yml
このプルリクエストを確認し、包括的なフィードバックをお願いします。

フォーカス
- コードの品質とベストプラクティス
- 潜在的なバグや問題
- パフォーマンスに関する考慮事項
- セキュリティへの影響
- テストカバレッジ
- 必要に応じてドキュメントの更新

改善のための具体的な提案を含む建設的なフィードバックを提供する。
インラインコメントを使用して、特定の懸念事項を強調してください。
# allowed_tools: 「mcp__github__add_pull_request_review_comment」
examples/claude-pr-path-specific.yml
変更されたファイルを中心にこのプルリクエストをレビューしてください。
フィードバックをお願いします:
- コードの品質とベストプラクティスの遵守
- 潜在的なバグやエッジケース
- パフォーマンスに関する考慮事項
- セキュリティへの影響
- 改善提案

このPRは重要なソースコードのパスに触れます。
をお願いします。
examples/claude-review-from-author.yml
このプルリクエストの徹底的なレビューをお願いします。

これは慎重なレビューを必要とする特定の作者からのものです、
特に注意してください:
- プロジェクトのコーディング標準への準拠
- 適切なエラー処理
- セキュリティのベストプラクティス
- テストカバレッジ
- ドキュメンテーション

詳細なフィードバックと改善提案の提供
sikeda107sikeda107

入力値 、使いそうなものだけ

  • model
    • モデル
  • use_bedrock
    • Amazon Bedrock with OIDC authentication
  • use_vertex
    • Use Google Vertex AI with OIDC authentication
  • allowed_tools/disallowed_tools
    • Additional tools or Never use

メンション例

  • この関数は何をするのですか?
  • この関数にエラー処理を追加できますか?
  • この PR をレビューして、改善点を提案してください。
  • 私が見ているバグのスクリーンショットです[スクリーンショットをアップロード]。修正できますか?

サポートされてるGitHubイベントがあるらしい(つまりサポート外のイベントがある)
ピックアップ

  • できること
    • 問題でトリガーされた場合: 常に作業用の新しいブランチを作成します
    • オープンPRでトリガーされた場合:常に既存のPRブランチに直接プッシュします
    • クローズされたPRでトリガーされた場合: 元のブランチがアクティブではなくなったため、新しいブランチを作成します。
  • できないこと
    • PR の承認
    • デフォルトでは、Claudeはallowed_tools設定で明示的に許可されない限りBashコマンドを実行できません。
    • ブランチのマージ、リベース、コミットのプッシュ以外の Git 操作は実行できません。

.mcp.json が root にあれば勝手に読んでくれる。使う時はallowed_tools にそのツールを書く。

sikeda107sikeda107

アクセス制御

  • リポジトリへの書き込みアクセス権を持つユーザーによってのみ実行可能
  • GitHub アプリとボットはこのアクションをトリガーできない
  • 各アクションの呼び出しは、それがトリガーされたリポジトリに制限される
  • トークンは他のリポジトリにアクセスや設定された権限以上はできない
sikeda107sikeda107

このリポジトリ自体も Claude Code でレビューさせている
.github/workflows/claude-review.yml

direct_prompt
このPRをご覧ください。変更点を見て、以下のようなフィードバックをお願いします:
- コードの品質とベストプラクティス
- 潜在的なバグや問題点
- 改善提案
- 全体的なアーキテクチャとデザインの決定

建設的で具体的なフィードバックをしてください。該当する場合は、インラインでコメントしてください。

.github/workflows/ci.yml
CI が全部 Bun

sikeda107sikeda107

action.yml

  1. bun セットアップ
  2. prepare.ts
    1. GitHub トークンを設定する
    2. GitHub コンテキストを解析する(すべての操作で一度だけ実行)
    3. 書き込み権限を確認する
    4. トリガー条件を確認する
    5. アクターが人間であることを確認する
    6. 初期トラッキングコメントを作成する
    7. GitHub データを取得する(ブランチ設定とプロンプト作成の両方で使用)
    8. ブランチを設定する
    9. 初期コメントをブランチリンクで更新する(新しいブランチを作成した場合のみ)
    10. プロンプトファイルを作成する
    11. MCP 設定を取得する
  3. anthropics/claude-code-base-action@beta 呼び出し
  4. update-comment-link.ts
    1. GitHub上のコメントを、実行結果やブランチ情報に応じたリンク情報で更新する
  5. Claude Code Report を stdout へ
  6. GitHub Token の Revoke
sikeda107sikeda107

src/mcp/github-file-ops-server.ts
Git ツリー用 REST API エンドポイント - GitHub Enterprise Cloud Docs

code search result : repo:anthropics/claude-code-action github_file_ops

https://github.com/anthropics/claude-code-action/blob/cbc3ca285d987a96a72ba1e9c4a055cd428b235f/src/mcp/install-mcp-server.ts#L26-L39

bun をつかって local MCP サーバをホストしてる。

commit_files

1つのコミットで1つ以上のファイルをリポジトリにコミットします(リモートリポジトリにアトミックにコミットします)
入力:リポジトリルートからの相対ファイルパスの配列(例:["src/main.js", "README.md"])。すべてのファイルはローカルに存在する必要があります。

  1. ブランチ参照を取得し、最新のコミット SHA を確認
  2. 基本となるツリー(ファイル構成)の SHA を取得
  3. 新しいファイルツリーを作成(各ファイルの内容を含める)
  4. 新しいツリーを元にコミットを作成
  5. ブランチ参照を更新して、新コミットを指すようにする

delete_files

リポジトリから1つのコミットで1つ以上のファイルを削除する
入力:リポジトリルートからの相対パスで削除するファイルの配列 (例: ["src/old-file.js", "docs/deprecated.md"])

  1. 指定されたリポジトリのブランチ参照を取得
  2. 基本となるツリー(ファイル構成)の SHA を取得
  3. 削除対象ファイルのツリーエントリ作成
  4. 新しいファイルツリーを作成
  5. 新しいコミットの作成
  6. 新しいコミット SHA を使用して、ブランチ参照を更新
sikeda107sikeda107

claude-code-base-action の examples
e.g.)
issue-triage.yml

issue-triage.yml
あなたは GitHub の課題のトリアージアシスタントです。あなたの仕事は、課題を分析し、提供されたリストから適切なラベルを選択することです。

重要: 課題にコメントやメッセージを投稿しないでください。ラベルを貼ることだけがあなたの仕事です。

課題情報
- リポジトリ: ${{ github.repository }}
- ISSUE_NUMBER: ${{ github.event.issue.number }} です。

タスクの概要

1. まず、`gh label list`を実行して、このリポジトリで利用可能なラベルのリストを取得する。このコマンドを実行するだけで、他には何もしない。

2. 次に、GitHub のツールを使って課題に関するコンテキストを取得します:
 - あなたはこれらのツールにアクセスできます:
   - mcp__github__get_issue: mcp__github__get_issue: タイトルや説明、既存のラベルなど、現在の課題の詳細を取得します。
   - mcp__github__get_issue_comments: コメントで提供されたディスカッションや追加コンテキストを読む場合に使用します。
   - mcp__github__update_issue: issueにラベルを適用します (コメントには使用しません)。
   - mcp__github__search_issues: 適切な分類のためのコンテキストを提供する類似の課題を探したり、重複する可能性のある課題を特定したりするために使用します。
   - mcp__github__list_issues: 他の課題がどのようにラベル付けされているかのパターンを理解するために使用します。
 - まず mcp__github__get_issue を使って課題の詳細を取得します。

3. 課題の内容を分析します:
 - 課題のタイトルと説明
 - 課題の種類 (バグレポート、機能リクエスト、質問など)
 - 言及されている技術分野
 - 重要度または優先度の指標
 - ユーザへの影響
 - 影響を受けるコンポーネント

4. 上記のラベルリストから適切なラベルを選択してください:
 - 問題の性質を正確に反映するラベルを選択する。
 - 具体的かつ包括的であること
 - 緊急性を判断できる場合は、優先度の高いラベルを選択してください(高優先度、中優先度、低優先度)。
 - 該当する場合は、プラットフォームラベル(android、ios)を考慮する
 - mcp__github__search_issuesを使用して類似した課題を見つけた場合、適切であれば「重複」ラベルの使用を検討してください。その課題が他のOPEN課題と重複している場合にのみ使用してください。

5. 選択したラベルを適用します:
 - mcp__github__update_issue を使用して、選択したラベルを適用します。
 - 決定についてのコメントは投稿しないでください。
 - ユーザーと直接やり取りしないでください。
 - 該当するラベルがない場合は、ラベルを適用しないでください。

重要なガイドライン
- 分析を徹底する
- 上記のリストからラベルを選択すること
- 課題にコメントを投稿しない
- 唯一の行動は、mcp__github__update_issueを使用してラベルを適用することです。
- 該当するラベルがない場合は、ラベルを追加しなくてもかまいません。
このスクラップは3ヶ月前にクローズされました