見出し画像

【GithubCopilot】Introducer、skills、rulesの使い分けが良くわからないので再度理解しようとしてみた

skills、rulesを理解した俺

gaju_ecです。
都内でEC担当をしています。サラリーマンです。

少しAIに慣れてきたので賢く進められるように整理しようと思う。

最近はAIが賢すぎて、あんまり細かい事しなくてもなんでも投げればやってくれるため、コーディングがどんどん雑になっている認識がある。自分の。

しかし同時に、AI側に明示的なルールや指針を伝えておくことで「毎回同じ価値観での開発が進むのであろう」という認識もあったのだけど、どうやら面倒そうだ、ということで後回しにしていた。

せっかくなので、理解し整理して環境を整えてみようと思う。


まず「Introducer」「skills」「rules」が良くわからないので整理。

現状、漠然と毎回設定したもの

{リポジトリroot}\
 .github
  └ agents
    └ CUSTOM-AGENT-NAME.md
 .copilot-instructions.md
 .editorconfig
 CONTRIBUTING.md
 README.md

なんとなくからファイルで毎回リポジトリに突っ込んでおけばよいような気がしていた。
そして、たいしたものを組まない私としては十分ではあった。

役割を理解していないので聞いてみた。

 \.github\agents\CUSTOM-AGENT-NAME.md

・役割: 特定の役割(例: @test-agent, @docs-agent)を定義。Agentモードで呼び出したり自動使用。
まだ有効で人気。多くの人がこれを「Skillsの前身」として使っています。

Grok

なるほど。

 \.copilot-instructions.md

リポrootにひとつ。PJT全体ルール。

・日本語で会話して。
・疑問点、懸念点、確認事項、判断がつかない場合は実装前に必ず確認して判断を仰いで。
・コメントはxxx単位でマメに残して。
・Gitへのリリースは私が指示するまでしなくてよい。
・バージョンの指定は慣例に従って判断して。

みたいな全体ルール。

 \.editorconfig

・役割: エディタ間のインデント、タブ/スペース、改行コード、文字エンコーディングなどのコーディングスタイルを統一する設定ファイル。
・Copilotとの関係: Copilot自体はこれを直接読みませんが、人間(あなたやチーム)がコードを書く時にVS Codeなどが自動適用。Copilotの生成コードも、このスタイルに合わせやすくなります(Copilotがスタイルを崩しにくくなる)。
・不要? → いいえ、むしろ必須級。Copilotで生成したコードが散らかりにくくなるので、残しましょう!

Grok

必要そうだけど、ソロ作業の場合は自分のレギュレーション表相当かな。

 \CONTRIBUTING.md

・役割: プロジェクトへの貢献ガイドライン(プルリクエストの仕方、コードスタイル、テスト方法、コミットメッセージ規約など)を記述。
・Copilotとの関係: Copilotはこれを直接読みませんが、Custom InstructionsやAgent Skillsの中で「CONTRIBUTING.mdに従え」と書くと、Copilotがそのガイドを参考にコード生成してくれます(例: コミットメッセージのスタイル統一)。
不要? → いいえ、チーム開発やオープンソースなら特に重要。Copilotの指示ファイルで参照可能なので、相性抜群。

Grok

 \README.md

リードミーだ。

CONTRIBUTING.mdとREADMEって似てる?

個人だからCONTRIBUTING.mdは必須じゃなさそうだな。

Grokに相談して現状最適っぽい状態にしてもらった

これが良いらしい。

{リポジトリroot}
├ .github/
│  ├ agents/                  ← Custom Agents(まだ有効・広く使われている)
│  │   └ CUSTOM-AGENT-NAME.md   (例: wordpress.agent.md, bi-specialist.agent.md)
│  └ skills/                  ← Agent Skills(最新・今後メイン推奨)
│      └ wordpress-theme/
│          └ SKILL.md         ← 大文字Sで始まる必須ファイル
│          └ (オプションでスクリプト・例ファイル)
├ .copilot-instructions.md    ← 全体的な基本ルール(Rules相当・ルート推奨)
├ .editorconfig               ← コードスタイル統一(強く推奨・残す)
├ CONTRIBUTING.md             ← 貢献ガイドライン(チーム開発・オープンソース向け推奨)
└ README.md                   ← プロジェクト概要・始め方(ほぼ必須)

なるほど。
skills内の情報は、GitHub Awesomeとかを使ってもらいながら、AI側で作らせればよい感じだな。

まとめてみた。間違ってたら分かる人教えてください。

  • Introducer、skills、rulesの使い分けが良くわからないので再度理解しようとしてみた

  • Introducerはskillsに取って代わられているので、skilsとrulesを設定すればよい。

  • 逆に言うと、skillsフォルダ配下以外は全体的にrulesの仲間。

  • rulesの基本設定は別プロジェクトにも転用できるが随時編集してPJT単位で調整。

  • その後で、skillsはawesome-copilotを呼び出して現時点の最適解を作成。できればその前にPJT概要を出来るだけ詳細にまとめて、必要なskillsを理解させておくべき。

  • skillsは設定したらあんまりいじらない。

  • 懸念点としては「例えばWordpressテーマのPJTの場合、汎用的なWPThemeのskillsを入れると、標準機能を阻害しないように汎用フレームワークの導入を避けるかもしれない」みたいな部分を注意して組まないと遠回りになる可能性あり。

Q:ヘイGrok、合ってる?

・Introducerはskillsに取って代わられているので、skillsとrulesを設定すればよい。
 → 正確。IntroducerはCursorのlegacy機能(2024年頃まで)で、Copilotには存在しません。
CopilotではAgent Skills(新機能)とCustom Instructions(Rules相当)でカバーされます。

・逆に言うと、skillsフォルダ配下以外は全体的にrulesの仲間。
 → はい。.copilot-instructions.md(または.github/instructions/)が
全体的なRules(常に適用される基本ルール)。
.github/agents/ のCustom Agentsも似た全体/ペルソナルールですが、
Agent Skills(.github/skills/)が専門タスクの「特別ルール」として分離されています。

・rulesの基本設定は別プロジェクトにも転用できるが随時編集してPJT単位で調整。
 → ぴったり。Custom Instructionsはgitで管理しやすいので、
テンプレートとして別プロジェクトにコピー・調整がおすすめ。
開発中に「このフェーズではテスト厳しく」など随時追加・修正するのがベスト。

・その後で、skillsはawesome-copilotを呼び出して現時点の最適解を作成。
 できればその前にPJT概要を出来るだけ詳細にまとめて、必要なskillsを理解させておくべき。
 → 完璧な運用! https://github.com/github/awesome-copilot に
コミュニティの優れたSkillsがたくさんあり、
Copilot Chatで「awesome-copilotからWordPressテーマ開発向けSkillを探して、
.github/skills/ に作成して」と指示すると、参考に生成・配置してくれます。
事前にプロジェクト概要をCopilotに説明(またはREADMEに書いておく)と、
必要なSkillsを提案・作成しやすくなります。

・skillsは設定したらあんまりいじらない。
 → はい。Skillsは「専門家を雇う」イメージで、プロジェクト開始時に最適なものを入れて固定運用。
フレームワークのメジャーバージョンアップ時や大きな方針変更時だけ更新。

・懸念点としては「例えばWordpressテーマのPJTの場合、汎用的なWPThemeのskillsを入れると、
 標準機能を阻害しないように汎用フレームワークの導入を避けるかもしれない」みたいな部分を
 注意して組まないと遠回りになる可能性あり。
 → とても良い注意点! まさにSkillsの強みであり弱み。
awesome-copilotの汎用Skillを入れる前に、自分のプロジェクト特有の制約
(「このテーマではBootstrap使わない」「特定のプラグイン優先」など)を
SKILL.mdに追記・カスタムすると、阻害を防げます。
最初はCopilotに「このSkillを私のプロジェクトに合わせて調整して」とレビューさせると安全です。

そういうことか。

感想

GithubCopilotだと設定は全体的にリポジトリ内のmdファイルの作成を使ってPJT単位で運用可能。
なので、

  • 毎回お決まりのrulesをコピペ用にしておく

  • PJT単位のrulesはそれらを添削したりしつつ行う。

  • Agentは使いそうな**専門家としての**決まりごとを入れておくが、要件定義等で先にどの専門家が必要か精査する。

  • Agentの設定とSkillsの設定が1対1になる場合も多いが、並行で使ってもよいけど、今後はSkills側だけで作ったほうが手間なさそう。こみ入った場合だけ使う感じか?

要は「俺は旗を振る・文句を言う(rules)、専門家とは擦り合わせしたらあとは任せる(skills)」

ってことかな。
OK、それでやってみよう。

やってみようとする俺


設定見つけた。

いいなと思ったら応援しよう!