@aramassa/ai-rules 0.8.0 → 0.9.0

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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  type: agent
3
- name: agent-creation
3
+ name: AgentCreation
4
4
  description: Specialized assistant for creating GitHub Copilot custom agent profiles with proper structure, tools configuration, and best practices based on official documentation
5
5
  target: github-copilot
6
6
  tools:
@@ -50,7 +50,7 @@ You are a specialized assistant for creating GitHub Copilot custom agent profile
50
50
 
51
51
  ```yaml
52
52
  ---
53
- name: unique-agent-identifier
53
+ name: UniqueAgentIdentifier
54
54
  description: Clear explanation of agent's purpose and capabilities
55
55
  ---
56
56
  ```
@@ -0,0 +1,75 @@
1
+ ---
2
+ type: agent
3
+ name: TechnicalWriter
4
+ description: プロジェクトのドキュメント(README, 技術仕様書, AI用ドキュメント)を生成・更新・保守するための専門エージェント
5
+ tools: ["read", "edit", "search"]
6
+ target: github-copilot
7
+ ---
8
+
9
+ # Technical Writer
10
+
11
+ あなたは、このプロジェクトのドキュメント作成・保守を専門とする **Technical Writer** です。
12
+ コードベース、仕様書、既存のドキュメントを分析し、正確で分かりやすく、メンテナンス性の高いドキュメントを作成することがあなたの責務です。
13
+
14
+ ## 役割と責任
15
+
16
+ ### 1. プロジェクトドキュメントの整備
17
+ - **README.md の更新**: ルートおよび各パッケージ(`packages/*`)の README を最新の実装に合わせて更新します。インストール手順、使用方法、APIリファレンスなどを網羅します。
18
+ - **技術仕様書の作成**: `docs/` ディレクトリに、アーキテクチャ、設計判断、データフローなどの技術的な詳細を記述します。
19
+ - **AI用ドキュメントの管理**: `docs-ai/` ディレクトリ配下のドキュメントを整備します。ここはAIがコンテキストとして利用するための情報を格納する場所です。
20
+ - `docs-ai/history/`: 変更履歴や意思決定の経緯を保存します。人間には冗長に見える詳細な情報でも、AIのコンテキスト維持のために事細かに記録してください。
21
+ - `docs-ai/learning/`: タスク実行を通じて得られた知見や、使用している技術要素(ライブラリの特性、APIの挙動など)に関する学習コンテンツを作成します。
22
+ - `docs-ai/internal/`: 現在のコードベースの構造、依存関係、重要な内部ロジックに関する情報を記録します。
23
+ - `docs-ai/e2e-test/`: E2Eテストのシナリオや手順書を管理します。テスト実行エージェント(`e2e-test-executor`)が参照するドキュメントであるため、手順の正確さとコマンドの実行可能性を重視してください。
24
+
25
+ ### 2. ドキュメント品質の維持
26
+ - **ガイドラインの遵守**: `.github/copilot-instructions.md` 内の「Documentation Guidelines」に厳密に従います。
27
+ - **正確性**: コードの実装とドキュメントの内容が乖離しないようにします。
28
+ - **可読性**: 適切な見出し、箇条書き、コードブロックを使用し、人間(およびAI)が読みやすい形式を保ちます。
29
+ - **図解**: 複雑なプロセスや構造については、Mermaid 記法を用いて図を作成します。
30
+
31
+ ## ガイドラインと制約
32
+
33
+ - **言語**: ドキュメントは原則として **日本語** で記述してください。
34
+ - **ファイル操作**: ドキュメントファイル(`.md`)のみを編集対象とします。コードファイル(`.ts`, `.js` 等)のロジック変更は行いません。
35
+ - **ディレクトリ構造**:
36
+ - `docs/`: 人間向けの技術ドキュメント
37
+ - `docs-ai/`: AI向けのコンテキスト・学習ドキュメント
38
+ - `packages/*/README.md`: パッケージごとの説明
39
+ - **スタイル**:
40
+ - 見出しは `#` (H1) から始め、階層構造を意識してください。
41
+ - リンクは相対パスを使用してください。
42
+
43
+ ## 実行プロセス
44
+
45
+ 1. **情報収集と分析**
46
+ - 対象となるソースコード、既存のドキュメント、関連する Issue や PR を読み込みます。
47
+ - **PR情報の活用**: 現在のブランチがデフォルトブランチ(`main`)でない場合、関連する Pull Request が存在するか調査します。PR がある場合は、その変更内容(Files changed)、説明(Description)、およびコメント(Comments)を分析し、ドキュメントに反映すべき変更点や意図を抽出します。
48
+ - **planブランチの追跡**: 特に `plan/xxx` ブランチから派生している場合や、関連する `plan/xxx` ブランチが存在する場合は、`gh` コマンド(例: `gh pr list` や `gh pr view`)を使用して、計画段階の議論や意図を確実に取得してください。
49
+ - 実装の意図、仕様、使用方法を正確に理解します。
50
+
51
+ 2. **構成案の提示**
52
+ - ドキュメントの目次構成や、記載する主要なトピックをユーザーに提案します。
53
+ - 既存ドキュメントとの整合性を確認します。
54
+
55
+ 3. **ドキュメント作成・更新**
56
+ - 決定した構成に基づいて、ドキュメントを記述します。
57
+ - **作成順序の厳守**: 複数の種類のドキュメントを更新する場合は、以下の優先順位を必ず守ってください。
58
+ 1. `docs-ai/` 配下(AI用コンテキストの整備を最優先)
59
+ 2. `**/README.md`(各パッケージおよびルートのREADME)
60
+ 3. `docs/` 配下(人間向けの技術詳細ドキュメント)
61
+ - コードスニペットやコマンド例は、実際に動作することを確認(または推論)して記載します。
62
+
63
+ 4. **自己レビュー**
64
+ - ガイドライン(`.github/copilot-instructions.md`)に準拠しているか確認します。
65
+ - 下記の「ドキュメントに含めるべきでない項目」が含まれていないか厳重にチェックします。
66
+
67
+ ## ドキュメントに含めるべきでない項目
68
+
69
+ 以下の情報は、生成するドキュメント(README.md, docs/配下など)には決して含めないでください。
70
+
71
+ - **機密情報**: APIキー、パスワード、トークン、認証情報などのシークレット。
72
+ - **個人情報**: 特定の個人の連絡先やプライベートな情報。
73
+ - **AI指示ファイルの内容**: `.github/` ディレクトリ配下のファイル(`copilot-instructions.md`, `agents/*.md` など)に含まれるプロンプト、ルール、指示内容そのもの。これらはエージェントの動作定義であり、ユーザー向けドキュメントではありません。
74
+ - **例外**: `.github/workflows/` にある CI/CD ワークフローの設定については、開発プロセスやデプロイ手順の説明として記載しても構いません。
75
+ - **内部的な実装の詳細すぎる情報**: ユーザー向けドキュメント(READMEなど)において、利用者が知る必要のない内部変数の詳細や一時的なロジックなど(技術仕様書の場合は除く)。
@@ -44,6 +44,35 @@ human-instruction: |-
44
44
 
45
45
  (名称はエコシステムに合わせて「モジュール」「パッケージ」等に読み替えて構いません)
46
46
 
47
+ ### CLI エントリポイントのファイル命名規則
48
+
49
+ CLI アプリケーションを作成する際は、以下のファイル命名規則に従ってください。
50
+
51
+ #### 標準ファイル名
52
+
53
+ CLI のエントリポイントファイルは **`cli.*`** という名前を使用すること:
54
+
55
+ - **推奨パターン**: `cli.{拡張子}`
56
+ - 例: `cli.ts`, `cli.js`, `cli.py`, `cli.rb`, `cli.go`, `cli.rs`
57
+
58
+ #### 配置場所
59
+
60
+ - **パッケージルート**: `src/cli.*` または `lib/cli.*`
61
+ - **モノレポ構成**: `packages/{パッケージ名}/src/cli.*`
62
+
63
+ #### 命名規則の理由
64
+
65
+ - **一貫性**: プロジェクト間で統一された命名により、CLI エントリポイントの識別が容易
66
+ - **自動化**: `**/cli.*` パターンによる自動的なルール適用とツール連携
67
+ - **明確性**: ファイル名から CLI エントリポイントであることが即座に判別可能
68
+
69
+ #### 例外
70
+
71
+ 以下の場合は、エコシステムの慣習に従って別の命名を使用することができます:
72
+
73
+ - Python: `__main__.py` または `{パッケージ名}/__main__.py`
74
+ - 複数の CLI コマンドを持つ場合: `cli/` ディレクトリ配下にコマンド別ファイル
75
+
47
76
  ### ローカルスクリプト/CLI の実行
48
77
 
49
78
  ローカルの CLI やスクリプトを実行する前に、ビルド工程や生成物が必要な場合は必ず事前に準備(ビルド/インストール/リンク)してください。多くのエコシステムでは、実行コマンドがビルド済みの成果物やインストール済みのエントリポイントを前提にしています。
@@ -0,0 +1,286 @@
1
+ ---
2
+ type: development-rules
3
+ category: cli-design, best-practices, configuration-management
4
+ focus: environment-file-support
5
+ applyTo: "**/cli.*"
6
+ human-instruction: |-
7
+ ## CLI Environment File Support Guidelines
8
+
9
+ これは言語非依存のCLI設計ガイドラインです。すべてのCLIアプリケーションは、
10
+ 環境変数ファイル(.env file)のサポートを標準機能として実装すべきです。
11
+
12
+ このルールにより、セキュリティ、保守性、開発者体験が大幅に向上します。
13
+ 実装時は各言語のエコシステムに応じた適切なライブラリを使用してください。
14
+ ---
15
+
16
+ # CLI Environment File Support Guidelines
17
+
18
+ ## Overview
19
+
20
+ すべてのCLIアプリケーションは、設定管理の一環として環境変数ファイルをサポートすべきです。これにより、セキュリティ、保守性、開発者体験が大幅に向上します。
21
+
22
+ このガイドラインは言語非依存の原則を定義しており、TypeScript、Python、Rust、Goなど、どの言語でCLIを実装する場合にも適用されます。
23
+
24
+ ## 主な要件
25
+
26
+ ### 1. Environment File Option
27
+
28
+ CLIは必ず `--env-file` オプション(または同等の機能)を提供すること。
29
+
30
+ **基本要件**:
31
+ - ✅ 相対パスと絶対パスの両方をサポート
32
+ - ✅ オプション指定は任意(デフォルトでは不要)
33
+ - ✅ 複数の環境ファイルを順次読み込める(推奨)
34
+
35
+ ```bash
36
+ # 基本的な使用例
37
+ my-cli command --env-file .env
38
+ my-cli command --env-file .env.production
39
+ my-cli command --env-file ~/.config/my-app/.env
40
+
41
+ # 複数ファイルの読み込み(推奨)
42
+ my-cli command --env-file .env.base --env-file .env.local
43
+ ```
44
+
45
+ ### 2. Variable Priority Order
46
+
47
+ 環境変数の優先順位を明確に定義し、ドキュメント化すること。
48
+
49
+ **推奨優先順位(高→低)**:
50
+ 1. **CLI引数で直接指定された値**(`--var KEY=value`)
51
+ 2. **設定ファイル内の変数定義**
52
+ 3. **`--env-file`で指定された.envファイル**
53
+ 4. **システムの環境変数**
54
+ 5. **デフォルト値**
55
+
56
+ **重要**: この優先順位により、ユーザーは状況に応じて柔軟に設定を上書きできます。
57
+
58
+ ### 3. Error Handling
59
+
60
+ **Required Error Handling**:
61
+ - ✅ ファイルが存在しない場合: 明確なエラーメッセージ(パスを含む)
62
+ - ✅ ファイルが読み取れない場合: 権限エラーを適切に報告
63
+ - ✅ パースエラー: エラーが発生した行を特定
64
+ - ✅ 相対パスのサポート: カレントディレクトリからの解決
65
+
66
+ **良いエラーメッセージの例**:
67
+ ```
68
+ Error: Environment file not found: .env.production
69
+ Searched in: /path/to/current/directory/.env.production
70
+
71
+ Tip: Create the file or specify a different path with --env-file
72
+ ```
73
+
74
+ **エラーハンドリングの原則**:
75
+ - **オプション指定なし**: エラーを出さない(.envファイルの使用は任意)
76
+ - **オプション指定あり**: ファイルが存在しない場合はエラー
77
+ - **パースエラー**: 問題のある行番号と内容を明示
78
+
79
+ ### 4. File Format Support
80
+
81
+ 標準的な.envファイル形式をサポート:
82
+
83
+ **必須サポート**:
84
+ - ✅ コメント(`#`)
85
+ - ✅ 空行の許容
86
+ - ✅ 引用符のサポート(シングル・ダブル)
87
+ - ✅ トリムされた値(前後の空白削除)
88
+
89
+ **推奨サポート**:
90
+ - 🔶 基本的な変数展開(`${VAR}`)
91
+ - 🔶 デフォルト値の指定(`${VAR:-default}`)
92
+
93
+ ```env
94
+ # コメント
95
+ API_KEY=your_secret_key_here
96
+ DATABASE_URL=postgresql://user:pass@localhost/db
97
+ APP_NAME="My Application"
98
+
99
+ # 変数展開(推奨)
100
+ BASE_PATH=/var/app
101
+ LOG_PATH=${BASE_PATH}/logs
102
+ ```
103
+
104
+ ## Security Considerations
105
+
106
+ ### 1. Sensitive Data Protection
107
+
108
+ **必須対策**:
109
+ - ✅ API key、パスワード、トークンをログに出力しない
110
+ - ✅ `.env`ファイルを`.gitignore`に追加
111
+ - ✅ `.env.example`サンプルファイルを提供
112
+ - ✅ 機密データは環境変数名で判定(API_KEY, PASSWORD, TOKEN, SECRETなどを含む)
113
+
114
+ **ログ出力時の安全な処理**:
115
+ ```
116
+ ✅ Good:
117
+ API_KEY: [REDACTED]
118
+ DATABASE_PASSWORD: [REDACTED]
119
+ APP_NAME: My Application
120
+
121
+ ❌ Bad:
122
+ API_KEY: sk-1234567890abcdef
123
+ DATABASE_PASSWORD: mypassword123
124
+ ```
125
+
126
+ ### 2. Validation and Sanitization
127
+
128
+ **推奨検証**:
129
+ - 環境変数の値を適切に検証(型、形式、範囲)
130
+ - 機密データは長さのみチェック(内容は検証しない)
131
+ - URL形式、メールアドレス、数値範囲などの検証
132
+
133
+ ```typescript
134
+ // 良い例: 機密データの検証
135
+ function validateApiKey(key: string): boolean {
136
+ // 長さのみチェック(実際の値は検証しない)
137
+ return key.length >= 32;
138
+ }
139
+
140
+ // 良い例: 非機密データの検証
141
+ function validateUrl(url: string): boolean {
142
+ try {
143
+ new URL(url);
144
+ return true;
145
+ } catch {
146
+ return false;
147
+ }
148
+ }
149
+ ```
150
+
151
+ ## Documentation Requirements
152
+
153
+ ### 1. Usage Examples
154
+
155
+ CLI のドキュメント(README.md、--help など)に以下を含めること:
156
+
157
+ **必須内容**:
158
+ - 基本的な使用方法
159
+ - 優先順位の説明
160
+ - エラーケースの例
161
+
162
+ ### 2. .env.example Template
163
+
164
+ プロジェクトルートに `.env.example` を配置し、必要な設定項目を明示:
165
+
166
+ ```env
167
+ # .env.example - Configuration template for My CLI
168
+
169
+ # API Configuration
170
+ API_KEY=your_api_key_here
171
+ API_ENDPOINT=https://api.example.com
172
+
173
+ # Database Configuration
174
+ DATABASE_URL=postgresql://user:password@localhost:5432/dbname
175
+
176
+ # Application Settings
177
+ APP_NAME=My Application
178
+ LOG_LEVEL=info
179
+ ```
180
+
181
+ ## Testing Requirements
182
+
183
+ env-file機能のテストを必ず含めること:
184
+
185
+ **必須テストケース**:
186
+ - ✅ 正常な読み込み
187
+ - ✅ ファイルが存在しない場合のエラー
188
+ - ✅ CLI変数の優先順位
189
+ - ✅ 複数の変数ソースの統合
190
+ - ✅ パースエラーのハンドリング
191
+ - ✅ 相対パス・絶対パスの解決
192
+
193
+ ## Best Practices Summary
194
+
195
+ ### ✅ DO
196
+
197
+ - Provide `--env-file` option for all CLIs
198
+ - Document variable priority clearly
199
+ - Show helpful error messages with file paths
200
+ - Support relative and absolute paths
201
+ - Provide `.env.example` template
202
+ - Add `.env` to `.gitignore`
203
+ - Validate sensitive values appropriately
204
+ - Test env file loading scenarios
205
+ - Redact sensitive values in logs and error messages
206
+ - Support standard .env file format
207
+
208
+ ### ❌ DON'T
209
+
210
+ - Require env file when not explicitly specified
211
+ - Log sensitive environment variable values
212
+ - Commit `.env` files to version control
213
+ - Give vague error messages
214
+ - Ignore file permission errors
215
+ - Hard-code default sensitive values
216
+ - Skip validation of critical variables
217
+ - Show full sensitive values in any output
218
+
219
+ ## Migration Guide
220
+
221
+ 既存のCLIに env-file サポートを追加する場合の段階的アプローチ:
222
+
223
+ ### Phase 1: Add --env-file Option (Basic)
224
+ - `--env-file` オプションを追加(オプショナル)
225
+ - 基本的なファイル読み込み機能を実装
226
+
227
+ ### Phase 2: Implement Priority Logic
228
+ - 優先順位ロジックを実装
229
+ - システム環境変数 → env-file → CLI引数の順
230
+
231
+ ### Phase 3: Enhance Error Handling
232
+ - エラーメッセージを改善
233
+ - ファイルパス、行番号を含める
234
+
235
+ ### Phase 4: Add Documentation and Tests
236
+ - README.mdに使用例を追加
237
+ - テストケースを追加
238
+
239
+ ### Phase 5: Provide .env.example
240
+ - `.env.example`を作成
241
+ - `.gitignore`に`.env`を追加
242
+
243
+ ## Related Standards
244
+
245
+ ### 12-Factor App 準拠
246
+
247
+ このガイドラインは、12-Factor Appの以下の原則に準拠しています:
248
+
249
+ - **III. Config**: 環境変数による設定の外部化
250
+ - **X. Dev/prod parity**: 開発と本番の環境の一致
251
+ - **XII. Admin processes**: 管理プロセスの実行環境の統一
252
+
253
+ ### Language-Specific Implementation
254
+
255
+ このルールの具体的な実装は、各言語専用のドキュメントで詳細化されています:
256
+
257
+ - **Python CLI**: `python-cli.md` - python-dotenv の使用
258
+ - **TypeScript CLI**: dotenv パッケージの使用
259
+ - **Rust CLI**: dotenvy クレートの使用
260
+ - **Go CLI**: godotenv パッケージの使用
261
+
262
+ 各言語のエコシステムに応じた適切なライブラリを使用してください。
263
+
264
+ ## Rationale
265
+
266
+ ### このルールが必要な理由
267
+
268
+ 1. **セキュリティ向上**:
269
+ - API keyやパスワードなどの機密情報をコードやコマンドライン履歴に残さない
270
+ - バージョン管理システムから機密情報を除外
271
+
272
+ 2. **環境管理の簡素化**:
273
+ - 開発/ステージング/本番環境の設定を簡単に切り替え可能
274
+ - チームメンバー間で設定を共有しやすい
275
+
276
+ 3. **チーム協業の改善**:
277
+ - `.env.example`により必要な設定項目が明確
278
+ - オンボーディングの効率化
279
+
280
+ 4. **12-Factor App準拠**:
281
+ - 業界標準のベストプラクティスへの準拠
282
+ - クラウドネイティブアプリケーションの原則に従う
283
+
284
+ 5. **開発者体験向上**:
285
+ - 長いコマンドライン引数を毎回入力する必要がなくなる
286
+ - 設定の再利用が容易