✌️

GitHub Copilotからeverything-claude-codeを使いたい人生だったので試してみた

に公開
1

はじめに

Anthropicハッカソン優勝者がClaudeCodeの設定集としてeverything-claude-codeをGitHubで公開し、この設定集はかなり注目を浴びています。実際に使いたいなぁと思い、READMEをのぞいたところ、Claude Code, Codex, Cursor, OpenCode, Geminiは対応していると記載がありましたが、GitHub Copilotの文字がどこにも見当たりませんでした(涙)。社内ではGitHub Copilotを使用しており、何とかして使えないかトライしてみました。

環境準備

everything-claude-codeのリポジトリにあるagents、 rules、 skills、 commandsフォルダを自身のプロジェクトフォルダにある.githubフォルダにコピーします(.githubフォルダが無い場合は新規で作成してください)。

<プロジェクトフォルダ>
├── .github
│   ├── agents/
│   ├── commands/
│   ├── rules/
│   ├── skills/
│   └── copilot-instructions.md

...

copilot-instructions.mdには、Pythonのルールと先ほど追加したagents、 rules、 skills、 commandsフォルダの説明を記載し、チャットの内容に応じて適切な設定が使用されるようにしました。

copilot-instructions.md
あなたは「Everything Claude Code」の設計思想に基づいた、自律的でパフォーマンスが最適化されたAIエージェントです。
以下の agents / rules / skills / commands のうち、回答に必要な内容のみを読み込み、ユーザの質問に日本語で答えて下さい。

## 言語ごとのルール

### Python

- パッケージマネージャーとしてuvを使用すること。
- Pythonスクリプトを実行する際は、必ず `uv run python <script_name>.py` 形式を使用すること。
- 依存関係が必要な場合は、事前に `uv add <package>` を実行すること。
- 明示的な指示がない限り、`pip` や `venv` モジュールを直接呼び出さないこと。

## agents / rules / skills / commands ディレクトリ構成と概要

{agents / rules / skills / commands ディレクトリ構成を記載する}

skillsを試してみる:TDDによる実装

everything-claude-codeには、tdd-workflowというテスト駆動開発のフローを記載したskillsがあるので試してみます。

プロジェクトフォルダでVSCodeを開き、GitHub Copilotのチャットで以下のプロンプトを入力します。

TDDでoutput_examples/python_rock_paper_scissorsにコンピュータとじゃんけんするプログラムをPythonで作ってください。
作成したゲームはmain.pyから実行できるようにしてください。

回答としては、以下のmain.py、test_main.pyが出力されました。

main.py
import random

def play_rps():
    choices = ["rock", "paper", "scissors"]
    player = input("Choose rock, paper, or scissors: ").strip().lower()
    if player not in choices:
        print("Invalid choice. Please select rock, paper, or scissors.")
        return
    computer = random.choice(choices)
    print(f"Computer chose: {computer}")
    if player == computer:
        print("It's a draw!")
    elif (
        (player == "rock" and computer == "scissors") or
        (player == "scissors" and computer == "paper") or
        (player == "paper" and computer == "rock")
    ):
        print("You win!")
    else:
        print("You lose!")

if __name__ == "__main__":
    play_rps()

test_main.py
"""
User Journey: Rock-Paper-Scissors Game

As a player, I want to play rock-paper-scissors against the computer, so that I can enjoy a simple game and see if I win, lose, or draw.
"""

def test_player_wins(monkeypatch, capsys):
    # Player: rock, Computer: scissors
    inputs = iter(["rock"])
    monkeypatch.setattr("builtins.input", lambda _: next(inputs))
    monkeypatch.setattr("random.choice", lambda x: "scissors")
    from main import play_rps
    play_rps()
    out = capsys.readouterr().out
    assert "You win!" in out

def test_player_loses(monkeypatch, capsys):
    # Player: paper, Computer: scissors
    inputs = iter(["paper"])
    monkeypatch.setattr("builtins.input", lambda _: next(inputs))
    monkeypatch.setattr("random.choice", lambda x: "scissors")
    from main import play_rps
    play_rps()
    out = capsys.readouterr().out
    assert "You lose!" in out

def test_draw(monkeypatch, capsys):
    # Player: scissors, Computer: scissors
    inputs = iter(["scissors"])
    monkeypatch.setattr("builtins.input", lambda _: next(inputs))
    monkeypatch.setattr("random.choice", lambda x: "scissors")
    from main import play_rps
    play_rps()
    out = capsys.readouterr().out
    assert "It's a draw!" in out

def test_invalid_input(monkeypatch, capsys):
    # Player: invalid input
    inputs = iter(["lizard"])
    monkeypatch.setattr("builtins.input", lambda _: next(inputs))
    from main import play_rps
    play_rps()
    out = capsys.readouterr().out
    assert "Invalid choice" in out

簡単なじゃんけんプログラムのコード生成ではありますが、tdd-workflowのSkillsにより以下のTDDワークフローにしたがってコードを生成できました。

  1. ユーザージャーニーを定義
  2. 必要なテストケース(勝ち・負け・引き分け・不正入力)を test_main.py に実装
  3. main.py に最小限のじゃんけんロジックを実装
  4. テスト(pytest)を実行し、すべてGREEN(合格)であることを確認

agentsを試してみる:実装計画の作成

skillsでじゃんけんのコードを作成した際はいきなり実装から始めましたが、本来は計画を立ててから実装すべきです。ここでは実装計画を立てるagentsとしてplannerを試します。
プロジェクトフォルダでVSCodeを開き、GitHub Copilotのチャット画面を開きます。チャットの赤枠のところをクリックすると、先ほど追加したagentsの一覧が表示されるので、plannerを選択します。

plannerを選択した状態で、下記のプロンプトを入力すると、リバーシの実装計画を答えてくれます。

Pythonでリバーシの実装計画を立ててください。先手が自分、後手がコンピュータとし、コンピュータは最も多くの駒がとれる場所に置く振る舞いとしてください。

実際に答えてくれた実装計画は以下のようになります。

# Implementation Plan: Pythonリバーシ(オセロ)対戦プログラム

## Overview
Pythonでリバーシ(オセロ)を実装します。先手はユーザー、後手はコンピュータ。コンピュータは「最も多くの駒が取れる場所」に石を置く戦略を採用します。CLIでの対戦を想定します。

## Requirements
- 8x8のリバーシ盤面
- 先手(黒)はユーザー、後手(白)はコンピュータ
- ユーザーは座標入力で手を指定
- コンピュータは合法手のうち最も多く駒が取れる手を選択
- 合法手がない場合はパス
- ゲーム終了時に勝敗表示

## Architecture Changes
- 新規作成: `reversi.py` — ゲーム本体、盤面管理、ユーザー・AIロジック
- 新規作成: `test_reversi.py` — 主要ロジックのユニットテスト

## Implementation Steps

### Phase 1: ゲーム基盤と盤面ロジック
1. **盤面クラスの作成** (File: reversi.py)
   - Action: 8x8盤面の初期化、石の配置、合法手判定、石の反転処理
   - Why: ゲームの根幹となるため
   - Dependencies: なし
   - Risk: 低

2. **合法手探索ロジック** (File: reversi.py)
   - Action: 指定プレイヤーの合法手リストを返す関数
   - Why: パス判定やAI手選択に必要
   - Dependencies: Step 1
   - Risk: 低

3. **石の反転処理** (File: reversi.py)
   - Action: 指定手で石を置いた際の反転処理
   - Why: ルール実装の要
   - Dependencies: Step 1
   - Risk: 低

### Phase 2: ユーザー・AIインターフェース
4. **CLI入出力の実装** (File: reversi.py)
   - Action: 盤面表示、ユーザー入力受付、エラー処理
   - Why: ユーザーが操作できるようにするため
   - Dependencies: Step 1, 2, 3
   - Risk: 低

5. **AI手選択ロジック** (File: reversi.py)
   - Action: 合法手のうち最も多く石が取れる手を選択
   - Why: 要件通りのAI実装
   - Dependencies: Step 2, 3
   - Risk: 低

6. **パス・終了判定** (File: reversi.py)
   - Action: 合法手がなければパス、両者パスで終了
   - Why: ゲーム進行のため
   - Dependencies: Step 2, 4, 5
   - Risk: 低

7. **勝敗判定・結果表示** (File: reversi.py)
   - Action: 石数カウントし勝敗表示
   - Why: ゲームの締めくくり
   - Dependencies: Step 6
   - Risk: 低

### Phase 3: テスト・リファクタ
8. **ユニットテスト作成** (File: test_reversi.py)
   - Action: 盤面初期化、合法手判定、反転処理、AI手選択のテスト
   - Why: バグ防止・品質担保
   - Dependencies: Step 1-5
   - Risk: 低

## Testing Strategy
- ユニットテスト: 盤面初期化、合法手判定、石の反転、AI手選択
- 手動テスト: CLIでの対戦、パス・終了・勝敗判定

## Risks & Mitigations
- **Risk**: 合法手判定・反転処理のバグ
  - Mitigation: ユニットテストで検証
- **Risk**: 入力ミスによるクラッシュ
  - Mitigation: 入力バリデーション・例外処理

## Success Criteria
- [ ] CLIでユーザーvsコンピュータのリバーシが遊べる
- [ ] AIは常に最も多く石が取れる手を選ぶ
- [ ] 合法手がない場合はパスできる
- [ ] 勝敗が正しく表示される
- [ ] 主要ロジックにユニットテストがある

プロンプトに記載したコンピュータの振る舞いも考慮してリバーシの実装計画を出してくれました。

さいごに

今回はeverything-claude-codeのagents、 rules、 skills、 commandsを.githubフォルダにコピーすることで、部分的にGitHub Copilotからでも利用できないかを試してみました。

skillsとagentsを実際に試してみて、GitHub Copilotからでも使用できそうなことがわかりました。ただ、もちろんですが使用できない機能もあります。hooksなんかはClaude Codeで使用する前提となっているので、ただ単にフォルダをコピペするだけでは使用できないです。どうしてもhooksを使用したい場合はCopilot用に書き換えるなどの対応が必要にはなりそうですが、skillsとagentsなどは気軽に試せるかなと思います。

GitHub Copilotであっても興味があれば試してみるのもいいかもしれないですね。

1
株式会社メンバーズ AIフォーオールカンパニー

Discussion

ログインするとコメントできます
1