@aramassa/ai-rules 0.2.0 → 0.2.2
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.
- package/artifact/instructions/rules/test/github-actions-no-tests.md +100 -0
- package/artifact/prompts/ai-rules/for_prompts.prompt.md +203 -0
- package/artifact/prompts/ai-rules/for_recipe.md +379 -0
- package/artifact/prompts/{todo_plans.prompt.md → development/todo_plans.prompt.md} +8 -8
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8003 -233
- package/dist/recipeValidator.d.ts +18 -0
- package/dist/recipeValidator.d.ts.map +1 -0
- package/dist/recipeValidator.js +158 -0
- package/package.json +5 -1
- package/presets/prompts/prompt-creation.yaml +19 -0
- package/presets/prompts/todo-planning.yaml +3 -2
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: test
|
|
3
|
+
category: github-actions
|
|
4
|
+
focus: test-policy
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# GitHub Actions Testing Policy
|
|
8
|
+
|
|
9
|
+
## 概要
|
|
10
|
+
|
|
11
|
+
GitHub Actions workflow files should not have dedicated test files. Workflow configuration is verified through alternative methods that are more effective and practical.
|
|
12
|
+
|
|
13
|
+
## 基本方針
|
|
14
|
+
|
|
15
|
+
### Workflow テストの禁止
|
|
16
|
+
|
|
17
|
+
GitHub Actions の workflow 定義ファイル(`.github/workflows/*.yml`, `.github/workflows/*.yaml`)に対する専用のテストファイルは作成しないでください。
|
|
18
|
+
|
|
19
|
+
## 理由・背景
|
|
20
|
+
|
|
21
|
+
### 実効性のない検証
|
|
22
|
+
|
|
23
|
+
- **YAML シンタックス検証**: GitHub Actions には組み込みの YAML バリデーション機能があるため、独自のテストは冗長
|
|
24
|
+
- **想定ベースの検証**: 実際の GitHub Actions 環境で実行されないため、実際の動作との乖離が発生する可能性
|
|
25
|
+
- **環境依存の問題**: ローカル環境での想定テストは、実際のCI環境での動作を保証できない
|
|
26
|
+
|
|
27
|
+
### テストの可読性・保守性への悪影響
|
|
28
|
+
|
|
29
|
+
- **複雑性の増加**: workflow 設定のテストは通常複雑になりがちで、メンテナンスコストが高い
|
|
30
|
+
- **false positive/negative**: モックやスタブを使った検証では、実際の問題を見逃したり、存在しない問題を検出する可能性
|
|
31
|
+
- **開発効率の低下**: 実効性の低いテストの作成・保守に時間を費やすことになる
|
|
32
|
+
|
|
33
|
+
## 推奨される検証方法
|
|
34
|
+
|
|
35
|
+
### 1. GitHub Actions 組み込み検証
|
|
36
|
+
|
|
37
|
+
- **YAML 構文バリデーション**: GitHub Actions が自動的に実行
|
|
38
|
+
- **Action 存在確認**: 使用している Action の存在性と互換性をプラットフォーム側で検証
|
|
39
|
+
- **権限チェック**: 必要な権限の設定が適切かどうかをプラットフォーム側で確認
|
|
40
|
+
|
|
41
|
+
### 2. Pull Request レビューでの手動確認
|
|
42
|
+
|
|
43
|
+
- **設定の妥当性**: トリガー条件、ジョブ間の依存関係、環境変数の設定を目視確認
|
|
44
|
+
- **セキュリティ観点**: 権限設定、secret の使用方法、外部 Action の安全性をレビュー
|
|
45
|
+
- **業務ロジック**: ワークフローが想定された業務プロセスに沿っているかを確認
|
|
46
|
+
|
|
47
|
+
### 3. 実際の実行による検証
|
|
48
|
+
|
|
49
|
+
- **実環境での動作確認**: 実際に workflow を動作させることで、真の動作を検証
|
|
50
|
+
- **段階的デプロイメント**: テスト用ブランチやタグを使用した安全な動作確認
|
|
51
|
+
- **監視とログ**: workflow の実行ログとメトリクスによる継続的な動作確認
|
|
52
|
+
|
|
53
|
+
## 実装ガイドライン
|
|
54
|
+
|
|
55
|
+
### 適用範囲
|
|
56
|
+
|
|
57
|
+
以下のファイルには専用のテストファイルを作成しないでください:
|
|
58
|
+
|
|
59
|
+
- `.github/workflows/*.yml`
|
|
60
|
+
- `.github/workflows/*.yaml`
|
|
61
|
+
- その他の GitHub Actions 関連設定ファイル
|
|
62
|
+
|
|
63
|
+
### 代替検証手順
|
|
64
|
+
|
|
65
|
+
1. **事前検証**
|
|
66
|
+
- YAML 構文チェックツール(yq, yamllint 等)での基本的な構文確認
|
|
67
|
+
- 使用する Action の公式ドキュメント確認
|
|
68
|
+
- 必要な権限と secret の設定確認
|
|
69
|
+
|
|
70
|
+
2. **段階的テスト**
|
|
71
|
+
- テスト専用のブランチまたはタグでの小規模実行
|
|
72
|
+
- 本格的なデプロイ前の dry-run 相当の確認
|
|
73
|
+
- エラー時の適切なログ出力の確認
|
|
74
|
+
|
|
75
|
+
3. **継続的監視**
|
|
76
|
+
- workflow 実行の成功率監視
|
|
77
|
+
- 実行時間とリソース使用量の監視
|
|
78
|
+
- 失敗時の迅速な原因特定と対処
|
|
79
|
+
|
|
80
|
+
## 例外的な状況
|
|
81
|
+
|
|
82
|
+
### 許可される場合
|
|
83
|
+
|
|
84
|
+
以下の場合においても、workflow 自体のテストではなく、関連するスクリプトやツールのテストに留めてください:
|
|
85
|
+
|
|
86
|
+
- **カスタムスクリプトのテスト**: workflow 内で実行するシェルスクリプトや Node.js スクリプト等のテスト
|
|
87
|
+
- **設定生成ツールのテスト**: workflow ファイルを動的生成するツールがある場合、そのツール自体のテスト
|
|
88
|
+
- **ヘルパー関数のテスト**: workflow で使用する共通ロジックを含むライブラリのテスト
|
|
89
|
+
|
|
90
|
+
### 注意事項
|
|
91
|
+
|
|
92
|
+
これらの場合でも、workflow ファイル自体の設定や構造をテストするのではなく、その中で使用される個別のコンポーネントをテストすることが重要です。
|
|
93
|
+
|
|
94
|
+
## 関連情報
|
|
95
|
+
|
|
96
|
+
- [GitHub Actions Documentation](https://docs.github.com/en/actions)
|
|
97
|
+
- [YAML Syntax Validation Tools](https://yamllint.readthedocs.io/)
|
|
98
|
+
- [Workflow Security Best Practices](https://docs.github.com/en/actions/security-guides)
|
|
99
|
+
|
|
100
|
+
この方針により、実効性のある検証に集中し、開発効率と品質の両立を図ることができます。
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: prompt
|
|
3
|
+
category: content-creation
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Prompts 作成ルール
|
|
7
|
+
|
|
8
|
+
#### 基本ルール
|
|
9
|
+
|
|
10
|
+
- ファイル名規則は `[用途名].prompt.md` または `[プロジェクト名]/[用途名].prompt.md`
|
|
11
|
+
- プロンプトファイルにはfrontmatterで分類情報を付与する
|
|
12
|
+
- 人間が使いやすく、AIが理解しやすい構造化されたプロンプトを作成する
|
|
13
|
+
- **見出し階層は必ず `##` から開始する** - artifact/ 以下のMarkdownはrecipeファイルで統合されることを想定
|
|
14
|
+
|
|
15
|
+
#### プロンプトファイルの構造
|
|
16
|
+
|
|
17
|
+
#### 必須要素
|
|
18
|
+
|
|
19
|
+
1. **Frontmatter** - プロンプトの分類・属性情報
|
|
20
|
+
2. **プロンプト本体** - AIが実行すべき具体的なタスク
|
|
21
|
+
3. **期待する出力形式** - 生成結果のフォーマットや構造
|
|
22
|
+
|
|
23
|
+
#### Frontmatterの標準フィールド
|
|
24
|
+
|
|
25
|
+
```yaml
|
|
26
|
+
---
|
|
27
|
+
type: prompt # プロンプトの種類
|
|
28
|
+
category: [分類] # 用途別カテゴリ
|
|
29
|
+
language: [対象言語] # 対象プログラミング言語(該当する場合)
|
|
30
|
+
applyTo: "[対象パターン]" # 適用対象(該当する場合)
|
|
31
|
+
human-instruction: |- # 人間向けの追加ガイダンス(オプション)
|
|
32
|
+
[使用上の注意点やコンテキスト]
|
|
33
|
+
---
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
#### カテゴリ分類
|
|
37
|
+
|
|
38
|
+
#### type 値の標準
|
|
39
|
+
|
|
40
|
+
- `prompt` - 一般的なプロンプト
|
|
41
|
+
|
|
42
|
+
#### category 値の例
|
|
43
|
+
|
|
44
|
+
- `content-creation` - コンテンツ作成
|
|
45
|
+
- `code-analysis` - コード分析
|
|
46
|
+
- `documentation` - ドキュメント生成
|
|
47
|
+
- `project-planning` - プロジェクト計画
|
|
48
|
+
- `todo-planning` - TODO管理
|
|
49
|
+
- `instruction-generation` - instruction生成
|
|
50
|
+
- `structure-analysis` - 構造分析
|
|
51
|
+
|
|
52
|
+
#### プロンプト作成ガイドライン
|
|
53
|
+
|
|
54
|
+
#### 1. 明確性の原則
|
|
55
|
+
|
|
56
|
+
- **具体的な指示**: 曖昧な表現を避け、実行すべきタスクを明確に記述
|
|
57
|
+
- **期待する出力**: 生成結果のフォーマットや構造を具体的に示す
|
|
58
|
+
- **制約条件**: 守るべきルールや制限を明記
|
|
59
|
+
|
|
60
|
+
#### 2. 構造化の原則
|
|
61
|
+
|
|
62
|
+
- **段階的な指示**: 複雑なタスクは段階的に分解
|
|
63
|
+
- **見出し構造**: マークダウンの見出しでセクションを明確に分離
|
|
64
|
+
- **見出し階層の統一**: メインタイトルは `##`、セクションは `###`、サブセクションは `####` で統一
|
|
65
|
+
- **recipeファイル対応**: artifact/ 以下のファイルはrecipeで統合されるため、`#` レベルの見出しは使用禁止
|
|
66
|
+
- **リスト活用**: 項目の列挙にはリストを使用
|
|
67
|
+
|
|
68
|
+
#### 3. 再利用性の原則
|
|
69
|
+
|
|
70
|
+
- **パラメータ化**: 変更が必要な部分は明確に示す
|
|
71
|
+
- **テンプレート化**: 類似タスクで再利用できる構造
|
|
72
|
+
- **カスタマイズ指針**: 具体的な用途に合わせた調整方法を記載
|
|
73
|
+
|
|
74
|
+
#### 4. 品質保証の原則
|
|
75
|
+
|
|
76
|
+
- **検証可能性**: 出力結果の品質を確認できる基準を提供
|
|
77
|
+
- **エラー処理**: 想定される問題と対処法を記載
|
|
78
|
+
- **改善指針**: プロンプトの効果を向上させる方法を提示
|
|
79
|
+
|
|
80
|
+
#### プロンプト本体の構造
|
|
81
|
+
|
|
82
|
+
#### 標準テンプレート
|
|
83
|
+
|
|
84
|
+
**重要**: 以下のテンプレートでは `#` レベルから始まっていますが、artifact/ 以下の実際のファイルでは `##` レベルから開始してください。
|
|
85
|
+
|
|
86
|
+
```markdown
|
|
87
|
+
## [プロンプトのタイトル]
|
|
88
|
+
|
|
89
|
+
### 目的
|
|
90
|
+
|
|
91
|
+
[このプロンプトが解決する課題や目標を明記]
|
|
92
|
+
|
|
93
|
+
### 前提条件
|
|
94
|
+
|
|
95
|
+
[プロンプト実行前に必要な準備や条件]
|
|
96
|
+
|
|
97
|
+
### 実行タスク
|
|
98
|
+
|
|
99
|
+
[具体的な実行内容を段階的に記述]
|
|
100
|
+
|
|
101
|
+
#### 手順1: [フェーズ名]
|
|
102
|
+
|
|
103
|
+
[具体的な指示内容]
|
|
104
|
+
|
|
105
|
+
#### 手順2: [フェーズ名]
|
|
106
|
+
|
|
107
|
+
[具体的な指示内容]
|
|
108
|
+
|
|
109
|
+
### 出力フォーマット
|
|
110
|
+
|
|
111
|
+
[期待する出力の構造・形式]
|
|
112
|
+
|
|
113
|
+
### 品質基準
|
|
114
|
+
|
|
115
|
+
[出力結果の品質を判断する基準]
|
|
116
|
+
|
|
117
|
+
### 使用例
|
|
118
|
+
|
|
119
|
+
[具体的な使用場面や活用方法]
|
|
120
|
+
|
|
121
|
+
### カスタマイズ指針
|
|
122
|
+
|
|
123
|
+
[特定の用途に合わせた調整方法]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### ディレクトリ構造の原則
|
|
127
|
+
|
|
128
|
+
#### プロジェクト固有プロンプト
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
artifact/prompts/
|
|
132
|
+
├── [プロジェクト名]/
|
|
133
|
+
│ ├── [用途1].prompt.md
|
|
134
|
+
│ ├── [用途2].prompt.md
|
|
135
|
+
│ └── README.md # プロジェクト固有プロンプトの説明
|
|
136
|
+
└── [汎用プロンプト].prompt.md
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
#### 汎用プロンプト
|
|
140
|
+
|
|
141
|
+
直接 `artifact/prompts/` ディレクトリに配置し、様々なプロジェクトで再利用可能にする
|
|
142
|
+
|
|
143
|
+
#### 実践ガイドライン
|
|
144
|
+
|
|
145
|
+
#### プロンプト作成時の確認事項
|
|
146
|
+
|
|
147
|
+
- [ ] **目的の明確性**: 解決したい課題が具体的に説明されている
|
|
148
|
+
- [ ] **指示の具体性**: AIが実行すべき内容が明確である
|
|
149
|
+
- [ ] **出力の定義**: 期待する結果の形式が明記されている
|
|
150
|
+
- [ ] **再利用性**: 他の用途でも活用できる構造になっている
|
|
151
|
+
- [ ] **品質基準**: 結果の良し悪しを判断する基準がある
|
|
152
|
+
- [ ] **見出し階層**: メインタイトルが `##` レベルから始まっている
|
|
153
|
+
- [ ] **recipe対応**: `#` レベルの見出しを使用していない
|
|
154
|
+
|
|
155
|
+
#### プロンプトの品質向上
|
|
156
|
+
|
|
157
|
+
1. **テスト実行**: 実際にAIで実行して結果を確認
|
|
158
|
+
2. **改善反復**: 期待する結果が得られるまで調整
|
|
159
|
+
3. **ドキュメント化**: 効果的な使い方や注意点を記録
|
|
160
|
+
4. **バージョン管理**: 変更履歴をGitで適切に管理
|
|
161
|
+
|
|
162
|
+
#### 運用における注意事項
|
|
163
|
+
|
|
164
|
+
- **一貫性の維持**: 同様の用途のプロンプトは統一された構造を使用
|
|
165
|
+
- **メンテナンス**: 技術の進歩に合わせてプロンプトを更新
|
|
166
|
+
- **共有促進**: チーム内でのプロンプト活用を促進
|
|
167
|
+
- **フィードバック収集**: 使用者からの改善提案を積極的に収集
|
|
168
|
+
|
|
169
|
+
#### 関連ドキュメント
|
|
170
|
+
|
|
171
|
+
- [Instructions作成ルール](../../instructions/) - AI向けinstruction管理
|
|
172
|
+
- [TODO Plans作成ルール](../development/todo_plans.prompt.md) - 計画管理プロンプト
|
|
173
|
+
- [Recipe Files](../../../presets/) - プロンプト組み合わせ設定
|
|
174
|
+
|
|
175
|
+
#### ファイル名規則の例
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
artifact/prompts/
|
|
179
|
+
├── ai-rules/
|
|
180
|
+
│ ├── for_prompts.prompt.md # 本ファイル
|
|
181
|
+
│ ├── project_analysis.prompt.md # プロジェクト分析用
|
|
182
|
+
│ └── migration_guide.prompt.md # 移行ガイド生成用
|
|
183
|
+
├── documentation/
|
|
184
|
+
│ ├── api_docs.prompt.md # API文書生成
|
|
185
|
+
│ └── readme_generator.prompt.md # README生成
|
|
186
|
+
├── development/
|
|
187
|
+
│ └── todo_plans.prompt.md # TODO計画管理
|
|
188
|
+
├── code_analysis.prompt.md # 汎用コード分析
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
#### メタルール
|
|
192
|
+
|
|
193
|
+
#### プロンプトの進化
|
|
194
|
+
|
|
195
|
+
- **継続的改善**: 使用結果を基にプロンプトを継続的に改善
|
|
196
|
+
- **ベストプラクティス抽出**: 効果的なパターンを標準化
|
|
197
|
+
- **知識の蓄積**: 成功事例と失敗事例を記録・共有
|
|
198
|
+
|
|
199
|
+
#### 品質保証
|
|
200
|
+
|
|
201
|
+
- **レビュープロセス**: 新規プロンプトは使用前にレビュー
|
|
202
|
+
- **効果測定**: プロンプトの効果を定量的・定性的に評価
|
|
203
|
+
- **標準化推進**: 組織全体でのプロンプト品質向上
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: prompt
|
|
3
|
+
category: instruction-generation
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Recipe ファイル作成ルール
|
|
7
|
+
|
|
8
|
+
### 目的
|
|
9
|
+
|
|
10
|
+
AI-rules プロジェクトにおけるレシピファイル(recipe files)を効率的に作成するための包括的なガイドライン。複数のinstructionファイルを組み合わせて、特定の目的に応じたドキュメントを自動生成するための設定ファイル作成を支援する。
|
|
11
|
+
|
|
12
|
+
### 前提条件
|
|
13
|
+
|
|
14
|
+
#### 必要な知識
|
|
15
|
+
|
|
16
|
+
- YAML形式の基本構文
|
|
17
|
+
- ai-rules CLIの基本的な使用方法
|
|
18
|
+
- instructionファイルの構造とfrontmatter属性
|
|
19
|
+
- ファイルパスとディレクトリ構造の理解
|
|
20
|
+
|
|
21
|
+
#### 準備事項
|
|
22
|
+
|
|
23
|
+
- `artifact/instructions/` または `artifact/prompts/` ディレクトリに対象となるinstructionファイルが存在する
|
|
24
|
+
- 出力先ディレクトリの権限設定が適切である
|
|
25
|
+
- プロジェクトの要件とファイル構成を把握している
|
|
26
|
+
|
|
27
|
+
### 実行タスク
|
|
28
|
+
|
|
29
|
+
#### 手順1: 要件分析とファイル調査
|
|
30
|
+
|
|
31
|
+
**ファイル構成の調査**
|
|
32
|
+
1. 利用可能なinstructionファイルを確認
|
|
33
|
+
2. 各ファイルのfrontmatter属性(type、language、category、focus等)を分析
|
|
34
|
+
3. 既存のプリセットレシピを参考として確認
|
|
35
|
+
|
|
36
|
+
**要件の明確化**
|
|
37
|
+
- 生成するドキュメントの目的と対象読者
|
|
38
|
+
- 必要なinstruction種別とフィルタリング条件
|
|
39
|
+
- 出力ファイル構成と配置場所
|
|
40
|
+
- FrontMatter継承とカスタム属性の必要性
|
|
41
|
+
|
|
42
|
+
#### 手順2: レシピ構造設計
|
|
43
|
+
|
|
44
|
+
**基本構造の決定**
|
|
45
|
+
```yaml
|
|
46
|
+
config:
|
|
47
|
+
baseDir: [ベースディレクトリ] # オプション
|
|
48
|
+
recipe:
|
|
49
|
+
- title: "[レシピアイテムのタイトル]"
|
|
50
|
+
out: "[出力ファイルパス]"
|
|
51
|
+
# フィルタリング条件
|
|
52
|
+
# 出力設定
|
|
53
|
+
# FrontMatter設定
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**設定項目の選択**
|
|
57
|
+
- **config section**: 共通設定(baseDir等)
|
|
58
|
+
- **import**: 既存プリセットの活用
|
|
59
|
+
- **filtering**: 対象ファイルの絞り込み
|
|
60
|
+
- **output**: 出力先とモード設定
|
|
61
|
+
- **frontmatter**: メタデータの管理
|
|
62
|
+
|
|
63
|
+
#### 手順3: フィルタリング条件の設定
|
|
64
|
+
|
|
65
|
+
**標準フィルター**
|
|
66
|
+
```yaml
|
|
67
|
+
type: [instruction-type] # 単一値または配列
|
|
68
|
+
language: [target-language] # 単一値または配列
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**高度なフィルター**
|
|
72
|
+
```yaml
|
|
73
|
+
filters:
|
|
74
|
+
category: [category-value] # カテゴリによる絞り込み
|
|
75
|
+
focus: [focus-area] # フォーカス領域による絞り込み
|
|
76
|
+
applyTo: [file-pattern] # ファイルパターンによる絞り込み
|
|
77
|
+
[custom-attr]: [value] # カスタム属性による絞り込み
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**配列値サポート**
|
|
81
|
+
- フィルター値は単一値または配列を指定可能
|
|
82
|
+
- 配列の場合はOR条件(いずれかにマッチ)
|
|
83
|
+
- 複数フィルター間はAND条件(すべてにマッチ)
|
|
84
|
+
|
|
85
|
+
#### 手順4: 出力設定とモード指定
|
|
86
|
+
|
|
87
|
+
**出力ファイル設定**
|
|
88
|
+
```yaml
|
|
89
|
+
out: "./path/to/output.md" # 出力先パス(環境変数展開対応)
|
|
90
|
+
mode: overwrite # overwrite(デフォルト)、append、prepend
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**複数アイテムでの同一ファイル出力**
|
|
94
|
+
- 同じoutputファイルに複数アイテムが出力される場合、2番目以降は自動的にappendモード
|
|
95
|
+
- 明示的にmodeを指定することで上書き可能
|
|
96
|
+
|
|
97
|
+
#### 手順5: FrontMatter とメタデータ設計
|
|
98
|
+
|
|
99
|
+
**直接指定方式**
|
|
100
|
+
```yaml
|
|
101
|
+
frontmatter:
|
|
102
|
+
description: "ドキュメントの説明"
|
|
103
|
+
applyTo: "**/*.ts"
|
|
104
|
+
customField: "カスタム値"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**継承方式(@ syntax)**
|
|
108
|
+
```yaml
|
|
109
|
+
frontmatter:
|
|
110
|
+
"@description": true # テンプレートから説明を継承
|
|
111
|
+
"@tools": true # ツール配列を継承
|
|
112
|
+
customField: "上書き値" # カスタムフィールド追加
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**継承のマージルール**
|
|
116
|
+
- 文字列: 改行で連結(重複除去)
|
|
117
|
+
- 配列: すべての要素を結合
|
|
118
|
+
- オブジェクト: 後の値で上書き
|
|
119
|
+
|
|
120
|
+
#### 手順6: インポートと拡張性
|
|
121
|
+
|
|
122
|
+
**プリセット活用**
|
|
123
|
+
```yaml
|
|
124
|
+
recipe:
|
|
125
|
+
- import: :basic # パッケージプリセット
|
|
126
|
+
- import: :typescript # 言語固有プリセット
|
|
127
|
+
- title: "追加設定" # カスタムアイテム
|
|
128
|
+
# ...
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**インポートレベルbaseDir**
|
|
132
|
+
```yaml
|
|
133
|
+
recipe:
|
|
134
|
+
- import:
|
|
135
|
+
recipe: :custom-preset
|
|
136
|
+
baseDir: ./custom/path # インポート固有のベースディレクトリ
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 出力フォーマット
|
|
140
|
+
|
|
141
|
+
#### 基本レシピテンプレート
|
|
142
|
+
|
|
143
|
+
```yaml
|
|
144
|
+
# Recipe file for [PURPOSE]
|
|
145
|
+
# Generated by ai-rules prompt system
|
|
146
|
+
|
|
147
|
+
config:
|
|
148
|
+
baseDir: [SOURCE_DIRECTORY]
|
|
149
|
+
|
|
150
|
+
recipe:
|
|
151
|
+
- title: "[DOCUMENT_TITLE]"
|
|
152
|
+
out: "[OUTPUT_PATH]"
|
|
153
|
+
type: [INSTRUCTION_TYPE]
|
|
154
|
+
language: [TARGET_LANGUAGE]
|
|
155
|
+
frontmatter:
|
|
156
|
+
description: |
|
|
157
|
+
[DOCUMENT_DESCRIPTION]
|
|
158
|
+
applyTo: "[FILE_PATTERN]"
|
|
159
|
+
|
|
160
|
+
# Additional recipe items as needed
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
#### 複合型レシピテンプレート
|
|
164
|
+
|
|
165
|
+
```yaml
|
|
166
|
+
# Advanced recipe with multiple filtering and inheritance
|
|
167
|
+
recipe:
|
|
168
|
+
# Import base configurations
|
|
169
|
+
- import: :basic
|
|
170
|
+
|
|
171
|
+
# Main content with advanced filtering
|
|
172
|
+
- title: "[PRIMARY_CONTENT]"
|
|
173
|
+
out: "[PRIMARY_OUTPUT]"
|
|
174
|
+
type: [TYPE]
|
|
175
|
+
filters:
|
|
176
|
+
category: [CATEGORY]
|
|
177
|
+
focus:
|
|
178
|
+
- [FOCUS1]
|
|
179
|
+
- [FOCUS2]
|
|
180
|
+
frontmatter:
|
|
181
|
+
"@description": true
|
|
182
|
+
"@tools": true
|
|
183
|
+
customization: "[CUSTOM_VALUE]"
|
|
184
|
+
|
|
185
|
+
# Appendix or additional sections
|
|
186
|
+
- title: "[SECONDARY_CONTENT]"
|
|
187
|
+
out: "[PRIMARY_OUTPUT]"
|
|
188
|
+
mode: append
|
|
189
|
+
type: [SECONDARY_TYPE]
|
|
190
|
+
frontmatter:
|
|
191
|
+
section: "appendix"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### 品質基準
|
|
195
|
+
|
|
196
|
+
#### 構造の健全性
|
|
197
|
+
|
|
198
|
+
- [ ] **YAML構文**: 正しいYAML形式で記述されている
|
|
199
|
+
- [ ] **必須フィールド**: title、outが全アイテムに指定されている
|
|
200
|
+
- [ ] **フィルター整合性**: 指定したフィルターに対応するファイルが存在する
|
|
201
|
+
- [ ] **パス有効性**: 出力先パスが適切で、ディレクトリが存在または作成可能
|
|
202
|
+
|
|
203
|
+
#### 機能性の検証
|
|
204
|
+
|
|
205
|
+
- [ ] **フィルタリング**: 期待するファイル群が正しく抽出される
|
|
206
|
+
- [ ] **出力制御**: 指定したモード(append/prepend/overwrite)で正しく動作
|
|
207
|
+
- [ ] **FrontMatter**: 継承と直接指定が適切に機能する
|
|
208
|
+
- [ ] **インポート**: プリセット活用が正しく展開される
|
|
209
|
+
|
|
210
|
+
#### 保守性の確保
|
|
211
|
+
|
|
212
|
+
- [ ] **コメント**: レシピの目的と使用方法が明記されている
|
|
213
|
+
- [ ] **命名規則**: ファイル名とタイトルが分かりやすい
|
|
214
|
+
- [ ] **バージョニング**: 変更履歴と更新理由が追跡可能
|
|
215
|
+
- [ ] **ドキュメント**: 関連するREADMEやドキュメントが整備されている
|
|
216
|
+
|
|
217
|
+
### 使用例
|
|
218
|
+
|
|
219
|
+
#### シンプルなプロジェクト向け
|
|
220
|
+
|
|
221
|
+
```yaml
|
|
222
|
+
# Basic project setup
|
|
223
|
+
config:
|
|
224
|
+
baseDir: artifact/instructions
|
|
225
|
+
|
|
226
|
+
recipe:
|
|
227
|
+
- title: "Project Guidelines"
|
|
228
|
+
out: "./.github/copilot-instructions.md"
|
|
229
|
+
type: planning
|
|
230
|
+
frontmatter:
|
|
231
|
+
description: "Basic project development guidelines"
|
|
232
|
+
applyTo: "**/*"
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
#### TypeScriptプロジェクト向け
|
|
236
|
+
|
|
237
|
+
```yaml
|
|
238
|
+
# TypeScript project comprehensive rules
|
|
239
|
+
recipe:
|
|
240
|
+
- import: :basic
|
|
241
|
+
- import: :typescript
|
|
242
|
+
|
|
243
|
+
- title: "Custom TypeScript Rules"
|
|
244
|
+
out: "./.github/instructions/custom-typescript.md"
|
|
245
|
+
type: coding-rules
|
|
246
|
+
language: typescript
|
|
247
|
+
filters:
|
|
248
|
+
focus:
|
|
249
|
+
- testing
|
|
250
|
+
- performance
|
|
251
|
+
frontmatter:
|
|
252
|
+
"@description": true
|
|
253
|
+
customization: "high"
|
|
254
|
+
applyTo: "**/*.ts"
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
#### マルチ出力設定
|
|
258
|
+
|
|
259
|
+
```yaml
|
|
260
|
+
# Generate multiple specialized documents
|
|
261
|
+
recipe:
|
|
262
|
+
- title: "Development Guidelines"
|
|
263
|
+
out: "./docs/development.md"
|
|
264
|
+
type: coding-rules
|
|
265
|
+
filters:
|
|
266
|
+
category: development
|
|
267
|
+
|
|
268
|
+
- title: "Testing Guidelines"
|
|
269
|
+
out: "./docs/testing.md"
|
|
270
|
+
type: test
|
|
271
|
+
filters:
|
|
272
|
+
category: best-practices
|
|
273
|
+
|
|
274
|
+
- title: "Deployment Guidelines"
|
|
275
|
+
out: "./docs/deployment.md"
|
|
276
|
+
filters:
|
|
277
|
+
category: configuration
|
|
278
|
+
focus: deployment
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### カスタマイズ指針
|
|
282
|
+
|
|
283
|
+
#### プロジェクト規模による調整
|
|
284
|
+
|
|
285
|
+
**小規模プロジェクト**
|
|
286
|
+
- 単一レシピファイルでの包括的な設定
|
|
287
|
+
- プリセット(:basic)の積極活用
|
|
288
|
+
- シンプルなフィルタリング条件
|
|
289
|
+
|
|
290
|
+
**中規模プロジェクト**
|
|
291
|
+
- 機能別・技術別の複数レシピファイル
|
|
292
|
+
- カスタムfrontmatterによる詳細管理
|
|
293
|
+
- 高度なフィルタリングとインポート活用
|
|
294
|
+
|
|
295
|
+
**大規模プロジェクト**
|
|
296
|
+
- ドメイン別の階層化されたレシピ構成
|
|
297
|
+
- 継承とテンプレート機能の最大活用
|
|
298
|
+
- 自動化ワークフローとの統合
|
|
299
|
+
|
|
300
|
+
#### 技術スタック別設定
|
|
301
|
+
|
|
302
|
+
**フロントエンド中心**
|
|
303
|
+
```yaml
|
|
304
|
+
recipe:
|
|
305
|
+
- import: :typescript
|
|
306
|
+
- title: "React Guidelines"
|
|
307
|
+
type: coding-rules
|
|
308
|
+
language: [typescript, javascript]
|
|
309
|
+
filters:
|
|
310
|
+
category: frontend
|
|
311
|
+
focus: react
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**バックエンド中心**
|
|
315
|
+
```yaml
|
|
316
|
+
recipe:
|
|
317
|
+
- import: :typescript
|
|
318
|
+
- title: "API Development"
|
|
319
|
+
type: coding-rules
|
|
320
|
+
filters:
|
|
321
|
+
category: backend
|
|
322
|
+
focus: [api, database, security]
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**フルスタック**
|
|
326
|
+
```yaml
|
|
327
|
+
recipe:
|
|
328
|
+
- import: :basic
|
|
329
|
+
- import: :typescript
|
|
330
|
+
- title: "Full Stack Guidelines"
|
|
331
|
+
type: coding-rules
|
|
332
|
+
filters:
|
|
333
|
+
category: [frontend, backend]
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### トラブルシューティング
|
|
337
|
+
|
|
338
|
+
#### 一般的な問題と解決法
|
|
339
|
+
|
|
340
|
+
**フィルタリング結果が空**
|
|
341
|
+
- frontmatter属性の確認
|
|
342
|
+
- 大文字小文字の一致確認
|
|
343
|
+
- 配列形式での指定確認
|
|
344
|
+
|
|
345
|
+
**FrontMatter継承が機能しない**
|
|
346
|
+
- @ syntax の正確な記述確認
|
|
347
|
+
- 継承元ファイルの存在確認
|
|
348
|
+
- フィルタリング条件の見直し
|
|
349
|
+
|
|
350
|
+
**出力ファイルが期待と異なる**
|
|
351
|
+
- modeの明示的指定
|
|
352
|
+
- 出力パスの絶対/相対パス確認
|
|
353
|
+
- 環境変数展開の動作確認
|
|
354
|
+
|
|
355
|
+
**プリセットインポートエラー**
|
|
356
|
+
- プリセット名(:prefix)の確認
|
|
357
|
+
- プリセットファイルの存在確認
|
|
358
|
+
- 循環参照の回避
|
|
359
|
+
|
|
360
|
+
### 関連リソース
|
|
361
|
+
|
|
362
|
+
#### 参考ドキュメント
|
|
363
|
+
|
|
364
|
+
- [CLI Options Documentation](../../../docs/cli_options.md)
|
|
365
|
+
- [FrontMatter Inheritance Guide](../../../docs/frontmatter-inheritance.md)
|
|
366
|
+
- [Existing Presets](../../../presets/)
|
|
367
|
+
- [Example Recipes](../../../example/)
|
|
368
|
+
|
|
369
|
+
#### 活用ツール
|
|
370
|
+
|
|
371
|
+
- `npx ai-rules stats --src artifact` - 利用可能属性の確認
|
|
372
|
+
- `npx ai-rules presets` - プリセット一覧の表示
|
|
373
|
+
- `npx ai-rules extract --recipe [file]` - レシピ実行
|
|
374
|
+
|
|
375
|
+
#### コミュニティリソース
|
|
376
|
+
|
|
377
|
+
- プロジェクトのIssue追跡システム
|
|
378
|
+
- 既存レシピファイルの実装例
|
|
379
|
+
- プロンプト改善提案とベストプラクティス共有
|