@aramassa/ai-rules 0.9.6 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -304,6 +304,14 @@ In case of naming conflicts, lowest level takes precedence:
304
304
  2. Organization-level agent
305
305
  3. Enterprise-level agent (lowest priority)
306
306
 
307
+ ### Automation Considerations
308
+
309
+ **Avoid using `/dev/null` in agent prompts or tool configurations:**
310
+ - Using `/dev/null` can cause automation workflows to stop or hang
311
+ - This is particularly problematic in CI/CD pipelines and automated testing
312
+ - Instead, use proper output handling or logging mechanisms
313
+ - If output suppression is needed, use tool-specific options or environment configurations
314
+
307
315
  ## MCP Server Configuration (Organization/Enterprise Only)
308
316
 
309
317
  ### Basic MCP Server Setup
@@ -145,3 +145,11 @@ main
145
145
  2. **CI/CD安定性**: パイプラインの失敗率低下
146
146
  3. **開発効率**: 明確なプロセス定義による作業手順統一
147
147
  4. **パッケージ品質**: npm publishable な状態の維持
148
+
149
+ ## ブランチのクリーンアップ(リモートで削除済みのみ)
150
+
151
+ リモートで削除されたブランチだけをローカルから削除し、ローカルでのみ存在するブランチは残す。
152
+
153
+ ```
154
+ git fetch --prune && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs -r git branch -D
155
+ ```
@@ -0,0 +1,323 @@
1
+ ---
2
+ type: test
3
+ category: e2e-test
4
+ focus: command-line-testing
5
+ applyTo: "todo_plans/**/e2e-cmd.md"
6
+ ---
7
+
8
+ # E2E コマンドラインテスト計画ガイドライン
9
+
10
+ ## 概要
11
+
12
+ このドキュメントは、`todo_plans/${ISSUE_NUMBER}/e2e-cmd.md` ファイルに記載すべき E2E テストの追加/更新/削除内容に関するガイドラインです。
13
+
14
+ ## 基本原則
15
+
16
+ ### コマンドライン完結の原則
17
+
18
+ **E2E テストは、原則としてコマンドライン(CLI)上で完結するもののみを対象とします。**
19
+
20
+ **対象となるテスト**:
21
+ - CLI ツールの動作確認
22
+ - API サーバーの HTTP リクエスト/レスポンス検証(curl、httpie などを使用)
23
+ - ビルドプロセスの実行確認
24
+ - スクリプトの実行と出力検証
25
+ - ファイル操作の確認
26
+
27
+ **対象外となるテスト**:
28
+ - ブラウザ UI のインタラクション(Playwright、Selenium などを使うもの)
29
+ - デスクトップアプリケーションの GUI 操作
30
+ - モバイルアプリケーションのテスト
31
+ - コマンドラインから実行できないインタラクティブな操作
32
+
33
+ ### なぜコマンドライン完結なのか
34
+
35
+ - **再現性**: コマンドは完全に記録でき、誰でも同じ手順で実行可能
36
+ - **自動化**: CI/CD パイプラインで容易に実行可能
37
+ - **保守性**: テストスクリプトがシンプルで理解しやすい
38
+ - **環境依存性の最小化**: ブラウザやGUIツールのバージョン差異を避けられる
39
+
40
+ ## e2e-cmd.md の記載内容
41
+
42
+ ### ファイル構成
43
+
44
+ `todo_plans/${ISSUE_NUMBER}/e2e-cmd.md` ファイルには、以下の内容を記載します:
45
+
46
+ ```markdown
47
+ # E2E テスト計画: [機能名]
48
+
49
+ ## 追加すべきテスト
50
+
51
+ ### テスト1: [テスト名]
52
+ - **目的**: [何を検証するか]
53
+ - **対象ファイル**: [プロジェクトルートからのフルパス]
54
+ - **コマンド**:
55
+ ```bash
56
+ # セットアップ
57
+ npm run build
58
+
59
+ # テスト実行
60
+ ./dist/cli.js command --option value
61
+
62
+ # 期待する結果
63
+ # - 終了コード: 0
64
+ # - 標準出力: "Success message"
65
+ ```
66
+ - **検証ポイント**:
67
+ - [ ] 終了コードが正しい
68
+ - [ ] 標準出力/標準エラー出力が期待通り
69
+ - [ ] ファイル生成が正しく行われる
70
+
71
+ ## 更新すべきテスト
72
+
73
+ ### テスト2: [既存テスト名]
74
+ - **現在の問題**: [なぜ更新が必要か]
75
+ - **対象ファイル**: docs-ai/e2e-test/[既存ファイル名]
76
+ - **変更内容**:
77
+ - 変更前: `old command`
78
+ - 変更後: `new command --new-option`
79
+ - **理由**: [変更理由]
80
+
81
+ ## 削除すべきテスト
82
+
83
+ ### テスト3: [削除するテスト名]
84
+ - **対象ファイル**: docs-ai/e2e-test/[ファイル名]
85
+ - **削除理由**: [なぜ不要になったか]
86
+ ```
87
+
88
+ ### 記載のポイント
89
+
90
+ #### 1. 追加すべきテスト
91
+
92
+ 新機能や改善により、新たに動作確認が必要になったテストを記載します。
93
+
94
+ **必須項目**:
95
+ - テスト名(何をテストするか明確に)
96
+ - 目的(このテストで何を保証するか)
97
+ - 対象ファイル(プロジェクトルートからのフルパス)
98
+ - 実行コマンド(コピペで実行可能な形式)
99
+ - 検証ポイント(チェックリスト形式)
100
+
101
+ **良い例**:
102
+ ```markdown
103
+ ### テスト: CLI のヘルプ表示
104
+
105
+ - **目的**: CLI が正しくヘルプメッセージを表示することを確認
106
+ - **対象ファイル**: packages/cli/dist/index.js
107
+ - **コマンド**:
108
+ ```bash
109
+ cd /home/runner/work/ai-rules/ai-rules
110
+ ./packages/cli/dist/index.js --help
111
+ ```
112
+ - **検証ポイント**:
113
+ - [ ] 終了コード 0
114
+ - [ ] 使用方法が表示される
115
+ - [ ] オプション一覧が表示される
116
+ ```
117
+
118
+ **悪い例**:
119
+ ```markdown
120
+ ### ヘルプのテスト
121
+ - ヘルプが表示されることを確認
122
+ - コマンド: `cli --help`
123
+ ```
124
+
125
+ #### 2. 更新すべきテスト
126
+
127
+ 既存の E2E テストの変更が必要な場合に記載します。
128
+
129
+ **記載すべき内容**:
130
+ - 既存テストファイルのフルパス(docs-ai/e2e-test/ 配下)
131
+ - 変更前後のコマンド
132
+ - 変更理由
133
+
134
+ **例**:
135
+ ```markdown
136
+ ### テスト: presets コマンドの引数変更
137
+
138
+ - **現在の問題**: 新しいオプション `--format` が追加されたが、既存テストでカバーされていない
139
+ - **対象ファイル**: docs-ai/e2e-test/presets-command-e2e.md
140
+ - **変更内容**:
141
+ - 変更前: `./dist/cli.js presets`
142
+ - 変更後: `./dist/cli.js presets --format json`
143
+ - **理由**: JSON 形式の出力を検証するため
144
+ ```
145
+
146
+ #### 3. 削除すべきテスト
147
+
148
+ 不要になったテストや、機能削除により実行できなくなったテストを記載します。
149
+
150
+ **記載すべき内容**:
151
+ - 削除対象ファイルのフルパス
152
+ - 削除理由
153
+
154
+ **例**:
155
+ ```markdown
156
+ ### テスト: 旧形式の config ファイル読み込み
157
+
158
+ - **対象ファイル**: docs-ai/e2e-test/legacy-config-e2e.md
159
+ - **削除理由**: 旧形式のサポートを終了したため、このテストは不要
160
+ ```
161
+
162
+ ## コマンド記述のベストプラクティス
163
+
164
+ ### 1. 絶対パスの使用
165
+
166
+ ```bash
167
+ # ✅ 良い例: プロジェクトルートからの明示的なパス
168
+ cd /home/runner/work/ai-rules/ai-rules
169
+ ./dist/cli.js command
170
+
171
+ # ❌ 悪い例: 相対パスのみ
172
+ ./cli.js command
173
+ ```
174
+
175
+ ### 2. 環境変数の明示
176
+
177
+ ```bash
178
+ # ✅ 良い例: 必要な環境変数を明示
179
+ NODE_ENV=test ./dist/cli.js test-command
180
+
181
+ # ❌ 悪い例: 環境変数が暗黙的
182
+ ./dist/cli.js test-command
183
+ ```
184
+
185
+ ### 3. 前提条件の記載
186
+
187
+ ```bash
188
+ # ✅ 良い例: セットアップ手順を含める
189
+ # 前提: ビルド済みであること
190
+ npm run build
191
+
192
+ # テスト実行
193
+ ./dist/cli.js command
194
+
195
+ # ❌ 悪い例: 前提条件が不明
196
+ ./dist/cli.js command
197
+ ```
198
+
199
+ ### 4. 期待結果の明記
200
+
201
+ ```bash
202
+ # ✅ 良い例: 期待する出力を明記
203
+ # 期待する結果:
204
+ # - 終了コード: 0
205
+ # - 標準出力に "Success" を含む
206
+ # - ファイル dist/output.json が生成される
207
+
208
+ # ❌ 悪い例: 期待結果が不明
209
+ ./dist/cli.js command
210
+ ```
211
+
212
+ ### 5. エラーケースの検証
213
+
214
+ ```bash
215
+ # ✅ 良い例: エラーケースも記載
216
+ # エラーケース: 無効な引数
217
+ ./dist/cli.js command --invalid-option ; echo "exit code: $?"
218
+ # 期待: 終了コード 1、エラーメッセージ出力
219
+
220
+ # ❌ 悪い例: 正常系のみ
221
+ ./dist/cli.js command
222
+ ```
223
+
224
+ ## E2E テストドキュメントへの反映
225
+
226
+ `todo_plans/${ISSUE_NUMBER}/e2e-cmd.md` に記載した内容は、実装完了後に `docs-ai/e2e-test/` ディレクトリ配下の適切なファイルに反映します。
227
+
228
+ ### 反映先の決定
229
+
230
+ - **既存機能の拡張**: 既存の E2E テストファイルに追記
231
+ - **新機能**: 新しい E2E テストファイルを作成(命名規則: `[機能名]-e2e.md`)
232
+ - **大規模な変更**: 既存ファイルを分割または再構成
233
+
234
+ ### 反映時の注意点
235
+
236
+ 1. **ファイルパスはプロジェクトルートからのフルパス**で記載
237
+ 2. **コマンドはコピペで実行可能**な形式で記載
238
+ 3. **セクション構成**は既存ファイルに合わせる:
239
+ - 前提条件
240
+ - 全体ビルド・テスト
241
+ - パッケージ別テスト
242
+ - コマンドライン検証
243
+ - エラーケーステスト
244
+ - クリーンアップ
245
+
246
+ ## チェックリスト
247
+
248
+ e2e-cmd.md を作成する際の確認事項:
249
+
250
+ - [ ] すべてのテストがコマンドライン上で完結する
251
+ - [ ] ファイルパスはプロジェクトルートからのフルパスで記載されている
252
+ - [ ] コマンドがコピペで実行可能である
253
+ - [ ] 期待結果(終了コード、出力内容など)が明記されている
254
+ - [ ] セットアップ手順が含まれている
255
+ - [ ] クリーンアップ手順が必要な場合は記載されている
256
+ - [ ] 既存の E2E テストファイルとの関連が明確である
257
+
258
+ ## 関連ドキュメント
259
+
260
+ - **E2E テストガイドライン**: artifact/instructions/rules/test/e2e-cli-execution.md
261
+ - **E2E テストディレクトリ**: docs-ai/e2e-test/README.md
262
+ - **計画ワークフロー**: artifact/prompts/development/plan-fix.prompt.md
263
+
264
+ ## 例
265
+
266
+ ### 完全な e2e-cmd.md の例
267
+
268
+ ```markdown
269
+ # E2E テスト計画: presets コマンド拡張
270
+
271
+ ## 追加すべきテスト
272
+
273
+ ### テスト1: JSON 形式での出力
274
+
275
+ - **目的**: presets コマンドが JSON 形式で出力できることを確認
276
+ - **対象ファイル**: packages/cli/dist/cli.js
277
+ - **コマンド**:
278
+ ```bash
279
+ cd /home/runner/work/ai-rules/ai-rules
280
+ npm run build
281
+ ./dist/cli.js presets --format json
282
+ ```
283
+ - **検証ポイント**:
284
+ - [ ] 終了コード 0
285
+ - [ ] 標準出力が有効な JSON である
286
+ - [ ] JSON に "presets" 配列が含まれる
287
+
288
+ ### テスト2: サブディレクトリのプリセット検出
289
+
290
+ - **目的**: presets/ 配下のサブディレクトリ内のプリセットも検出できることを確認
291
+ - **対象ファイル**: packages/cli/dist/cli.js
292
+ - **コマンド**:
293
+ ```bash
294
+ cd /home/runner/work/ai-rules/ai-rules
295
+ npm run build
296
+
297
+ # サブディレクトリを作成してテスト
298
+ mkdir -p presets/custom
299
+ echo "test: true" > presets/custom/test.yaml
300
+
301
+ ./dist/cli.js presets
302
+
303
+ # クリーンアップ
304
+ rm -rf presets/custom
305
+ ```
306
+ - **検証ポイント**:
307
+ - [ ] 終了コード 0
308
+ - [ ] "custom/test.yaml" がリストに含まれる
309
+
310
+ ## 更新すべきテスト
311
+
312
+ ### テスト3: 既存の presets 一覧表示テスト
313
+
314
+ - **現在の問題**: 新しい `--format` オプションが追加されたが、既存テストでカバーされていない
315
+ - **対象ファイル**: docs-ai/e2e-test/presets-command-e2e.md
316
+ - **変更内容**:
317
+ - セクション「基本的な presets 一覧表示」の後に、「JSON 形式での出力」セクションを追加
318
+ - **理由**: 新機能のテストを既存の E2E テストファイルに統合
319
+
320
+ ## 削除すべきテスト
321
+
322
+ なし
323
+ ```
@@ -105,13 +105,30 @@ cat > "todo_plans/${ISSUE_NUMBER}/index.md" <<'EOF'
105
105
  - `testing.md`: テスト戦略・テストケース
106
106
  - `risks.md`: リスク評価と対策
107
107
  - `notes.md`: 設計メモ・その他補足
108
+ - `e2e-cmd.md`: E2E テスト(追加/更新/削除すべきコマンドラインテスト。詳細は artifact/instructions/rules/test/e2e-cmd.md を参照)
109
+
110
+ ## 関連ファイルの記載ルール
111
+
112
+ 計画ファイル内で関連ファイルやディレクトリを参照する場合は、**必ずプロジェクトルートからのフルパス**で記載してください。
113
+
114
+ **良い例**:
115
+ - `artifact/instructions/rules/test/e2e-cmd.md`
116
+ - `todo_plans/123/index.md`
117
+ - `packages/core/src/index.ts`
118
+
119
+ **悪い例**:
120
+ - `e2e-cmd.md`(相対パスが不明確)
121
+ - `./index.md`(現在のディレクトリが不明確)
122
+ - `src/index.ts`(どのパッケージか不明)
108
123
  EOF
109
124
 
110
125
  cat > "todo_plans/${ISSUE_NUMBER}/details.md" <<'EOF'
111
126
  # 補足(自由記述)
112
127
 
113
128
  ※補足はこのファイルに「全部」書く必要はありません。
114
- `todo_plans/${ISSUE_NUMBER}/` 配下に、用途別にファイルを増やしてOKです(例: `testing.md`, `risks.md`, `notes.md`)。
129
+ `todo_plans/${ISSUE_NUMBER}/` 配下に、用途別にファイルを増やしてOKです(例: `testing.md`, `risks.md`, `notes.md`, `e2e-cmd.md`)。
130
+
131
+ **重要**: ファイル内で関連ファイルを参照する際は、プロジェクトルートからのフルパスで記載してください。
115
132
 
116
133
  ## 背景
117
134
 
@@ -308,8 +325,11 @@ echo "Next: Start Agent Coding with base branch plan/${ISSUE_NUMBER}"
308
325
 
309
326
  - **index.md**: 人間が読む前提で、要点だけに絞る(Issue 本文と一致させる正本)
310
327
  - **補足ファイル**: 長い背景/Phase/受け入れ基準などは `todo_plans/${ISSUE_NUMBER}/` 配下に分割して置く(`details.md` はその一例)
328
+ - **e2e-cmd.md**: E2E テストの追加/更新/削除内容を記載(原則としてコマンドライン上で完結するテストのみ対象)
329
+ - 詳細は `artifact/instructions/rules/test/e2e-cmd.md` を参照
311
330
  - **Phase 分け**: 1つの Phase が 2-3時間で完了する規模に分割
312
331
  - **受け入れ基準**: 検証可能な形で明記
332
+ - **ファイルパスの記載**: 関連ファイルは必ずプロジェクトルートからのフルパスで記載
313
333
 
314
334
  #### Issue 作成時
315
335
 
@@ -433,9 +453,10 @@ git push
433
453
 
434
454
  ### 関連ドキュメント
435
455
 
436
- - プランニングワークフロー マニュアル(planning-workflow.md)
437
- - Git ブランチ命名規則(git-rules.md)
438
- - todo_plans への記載項目(todo_planning.md)
456
+ - プランニングワークフロー マニュアル(artifact/instructions/planning-workflow.md)
457
+ - Git ブランチ命名規則(artifact/instructions/git-rules.md)
458
+ - todo_plans への記載項目(artifact/instructions/todo_planning.md)
459
+ - E2E コマンドラインテスト計画(artifact/instructions/rules/test/e2e-cmd.md)
439
460
 
440
461
  ### まとめ
441
462
 
@@ -0,0 +1,462 @@
1
+ ---
2
+ type: prompt
3
+ category: github-copilot
4
+ focus: agent-environment
5
+ applyTo: ".github/workflows/copilot-setup-steps.yml"
6
+ human-instruction: |-
7
+ ## GitHub Copilot Coding Agent 環境カスタマイズについて
8
+
9
+ このルールは、GitHub Copilot Coding Agent の開発環境をカスタマイズする方法を説明しています。
10
+ 以下の点で人間の判断が重要です:
11
+
12
+ - **環境要件の分析**: プロジェクトに必要なツールや依存関係の特定
13
+ - **セキュリティの考慮**: シークレットや認証情報の適切な管理
14
+ - **パフォーマンス最適化**: ランナーサイズやキャッシュ戦略の選択
15
+ - **コスト管理**: larger runners や self-hosted runners の費用対効果の判断
16
+
17
+ AIは設定ファイルの生成を支援できますが、プロジェクト固有の要件やセキュリティポリシーの判断は人間が行う必要があります。
18
+ ---
19
+
20
+ # GitHub Copilot Coding Agent 環境カスタマイズガイド
21
+
22
+ ## 概要
23
+
24
+ GitHub Copilot Coding Agent は、独自のエフェメラルな開発環境(GitHub Actions によって提供)でタスクを実行します。この環境をカスタマイズすることで、エージェントがより効果的にコードの探索、変更、テスト、リンティングなどを実行できるようになります。
25
+
26
+ 本ドキュメントは、GitHub 公式ドキュメントに基づいて作成されています:
27
+ https://docs.github.com/en/copilot/how-tos/use-copilot-agents/coding-agent/customize-the-agent-environment
28
+
29
+ ## Copilot 環境のカスタマイズについて
30
+
31
+ ### 基本概念
32
+
33
+ Copilot Coding Agent は、タスク実行時に以下の環境を利用します:
34
+
35
+ - **エフェメラル環境**: タスクごとに作成され、完了後に破棄される一時的な環境
36
+ - **GitHub Actions ベース**: GitHub Actions のランナー上で実行される
37
+ - **独立した環境**: 各タスクは隔離された環境で実行される
38
+
39
+ ### カスタマイズ可能な項目
40
+
41
+ 以下の項目をカスタマイズできます:
42
+
43
+ 1. **ツールや依存関係のプリインストール**
44
+ 2. **環境変数の設定**
45
+ 3. **より大きな GitHub ホステッドランナーへのアップグレード**
46
+ 4. **Git Large File Storage (LFS) の有効化**
47
+ 5. **セルフホステッドランナーの使用(ARC 経由)**
48
+
49
+ ## ツールや依存関係のプリインストール
50
+
51
+ ### 概要
52
+
53
+ Copilot はプロジェクトのビルド、コンパイル、自動テスト、リンターの実行などを行うため、プロジェクトの依存関係をインストールする必要があります。Copilot は自動的にこれらを発見してインストールしようとしますが、以下の理由でプリインストールが推奨されます:
54
+
55
+ - **速度**: 試行錯誤によるインストールは時間がかかる
56
+ - **信頼性**: LLM の非決定的な性質により、インストールが不安定になる可能性
57
+ - **制限事項**: プライベートな npm レジストリなど、Copilot が自動的にアクセスできない依存関係がある
58
+
59
+ ### プリインストールの設定方法
60
+
61
+ `.github/workflows/copilot-setup-steps.yml` ファイルを作成し、カスタムセットアップステップを定義します:
62
+
63
+ ```yaml
64
+ name: Copilot setup steps
65
+
66
+ on:
67
+ workflow_dispatch:
68
+
69
+ jobs:
70
+ copilot-setup-steps:
71
+ runs-on: ubuntu-latest
72
+ permissions:
73
+ contents: read
74
+ steps:
75
+ - uses: actions/checkout@v4
76
+
77
+ # Node.js プロジェクトの例
78
+ - name: Setup Node.js
79
+ uses: actions/setup-node@v4
80
+ with:
81
+ node-version: '20'
82
+ cache: 'npm'
83
+
84
+ - name: Install dependencies
85
+ run: npm ci
86
+
87
+ # Python プロジェクトの例
88
+ - name: Setup Python
89
+ uses: actions/setup-python@v5
90
+ with:
91
+ python-version: '3.11'
92
+ cache: 'pip'
93
+
94
+ - name: Install Python dependencies
95
+ run: pip install -r requirements.txt
96
+
97
+ # カスタムツールのインストール例
98
+ - name: Install custom tools
99
+ run: |
100
+ sudo apt-get update
101
+ sudo apt-get install -y your-custom-tool
102
+ ```
103
+
104
+ ### プライベート npm レジストリへの認証
105
+
106
+ プライベート npm レジストリを使用する場合:
107
+
108
+ ```yaml
109
+ - name: Setup .npmrc
110
+ run: |
111
+ echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
112
+ echo "@your-scope:registry=https://your-private-registry.com/" >> ~/.npmrc
113
+
114
+ - name: Install dependencies
115
+ run: npm ci
116
+ ```
117
+
118
+ ### ベストプラクティス
119
+
120
+ - **キャッシュの活用**: `cache` オプションを使用して依存関係のダウンロード時間を短縮
121
+ - **必要最小限のインストール**: 実際に必要なツールのみをインストール
122
+ - **バージョン固定**: ツールのバージョンを明示的に指定して、一貫性を確保
123
+
124
+ ## 環境変数の設定
125
+
126
+ ### 概要
127
+
128
+ Copilot の環境で使用するツールや依存関係を設定・認証するために、環境変数を設定できます。
129
+
130
+ ### 設定方法
131
+
132
+ #### 1. GitHub Actions の変数またはシークレットを作成
133
+
134
+ **機密情報を含む場合**(パスワード、API キーなど):
135
+ - GitHub Actions のシークレットを使用
136
+
137
+ **機密情報を含まない場合**:
138
+ - GitHub Actions の変数を使用
139
+
140
+ #### 2. リポジトリ設定での作成手順
141
+
142
+ 1. GitHub のリポジトリページに移動
143
+ 2. **Settings** をクリック
144
+ 3. サイドバーの **Secrets and variables** > **Actions** をクリック
145
+ 4. **Variables** タブまたは **Secrets** タブを選択
146
+ 5. **New repository variable** または **New repository secret** をクリック
147
+ 6. 変数名とを入力
148
+ - **Environment**: `copilot` を選択(重要)
149
+ 7. **Add variable** または **Add secret** をクリック
150
+
151
+ #### 3. ワークフローでの使用例
152
+
153
+ ```yaml
154
+ jobs:
155
+ copilot-setup-steps:
156
+ runs-on: ubuntu-latest
157
+ environment: copilot # 環境を指定
158
+ steps:
159
+ - uses: actions/checkout@v4
160
+
161
+ - name: Configure tool with environment variables
162
+ env:
163
+ API_KEY: ${{ secrets.API_KEY }}
164
+ API_ENDPOINT: ${{ vars.API_ENDPOINT }}
165
+ run: |
166
+ echo "API_ENDPOINT=$API_ENDPOINT" >> $GITHUB_ENV
167
+ # ツールの設定
168
+ tool configure --api-key "$API_KEY"
169
+ ```
170
+
171
+ ### セキュリティのベストプラクティス
172
+
173
+ - **シークレットの使用**: 機密情報は必ず GitHub Actions のシークレットとして保存
174
+ - **環境の指定**: `environment: copilot` を明示的に指定
175
+ - **最小権限の原則**: 必要最小限の権限のみを付与
176
+ - **シークレットのローテーション**: 定期的にシークレットを更新
177
+
178
+ ## より大きな GitHub ホステッドランナーへのアップグレード
179
+
180
+ ### 概要
181
+
182
+ デフォルトでは、Copilot は標準的な GitHub Actions ランナー(限られたリソース)で動作します。より大きなランナーを使用することで、以下のメリットがあります:
183
+
184
+ - **より多くの RAM、CPU、ディスクスペース**
185
+ - **高度なネットワーク制御**
186
+ - **パフォーマンスの向上**(依存関係のダウンロードやテスト実行時)
187
+
188
+ ### 設定方法
189
+
190
+ #### 1. Larger runners の追加
191
+
192
+ GitHub のドキュメントを参照: [Larger runners](https://docs.github.com/en/actions/using-github-hosted-runners/using-larger-runners)
193
+
194
+ #### 2. Copilot 環境での有効化
195
+
196
+ リポジトリ設定で、`copilot` 環境に larger runners へのアクセスを許可します:
197
+
198
+ 1. **Settings** > **Environments** > **copilot** に移動
199
+ 2. **Deployment protection rules** で larger runners を選択
200
+ 3. 変更を保存
201
+
202
+ #### 3. ワークフローでの指定
203
+
204
+ ```yaml
205
+ jobs:
206
+ copilot-setup-steps:
207
+ runs-on: ubuntu-latest-4-cores # larger runner を指定
208
+ # または
209
+ # runs-on: ubuntu-latest-8-cores
210
+ # runs-on: ubuntu-latest-16-cores
211
+ steps:
212
+ - uses: actions/checkout@v4
213
+ # ... その他のステップ
214
+ ```
215
+
216
+ ### 考慮事項
217
+
218
+ - **コスト**: Larger runners は標準ランナーよりもコストが高い
219
+ - **必要性の評価**: パフォーマンス問題が実際に発生している場合にのみ使用を検討
220
+ - **適切なサイズ選択**: プロジェクトの要件に応じた適切なサイズを選択
221
+
222
+ ## セルフホステッドランナーの使用(ARC)
223
+
224
+ ### 概要
225
+
226
+ ARC (Actions Runner Controller) を使用して、セルフホステッドランナーで Copilot Coding Agent を実行できます。
227
+
228
+ ### 前提条件
229
+
230
+ - ARC マネージドスケールセットが環境にセットアップされている
231
+ - Ubuntu x64 Linux ランナー(Windows や macOS は非対応)
232
+ - 永続的なランナーは推奨されない(オートスケーリングシナリオ向け)
233
+
234
+ ### 設定手順
235
+
236
+ #### 1. ARC スケールセットのセットアップ
237
+
238
+ GitHub Actions Runner Controller のドキュメントを参照:
239
+ [Actions Runner Controller](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller)
240
+
241
+ #### 2. ワークフローでの指定
242
+
243
+ ```yaml
244
+ jobs:
245
+ copilot-setup-steps:
246
+ runs-on: arc-scale-set-name # ARC スケールセット名を指定
247
+ steps:
248
+ - uses: actions/checkout@v4
249
+ # ... その他のステップ
250
+ ```
251
+
252
+ #### 3. ファイアウォールの無効化
253
+
254
+ セルフホステッドランナーを使用する場合、リポジトリ設定で Copilot coding agent の統合ファイアウォールを無効化する必要があります。
255
+
256
+ **⚠️ 警告**: ファイアウォールを無効化すると、Copilot と セルフホステッド環境間の隔離が減少します。代替のネットワークセキュリティ制御を実装する必要があります。
257
+
258
+ ### セキュリティの考慮事項
259
+
260
+ #### 必須エンドポイント
261
+
262
+ セルフホステッドランナーから以下のエンドポイントへのアクセスを許可する必要があります:
263
+
264
+ - `api.githubcopilot.com`
265
+ - `uploads.github.com`
266
+ - `user-images.githubusercontent.com`
267
+
268
+ その他、GitHub Actions セルフホステッドランナーに必要なホストの完全なリストについては、[Self-hosted runners reference](https://docs.github.com/en/actions/reference/runners/self-hosted-runners#accessible-domains-by-function) を参照してください。
269
+
270
+ #### セキュリティ対策
271
+
272
+ - **ネットワーク通信制御**: ホスティング環境に厳格なネットワーク通信制御を実装
273
+ - **最小権限**: ランナーに必要最小限の権限のみを付与
274
+ - **監視**: ランナーの活動を継続的に監視
275
+ - **隔離**: 可能な限り、Copilot 専用の隔離された環境でランナーを実行
276
+
277
+ ## Git Large File Storage (LFS) の有効化
278
+
279
+ ### 概要
280
+
281
+ Git LFS を使用してリポジトリに大きなファイルを保存している場合、Copilot の環境で Git LFS をインストールし、LFS オブジェクトをフェッチする必要があります。
282
+
283
+ ### 設定方法
284
+
285
+ `copilot-setup-steps` ジョブに `actions/checkout` ステップを追加し、`lfs` オプションを `true` に設定します:
286
+
287
+ ```yaml
288
+ name: Copilot setup steps
289
+
290
+ on:
291
+ workflow_dispatch:
292
+
293
+ jobs:
294
+ copilot-setup-steps:
295
+ runs-on: ubuntu-latest
296
+ permissions:
297
+ contents: read # actions/checkout に必要
298
+ steps:
299
+ - uses: actions/checkout@v5
300
+ with:
301
+ lfs: true # Git LFS を有効化
302
+
303
+ # ... その他のセットアップステップ
304
+ ```
305
+
306
+ ### 注意事項
307
+
308
+ - **帯域幅とストレージ**: Git LFS のファイルは GitHub の LFS 帯域幅とストレージクォータを消費します
309
+ - **パフォーマンス**: 大きなファイルのダウンロードには時間がかかる可能性があります
310
+ - **必要性の確認**: プロジェクトで実際に LFS ファイルが必要な場合にのみ有効化
311
+
312
+ ## ワークフロー全体の例
313
+
314
+ ### 基本的な Node.js プロジェクト
315
+
316
+ ```yaml
317
+ name: Copilot setup steps
318
+
319
+ on:
320
+ workflow_dispatch:
321
+
322
+ jobs:
323
+ copilot-setup-steps:
324
+ runs-on: ubuntu-latest
325
+ environment: copilot
326
+ permissions:
327
+ contents: read
328
+ steps:
329
+ - uses: actions/checkout@v5
330
+ with:
331
+ lfs: false # LFS が不要な場合
332
+
333
+ - name: Setup Node.js
334
+ uses: actions/setup-node@v4
335
+ with:
336
+ node-version: '20'
337
+ cache: 'npm'
338
+
339
+ - name: Install dependencies
340
+ run: npm ci
341
+
342
+ - name: Build project
343
+ run: npm run build
344
+ ```
345
+
346
+ ### 複雑なプロジェクト(複数言語、カスタムツール)
347
+
348
+ ```yaml
349
+ name: Copilot setup steps
350
+
351
+ on:
352
+ workflow_dispatch:
353
+
354
+ jobs:
355
+ copilot-setup-steps:
356
+ runs-on: ubuntu-latest-4-cores # larger runner を使用
357
+ environment: copilot
358
+ permissions:
359
+ contents: read
360
+ steps:
361
+ - uses: actions/checkout@v5
362
+ with:
363
+ lfs: true # Git LFS を有効化
364
+
365
+ # Node.js セットアップ
366
+ - name: Setup Node.js
367
+ uses: actions/setup-node@v4
368
+ with:
369
+ node-version: '20'
370
+ cache: 'npm'
371
+
372
+ # Python セットアップ
373
+ - name: Setup Python
374
+ uses: actions/setup-python@v5
375
+ with:
376
+ python-version: '3.11'
377
+ cache: 'pip'
378
+
379
+ # カスタムツールのインストール
380
+ - name: Install system dependencies
381
+ run: |
382
+ sudo apt-get update
383
+ sudo apt-get install -y build-essential libpq-dev
384
+
385
+ # プライベートレジストリへの認証
386
+ - name: Setup .npmrc
387
+ run: |
388
+ echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
389
+
390
+ # 依存関係のインストール
391
+ - name: Install Node.js dependencies
392
+ run: npm ci
393
+
394
+ - name: Install Python dependencies
395
+ run: pip install -r requirements.txt
396
+
397
+ # 環境変数の設定
398
+ - name: Configure environment
399
+ env:
400
+ DATABASE_URL: ${{ secrets.DATABASE_URL }}
401
+ API_KEY: ${{ secrets.API_KEY }}
402
+ run: |
403
+ echo "ENVIRONMENT=development" >> $GITHUB_ENV
404
+
405
+ # ビルド
406
+ - name: Build project
407
+ run: npm run build
408
+ ```
409
+
410
+ ## トラブルシューティング
411
+
412
+ ### よくある問題と解決策
413
+
414
+ #### 1. 依存関係のインストールが失敗する
415
+
416
+ **原因**:
417
+ - プライベートレジストリへの認証が不足
418
+ - ネットワーク制限
419
+
420
+ **解決策**:
421
+ - シークレットと認証設定を確認
422
+ - 必要なエンドポイントへのアクセスを許可
423
+
424
+ #### 2. パフォーマンスが遅い
425
+
426
+ **原因**:
427
+ - 標準ランナーのリソースが不足
428
+ - キャッシュが有効化されていない
429
+
430
+ **解決策**:
431
+ - Larger runners へのアップグレードを検討
432
+ - 依存関係のキャッシュを有効化
433
+
434
+ #### 3. セルフホステッドランナーで接続エラー
435
+
436
+ **原因**:
437
+ - ファイアウォールの設定が不適切
438
+ - 必要なエンドポイントへのアクセスがブロックされている
439
+
440
+ **解決策**:
441
+ - Copilot 用のファイアウォールを無効化
442
+ - 必要なエンドポイントをホワイトリストに追加
443
+
444
+ ## 関連ドキュメント
445
+
446
+ - [Customizing or disabling the firewall for GitHub Copilot coding agent](https://docs.github.com/en/copilot/customizing-copilot/customizing-or-disabling-the-firewall-for-copilot-coding-agent)
447
+ - [Larger runners](https://docs.github.com/en/actions/using-github-hosted-runners/using-larger-runners)
448
+ - [Actions Runner Controller](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller)
449
+ - [Self-hosted runners reference](https://docs.github.com/en/actions/reference/runners/self-hosted-runners)
450
+ - [Using secrets in GitHub Actions](https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions)
451
+
452
+ ## まとめ
453
+
454
+ GitHub Copilot Coding Agent の環境カスタマイズにより、以下が実現できます:
455
+
456
+ ✅ **高速化**: 依存関係のプリインストールによる実行時間の短縮
457
+ ✅ **信頼性向上**: 確実な依存関係のインストール
458
+ ✅ **柔軟性**: プロジェクト固有の要件への対応
459
+ ✅ **セキュリティ**: 適切な認証と環境変数の管理
460
+ ✅ **パフォーマンス最適化**: Larger runners やセルフホステッドランナーの活用
461
+
462
+ プロジェクトの要件に応じて、適切なカスタマイズを実施してください。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aramassa/ai-rules",
3
- "version": "0.9.6",
3
+ "version": "0.9.7",
4
4
  "description": "This repository collects guidelines and instructions for developing AI agents. It contains documents covering communication rules, coding standards, testing strategies, and general operational practices.",
5
5
  "workspaces": [
6
6
  "packages/extract",
@@ -0,0 +1,15 @@
1
+ description: GitHub Copilot Coding Agent の環境カスタマイズに関するプロンプトです。
2
+
3
+ config:
4
+ baseDir: .github/prompts
5
+
6
+ recipe:
7
+ - title: "GitHub Copilot Agent Environment Customization"
8
+ out: "copilot-agent-environment.prompt.md"
9
+ type: "prompt"
10
+ filters:
11
+ category: "github-copilot"
12
+ focus: "agent-environment"
13
+ frontmatter:
14
+ description: "GitHub Copilot Coding Agent の開発環境をカスタマイズするための包括的なガイド。依存関係のプリインストール、環境変数、larger runners、Git LFS などを網羅。"
15
+ applyTo: ".github/workflows/copilot-setup-steps.yml"