@aramassa/ai-rules 0.1.1-npmjs.20250910072942 → 0.1.5

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,19 +1,200 @@
1
1
  ---
2
2
  type: planning
3
+ category: methodology
4
+ focus: structured-process
3
5
  ---
4
6
 
5
- ## コミュニケーションのルール
7
+ # プランニング手法とベストプラクティス
6
8
 
7
- ### パスの指定について
9
+ ## 段階的プランニング手法
8
10
 
11
+ ### 4段階プランニングプロセス
12
+
13
+ 効果的なプランニングのために、以下の4段階のプロセスを順次実行します:
14
+
15
+ #### Phase 1: 要件明確化
16
+ **目的**: プロジェクトの目標と制約を明確化
17
+ **手法**:
18
+ - 5W1H分析(Why, What, Who, When, Where, How)
19
+ - ステークホルダー分析
20
+ - 制約条件の洗い出し
21
+ - 成功基準の定義
22
+
23
+ **品質チェック**:
24
+ - [ ] 背景と課題が具体的に説明されている
25
+ - [ ] 成功基準が測定可能である
26
+ - [ ] 制約条件が網羅されている
27
+
28
+ #### Phase 2: 技術調査・分析
29
+ **目的**: 実装可能性と技術的リスクの評価
30
+ **手法**:
31
+ - システム影響分析(Impact Analysis)
32
+ - 技術スタック調査
33
+ - アーキテクチャ分析
34
+ - 既存パターンの調査
35
+
36
+ **品質チェック**:
37
+ - [ ] 影響範囲が特定されている
38
+ - [ ] 技術的選択肢が比較検討されている
39
+ - [ ] リスクが定量的に評価されている
40
+
41
+ #### Phase 3: 実装計画策定
42
+ **目的**: 具体的で実行可能な計画の作成
43
+ **手法**:
44
+ - WBS(Work Breakdown Structure)
45
+ - 依存関係分析
46
+ - リソース見積もり
47
+ - マイルストーン設定
48
+
49
+ **品質チェック**:
50
+ - [ ] タスクが適切に分解されている
51
+ - [ ] 実装順序が論理的である
52
+ - [ ] 工数見積もりが現実的である
53
+
54
+ #### Phase 4: 品質保証・レビュー
55
+ **目的**: プランの妥当性と品質の確保
56
+ **手法**:
57
+ - レビューチェックリスト
58
+ - リスクアセスメント
59
+ - 品質ゲート設定
60
+ - 承認プロセス
61
+
62
+ **品質チェック**:
63
+ - [ ] プラン全体の一貫性が確保されている
64
+ - [ ] リスクが適切に管理されている
65
+ - [ ] レビュー観点が明確である
66
+
67
+ ## プランニング品質チェック項目
68
+
69
+ ### 完全性チェックリスト
70
+ - [ ] **要件定義の完全性**
71
+ - すべてのステークホルダーが特定されている
72
+ - 機能要件・非機能要件が明確である
73
+ - 制約条件が網羅されている
74
+ - 前提条件が明記されている
75
+
76
+ - [ ] **実装計画の詳細度**
77
+ - タスクが実行可能なレベルまで分解されている
78
+ - 各タスクの成果物が明確である
79
+ - 依存関係が正確に把握されている
80
+ - 工数見積もりが根拠とともに示されている
81
+
82
+ - [ ] **テスト戦略の包括性**
83
+ - テストケースの方針が明確である
84
+ - テストデータの準備方法が決まっている
85
+ - テスト環境の準備が考慮されている
86
+ - 受け入れ基準が検証可能である
87
+
88
+ ### 実現可能性チェックリスト
89
+ - [ ] **技術的実現可能性**
90
+ - 選択技術の成熟度と安定性
91
+ - チームの技術スキルとの適合性
92
+ - 既存システムとの整合性
93
+ - パフォーマンス・スケーラビリティ要件への対応
94
+
95
+ - [ ] **リソース実現可能性**
96
+ - 必要な人的リソースの確保可能性
97
+ - 予算・コスト制約への適合
98
+ - 時間制約との整合性
99
+ - 外部依存の調整可能性
100
+
101
+ - [ ] **運用実現可能性**
102
+ - 運用・保守体制での対応可能性
103
+ - 既存運用プロセスとの整合性
104
+ - 監視・アラート体制の確立可能性
105
+ - 障害対応・復旧手順の明確性
106
+
107
+ ### リスク評価・管理チェックリスト
108
+ - [ ] **リスク特定の網羅性**
109
+ - 技術リスク(性能、互換性、セキュリティ等)
110
+ - プロジェクトリスク(スケジュール、リソース、スコープ等)
111
+ - ビジネスリスク(市場、法規制、競合等)
112
+ - 運用リスク(障害、保守、スケーラビリティ等)
113
+
114
+ - [ ] **リスク対策の具体性**
115
+ - 各リスクの発生確率と影響度の評価
116
+ - 具体的な予防策・軽減策
117
+ - 事象発生時の対応策・復旧策
118
+ - リスク監視の方法・頻度
119
+
120
+ ## プロジェクトパターン別ベストプラクティス
121
+
122
+ ### CLI機能拡張パターン
123
+ **特徴**: コマンドライン引数、オプション、出力フォーマットの拡張
124
+ **重点確認項目**:
125
+ - [ ] 既存オプションとの互換性維持
126
+ - [ ] ヘルプメッセージの一貫性
127
+ - [ ] エラーメッセージの適切性
128
+ - [ ] 出力フォーマットの統一性
129
+
130
+ ### ライブラリ機能追加パターン
131
+ **特徴**: APIの拡張、新規モジュールの追加
132
+ **重点確認項目**:
133
+ - [ ] API設計の一貫性
134
+ - [ ] 後方互換性の保証
135
+ - [ ] TypeScript型定義の整合性
136
+ - [ ] パッケージ依存関係の管理
137
+
138
+ ### リファクタリングパターン
139
+ **特徴**: コード品質改善、構造最適化
140
+ **重点確認項目**:
141
+ - [ ] 外部インターフェースの不変性
142
+ - [ ] 既存テストの継続実行可能性
143
+ - [ ] パフォーマンスへの影響評価
144
+ - [ ] 段階的移行の安全性
145
+
146
+ ### バグ修正パターン
147
+ **特徴**: 問題解決、品質向上
148
+ **重点確認項目**:
149
+ - [ ] 根本原因の特定と対策
150
+ - [ ] 再現手順と修正検証
151
+ - [ ] 再発防止策の確立
152
+ - [ ] 関連する潜在問題の調査
153
+
154
+ ## ドキュメント作成計画ガイドライン
155
+
156
+ ### 事前に計画すべきドキュメント
157
+ - [ ] **技術仕様書**: システムの設計・アーキテクチャを記録
158
+ - [ ] **ユーザーマニュアル**: エンドユーザー向けの操作ガイド
159
+ - [ ] **API ドキュメント**: 開発者向けのAPIリファレンス
160
+ - [ ] **運用ドキュメント**: 保守・運用担当者向けの手順書
161
+ - [ ] **テストドキュメント**: テスト仕様・結果・レポート
162
+
163
+ ### ドキュメント更新計画
164
+ - **作成タイミング**: いつ作成・更新するか
165
+ - **責任者**: 誰が作成・レビューするか
166
+ - **フォーマット**: どの形式で作成するか
167
+ - **配布・共有**: どこに配置・共有するか
168
+ - **メンテナンス**: どのように最新性を保つか
169
+
170
+ ## プランニングワークフロー管理
171
+
172
+ ### todo_plans → change_plans → GitHub Issues の流れ
173
+
174
+ #### 1. todo_plans段階
175
+ - **目的**: アイデアの整理と初期プランニング
176
+ - **期間**: プロジェクト開始前の計画策定期間
177
+ - **成果物**: 詳細な実装計画書
178
+ - **品質基準**: 4段階プランニングプロセスの完了
179
+
180
+ #### 2. change_plans段階
181
+ - **目的**: 実装中の進捗管理と計画調整
182
+ - **期間**: 実装開始から完了まで
183
+ - **成果物**: 実装実績と学習内容の記録
184
+ - **品質基準**: 計画の実行状況と乖離の記録
185
+
186
+ #### 3. GitHub Issues段階
187
+ - **目的**: チーム内での課題管理と進捗共有
188
+ - **期間**: 公式な課題管理が必要な期間
189
+ - **成果物**: Issue、Pull Request、レビュー記録
190
+ - **品質基準**: ステークホルダーとの情報共有
191
+
192
+ ### コミュニケーションのルール
193
+
194
+ #### パスの指定について
9
195
  相対パスはプロジェクトのルートディレクトリを基準に考えること。
10
196
  絶対パスはシステムのルートディレクトリを基準に考えること。
11
197
 
12
- 例:
13
- - `docs/README.md` は、プロジェクトのルートディレクトリからの相対パス指定
14
- - `./docs/README.md` は、プロジェクトのルートディレクトリからの相対パス指定
15
- - `/docs/README.md` は、システムのルートディレクトリからのパス指定
16
-
17
198
  ### 根源的なルール
18
199
 
19
200
  - 機能追加のために不明な点があれば、追加で確認する
@@ -0,0 +1,121 @@
1
+ ---
2
+ type: development-rules
3
+ category: chrome-extension
4
+ focus: architecture-security
5
+ language: javascript
6
+ applyTo: "**/*"
7
+ ---
8
+
9
+ # Chrome Extension Manifest V3 - General Architecture & Security
10
+
11
+ ## 概要
12
+
13
+ Chrome 拡張機能開発における Manifest V3 (MV3) の全般的なアーキテクチャ原則とセキュリティ指針を定義します。
14
+ MV3 は単なるバージョンアップではなく、セキュリティ、パフォーマンス、プライバシーを根本的に強化する
15
+ アーキテクチャの転換を意味します。
16
+
17
+ ## 1. Manifest V3 アーキテクチャ原則
18
+
19
+ ### 1.1 基本設計思想
20
+
21
+ - **イベント駆動型アーキテクチャ**: 永続的なバックグラウンドページから短命な Service Worker への移行
22
+ - **宣言的セキュリティモデル**: 動的なコード実行から事前定義されたルールベースへの移行
23
+ - **最小権限の原則**: 必要最小限の権限のみを要求し、明確に宣言する
24
+ - **関心の分離**: 各コンポーネントが明確な役割を持つ構造化されたアーキテクチャ
25
+
26
+ ### 1.2 コアコンポーネント
27
+
28
+ Chrome Extension MV3 アーキテクチャは4つの主要コンポーネントで構成されます:
29
+
30
+ - **Service Worker (Background)**: イベント駆動型のバックグラウンド処理を担当し、永続的な状態を持たない短命な実行環境
31
+ - **Content Scripts**: ウェブページの DOM に直接アクセスし、ページコンテンツとの相互作用を処理
32
+ - **Action Popup**: ユーザーインターフェースレイヤーとして、拡張機能アイコンクリック時の UI を提供
33
+ - **Offscreen Documents**: Service Worker から DOM 操作や特殊 API アクセスが必要な場合のヘルパー環境
34
+
35
+ これらのコンポーネントは明確に分離された実行コンテキストを持ち、メッセージパッシングによって連携します。
36
+
37
+ ## 2. セキュリティベストプラクティス
38
+
39
+ ### 2.1 Content Security Policy (CSP)
40
+
41
+ Manifest V3 では Content Security Policy の設定が必須であり、拡張機能のセキュリティを大幅に強化します。
42
+
43
+ **extension_pages**: 拡張機能内のページ(popup、options等)に適用される CSP です。script-src 'self' でパッケージ内のスクリプトのみを許可し、object-src 'self' で安全なオブジェクト読み込みを制限し、img-src には 'self' data: https: で画像ソースを限定します。
44
+
45
+ **sandbox**: サンドボックス環境での CSP 設定です。sandbox allow-scripts で基本的なスクリプト実行を許可し、必要に応じて 'unsafe-eval' や 'unsafe-inline' を追加しますが、セキュリティリスクを十分に検討します。
46
+
47
+ manifest.json の content_security_policy セクションで両方の設定を明示的に定義し、拡張機能の実行環境を適切に制限します。
48
+
49
+ ### 2.2 セキュリティ原則
50
+
51
+ Manifest V3 では厳格なセキュリティ原則の遵守が必須です。
52
+
53
+ **リモートコードの禁止**: すべての JavaScript コードは拡張機能パッケージに含める必要があり、外部からの動的コード読み込みは許可されません。CDN からのライブラリ読み込みも禁止されているため、必要なライブラリはパッケージにバンドルします。
54
+
55
+ **eval() の回避**: eval()、Function コンストラクタ、setTimeout/setInterval の文字列実行など、動的コード実行は禁止されています。静的な実装で代替手段を検討します。
56
+
57
+ **入力検証**: ユーザー入力とウェブページからのデータは信頼せず、適切に検証・サニタイゼーションを実行します。XSS 攻撃や インジェクション攻撃を防ぐため、HTML エスケープや URL 検証を徹底します。
58
+
59
+ **権限の最小化**: 必要最小限の権限のみを要求し、host_permissions は具体的なドメインに限定します。広範囲な権限(<all_urls> 等)は避け、機能に応じて段階的に権限を要求します。
60
+
61
+ InputValidator クラスでは URL の妥当性検証(プロトコル確認、URL 形式チェック)、HTML のサニタイゼーション(textContent を使用したエスケープ)、メッセージデータの検証(型チェック、必須フィールド確認)を統一的に実装します。
62
+
63
+ ## 3. 開発ワークフロー
64
+
65
+ ### 3.1 開発環境セットアップ
66
+
67
+ Chrome 拡張機能開発では適切なビルドツールと依存関係の設定が重要です。
68
+
69
+ **プロジェクト初期化**: npm init -y でプロジェクトを初期化し、package.json を作成します。
70
+
71
+ **必須開発依存関係**: webpack と webpack-cli でモジュールバンドリングを設定し、copy-webpack-plugin で静的ファイル(manifest.json、HTML、アイコン等)のコピーを自動化します。eslint でコード品質を管理し、jest でユニットテスト、puppeteer で E2E テストを実行します。
72
+
73
+ **webpack 設定**: entry ポイントで各コンポーネント(background、content、popup、offscreen)を個別に定義し、output で dist ディレクトリに出力します。CopyPlugin で必要な静的ファイルを適切な場所にコピーし、開発用とプロダクション用の設定を分離します。
74
+
75
+ webpack.config.js では mode で開発・本番を切り替え、各 JavaScript ファイルの依存関係を解決してバンドルします。プラグイン設定で manifest.json、HTML ファイル、アイコンディレクトリを適切にコピーします。
76
+
77
+ ### 3.2 ビルドスクリプト
78
+
79
+ package.json の scripts セクションで開発・ビルド・テスト・デプロイのワークフローを定義します。
80
+
81
+ **build**: webpack でプロダクションモードのビルドを実行し、最適化されたファイルを dist ディレクトリに出力します。
82
+
83
+ **dev**: webpack の watch モードで開発時の自動リビルドを有効化し、ファイル変更時に即座に再ビルドを実行します。
84
+
85
+ **test**: jest でユニットテストを実行し、コードの品質と動作を確認します。
86
+
87
+ **lint**: eslint で src ディレクトリ下の JavaScript ファイルの静的解析を実行し、コーディング規約の遵守を確認します。
88
+
89
+ **pack**: ビルド後に dist ディレクトリで zip 圧縮を実行し、Chrome Web Store 提出用のパッケージファイル(extension.zip)を作成します。
90
+
91
+ これらのスクリプトにより、開発からデプロイまでの一連の作業を自動化し、効率的な開発ワークフローを確立します。
92
+
93
+ ## 4. デバッグとトラブルシューティング
94
+
95
+ ### 4.1 一般的な問題と解決策
96
+
97
+ **Service Worker の非アクティブ化**
98
+ - 問題: Service Worker が予期せず終了する
99
+ - 解決: イベントハンドラーの適切な設定、非同期処理の Promise 管理
100
+
101
+ **メッセージパッシングエラー**
102
+ - 問題: `Error: Could not establish connection. Receiving end does not exist.`
103
+ - 解決: 送信先の存在確認、エラーハンドリングの実装
104
+
105
+ **権限エラー**
106
+ - 問題: 必要な権限が不足している
107
+ - 解決: manifest.json の権限設定見直し、動的権限要求の実装
108
+
109
+ ## まとめ
110
+
111
+ Manifest V3 への移行は、Chrome 拡張機能開発における重要な転換点です。このガイドで示したパターンとベストプラクティスに従うことで、セキュアで高性能、かつ将来性のある拡張機能を開発できます。
112
+
113
+ ### 重要なポイント
114
+
115
+ 1. **イベント駆動型設計**: Service Worker の短命な性質を受け入れ、適切なイベントハンドリングを実装する
116
+ 2. **宣言的セキュリティ**: declarativeNetRequest API を活用し、セキュアなネットワーク制御を実現する
117
+ 3. **適切な分離**: 各コンポーネントの役割を明確にし、メッセージパッシングで連携させる
118
+ 4. **最小権限**: 必要最小限の権限のみを要求し、透明性を確保する
119
+ 5. **テスト駆動**: 包括的なテスト戦略で品質を保証する
120
+
121
+ これらの原則に従って開発することで、ユーザーに安全で快適な拡張機能体験を提供できます。
@@ -0,0 +1,157 @@
1
+ ---
2
+ type: development-rules
3
+ category: chrome-extension
4
+ focus: html-structure
5
+ language: html
6
+ applyTo: "**/*.html"
7
+ ---
8
+
9
+ # Chrome Extension Manifest V3 - HTML Structure Guidelines
10
+
11
+ ## Popup HTML 構造
12
+
13
+ ### 基本構造
14
+
15
+ Chrome 拡張機能の popup.html は軽量で高速な UI 体験を提供する必要があります。
16
+
17
+ **HTML5 基本構造**:
18
+ ```html
19
+ <!DOCTYPE html>
20
+ <html lang="ja">
21
+ <head>
22
+ <meta charset="UTF-8">
23
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
24
+ <title>拡張機能名</title>
25
+ <link rel="stylesheet" href="popup.css">
26
+ </head>
27
+ <body>
28
+ <div class="container">
29
+ <!-- UI コンテンツ -->
30
+ </div>
31
+ <script src="popup.js"></script>
32
+ </body>
33
+ </html>
34
+ ```
35
+
36
+ **寸法制限**: ポップアップは最大 800px × 600px のサイズ制限があり、適切なレスポンシブデザインが必要です。
37
+
38
+ **読み込み最適化**: CSS と JavaScript は外部ファイルとして分離し、インライン記述は避けます。CSP の制約により、インラインスクリプトとスタイルは許可されません。
39
+
40
+ ### UI/UX 設計原則
41
+
42
+ **シンプルな構造**: 複雑なレイアウトは避け、ユーザーが直感的に操作できるシンプルな構造にします。
43
+
44
+ **高速レンダリング**: 重いアニメーションや大量の DOM 要素は避け、ポップアップの表示速度を優先します。
45
+
46
+ **アクセシビリティ**: 適切な semantic HTML、ARIA 属性、キーボードナビゲーションをサポートします。
47
+
48
+ ## Options Page 構造
49
+
50
+ ### 設定ページの実装
51
+
52
+ Options Page は拡張機能の詳細設定を提供する専用ページです。
53
+
54
+ **manifest.json 設定**:
55
+ ```json
56
+ {
57
+ "options_page": "options.html",
58
+ "options_ui": {
59
+ "page": "options.html",
60
+ "open_in_tab": true
61
+ }
62
+ }
63
+ ```
64
+
65
+ **HTML 構造**:
66
+ ```html
67
+ <!DOCTYPE html>
68
+ <html lang="ja">
69
+ <head>
70
+ <meta charset="UTF-8">
71
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
72
+ <title>拡張機能設定</title>
73
+ <link rel="stylesheet" href="options.css">
74
+ </head>
75
+ <body>
76
+ <div class="settings-container">
77
+ <h1>設定</h1>
78
+ <form id="settingsForm">
79
+ <!-- 設定項目 -->
80
+ </form>
81
+ </div>
82
+ <script src="options.js"></script>
83
+ </body>
84
+ </html>
85
+ ```
86
+
87
+ **設定の永続化**: フォームデータは chrome.storage.sync を使用してデバイス間で同期し、設定の一貫性を保ちます。
88
+
89
+ ## Offscreen Document 構造
90
+
91
+ ### HTML 実装
92
+
93
+ Offscreen ドキュメントは通常の HTML ファイルとして実装され、DOM API や特殊ブラウザ API にアクセスします。
94
+
95
+ **HTML 構造**: 基本的な HTML5 ドキュメント構造で、必要な JavaScript ファイルを読み込みます。UI は不要なため、視覚的要素は最小限に抑えます。
96
+
97
+ ```html
98
+ <!DOCTYPE html>
99
+ <html lang="ja">
100
+ <head>
101
+ <meta charset="UTF-8">
102
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
103
+ <title>Offscreen Document</title>
104
+ </head>
105
+ <body>
106
+ <!-- 視覚的要素は最小限 -->
107
+ <div id="workspace" style="display: none;"></div>
108
+ <script src="offscreen.js"></script>
109
+ </body>
110
+ </html>
111
+ ```
112
+
113
+ **メッセージ受信**: chrome.runtime.onMessage.addListener でメッセージを受信し、target フィールドが 'offscreen' の場合のみ処理します。非同期処理では return true を設定して適切なレスポンス管理を行います。
114
+
115
+ **DOM 操作**: DOMParser を使用した HTML パース、Document インターフェースでの要素抽出、各種 DOM API の活用が可能です。Service Worker では実行できない DOM 操作をここで実行します。
116
+
117
+ **特殊 API**: navigator.clipboard でクリップボード操作、Audio API で音声再生、その他ブラウザ固有 API の実行が可能です。
118
+
119
+ **エラーハンドリング**: すべての操作は try-catch でラップし、エラー発生時は適切なエラーレスポンスを Service Worker に返します。
120
+
121
+ OffscreenDocument クラスでは各種操作(HTML パース、クリップボード、音声再生等)を統一的なインターフェースで提供し、Service Worker からの要求に応じて適切な処理を実行します。
122
+
123
+ ## HTML セキュリティベストプラクティス
124
+
125
+ ### Content Security Policy (CSP) 遵守
126
+
127
+ **インラインスクリプト禁止**: `<script>` タグ内でのインラインコードは CSP により禁止されているため、すべての JavaScript は外部ファイルに記述します。
128
+
129
+ **インラインスタイル禁止**: `style` 属性でのインラインスタイルも禁止されているため、すべての CSS は外部ファイルに記述します。
130
+
131
+ **外部リソース制限**: 外部サイトからの画像、スクリプト、スタイルシートの読み込みは制限されているため、必要なリソースは拡張機能パッケージに含めます。
132
+
133
+ ### XSS 対策
134
+
135
+ **動的コンテンツの安全な挿入**: ユーザー入力や外部データを HTML に挿入する際は、textContent や innerText を使用してエスケープし、innerHTML の使用は避けます。
136
+
137
+ **URL 検証**: 外部リンクや画像 URL は適切に検証し、信頼できるドメインのみを許可します。
138
+
139
+ **データ検証**: フォーム入力やメッセージデータは適切に検証・サニタイゼーションを実行します。
140
+
141
+ ## パフォーマンス最適化
142
+
143
+ ### 軽量化
144
+
145
+ **最小限の DOM**: 不要な HTML 要素は削除し、シンプルな構造を保ちます。
146
+
147
+ **CSS 最適化**: 使用していない CSS ルールを削除し、ファイルサイズを最小化します。
148
+
149
+ **JavaScript 分離**: 機能ごとに JavaScript ファイルを分離し、必要な部分のみを読み込みます。
150
+
151
+ ### 読み込み最適化
152
+
153
+ **リソース並列読み込み**: CSS と JavaScript の読み込みを並列化し、ページ表示速度を向上させます。
154
+
155
+ **画像最適化**: アイコンや画像は適切なサイズと形式で最適化し、読み込み時間を短縮します。
156
+
157
+ **キャッシュ活用**: 静的リソースは適切にキャッシュされるよう設定し、再読み込み時間を短縮します。