0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitHub Copilot CLI を勉強してみた

0
Last updated at Posted at 2026-05-31

はじめに

Xとかを見ていると、Clade Code の話をよく見かけるようになり。
VSCodeで、GitHub Copilotを使っているけど、CLIは使っていなかったなー。と思い。

Clade CodeのCLIを使おうと思ったら、無料プランでは使え無さそう。(違ったらすみません)

うーん、とりあえず、CLIの感じに慣れたいだけだから、GitHub Copilot は?とみると。
無料プランがある!

ということで、ちょっと使ってみた。ので、記憶の定着のためにも残しておこうかと。

インストール

WinGetでインストール

image.png

作業フォルダを作成して、起動

C:\dev\copilot

のフォルダを作って、コマンドプロンプトで、「copilot」コマンドを実行

C:\dev\copilot>copilot

image.png

いい感じに起動。

2番目のYesを選択。

エージェントのスキルを作ってみる

Gemini に色々教わりながら作ってみる。

準備

必要なものは、「SKILL.md」

image.png

Geminiに以下サンプルを貰う。

SKILL.md
---
name: file-validator
description: 指定されたファイルが空(Empty)ではないか、また論理的な不整合がないかをローカル環境でチェックするスキルです。
commands:
  - exec: cmd.exe /c .github\copilot\skills\my-validator\validate.bat $1
triggers:
  - "このファイルの中身が空(Empty)になっていないかチェックして"
  - "プログラムの論理チェックを実行して"
  - "validate.bat を実行して"
---

# ファイル論理バリデータ

## 使い方
Copilotはこのスキルを使って、指定されたファイルの簡易バリデーションをWindowsのコマンドプロンプト環境で実行します。
validate.bat
@echo off
chcp 65001 > nul
setlocal enabledelayedexpansion

REM 引数チェック
if "%~1"=="" (
    echo エラー: 検証するファイルパスが指定されていません。
    exit /b 1
)

set "FILE_PATH=%~1"

REM ファイルの存在チェック
if not exist "!FILE_PATH!" (
    echo エラー: ファイル '!FILE_PATH!' が見つかりません。
    exit /b 1
)

echo === バリデーションを開始します: !FILE_PATH! ===

REM 1. 空白・Emptyチェック (ファイルサイズが0バイトか確認)
for %%I in ("!FILE_PATH!") do set "FILE_SIZE=%%~zI"
if "!FILE_SIZE!"=="0" (
    echo [NG] エラー: ファイルが空(Empty)です!記述が不足しています。
    exit /b 1
)

REM 2. 簡易的な論理バグチェック(テスト用:特定の文字列を検索)
findstr /C:"ArrayIndexOutOfBoundsException" "!FILE_PATH!" > nul
if !errorlevel! equ 0 (
    echo [NG] 警告: コード内に配列のインデックス範囲外エラーの可能性を検知しました。
    exit /b 1
)

echo [OK] 基本的なチェックをクリアしました!
exit /b 0

「.copilot\skills」の中に「my-validator」というフォルダを作って、ファイルを配置

.copilot\skills\my-validator\SKILL.md
.copilot\skills\my-validator\validate.bat

認識するか確認

/skills を実行

image.png

おお!!出てきた。

/skills list を実行

image.png

おお、出てきている!

スキルが使われるか確認

「test_empty.txt」の空ファイルを作る。

「test_empty.txt が空(Empty)になっていないかチェックして」 を実行

image.png

おお!!!使われている!

カスタムエージェントを作ってみる!

パターン1

Geminiに指示してもらいながら。

準備

「AGENT.md」を作る!

AGENT.md
---
name: code-auditor
description: プロジェクトのコード品質、空ファイル、論理バグなどの監査を専門に行う品質管理エージェントです。
skills:
  - file-validator
---

# 品質監査エージェント (Code Auditor Agent)

## ペルソナと役割
- あなたは経験豊富なリード品質管理エンジニア(QA)です。
- コードの論理的な不整合や、設定の不備、空ファイルなどのリスクに対して厳しく、かつ具体的なアドバイスを行います。

## 振る舞い・言語ルール
- **ユーザーへの問いかけ、エラーの報告、提案など、すべての会話は必ず「日本語」で行ってください。**
- 内部のスクリプトやエラーメッセージが英語であっても、ユーザーにはそれを日本語に翻訳・要約して伝えてください。
- ユーザーから引数(ファイルパス)が提示されていない場合は、「検証するファイルを指定してください」と**日本語で**選択肢を提示してください。

以下に配置する!

.copilot\agents\code-auditor\AGENT.md

認識しているか確認

/agents を実行!

image.png

おおー出てきた!

動かしてみる

「プロジェクト内のこのソースコード(またはファイル)に問題がないか、あなたの持っているスキルを使って厳しく監査してみて」

image.png

おお!!反応した!

「test_empty.txt を調べて」

image.png

image.png

おお!!いいかんじ!

パターン2

公式の手順に従うと、CLIからもできる。

「.copilot\agents\code-auditor2.agent.md」

にファイルが出来上がる。

なるほど。

MCPサーバを使ってみる!

せっかくなので、アトラシアン の コンフルエンス をいじれるようにしてみようかと。

アトラシアン公式のMCPサーバは?

image.png

を見ると、

で、

image.png

atlassian側の手順は?

image.png

認証方法は、

Depending on your setup, a secure browser-based OAuth 2.1 flow is triggered, or API token authentication is used.

とあるから、「a secure browser-based OAuth 2.1 flow is triggered」もしくは、「API token」

copilot側の手順は?

image.png

なるほど、「/mcp add」すればよい。

image.png

認証法はどっちにしようか。

「a secure browser-based OAuth 2.1 flow is triggered」

「API token」

「a secure browser-based OAuth 2.1 flow is triggered」は、いわゆる、ブラウザが立ち上がって認証するやつかな?

「API token」は、ブラウザを立ち上げずに認証する方法かな?

とりあえず、使いたいだけだから、「a secure browser-based OAuth 2.1 flow is triggered」が良いかな。

とりあえずCopilotに追加してみる。

image.png

こんな感じ。

Server Nameは、適当です。

HTTPかSSEかは、

HTTP または SSE: リモート MCP サーバーに接続します。 HTTP は、Streamable HTTP トランスポートを使用します。 SSE では、従来の HTTP と Server-Sent イベント トランスポートが使用されます。これは MCP 仕様では非推奨ですが、下位互換性のために引き続きサポートされています。

とあるので、HTTPが良いのかな?

で、追加したら、ブラウザが立ち上がって認証完了!

「.copilot\mcp-config.json」が作られているので、中身を見てみると。

mcp-config.json
{
  "mcpServers": {
    "atlassian-rovo-mcp": {
      "type": "http",
      "url": "https://mcp.atlassian.com/v1/mcp",
      "headers": {},
      "tools": [
        "*"
      ]
    }
  }
}

使ってみる

以前作ったコンフルエンス上のTODOリストを取得してみる。

「コンフルエンスからTODOリストを取得してみて」

image.png

このあと、URLを渡したら、取得してくれた!

MCPのURLが更新されている?

image.png

を見ると、URLが以下の感じ。

https://mcp.atlassian.com/v1/mcp/authv2

変更して試しても、ちゃんと動いた。

振り返り

面白いなーって感じ。

ちなみに、色々と躓いたりしていたけど振り返ってみると、ちゃんとドキュメントを読んで進めていれば一直線だったかも。

急がば回れの精神で、ちゃんとドキュメントを理解しないとなーって思った今日この頃。
ついつい、読むのがめんどくさくて、摘み読みしちゃうけど、バックボーンの知識が無いものに対して行うと、自分の場合、回り道になってしまうことを改めて理解。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?