@aramassa/ai-rules 0.1.1-npmjs.20250910072942

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.
Files changed (72) hide show
  1. package/README-npmjs.md +37 -0
  2. package/README.md +37 -0
  3. package/artifact/chatmodes/Instruction Improve.md +142 -0
  4. package/artifact/chatmodes/Planning.md +173 -0
  5. package/artifact/instructions/git-rules.md +68 -0
  6. package/artifact/instructions/package-management.md +113 -0
  7. package/artifact/instructions/planning.md +54 -0
  8. package/artifact/instructions/python/workspace-management.md +673 -0
  9. package/artifact/instructions/python-cli.md +261 -0
  10. package/artifact/instructions/retrospective.md +32 -0
  11. package/artifact/instructions/rules/coding/nodejs.md +299 -0
  12. package/artifact/instructions/rules/coding/openai.md +39 -0
  13. package/artifact/instructions/rules/coding/typescript.md +92 -0
  14. package/artifact/instructions/rules/development/ansible.md +258 -0
  15. package/artifact/instructions/rules/development/code-quality-tools.md +181 -0
  16. package/artifact/instructions/rules/development/github.md +140 -0
  17. package/artifact/instructions/rules/development/npm-publish.md +108 -0
  18. package/artifact/instructions/rules/development/typescript-rollup-build.md +249 -0
  19. package/artifact/instructions/rules/development/typescript.md +46 -0
  20. package/artifact/instructions/rules/documentation/common.md +16 -0
  21. package/artifact/instructions/rules/documentation/docs-ai-external.md +12 -0
  22. package/artifact/instructions/rules/documentation/docs-ai-history.md +46 -0
  23. package/artifact/instructions/rules/documentation/docs-ai-internal.md +70 -0
  24. package/artifact/instructions/rules/documentation/docs-ai-learning.md +53 -0
  25. package/artifact/instructions/rules/documentation/docs.md +41 -0
  26. package/artifact/instructions/rules/documentation/github-protection.md +122 -0
  27. package/artifact/instructions/rules/test/e2e-bdd.md +31 -0
  28. package/artifact/instructions/rules/test/nodejs-test-restrictions.md +101 -0
  29. package/artifact/instructions/rules/test/timeout-configuration-typescript.md +67 -0
  30. package/artifact/instructions/rules/test/timeout-configuration.md +89 -0
  31. package/artifact/instructions/skel/common/change_plans/.gitkeep +0 -0
  32. package/artifact/instructions/skel/common/docs/.gitkeep +0 -0
  33. package/artifact/instructions/skel/common/docs_ai/.gitkeep +0 -0
  34. package/artifact/instructions/skel/common/skel/.gitkeep +0 -0
  35. package/artifact/instructions/skel/common/todo_plans/.gitkeep +0 -0
  36. package/artifact/instructions/skel/typescript/tsconfig.build.json +17 -0
  37. package/artifact/instructions/skel/typescript/tsconfig.json +117 -0
  38. package/artifact/instructions/skel/typescript/tsdoc.json +4 -0
  39. package/artifact/instructions/skel.md +88 -0
  40. package/artifact/instructions/todo_planning.md +25 -0
  41. package/artifact/instructions/tyding-up.md +30 -0
  42. package/dist/cli.d.ts +3 -0
  43. package/dist/cli.d.ts.map +1 -0
  44. package/dist/cli.js +10934 -0
  45. package/dist/filter.d.ts +8 -0
  46. package/dist/filter.d.ts.map +1 -0
  47. package/dist/filter.js +72 -0
  48. package/dist/index.d.ts +1 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +1 -0
  51. package/dist/optionValidator.d.ts +28 -0
  52. package/dist/optionValidator.d.ts.map +1 -0
  53. package/dist/optionValidator.js +29 -0
  54. package/dist/templateEngine.d.ts +55 -0
  55. package/dist/templateEngine.d.ts.map +1 -0
  56. package/dist/templateEngine.js +124 -0
  57. package/dist/utils/objectUtils.d.ts +11 -0
  58. package/dist/utils/objectUtils.d.ts.map +1 -0
  59. package/dist/utils/objectUtils.js +17 -0
  60. package/dist/utils/test/structureExtractors.d.ts +30 -0
  61. package/dist/utils/test/structureExtractors.d.ts.map +1 -0
  62. package/dist/utils/test/structureExtractors.js +164 -0
  63. package/dist/variableResolver.d.ts +68 -0
  64. package/dist/variableResolver.d.ts.map +1 -0
  65. package/dist/variableResolver.js +190 -0
  66. package/package.json +69 -0
  67. package/presets/README.md +109 -0
  68. package/presets/basic.yaml +14 -0
  69. package/presets/chatmodes.yaml +64 -0
  70. package/presets/docs-ai.yaml +7 -0
  71. package/presets/infrastructure-ansible.yaml +19 -0
  72. package/presets/typescript.yaml +16 -0
@@ -0,0 +1,92 @@
1
+ ---
2
+ type: coding-rules
3
+ language:
4
+ - typescript
5
+ - nodejs
6
+ ---
7
+ ## ドキュメント & ツール
8
+
9
+ - コードコメントは **TSDoc** 形式で記述し、TypeDoc で API ドキュメントを自動生成する。
10
+ - 図解する場合は、Mermaid を使用する。
11
+ - 人間が1分で理解できる程度の抽象度で図解する
12
+ - `.editorconfig`, `.npmrc`, `.vscode/settings.json`
13
+ をリポジトリにコミットし、開発環境差分を減らす。
14
+
15
+ ## アーキテクチャ指針
16
+
17
+ - **依存性逆転 (DIP)**:
18
+ Domain から外部サービスに直接依存しない。ポート&アダプター (Hexagonal) を採用する。
19
+ - **Config‑as‑Code**: 環境差分は `config/`
20
+ の設定ファイルに集約し、dotenv で注入する。API キーやシークレットは Secret Manager で管理する。
21
+ - **CQRS / Event‑Driven** を検討し、読み取り専用サービスのスケーラビリティを高める。
22
+
23
+ ## コーディングスタイル
24
+
25
+ ## 基本方針
26
+
27
+ - ESM 形式で書く。
28
+ - 可能な限り `class` を利用する。
29
+ - メソッドは可能な限りアトミックにし、単一責任を守る。
30
+ - TypeScript の型システムをフル活用し、型安全なコードを書く。
31
+ - メソッドやプロパティの可視性は必ず設定し、不必要に公開範囲を広げない。
32
+ - インターフェースを明確にし、共通化できるところは共通化する。
33
+ - Factory パターンや Strategy パターンも使えるところでは使う。
34
+
35
+ - `eslint` + `@typescript-eslint` + `prettier` の導入と設定は**必須**。Airbnb
36
+ TypeScript ルールをベースに整形・静的解析を自動化する。
37
+ - 新規プロジェクト作成時は必ず ESLint/Prettier の設定ファイル(.eslintrc.json, .prettierrc)を作成すること。
38
+ - 変数は再代入が不要な限り `const` を使用し、`var` は禁止とする。
39
+ - `async/await` を優先し、Promise チェーンやコールバックの多用を避ける。
40
+ - 公開 API(export される関数・クラス メソッド)は必ず戻り値の型を明示する。
41
+ - マジックナンバー/マジックストリングを禁止し、`const enum`
42
+ または設定ファイル・専用の定数オブジェクトに切り出して一元管理する。
43
+ - 例: logger 設定値や API エンドポイント、日付パターン、ファイルサイズなどは
44
+ `src/utils/loggerConfig.ts` のような専用ファイルで管理する。
45
+ - 既存コードで直値が使われている場合は、リファクタリング時に必ず定数化・集約を行うこと。
46
+ - 関数は 20 行以内、クラスは 400 行以内を目安とし、循環的複雑度 (cyclomatic
47
+ complexity) は 10 未満に抑える。
48
+ - コンポジションを優先し、継承は必要最小限(例: サードパーティ API の拡張)にとどめる。
49
+ - Top‑level await はエントリポイント以外で使用しない。
50
+ - 非同期エラーは `Result<T, E>` パターンまたは独自の `TypedError` クラスでラップし、`throw` するのは
51
+ `Error` 派生クラスに限定する。
52
+ - `process.exit` の使用は極力避け、正常終了・異常終了の制御は例外処理やエラーハンドリングで行うこと
53
+ - **必須ツール**: `npx prettier --write .` でコードを整形する。
54
+ - **必須ツール**: `npx eslint . --fix` で静的解析と自動修正を行う。
55
+ - `npx tsc --noEmit` で型チェックを行う。
56
+
57
+ ## エラー処理とロギング
58
+
59
+ - エラーハンドリングは `try/catch` または `Error Boundary` で捕捉し、必ず `logger.error`
60
+ でスタックトレースを出力する。
61
+
62
+ ## ビルド・テスト方針
63
+
64
+ ### 必須ワークフロー
65
+
66
+ - **コード修正後の必須チェック**: コード変更を行った後は、package.json の scripts セクションで定義されたコマンドを順次実行すること
67
+ - プロジェクトのビルドコマンド(TypeScript コンパイル、workspace ビルド等)
68
+ - 全テストの実行コマンド
69
+ - workspace 環境での全テスト実行コマンド
70
+ - 完全ビルドコマンド(バンドル処理含む)
71
+
72
+ ※ 具体的なコマンドは package.json の scripts セクションから確認し、プロジェクト固有の設定に従うこと
73
+
74
+ - **コミット前の必須確認**: Gitコミット前には必ず以下を確認すること
75
+ 1. ビルドが成功し、コンパイルエラーがないこと
76
+ 2. 全テストが通過すること
77
+ 3. パッケージ品質が維持されていること(パッケージング確認コマンド実行)
78
+ 4. `.npmignore` が適切に設定されていること
79
+
80
+ ## テスト方針
81
+
82
+ - **TDD ファースト**: ユースケース単位で `describe → it` を書いてから実装する。
83
+ - **Unit Test**: vitest、80% 以上の branch coverage を目標とする。
84
+ - テスト用にファイルが必要な場合は、テストケース内で実行時に作るのではなく、予め `test/fixtures/`
85
+ に作成しておくこと。
86
+ - テストはdockerが使える環境では docker コンテナ上で実行すること。
87
+
88
+ ```sh
89
+ rm -rf node_modules package-lock.json
90
+ docker run --rm -v $(pwd):/app -w /app node:20 npm install
91
+ docker run --rm -v $(pwd):/app -w /app -e NODE_ENV=test node:20 npm run test
92
+ ```
@@ -0,0 +1,258 @@
1
+ ---
2
+ type: infrastructure
3
+ category: configuration-management
4
+ language: ansible
5
+ human-instruction: |-
6
+ ## Ansibleによるインフラ自動化について
7
+
8
+ Ansibleはインフラストラクチャの設定管理と自動化のためのツールです。
9
+ AIはAnsibleのベストプラクティスを理解していますが、以下の点で人間の判断が重要です:
10
+
11
+ - **環境固有の設定**: 本番環境の機密情報や環境固有の設定値
12
+ - **セキュリティポリシー**: 組織のセキュリティポリシーに準拠した設定
13
+ - **変更影響の評価**: インフラ変更が他システムに与える影響の評価
14
+ - **ロールバック戦略**: 変更失敗時の復旧手順の策定
15
+
16
+ これらの領域では、必ず人間の開発者・運用者の判断を仰いでください。
17
+ ---
18
+
19
+ # Ansible Infrastructure Automation Rules
20
+
21
+ ## Ansible Playbook 開発ルール
22
+
23
+ ### ディレクトリ構造
24
+
25
+ ```text
26
+ ansible/
27
+ ├── playbooks/ # メインのPlaybook
28
+ ├── roles/ # 再利用可能なRole
29
+ ├── inventory/ # インベントリファイル
30
+ ├── group_vars/ # グループ変数
31
+ ├── host_vars/ # ホスト変数
32
+ ├── files/ # 静的ファイル
33
+ ├── templates/ # Jinja2テンプレート
34
+ └── vault/ # Ansible Vault暗号化ファイル
35
+ ```
36
+
37
+ ### Playbook作成ルール
38
+
39
+ #### 基本構造
40
+
41
+ - **名前の明確化**: 各task、play、roleには明確で説明的な名前を付ける
42
+ - **冪等性の確保**: 何度実行しても同じ結果になるよう設計する
43
+ - **チェックモード対応**: `--check`モードで実行可能にする
44
+
45
+ #### タスク記述
46
+
47
+ ```yaml
48
+
49
+ ### Playbook作成ルール
50
+
51
+ #### 基本構造
52
+ - **名前の明確化**: 各task、play、roleには明確で説明的な名前を付ける
53
+ - **冪等性の確保**: 何度実行しても同じ結果になるよう設計する
54
+ - **チェックモード対応**: `--check`モードで実行可能にする
55
+
56
+ #### タスク記述
57
+ ```yaml
58
+ - name: "Install nginx package"
59
+ package:
60
+ name: nginx
61
+ state: present
62
+ become: yes
63
+ tags:
64
+ - packages
65
+ - nginx
66
+ ```
67
+
68
+ #### 変数管理
69
+ - 環境固有の変数は`group_vars/`または`host_vars/`に配置
70
+ - 機密情報は`ansible-vault`で暗号化
71
+ - デフォルト値は`roles/*/defaults/main.yml`に定義
72
+
73
+ ### Role 開発ルール
74
+
75
+ #### Role構造
76
+ ```
77
+ roles/webserver/
78
+ ├── tasks/main.yml # メインタスク
79
+ ├── handlers/main.yml # ハンドラー
80
+ ├── defaults/main.yml # デフォルト変数
81
+ ├── vars/main.yml # Role変数
82
+ ├── files/ # 静的ファイル
83
+ ├── templates/ # テンプレートファイル
84
+ ├── meta/main.yml # Role依存関係
85
+ └── README.md # Role説明書
86
+ ```
87
+
88
+ #### Role設計原則
89
+ - **単一責任**: 1つのRoleは1つの機能に特化
90
+ - **再利用性**: 環境に依存しない汎用的な設計
91
+ - **依存関係**: `meta/main.yml`で明示的に管理
92
+
93
+ ### セキュリティルール
94
+
95
+ #### 機密情報管理
96
+ ```bash
97
+ # Vaultファイルの作成
98
+ ansible-vault create vault/secrets.yml
99
+
100
+ # Vaultファイルの編集
101
+ ansible-vault edit vault/secrets.yml
102
+
103
+ # 暗号化された変数の使用
104
+ ansible-playbook -i inventory/production playbook.yml --ask-vault-pass
105
+ ```
106
+
107
+ #### 権限管理
108
+ - `become: yes`は必要最小限のタスクのみで使用
109
+ - sudoユーザーの権限を適切に制限
110
+ - SSH鍵認証を推奨、パスワード認証は避ける
111
+
112
+ ### インベントリ管理
113
+
114
+ #### 静的インベントリ例
115
+
116
+ ```yaml
117
+ # inventory.yml
118
+ all:
119
+ children:
120
+ webservers:
121
+ hosts:
122
+ web1.example.com:
123
+ web2.example.com:
124
+ databases:
125
+ hosts:
126
+ db1.example.com:
127
+ production:
128
+ children:
129
+ webservers:
130
+ databases:
131
+ ```
132
+
133
+ #### 動的インベントリ
134
+ - クラウド環境では動的インベントリを活用
135
+ - AWS、Azure、GCPの公式プラグインを使用
136
+
137
+ ### テストとデバッグ
138
+
139
+ #### チェックモード
140
+ ```bash
141
+ # 変更を実際に適用せずに確認
142
+ ansible-playbook -i inventory/staging playbook.yml --check
143
+ ```
144
+
145
+ #### 構文チェック
146
+ ```bash
147
+ # Playbook構文の検証
148
+ ansible-playbook playbook.yml --syntax-check
149
+ ```
150
+
151
+ #### デバッグ出力
152
+ ```yaml
153
+ - name: "Debug variable"
154
+ debug:
155
+ var: some_variable
156
+ verbosity: 2
157
+ ```
158
+
159
+ ### パフォーマンス最適化
160
+
161
+ #### 並列実行
162
+ ```yaml
163
+ - name: "Parallel task execution"
164
+ package:
165
+ name: "{{ item }}"
166
+ state: present
167
+ with_items:
168
+ - nginx
169
+ - mysql
170
+ async: 300
171
+ poll: 0
172
+ ```
173
+
174
+ #### ファクト収集の最適化
175
+ ```yaml
176
+ - hosts: all
177
+ gather_facts: no # 不要な場合は無効化
178
+ tasks:
179
+ - setup: # 必要な時のみ実行
180
+ when: ansible_facts is not defined
181
+ ```
182
+
183
+ ### エラーハンドリング
184
+
185
+ #### 失敗時の継続
186
+ ```yaml
187
+ - name: "Task that might fail"
188
+ command: /some/command
189
+ ignore_errors: yes
190
+ register: result
191
+
192
+ - name: "Handle failure"
193
+ debug:
194
+ msg: "Command failed: {{ result.stderr }}"
195
+ when: result.failed
196
+ ```
197
+
198
+ #### 条件分岐
199
+ ```yaml
200
+ - name: "Install package on RedHat family"
201
+ yum:
202
+ name: httpd
203
+ state: present
204
+ when: ansible_os_family == "RedHat"
205
+
206
+ - name: "Install package on Debian family"
207
+ apt:
208
+ name: apache2
209
+ state: present
210
+ when: ansible_os_family == "Debian"
211
+ ```
212
+
213
+ ### ベストプラクティス
214
+
215
+ #### Playbookの分割
216
+ - 大きなPlaybookは機能別に分割
217
+ - `import_playbook`や`include_playbook`を活用
218
+
219
+ #### 変数の命名規則
220
+ - Roleプレフィックスを使用: `nginx_port`, `mysql_root_password`
221
+ - 環境別プレフィックス: `prod_`, `stage_`, `dev_`
222
+
223
+ #### ドキュメント化
224
+ - 各Roleに`README.md`を作成
225
+ - 変数、依存関係、使用例を記載
226
+ - Playbookにはコメントで実行順序と目的を説明
227
+
228
+ #### バージョン管理
229
+ - `requirements.yml`でRole依存関係を管理
230
+ - Gitタグを使用してバージョン管理
231
+ - 変更履歴を`CHANGELOG.md`に記録
232
+
233
+ ### 継続的デプロイメント
234
+
235
+ #### CI/CDパイプライン
236
+ ```yaml
237
+ # .github/workflows/ansible.yml
238
+ name: Ansible Deployment
239
+ on:
240
+ push:
241
+ branches: [main]
242
+
243
+ jobs:
244
+ deploy:
245
+ runs-on: ubuntu-latest
246
+ steps:
247
+ - uses: actions/checkout@v2
248
+ - name: Run Ansible Playbook
249
+ run: |
250
+ ansible-playbook -i inventory/production deploy.yml
251
+ ```
252
+
253
+ #### テスト環境
254
+ - ステージング環境で事前テスト
255
+ - `molecule`を使用したRole単体テスト
256
+ - `vagrant`でローカル検証環境を構築
257
+
258
+ これらのルールに従うことで、保守性が高く、安全で効率的なAnsible自動化を実現できます。
@@ -0,0 +1,181 @@
1
+ ---
2
+ type: [development-rules, best-practices]
3
+ category: code-quality
4
+ focus: mandatory-tools
5
+ language:
6
+ - typescript
7
+ - javascript
8
+ ---
9
+
10
+ # 必須コード品質ツール設定ルール
11
+
12
+ ## 概要
13
+
14
+ すべての新規プロジェクトにおいて、ESLint・Prettierなどのコード整形・静的解析ツールの導入と設定は**必須**です。
15
+ これらのツールは、コード品質・一貫性の担保のために不可欠であり、プロジェクトセットアップ時に必ず設定してください。
16
+
17
+ ## 必須化ルール
18
+
19
+ ### 新規プロジェクト作成時の必須事項
20
+
21
+ - **ESLint**: 静的解析ツールとして必ず導入・設定すること
22
+ - **Prettier**: コード整形ツールとして必ず導入・設定すること
23
+ - **EditorConfig**: エディタ横断の設定統一のため必ず設定すること
24
+ - **設定ファイル**: `.eslintrc.json`, `.prettierrc`, `.editorconfig` を必ず作成すること
25
+
26
+ ### AI による自動セットアップ時の要件
27
+
28
+ - 依存パッケージのインストールは**必ず `npm install` コマンド**で実行すること
29
+ - `package.json` を直接編集せず、npm コマンドを使用すること
30
+ - 設定ファイルの作成は手動で行い、プロジェクトに適した設定を含めること
31
+
32
+ ### 必須パッケージとコマンド
33
+
34
+ #### TypeScript プロジェクトの場合
35
+
36
+ ```bash
37
+ npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin
38
+ npm install --save-dev prettier eslint-config-prettier eslint-plugin-prettier
39
+ npm install --save-dev @types/node
40
+ ```
41
+
42
+ #### JavaScript/Node.js プロジェクトの場合
43
+
44
+ ```bash
45
+ npm install --save-dev eslint
46
+ npm install --save-dev prettier eslint-config-prettier eslint-plugin-prettier
47
+ ```
48
+
49
+ ## 必須設定ファイルテンプレート
50
+
51
+ ### .eslintrc.json (TypeScript プロジェクト用)
52
+
53
+ ```json
54
+ {
55
+ "root": true,
56
+ "env": {
57
+ "browser": true,
58
+ "es2021": true,
59
+ "node": true
60
+ },
61
+ "extends": [
62
+ "eslint:recommended",
63
+ "@typescript-eslint/recommended",
64
+ "prettier"
65
+ ],
66
+ "parser": "@typescript-eslint/parser",
67
+ "parserOptions": {
68
+ "ecmaVersion": "latest",
69
+ "sourceType": "module"
70
+ },
71
+ "plugins": ["@typescript-eslint"],
72
+ "rules": {
73
+ "@typescript-eslint/no-unused-vars": "error",
74
+ "@typescript-eslint/explicit-function-return-type": "warn"
75
+ },
76
+ "ignorePatterns": ["dist/", "node_modules/", "*.js", "*.mjs"]
77
+ }
78
+ ```
79
+
80
+ ### .prettierrc
81
+
82
+ ```json
83
+ {
84
+ "printWidth": 100,
85
+ "tabWidth": 2,
86
+ "useTabs": false,
87
+ "semi": true,
88
+ "singleQuote": false,
89
+ "quoteProps": "as-needed",
90
+ "trailingComma": "es5",
91
+ "bracketSpacing": true,
92
+ "arrowParens": "always",
93
+ "proseWrap": "always"
94
+ }
95
+ ```
96
+
97
+ ### .editorconfig
98
+
99
+ ```ini
100
+ root = true
101
+
102
+ [*]
103
+ charset = utf-8
104
+ end_of_line = lf
105
+ insert_final_newline = true
106
+ trim_trailing_whitespace = true
107
+ indent_style = space
108
+ indent_size = 2
109
+
110
+ [*.md]
111
+ trim_trailing_whitespace = false
112
+ ```
113
+
114
+ ## 必須 npm scripts
115
+
116
+ `package.json` の `scripts` セクションに以下を必ず追加すること:
117
+
118
+ ```json
119
+ {
120
+ "scripts": {
121
+ "lint": "eslint . --ext .ts,.js",
122
+ "lint:fix": "eslint . --ext .ts,.js --fix",
123
+ "format": "prettier --write .",
124
+ "format:check": "prettier --check ."
125
+ }
126
+ }
127
+ ```
128
+
129
+ ## AI 指示時の具体的な文言例
130
+
131
+ ### プロジェクトセットアップ時
132
+
133
+ ```
134
+ 新しいTypeScriptプロジェクトをセットアップしてください。
135
+ 以下の必須要件を満たすこと:
136
+
137
+ 1. ESLint と Prettier を必ずインストールして設定すること
138
+ 2. 依存パッケージは npm install コマンドで追加すること
139
+ 3. .eslintrc.json, .prettierrc, .editorconfig を作成すること
140
+ 4. package.json に lint, format スクリプトを追加すること
141
+ ```
142
+
143
+ ### 既存プロジェクトの改善時
144
+
145
+ ```
146
+ このプロジェクトにESLintとPrettierの設定がありません。
147
+ コード品質ツールの設定は必須のため、以下を実行してください:
148
+
149
+ 1. eslint, prettier, @typescript-eslint関連パッケージをインストール
150
+ 2. 適切な設定ファイル(.eslintrc.json, .prettierrc)を作成
151
+ 3. npm scriptsにlint/formatコマンドを追加
152
+ ```
153
+
154
+ ## チェックリスト
155
+
156
+ 新規プロジェクト作成時、または既存プロジェクトの改善時に以下を確認すること:
157
+
158
+ - [ ] ESLint がインストールされている
159
+ - [ ] Prettier がインストールされている
160
+ - [ ] TypeScript プロジェクトの場合、@typescript-eslint 関連パッケージが入っている
161
+ - [ ] `.eslintrc.json` ファイルが存在し、適切な設定が含まれている
162
+ - [ ] `.prettierrc` ファイルが存在し、適切な設定が含まれている
163
+ - [ ] `.editorconfig` ファイルが存在している
164
+ - [ ] `package.json` に lint, format スクリプトが定義されている
165
+ - [ ] VSCode を使用する場合、適切な `.vscode/settings.json` が設定されている
166
+
167
+ ## 違反時の対応
168
+
169
+ もしコード品質ツールの設定が不十分なプロジェクトを発見した場合:
170
+
171
+ 1. **即座に設定を追加**: 上記のテンプレートを使用して必要な設定を追加する
172
+ 2. **依存関係の追加**: npm install コマンドで必要なパッケージを追加する
173
+ 3. **設定の検証**: `npm run lint` と `npm run format:check` で動作確認する
174
+ 4. **ドキュメント更新**: プロジェクトの README に設定手順を記載する
175
+
176
+ ## 背景・理由
177
+
178
+ - **コード品質の担保**: 静的解析により潜在的な問題を早期発見
179
+ - **コードスタイルの統一**: チーム開発における可読性・保守性の向上
180
+ - **開発効率の向上**: 自動整形により手動でのフォーマット作業を削減
181
+ - **問題の予防**: 設定抜けによるコードスタイル不統一や静的解析漏れを防止
@@ -0,0 +1,140 @@
1
+ ---
2
+ type: development
3
+ category: github
4
+ focus: issue-templates
5
+ human-instruction: |-
6
+ ## GitHub Issue Template の遵守について
7
+
8
+ このルールは、GitHub Issue を作成する際にプロジェクトで設定されている ISSUE_TEMPLATE の内容に従って記載することを求めています。
9
+ AIはテンプレートの構造を理解できますが、以下の点で人間の判断が重要です:
10
+
11
+ - **適切なテンプレートの選択**: 報告内容に最も適したテンプレートの選択
12
+ - **詳細な情報提供**: テンプレートの各項目に対する具体的で詳細な情報の記載
13
+ - **優先度の判断**: バグや機能要求の重要度・緊急度の評価
14
+ - **関連情報の補足**: テンプレートにない場合でも必要な追加情報の提供
15
+ ---
16
+
17
+ # GitHub Issue Template Rules
18
+
19
+ ## 概要
20
+
21
+ GitHub Issue を作成する際は、リポジトリに設定されている `.github/ISSUE_TEMPLATE` の内容に従って Issue 本文を作成してください。
22
+
23
+ ## 基本ルール
24
+
25
+ ### テンプレートの使用
26
+
27
+ - Issue 作成時は、必ず適切な Issue Template を選択してください
28
+ - テンプレートで定義されているすべての必須項目を記載してください
29
+ - テンプレートの構造と形式を維持してください
30
+
31
+ ### テンプレートの動的確認
32
+
33
+ プロジェクトによってIssueテンプレートの構成は異なるため、Issue作成前に必ず以下の手順でテンプレートを確認してください:
34
+
35
+ #### 1. テンプレートファイルの確認
36
+ - `.github/ISSUE_TEMPLATE/` ディレクトリ内のファイルを確認
37
+ - 各 `.yml` ファイルがどのような種類のIssueを対象としているかを把握
38
+
39
+ #### 2. テンプレート構造の分析
40
+ 各テンプレートファイルで以下の項目を確認:
41
+ - `name`: テンプレートの名前
42
+ - `description`: テンプレートの用途
43
+ - `body`: フォームの構造と必須項目
44
+ - `validations.required: true` が設定されている項目は必須
45
+ - `type` により入力形式(textarea, input, dropdown, checkboxes等)を確認
46
+ - `attributes.label` により項目名を確認
47
+ - `attributes.description` により詳細要求を確認
48
+
49
+ #### 3. 適切なテンプレートの選択
50
+ - Issue の内容に最も適したテンプレートを選択
51
+ - テンプレートの `description` と報告内容を照合
52
+ - 複数該当する場合は主要な目的に基づいて判断
53
+
54
+ ## 実装ガイドライン
55
+
56
+ ### Issue 作成前の確認事項
57
+
58
+ 1. **テンプレートの確認**
59
+ - `.github/ISSUE_TEMPLATE/` ディレクトリの内容を確認してください
60
+ - 利用可能なテンプレートファイル(`.yml`)とその構造を把握してください
61
+
62
+ 2. **既存 Issue の確認**
63
+ - 同様の内容の Issue が既に存在しないか検索してください
64
+ - 関連する Issue があれば参照してください
65
+
66
+ 3. **適切なテンプレートの選択**
67
+ - 確認したテンプレートの中から、報告・提案内容に最も適したものを選択してください
68
+ - 複数のカテゴリに該当する場合は、主要な目的に基づいて選択してください
69
+
70
+ 4. **情報の収集**
71
+ - 選択したテンプレートで要求される情報を事前に収集してください
72
+ - 必須項目(`validations.required: true`)は必ず用意してください
73
+ - 再現可能な例や具体的なケースを用意してください
74
+
75
+ ### Issue 記載時の注意事項
76
+
77
+ 1. **必須項目の記載**
78
+ - `validations: required: true` が設定されている項目は必ず記載してください
79
+ - 「該当なし」や「不明」の場合もその旨を明記してください
80
+
81
+ 2. **具体的な記述**
82
+ - 抽象的な表現ではなく、具体的で詳細な情報を記載してください
83
+ - コード例、コマンド例、エラーメッセージは正確に記載してください
84
+
85
+ 3. **構造の維持**
86
+ - テンプレートで定義された見出しや構造を変更しないでください
87
+ - 追加情報がある場合は、適切なセクションに記載してください
88
+
89
+ ## 違反例と修正例
90
+
91
+ ### ❌ 悪い例
92
+
93
+ ```markdown
94
+ # バグ報告
95
+
96
+ 動かない。エラーが出る。
97
+
98
+ どうすればいい?
99
+ ```
100
+
101
+ ### ✅ 良い例
102
+
103
+ 適切なテンプレートに従った記載例:
104
+
105
+ ```markdown
106
+ ### Version
107
+ v1.0.0
108
+
109
+ ### What happened?
110
+ `npx ai-rules extract` コマンドを実行すると、ModuleNotFoundError が発生して処理が停止します。
111
+
112
+ ### Steps to reproduce
113
+ 1. 新しいディレクトリで `npm init -y` を実行
114
+ 2. `npm install @aramassa/ai-rules` でパッケージをインストール
115
+ 3. `npx ai-rules extract --type coding-rule` を実行
116
+ 4. エラーが発生
117
+
118
+ ### Expected behavior
119
+ ルールの抽出が正常に実行され、結果が出力される
120
+
121
+ ### Actual behavior
122
+ 以下のエラーメッセージが表示される:
123
+ ```
124
+ Error: Cannot find module '@internal/core'
125
+ ```
126
+
127
+ ### Environment
128
+ - OS: Ubuntu 22.04
129
+ - Node.js version: v18.17.0
130
+ - Package manager: npm 9.6.7
131
+ - Shell: bash
132
+ ```
133
+
134
+ この例では、選択したテンプレートの全ての必須項目(`validations.required: true`)が適切に記載され、具体的で詳細な情報が提供されています。
135
+
136
+ ## 運用における注意点
137
+
138
+ - テンプレートの内容は定期的に見直し、プロジェクトの変化に応じて更新してください
139
+ - Issue の質を向上させるため、テンプレートの使用状況を定期的に確認してください
140
+ - 新しいチームメンバーには、Issue 作成のガイドラインを共有してください