# MSX Serial Terminal - Cursor Editor Rules

## 言語とコミュニケーション
- 常に日本語で応答する
- コメントと文字列は日本語で記述する
- 変数名・関数名・クラス名は英語で記述する

## コード品質と保守性
- テストカバレッジは95%以上を維持する
- 新機能追加時は必ず対応するテストを作成する
- 複雑度はRadonでA評価（10未満）を維持する
- 関数の複雑度がC評価（15以上）になった場合は分割を検討する

## セキュリティ
- 空のexcept文は禁止し、必ずログ記録またはエラーハンドリングを行う
- banditセキュリティチェックで高リスク問題を残さない

## コードスタイル
- 行長制限は120文字とする
- blackフォーマッターに準拠する
- flake8ルールに準拠する（E203、W503、W293は除外）
- isortでインポート文を整理する
- コミット前に必ずblackを適用してコードフォーマットを統一する
- `make format`または`black .`でプロジェクト全体をフォーマットする

## 表現と命名規則
- パフォーマンス関連の表現は具体的で測定可能な表現を使用する
- 「瞬時」表現を避け、「リアルタイム」「高速」「即座」等の具体的表現を使用する
- ファイル名・クラス名では「Enhanced」「Advanced」「Optimized」等の明確な表現を使用する

## アーキテクチャと設計
- 設定値のハードコードを避け、ConfigManagerを使用する
- 新しい設定項目は必ずスキーマ検証を実装する
- 関数の実行時間測定にはProfilerデコレーターを使用する
- キャッシュが必要な処理にはCacheManagerを使用する

## Enum設計
- Enumの各項目がタプルを持つ場合、__init__メソッドの引数は展開して受け取る
- Enumのvalueプロパティは@propertyデコレーターで実装する
- Python 3.13のEnum仕様に準拠する

## テスト設計
- テストクラス名は「Test」で始める
- テストメソッド名は「test_」で始め、具体的な動作を表現する
- モックを使用する際は適切なスコープで設定する
- エラーケースのテストも必ず含める
- 新機能に対応するテストを同時に作成する

## 型チェック
- mypy で全ソースファイルがエラーなしであることを確認する
- disallow_untyped_defs = true に準拠する
- disallow_incomplete_defs = true に準拠する
- Python 3.9以上の型注釈を使用する
- Optional型は明示的に指定する

## コミット前チェックリスト
### 品質ゲート通過確認
- `make check-all` で全品質チェックをパスする
- `make test` でテストカバレッジ95%以上を確認する
- `make lint` でflake8・mypy全エラー解消を確認する
- `make security` でbandit高リスク問題なしを確認する
- `make complexity` でRadon平均A評価を確認する

### フォーマット統一
- `make format` でblack・isortを適用する
- 末尾空白・未使用インポートを削除する
- 行長120文字制限を遵守する

### ドキュメント更新
- README.mdの変更内容を反映する
- バージョン情報の整合性を確認する
- AI貢献度情報を適切に更新する

### 互換性確認
- Python 3.9以上での動作確認
- 既存テストとの互換性確認
- 設定ファイルのスキーマ検証確認

## パフォーマンス
- I/O処理では適応的遅延（adaptive delay）を実装する
- 大量データ処理ではチャンク処理を採用する
- メモリ使用量を意識したアルゴリズムを選択する
- パフォーマンステストを `make performance` で実行する

## エラーハンドリング
- 例外は具体的な型でキャッチする
- ユーザーに分かりやすいエラーメッセージを提供する
- ログレベルを適切に設定する（DEBUG, INFO, WARNING, ERROR, CRITICAL）

## 設定管理
- 設定ファイルはYAMLまたはJSONで管理する
- 設定項目には型、範囲、選択肢の制約を設ける
- 設定変更時は検証を実行する
- デフォルト値は明示的に定義する
- ConfigManagerを通じて設定にアクセスする

## MSXヘルプ機能開発
- manディレクトリ内の.3ファイルでMSX BASICコマンドヘルプを管理する
- _show_msx_command_help()メソッドでmanページファイルの検索を実装する
- _display_man_page()メソッドでman形式ファイルの解析・表示を行う
- アンダースコア記法（_MUSIC）をCALL系コマンド（CALL MUSIC）として適切に処理する
- ヘルプ表示は日本語セクション（【使用法】【説明】【例】【注意】）で構造化する
- 新しいMSX BASICコマンドヘルプ追加時は対応するテストケースを作成する
- コマンド名の大文字・小文字変換を自動処理してユーザビリティを向上させる
- 存在しないコマンドに対しては適切なエラーメッセージを表示する

## 依存関係管理
- 外部ライブラリの依存関係は最小限にする
- pyproject.tomlで依存関係を明示的に管理する
- 開発用依存関係は[dev]セクションで分離する
- `make deps-check` で依存関係の更新を定期確認する

## 開発ツール活用
- Makefileで品質チェックタスクを提供する
- CI/CDでテスト・型チェック・セキュリティチェックを自動化する
- 開発時は`make check-all`で全体品質を確認する
- `make quality-advanced`で高度な品質チェックを実行する

## リリース管理
- `make release-check`でリリース準備状況を確認する
- setuptools_scmでバージョン管理を自動化する
- `make build`でパッケージビルドを実行する
- 変更ログを適切に記録する

## AI開発の透明性
- AI貢献度を適切に記録・開示する
- 人間による添削・調整の余地を残す
- コード生成時は既存のコードスタイルに合わせる
- 品質向上への貢献を定量的に測定する

## 緊急時対応
- 重大なバグ発見時は即座にhotfixブランチを作成する
- セキュリティ問題は最優先で対応する
- 破壊的変更は適切なマイグレーション手順を提供する
- バックアップ・ロールバック手順を準備する

## プロジェクト継続性
- コードの可読性・保守性を最優先とする
- 新機能は既存アーキテクチャとの整合性を確保する
- 技術負債の蓄積を避け、定期的なリファクタリングを実施する
- ドキュメントとコードの同期を維持する

## コミット前最終確認（必須実行項目）
### ステージング前確認
- `git status` で変更ファイル一覧を確認する
- 意図しない変更やデバッグコードの混入がないか確認する
- 機密情報やハードコードされた値が含まれていないか確認する

### コミットメッセージ規約
- 日本語で明確かつ具体的な変更内容を記述する
- 「修正」「更新」等の曖昧な表現は避ける
- 変更の理由と影響範囲を含める
- 関連するIssue番号があれば記載する

### 影響範囲確認
- 既存機能への影響がないか動作確認する
- 破壊的変更がある場合は適切にドキュメント化する
- 設定ファイルの変更がある場合は互換性を確認する

### ファイル整合性確認
- 削除されたファイルが適切に処理されているか確認する
- 新規ファイルが適切にgit管理下に追加されているか確認する
- バイナリファイルや一時ファイルが誤って含まれていないか確認する
