-
Notifications
You must be signed in to change notification settings - Fork 0
MS_GitHubCopilotCodingAgent
- 戻る(GitHub)
- GitHub Actions
-
GitHub Copilot
- GitHub Copilot Coding Agent
- GitHub Copilot CLI
コーディング・エージェント・ツール
- Claude Code をはじめとする各プロダクトの台頭に強い危機感を持って
急ピッチで開発された(かつ現在も進化している) - 名前の通り、従来のクラス・メソッド生成、スニペット生成、オートコンプリートから、
開発プロジェクトを代行できるコーディング・エージェントとなった。 - このブレークスルーは「従来のエージェントアーキテクチャの成熟」と
「推論モデル(Reasoning Models)の登場」が完璧に噛み合ったからと言われている。
使い方については参考を参照。
Claude Code(オリジナル・コンテンツ(イキナリLLMコーディング・エージェント)
(DNET_LLMCodingAgent.md)を参照)と同じ。
-
my-reviewer.agent.mdなどとして(拡張子:.agent.md)以下のように定義する。- ヘッダ部は「YAML フロントマター(メタデータ)」、
ボディ部は「Markdown 形式の指示」 - ヘッダ部には、name、tools、model などを任意で設定できる
(name、description は必須項目)。
- ヘッダ部は「YAML フロントマター(メタデータ)」、
---
name: my-reviewer
description: バグやセキュリティ問題に特化したコードレビュアー
---
# Code Reviewer
あなたは、バグやセキュリティ問題の検出に特化したコードレビュアーです。
コードレビュー時には、必ず以下を確認してください:
- SQLインジェクションの脆弱性
- エラーハンドリングの不足
- ハードコードされたシークレット情報-
ファイルの置き場は以下の 2 箇所
- リポジトリ:
.github/agents/ - 個人設定:
~/.copilot/agents/
- リポジトリ:
-
エージェントは、以下のように呼出すことが出来る。
- Slash コマンド風に明示的に(
/エージェント名)。 - Prompt 中で、Slash コマンド風に明示的に。
- Prompt と Description の対応で暗黙的に。
- Slash コマンド風に明示的に(
-
ポイント
- 専門性の高いエージェントを定義し、
会話履歴に残して複数エージェント連携させる複雑な問題を解決する。 - なお、定義が長すぎる(30,000 文字制限に引っかかる)場合、
内容を絞るか、詳細は後述のスキルで管理する。
- 専門性の高いエージェントを定義し、
-
参考
- https://zenn.dev/microsoft/articles/264b7b02b406f0
- https://qiita.com/chomado/items/54a6721a5aff60fa8631
- https://learn.microsoft.com/ja-jp/visualstudio/ide/copilot-specialized-agents
- https://github.com/github/awesome-copilot/tree/main/agents
-
https://github.com/github/copilot-cli-for-beginners/blob/main/.github/agents/
- hello-world.agent.md
- pytest-helper.agent.md
- python-reviewer.agent.md
補足(サブエージェントを分ける効用と副作用): 「専門性の高い
エージェントを定義する」ことの実務上の意味を補っておく。【分ける効用】★ ① 【コンテキストの隔離】 レビュー用エージェントは レビューに必要な情報だけを読む → 本体の会話履歴が 大量のファイル内容で埋まらない ★ ② 【役割の固定】 「あなたはレビュアーです」という 強い役割付けが毎回効く → 指示のブレが減る ③ 【ツールの制限】 tools でファイル書き込みを禁じれば 「レビューのつもりが勝手に直された」を防げる ★ 【副作用】 ① サブエージェントは【毎回ゼロから始まる】 → 呼ぶたびに前提を再調査するコストがかかる → 本体で既に分かっていることは プロンプトで渡してやる方が速い ② 数を増やしすぎると 「どれが呼ばれたか分からない」状態になる → description を明確に書き分ける ★
-
SKILL.mdを以下のように定義する。- ヘッダ部は「YAML フロントマター(メタデータ)」、
ボディ部は「Markdown 形式の指示」 - ヘッダ部には、license、compatibility、metadata、allowed-tools などを
任意で設定できる(name、description は必須項目)。
- ヘッダ部は「YAML フロントマター(メタデータ)」、
---
name: echo-skill
description: 入力されたテキストをそのままユーザーに返します。
---
# Echo Skill
このスキルは、入力されたテキストを受け取り、それをそのまま返します。-
SKILL.mdファイルの置き場は以下の 2 箇所- リポジトリ:
.github/skills/スキル名(ココでは echo など) - 個人設定:
~/.copilot/skills/スキル名(ココでは echo など)
- リポジトリ:
-
複雑なスキルには
サンプルコードやスクリプトを用意できる。
.github/skills/
└── my-skill/
├── SKILL.md # 必須:スキル定義と指示
├── examples/ # 任意:参照用サンプルコード
│ └── sample.py
└── scripts/ # 任意:スキルで使用するスクリプト
└── validate.sh
-
互換性(Claude Code)
- 置き場を替えるだけ(
.github/.copilot→.claude) - 発火しない場合は description の調整が必要
- allowed-tools フィールドは削除(Copilot では実験的機能)
- 置き場を替えるだけ(
-
スキルは、以下のように呼出すことが出来る。
- Slash コマンド風に明示的に(
/スキル名)。 - Prompt 中で、Slash コマンド風に明示的に。
- Prompt と Description の対応で暗黙的に。
- Slash コマンド風に明示的に(
-
ポイント
- 自動ロード:スキル・ディレクトリに配置するだけで、
適切なタイミングで自動的にロードされる。 - 標準化:オープン標準に基づいているため、異なるツール間での移植性が高く、
エコシステムが発達し易い。
- 自動ロード:スキル・ディレクトリに配置するだけで、
-
参考
- https://zenn.dev/microsoft/articles/a9d4f6ec2a05c2
- https://qiita.com/chomado/items/86295bdd04a0fe4685b2
- https://learn.microsoft.com/ja-jp/visualstudio/ide/copilot-agent-skills
- https://github.com/github/awesome-copilot/tree/main/skills
-
https://github.com/github/copilot-cli-for-beginners/blob/main/.github/skills
- code-checklist
- commit-message
- hello-world
- pytest-gen
補足(エージェントとスキルの使い分け): 両者は似た形式
(YAML フロントマター + Markdown)だが、役割が違う。
エージェント( .agent.md)スキル( SKILL.md)何を定義するか 人格・役割・使えるツール 手順・知識 実行の単位 独立したコンテキストで動く ★ 呼び出し元の文脈に読み込まれる ★ 付属ファイル なし examples / scripts を持てる ★ 主な用途 レビュー、調査、設計 定型手順、規約、ツールの使い方 分量 30,000 文字制限あり ファイル分割で実質無制限 ★ 【原文の指摘が的確な点】★ 「定義が長すぎる場合、詳細はスキルで管理する」 → エージェント定義は【役割の宣言】に留め、 具体的な手順は【スキルに外出しする】 → これが公式に想定された使い分けである 【Progressive Disclosure(段階的開示)】★ スキルの設計思想。 ① まず description だけが読まれる(軽い) ② 関連しそうなら SKILL.md 本体が読まれる ③ 必要なら examples / scripts を辿る → 【コンテキストを浪費せずに 大量の知識を持たせられる】仕組み → だから description の書き方が最重要 ★ 「いつ使うか」が明確に書かれていないと発火しない (原文の「発火しない場合は description の調整が必要」)【移植性について】★ 原文が「オープン標準に基づいている」と書くとおり、 スキルの形式は Claude Code / GitHub Copilot / その他 でほぼ共通になりつつある。 → 【.claude/skills/ ↔ .github/skills/】を シンボリック リンクで共有する運用も見られる → ただし - 使えるツール名が違う - allowed-tools の解釈が違う(原文の指摘どおり) - 発火のしやすさが違う ため【完全な互換ではない】
- なお、GitHub Copilot同様、
Visual Studio Code から、
Visual Studio 20XX(Visual Studio)、
その他、著名な IDE でもサポートされている。 - 特に、Visual Studio 20XX(Visual Studio)の
.NET Framework 開発は PJ ファイルの古さなどもあり、
winapp CLI でなくても開発可能か気になっていたが、動きはしたが、- PJ ファイルの編集は、IDE にロックされている中で、
スクリプトで無理やりやろうとしてバグっていたケースがあった。 - また、VS の一部の?ファイルは既定で BOM 付き UTF-8 である必要があり、
エージェントが追加した BOM 無し UTF-8 ファイルで文字化けが発生して
エラーになったりした。
- PJ ファイルの編集は、IDE にロックされている中で、
移行メモ(誤字): 移行元の「文字化が発生して」を
「文字化けが発生して」に修正した。
補足(レガシー .NET 開発でエージェントが躓く理由): 作者が遭遇した
2 つの問題は、いずれも典型的なので一般化しておく。【① プロジェクト ファイルの編集競合】★ 旧形式の .csproj / .vbproj は ・ファイルを 1 つずつ <Compile Include> で列挙する ・GUID / ProjectTypeGuids など 意味の分かりにくい要素が多い → エージェントがテキスト編集すると 【整合性を壊しやすい】 → さらに VS が【開いている間ロックし、 VS 側の内容で上書きする】ため、 「直したはずが戻る」現象が起きる 【対策】 ・エージェントに触らせる前に 【VS を閉じる】★ ・可能なら【SDK スタイルへ変換】してから作業する (ファイル列挙が不要になり、編集点が激減する) ・AGENTS.md に 「.csproj は手動で編集する」と明記する ★ 【② BOM 付き UTF-8 の要求】★ Visual Studio が生成する日本語入りファイルは 【BOM 付き UTF-8】が既定 → BOM が無いと C# コンパイラが【Shift_JIS と誤認】して 日本語コメント・文字列リテラルが化ける (特に .NET Framework 世代の csc) → エージェント/一般的なツールは 【BOM 無しで書く】のが普通 【対策】 ・.gitattributes / .editorconfig で 方針を明示する [*.cs] charset = utf-8-bom # ★ ・ビルド前に BOM を付与するスクリプトを用意する ・.csproj に <CodePage>65001</CodePage> を指定して BOM 無しでも UTF-8 と解釈させる(回避策) ・AGENTS.md に 「新規 .cs は BOM 付き UTF-8 で保存する」と書く ★【レガシー開発でエージェントを使う際の一般則】★ ・【AGENTS.md に環境固有の制約を書く】 文字コード、改行コード、 触ってはいけないファイル、ビルド手順 ・【ビルドを回せるようにしておく】 msbuild をエージェントから叩けると 自己修正のループが回る ・【差分を小さく保つ】 旧形式プロジェクトは 大きな変更のレビューが難しい
- 検証
- みたいな:https://github.com/codecypher/NorthwindForms
- Northwind を用いて生成した仕様
(生成AIを活用した設計書のブレークダウン(DNET_DesignDocBreakdownWithAI.md))を用いて、
GitHub Copilot Coding Agent で実装を行った。 - ココでの方式は、プロ用(フェーズ毎の検収)+ ドキュメント・フォワード
(いずれもオリジナル・コンテンツ(イキナリLLMコーディング・エージェント)
(DNET_LLMCodingAgent.md)の該当節)と言える。
- GHC、Visual Studio 2026(Visual Studio)、
.NET Framework 4.8.2(.NET Framework)、
Windows Forms - なお、AGENTS.md と SPEC.md から、
...\.copilot\plans\plan*.mdを生成させ、
ソレを手修正した PLAN.md を作成して、実行している。
- GHC、Visual Studio 2026(Visual Studio)、
.NET Framework 4.8.2(.NET Framework)、
ASP.NET Web Forms - なお、AGENTS.md と SPEC.md から、
...\.copilot\plans\plan*.mdを生成させ、
ソレを手修正した PLAN.md を作成して、実行している。
補足(「計画を生成させ、手修正してから実行する」の意義): この進め方は
エージェント活用の要諦なので、明示しておく。【なぜ一発で実装させないのか】★ ・エージェントは【途中で方針を変えない】 → 最初の方針が間違っていると 大量の間違ったコードが生成される → レビューの負荷が爆発する ・【計画(PLAN.md)を先に出させる】と → 実装前に方針を確認・修正できる ★ → 修正コストが【文書の数行】で済む → 実装中はその計画に沿って進むので 脱線しにくい 【ファイルの役割分担(本事例の構成)】★ AGENTS.md … 【恒久的な規約】 文字コード、命名、禁止事項、ビルド手順 SPEC.md … 【何を作るか】(要件・設計) PLAN.md … 【どの順で作るか】(作業分解)★ → 人がレビュー・修正する対象 → 「設計書 → 計画 → 実装」という 通常の開発工程を、そのままエージェントに写している → 原文の【ドキュメント・フォワード】という 呼び方はこの構造を指している ★
-
根拠:
- GHC でも専用のツールやスキルは無しの状態で動いたのだから。
- Claude Code 自身が「オレ、WinForms 実装できるで。」って言ってた(コピペ取り忘れ)
- 発生したのは「BOM 付き・BOM 無し系の問題」程度だった。
-
参考
- Claude Codeで .NET Framework を使った C# の開発を行う - パソコン関連もろもろ
https://touch-sp.hatenablog.com/entry/2026/01/24/123713 - VS2026でclaude codeにプログラム(Windows Forms アプリのコード)を作ってもらった
https://zenn.dev/ilumination1879/articles/246184f5f72ef4 - 【生成AI活用】InputMan for Windows FormsのE2Eテストを試してみた(TestStack.White + Claude Code)
https://qiita.com/RYA234/items/a3f1ad221a9658fe3daf
- Claude Codeで .NET Framework を使った C# の開発を行う - パソコン関連もろもろ
-
winapp CLI(WinUI 3。Windows App SDK を参照)が
前提(WinForms は対象外らしい)。 -
WinUI 3(Windows App SDK を参照)の評判は、
カナリ悪いので、コレの利用はチョット無いかもしれない。 -
参考
- WinApp CLIを試す(vscode+WinApp Extension) #VSCode - Qiita
https://qiita.com/kashin777/items/652be43d609e2c6610f3 - Microsoft 公式の WinUI agent plugin で WinUI 3 アプリ開発がぐっと楽になった話
https://zenn.dev/microsoft/articles/winui-agent-plugin - Introducing WinUI agent plugin for GitHub Copilot and Claude Code - #ifdef Windows
https://devblogs.microsoft.com/ifdef-windows/build-native-windows-apps-with-ai-agents-for-winui-and-windows-app-sdk/ - WinUI agent plugin for GitHub Copilot CLI and Claude Code - Windows apps | Microsoft Learn
https://learn.microsoft.com/en-us/windows/apps/develop/ai-assisted/winui-agent-plugin?tabs=copilot-cli
- WinApp CLIを試す(vscode+WinApp Extension) #VSCode - Qiita
-
使い方
- GitHub Copilot
# Add the WinUI plugin to GitHub Copilot CLI
/plugin install winui@awesome-copilot
# Run the winui-setup skill to install all prerequisites
/winui:winui-setup
あとはカスタムエージェント `winui-dev` を選んで、\
「WinUI 3 で〇〇というアプリを作ってください」と入力。
- Claude Code
claude plugin marketplace add microsoft/win-dev-skills
claude plugin install winui@win-dev-skills
インストール後、Claude Code のプロンプト先頭に `@winui-dev` を付与し\
`@winui-dev` エージェントを使用する。
補足(プラグイン=スキル+エージェントの配布形式): 上記の
/plugin installやclaude plugin installが何をしているかを補う。【プラグインの中身】★ プラグイン = 【スキル】+【カスタム エージェント】+ 【スラッシュ コマンド】+【MCP サーバ定義】 をまとめて配布する仕組み → 手で .github/skills/ に置いていたものを 【マーケットプレース経由で配れる】ようにしたもの → 更新も plugin update で追随できる 【WinUI agent plugin が提供するもの】 ・winui-setup … 前提(Windows App SDK、 ワークロード)の導入を代行するスキル ・winui-dev … WinUI 3 に特化したエージェント ・XAML / WinUI の【最新 API 知識】★ → LLM の学習データは WinUI 3 について薄く、 古い UWP の書き方を出しがち → プラグインが正しい書き方を注入する (これが「ぐっと楽になった」の中身)【原文の「WinUI 3 の評判はカナリ悪い」について】 この評価には根拠がある。 ・WPF からの移行パスが用意されていない ・機能欠落が長く残った (印刷、一部のコントロール、アクセシビリティ) ・パッケージ化(MSIX)まわりが煩雑 ・Microsoft 自身が WinForms/WPF/UWP/WinUI と 【方針を変え続けた】ことへの不信 ★ → 「エージェントが楽にしてくれる」ことと 「基盤として選ぶべきか」は別問題であり、 作者の慎重な姿勢は妥当である
Tags: 移行, .NET開発, 構成管理ツール, CI, BI/AI
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。