このドキュメントは、OpenCodeAppプロジェクトでOpenCode AIを使用する際の設定とガイドラインを定義します。
以下の設定はグローバル設定(~/.config/opencode/AGENTS.md)から継承されます:
- Natural Language: 日本語で会話する
- File Comments: コメントは日本語で書く
- Variable/Function Names: 英語(国際標準)
- Code: 英語(国際標準)
- Symbols: ASCIIを使用する
- ログの配置場所: ログファイルはリポジトリのTOPディレクトリに配置する
- プロジェクト名: OpenCodeApp
- 目的: OpenCode APIと連携するmacOSメニューバーアプリケーション
- プラットフォーム: macOS 14+
- 言語: Swift 5.9+
- アーキテクチャ: MVVMパターン
- 型安全性を重視する
- ARCによる適切なメモリ管理
- 非同期処理にはasync/awaitを使用
- UI操作は@MainActorで実行
- 単一責任の原則: 各クラス/構造体は一つの責任を持つ
- 依存関係逆転の原則: 上位モジュールは下位モジュールに依存しない
- インターフェース分離の原則: 不要なメソッドを含まないインターフェースを使用
- すべてのエラーは適切に処理する
- ユーザーに分かりやすいエラーメッセージを表示
- ログには詳細なエラー情報を記録
-
コード品質(最優先)
- すべての警告とエラーは、現在のタスクに関連するかどうかにかかわらず、最優先で修正する
- コードレビューの指摘事項の修正
- Lint警告の修正(SwiftLint、swift-format)
- コンパイラ警告の修正
-
機能の実装
- スクリーンショット取得機能
- メッセージ送受信機能
- セッション管理機能
-
バグ修正
- 既存のバグの修正
- 堕落防止
-
ドキュメントの更新
- コードコメントの追加/更新
- READMEの更新
- CHANGELOGの更新
-
テストの追加
- ユニットテスト
- 統合テスト
-
リファクタリング
- コードの改善
- パフォーマンスの最適化
-
機能拡張
- 新しい機能の追加
- UIの改善
-
ツールの更新
- 依存関係の更新
- ビルドツールの更新
- 新機能の実装
- バグ修正
- コードの改善
タスクの実装時に以下を確認:
- 既存のコードを壊していないか
- エラーハンドリングが適切か
- テストがパスするか(テストがある場合)
- ドキュメントを更新したか
- READMEの更新
- ドキュメントの追加/更新
- コードコメントの追加
ドキュメントの更新時に以下を確認:
- 情報が正確か
- 最新の状態を反映しているか
- 説明が分かりやすいか
- 依存関係の更新
- バグ修正
- セキュリティパッチの適用
- Swift API Design Guidelinesに準拠
- SwiftLintのルールに従う
- 適切なアクセス修飾子を使用
- SwiftLint:
.swiftlint.ymlを使用し./Scripts/lint.shで実行 - swift-format:
.swift-formatを使用し./Scripts/format.shで実行 - 重要: 静的解析(SwiftLint、swift-format、コンパイラ)のすべての警告とエラーは必須で修正する
- クラス/構造体: PascalCase
- メソッド/プロパティ: camelCase
- 定数: lowerCamelCase
- 列挙型: PascalCase
- 日本語で記述
- 複雑なロジックには説明を追加
- 公開APIにはドキュメントコメントを追加
main: 安定版develop: 開発版feature/*: 新機能bugfix/*: バグ修正hotfix/*: 緊急修正
- セマンティックコミットメッセージを使用
- 日本語で記述
- pre-commit:
.githooks/pre-commit - 設定:
git config core.hooksPath .githooks
例:
feat(api): スクリーンショット送信機能を追加
- ScreenshotCaptureサービスを実装
- Base64エンコードロジックを追加
Closes #123
- ユニットテストの追加を推奨
- 統合テストの実装を検討
- 手動テストの手順をドキュメント化
- 目標カバレッジ: 80%以上
- 重要な機能は100%カバレッジを目指す
- README: プロジェクトの概要とクイックスタート
- ARCHITECTURE: アーキテクチャと設計
- INSTALLATION: インストール手順
- CONFIGURATION: 設定方法
- USAGE: 使用方法
- DEVELOPMENT: 開発ガイド
- 機能追加時は必ず更新
- API変更時は更新
- 構造変更時は更新
- APIキーは
.config.jsonに保存 .config.jsonは.gitignoreに含める- 決してAPIキーをコミットしない
- セキュリティに関連する変更は慎重にレビュー
- 外部入力の検証を徹底
- HTTPSを使用
- ARCによる適切なメモリ管理
- 強参照循環を回避
- 不要なリソースを解放
- タイムアウトを設定
- エラーハンドリングを実装
- リトライロジックを検討
-
CGWindowListCreateImageはmacOS 14で非推奨
- 将来的にScreenCaptureKitへの移行が必要
-
ユニットテストが実装されていない
- 優先度: 中
- 計画: 次のマイナーバージョン
- 複数ディスプレイ対応不完全
- 自動更新機能未実装
以下の機能は実装済みでドキュメントされています:
- グローバルキーボードショートカット(Cmd+Shift+O, Cmd+Shift+I)
- メニューバーの右クリックコンテキストメニュー
- フローティングチャットウィンドウ
- 入力ランチャー
- ウィンドウ管理システム
- ScreenCaptureKitへの移行
- ユニットテストの追加
- 複数ディスプレイの完全対応
- 複数セッションの管理
- セッション履歴の保存
- 自動更新機能
- プラグインシステム
- テーマのカスタマイズ
- GitHub Issuesを使用
- バグの再現手順を含める
- ログファイルを添付
- GitHub Issuesを使用
- ユースケースを説明
- ユースケースの例を提供
- プライベートな方法で報告
- 詳細な情報を提供
この設定はプロジェクトの進捗に合わせて更新されます。