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?

copilot-instructions の複雑な概念を具体例で理解する

0
Posted at

copilot-instructions の複雑な概念を具体例で理解する — 読み込み順・上書き・フック・実行契約・テンプレート・自信度・学習ループ

前回記事「GitHub Copilot 向けの指示を構造化して管理」では、h-nasu/copilot-instructions の全体像を紹介しました。

今回は、このフレームワークを構成する仕組みの概念を、1つずつ具体例で掘り下げます。

各概念を次の4点セットで解説します。

  1. 概念(何か)
  2. なぜ必要か(課題)
  3. 実際の instruction 抜粋(どう書くか)
  4. Copilot の出力がどう変わるか(効果)

※ ドキュメントの配置・責務分離については、前回記事「AI用ドキュメントと開発者用ドキュメントの混在問題を解決する」で詳しく解説しているので、そちらを参照してください。本記事では「仕組み」そのものに集中します。


概念1: 読み込み順(エントリーポイント)

概念

AI がタスクを始める前に、.ai-instructions/ 配下のファイルを決まった順番で読むという仕組みです。

なぜ必要か

「どのファイルを読めばいいか」を AI に委ねると、読むファイルが毎回変わって前提がぶれます。読み込み順を固定すれば、常に同じ文脈でタスクを開始できます。

実際の instruction 抜粋

.ai-instructions/ の README では、AI が必ず読む順序が定義されています。

AI must always read:
1. overview.md
2. specs.md
3. specs/
4. hooks/
5. workflows/
6. project-docs.md
7. templates/
8. documents/

Copilot の出力がどう変わるか

Before(読み込み順なし)

ユーザー: ログイン機能を実装して
Copilot: 了解、実装します(→ 既存ルールを読ずにいきなりコードを書き始める)

After(読み込み順あり)

ユーザー: ログイン機能を実装して
Copilot: まず .ai-instructions/ を読み込みました。
  - overview.md: 実行モデル確認
  - specs.md: 共通ルール確認
  - specs/: プロジェクト固有ルール確認
  - project-docs.md: ドキュメント配置ルール確認
  以上の前提で実装を開始します。

毎回同じ前提で始まるので、説明の繰り返しが減り、ぶれがなくなります


概念2: インデックスによる上書き(override)

概念

ファイル名の 00-, 01-, 02- というインデックス順にルールが適用され、後ろのファイルほど前のルールを拡張・上書きできる仕組みです。

なぜ必要か

「全体共通の原則」と「プロジェクト固有の例外」「機能固有の例外」を、同じ仕組みの中で両立させるためです。1つのファイルに全部書くと、例外が増えるたびに壊れます。

実際の instruction 抜粋

specs/
├── 00-default.md      # 全プロジェクト共通のデフォルト
├── 01-project.md      # このプロジェクト固有のルール(00を上書き)
└── 02-feature-x.md    # 特定機能の例外(00, 01を上書き)

.ai-instructions/ の説明では、後ろのファイルは「新しいルールの追加」「既存ルールの上書き」「スコープの絞り込み・拡大」ができると定義されています。

Copilot の出力がどう変わるか

Before(上書きなし)

プロジェクトAでは「テスト必須」、機能Xでは「テスト省略可」という例外を
どう表現すればいいか分からず、指示が矛盾する。

After(上書きあり)

機能Xのタスクでは、02-feature-x.md が 00-default.md より優先されるため、
「Xではテスト省略可」を正しく適用しつつ、他の機能では「テスト必須」を守る。

例外を安全に積み重ねられるのがこの仕組みの強みです。


概念3: hooks / workflows パイプライン

概念

タスクの前後で必ず実行する処理(hooks)と、タスクの実行手順(workflows)を分離して定義する仕組みです。

なぜ必要か

「実装前に計画する」「実装後にテストしてドキュメントを更新する」といった規律を、AI の標準動作として強制するためです。お願いではなくルールにします。

実際の instruction 抜粋

AGENTS.md には、このパイプラインが明記されています。

Follow hooks/before/ → workflows/ → hooks/after/ pipeline

ディレクトリ構成は次のようになります。

.ai-instructions/
├── hooks/
│   ├── before/            # 例: 既存ドキュメントの確認、計画の作成
│   └── after/             # 例: テスト実行、ドキュメント更新、コミットメッセージ生成
└── workflows/             # 実装・レビュー・調査などの実行フロー

Copilot の出力がどう変わるか

Before(フックなし)

実装 → 終了(テストもドキュメントも後回し、ユーザーが指摘して初めて対応)

After(フックあり)

hooks/before → 既存ドキュメント確認・計画作成
workflows    → 実装
hooks/after  → テスト実行 → ドキュメント更新 → コミットメッセージ生成
→ 「コード・テスト・ドキュメントが揃って完了」と報告

「コードを直して終わり」を構造的に防げます


概念4: AGENTS.md 実行契約

概念

AI が守るべきタスク完了の定義を、リポジトリ直下の AGENTS.md に宣言する仕組みです。

なぜ必要か

AI は「コードを直したら完了」と思いがちです。完了の定義を先に固定しておかないと、ドキュメント更新やテストが毎回漏れます。

実際の instruction 抜粋

# AGENTS.md — AI Execution Contract

Before beginning ANY task:
- Read all .ai-instructions/ files in index order
- Follow hooks/before/ → workflows/ → hooks/after/ pipeline
- Never skip documentation steps

A task is INCOMPLETE until code + tests + documentation are all done.

Copilot の出力がどう変わるか

Before(契約なし)

ユーザー: バグを直して
Copilot: 修正しました(→ テストもドキュメントも更新せず完了と報告)

After(契約あり)

ユーザー: バグを直して
Copilot: 修正しました。ただし AGENTS.md の契約に基づき、
  テスト実行とドキュメント更新が未完了のため、タスクは未完了として報告します。
  続けてテストとドキュメントを更新します。

「完了」の定義を AI と人間で共有できるのがポイントです。


概念5: templates(テンプレート)

概念

AI が生成する出力の構造(フォーマット)を固定する仕組みです。テンプレートは「ロジックではなくフォーマット」をガイドします。

なぜ必要か

AI にドキュメントを生成させると、毎回フォーマットが違って読みにくくなります。テンプレートで構造を固定すれば、出力が安定します。

実際の instruction 抜粋

project-docs.md には、テンプレートの利用が明記されています。

## Templates

- Templates under .ai-instructions/templates/documents/ must be used
- New templates must be referenced in this file

Copilot の出力がどう変わるか

Before(テンプレートなし)

ドキュメントの見出し構成が毎回バラバラ
→ 読むたびに構造を把握し直すコストが発生

After(テンプレートあり)

毎回同じ見出し構成で生成される
→ どこに何が書いてあるか、すぐ分かる

チームで読むコストを下げる効果があります。


概念6: documents/ のフィードバックループ(学習サイクル)

概念

失敗パターンや issue 分析を documents/ に蓄積し、次回のタスクに自動的に活かす仕組みです。

なぜ必要か

「同じミスを繰り返す」のが AI 運用の最大の無駄です。失敗を記録として資産化して、次回から自動対応できるようにします。

実際の instruction 抜粋

.github/copilot-instructions.md には、エラー処理の手順が定義されています。

## Error Response Procedure

1. Analyze error — ログ/エラーから原因を特定
2. Check known patterns — documents/08-issues/*.md を検索
3. Implement fix — 修正 + 予防策を追加
4. Create instruction doc — 新パターンなら specs/ に追加
5. Verify — lint + 型チェックで影響範囲を確認

Put any bugs, issues and incident inside documents/08-issues/*.md

改善サイクルは次のように定義されています。

Task Execution → Pattern Discovery → Documentation
→ Next Time Automation → (Loop)

Copilot の出力がどう変わるか

Before(フィードバックなし)

同じバグの直し方を毎回ゼロから考える
同じ失敗を繰り返し、クエリを無駄に消費

After(フィードバックあり)

エラー発生時 → documents/08-issues/ を検索 → 既知パターンを適用
→ 新パターンなら specs/ に記録 → 次回から自動対応

「同じミスを1回で直す」状態に近づきます


概念7: confidence-level(自信度スコアリング)

概念

AI が自分の出力に対する自信度を 0.0〜1.0 の数値で明示する仕組みです。これは specs/02-confidence-level.md で定義されています。

なぜ必要か

AI の出力には「確実に正しいもの」と「推測で書いたもの」が混在しています。自信度を数値化しておくと、人間が「どこを重点的にレビューすべきか」を判断できます。特に、要件を推測して実装した場合に、その危険性を可視化できます。

実際の instruction 抜粋

Confidence guidelines:
- 0.95–1.00 → Trivial or purely mechanical change
- 0.85–0.94 → Well-defined task, low ambiguity
- 0.70–0.84 → Some assumptions or unclear edges
- 0.50–0.69 → Significant ambiguity or missing context
- < 0.50     → High uncertainty or speculative output

さらに、自信度とリスクの組み合わせルールも定義されています。

If Confidence < 0.8 AND Risk level is medium or high
AI SHOULD:
- Explicitly warn before continuing
- Suggest review or clarification

つまり、自信度が低い(0.8未満)かつリスクが中〜高の場合は、AI は続行前に警告し、レビューや確認を提案しなければなりません。

Copilot の出力がどう変わるか

Before(自信度なし)

ユーザー: この画面を実装して
Copilot: 実装しました。(→ 実は仕様を推測していたが、それが伝わらない)

After(自信度あり)

ユーザー: この画面を実装して
Copilot: 実装しました。ただし confidence は 0.55 です。
  要件が推測ベースで、リスクが中程度のため、レビューを推奨します。
  特に「ログイン後の遷移先」の仕様確認をお願いします。

「どこが怪しいか」が人間に伝わるので、レビューの質が上がり、推測実装による事故を防げます。


まとめ

copilot-instructions の複雑な概念は、どれも「AI の動作をぶれさせない」ための仕組みです。

概念 役割
読み込み順 毎回同じ文脈でタスクを開始する
インデックス上書き 共通ルールと例外を安全に両立する
hooks / workflows 規律を標準動作として強制する
AGENTS.md 実行契約 完了の定義を AI と共有する
templates 出力フォーマットを固定する
documents/ ループ 失敗パターンを資産化して繰り返しを防ぐ
confidence-level 自信度を数値化し、レビュー箇所を可視化する

これらの概念は、どれも単体でも使えますが、組み合わせることで「指示を読む → 例外を適用 → 規律を守る → 完了を定義する → 出力を統一する → 自信度を示す → 失敗を学ぶ」という一連の流れになります。

ドキュメントの配置・責務分離の詳しい話は、前回記事「AI用ドキュメントと開発者用ドキュメントの混在問題を解決する」を参照してください。


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?