commit 103cb7080ab78517fb736dbc255f0389b2bd5703 Author: Zhongwei Li Date: Sun Nov 30 08:40:09 2025 +0800 Initial commit diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..92604f4 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "mh4gf", + "description": "MH4GF's reusable Claude Code commands for workflow automation", + "version": "0.1.0", + "author": { + "name": "MH4GF" + }, + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a226b06 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# mh4gf + +MH4GF's reusable Claude Code commands for workflow automation diff --git a/commands/compact-docs.md b/commands/compact-docs.md new file mode 100644 index 0000000..5ec88ac --- /dev/null +++ b/commands/compact-docs.md @@ -0,0 +1,56 @@ +--- +description: ドキュメントの冗長性を削減し、明瞭性を向上させる圧縮コマンド +allowed-tools: Read, Edit +--- + +## タスク: ドキュメントの圧縮と最適化 + +### 入力 +`$ARGUMENTS` - 圧縮対象のマークダウンファイルのパス + +### 処理フロー + +1. **対象ドキュメントの読み込みと分析** + - 全体構造とコンテンツを把握 + - セクション間の関係性を理解 + +2. **圧縮テクニックの適用** + + **A. 重複情報の削減** + - セクション間で繰り返される内容を特定 + - 重複を相互参照に変換(例: 「詳細はXセクションを参照」) + - 同じ概念の異なる表現を統一 + + **B. 冗長な説明の簡潔化** + - 長文を箇条書きに変換 + - 過度な詳細を要約し、重要な情報は保持 + - 情報の意味を損なわず情報密度を向上 + - 詳細な説明よりも簡潔で明確な表現を優先 + + **C. 矛盾の検出** + - セクション間の不整合を特定 + - 矛盾する記述や情報を報告 + - 内容の不整合を指摘(自動修正はしない) + + **D. 経緯情報の削除** + - 変更履歴や更新日時の記述を削除 + - 「〜を追加しました」「〜に変更しました」などの履歴的記述を削除 + - gitで経緯を追えるため、ドキュメント内に履歴情報は不要 + +3. **圧縮レポートの生成** + 以下を含める: + - 適用した圧縮技術と具体例 + - 圧縮前後の行数と削減率 + - 検出された矛盾(あれば) + - 推奨される次のアクション(必要に応じて) + +### ガイドライン + +- **意味を保持** - 簡潔さのために情報品質を犠牲にしない +- **構造を維持** - 元のドキュメントの構成を保つ +- **明示的に** - 何を変更したか、なぜ変更したかを示す +- **矛盾は自動修正しない** - 手動レビューのために報告する + +### 出力形式 + +まず圧縮レポートを表示し、その後ファイルに編集を適用する。 diff --git a/commands/ts-review.md b/commands/ts-review.md new file mode 100644 index 0000000..1913c28 --- /dev/null +++ b/commands/ts-review.md @@ -0,0 +1,165 @@ +--- +description: 拡張思考を用いた包括的なコードレビュー +argument-hint: [PR番号 | ファイルパス | (空欄で全変更)] +--- + +あなたはソフトウェアアーキテクチャ、テスト原則、コード品質について深い理解を持つエキスパートコードレビュアーです。フィードバックを提供する前に、**拡張思考**を使ってコードを徹底的に分析してください。 + +## レビューモードの検出 + +引数に基づいてレビューモードを判定します: +- `$ARGUMENTS` が数値の場合 → **PRレビューモード**: `!gh pr view $ARGUMENTS` と `!gh pr diff $ARGUMENTS` を使用 +- `$ARGUMENTS` が空の場合 → **全変更モード**: `!git diff` を使用 +- `$ARGUMENTS` がファイルパスの場合 → **ファイルレビューモード**: `!git diff $ARGUMENTS` を使用 + +## プロジェクトのコンテキスト把握 + +レビューを開始する前に、以下のソースからプロジェクトのコンテキストを把握してください: +- **CLAUDE.md**: プロジェクト固有のコーディング原則やアーキテクチャ方針 +- **package.json**: 使用している技術スタック、利用可能なスクリプトコマンド +- **README.md**: プロジェクトの目的、セットアップ方法、開発ワークフロー +- **既存のコード**: コーディングスタイル、命名規則、パターン + +## レビュー基準 + +### コア原則 (CLAUDE.mdより) +- **Less is More(少ない方が良い)**: 実装は小さく明白に保つ +- **コードに語らせる**: 複数段落のコメントが必要なら、意図が明白になるまでリファクタリング +- **シンプル > 賢い**: 明確なコードは賢いコードに勝る +- **無慈悲に削除**: 明確な価値を追加しないものはすべて削除 + +### TypeScriptのベストプラクティス(該当する場合) +- 型安全性(`any`を避け、適切なインターフェースを使用) +- 適切なエラーハンドリング(型付きエラー、Result型) +- 明確な関数シグネチャ +- TypeScript機能の適切な使用 + +### テスト品質 (Khorivkovの4つの柱) +テストをレビューする際は、以下に対して評価します: +1. **リグレッションに対する保護**: 実際のバグを捕捉できるか? +2. **リファクタリングへの耐性**: 実装ではなく振る舞いをテストしているか? +3. **高速なフィードバック**: 実行時間は速いか? +4. **保守性**: 読みやすく理解しやすいか? + +追加のテスト基準: +- **AAAパターン**: Arrange、Act、Assertが明確に分離されている +- **統合テスト優先**: モックよりも実際の依存関係を優先 +- **外部のみモック**: ネットワーク、低速な操作、時刻/日付のみモック +- **実装より振る舞い**: 内部ではなく、入出力をテスト +- **1テスト1アサーション**(実用的な場合) + +## 分析プロセス(拡張思考を使用) + +以下について深く考察します: +1. **アーキテクチャ**: これは全体設計に適合しているか?アーキテクチャ上の懸念はないか? +2. **エッジケース**: 何が問題になる可能性があるか?どのような入力がこれを壊すか? +3. **パフォーマンス**: 非効率性はないか?より良いアルゴリズムはあるか? +4. **保守性**: 6ヶ月後も理解しやすいか? +5. **セキュリティ**: 脆弱性はないか?入力検証が必要か? +6. **テスト**: テストは包括的か?Khorivkovの原則に従っているか? +7. **シンプルさ**: これはもっとシンプルにできるか?不要な複雑さはないか? + +## 出力フォーマット + +**言語設定**: レビューの出力は **すべて日本語** で行ってください。 + +以下のセクションで構造化されたレビューを提供してください: + +### 📋 概要 +- 変更内容の簡単な要約 +- 全体的な評価(問題なし / 改善が必要 / 問題あり) + +### 🏗️ アーキテクチャとデザイン +- 高レベルの設計決定 +- プロジェクトアーキテクチャとの整合性 +- 潜在的なアーキテクチャ上の懸念 + +### ✨ コード品質 +- スタイルと可読性 +- 言語固有のベストプラクティスへの準拠 +- "Less is More" 原則への準拠 +- 具体的な改善点 + +### 🧪 テスト戦略(テストが含まれる場合) +- Khorivkovの4つの柱に対する評価 +- テストカバレッジの評価 +- AAAパターンの使用 +- モック戦略(適切か?) +- テスト改善の提案 + +### 💡 具体的な提案 +各提案を以下の形式で記述: +``` +[優先度: 高/中/低] +**場所**: file_path:line_number +**問題**: 問題の説明 +**提案**: 該当する場合はコード例を含む具体的な改善策 +**理由**: これが重要な理由 +``` + +### 🔒 セキュリティとパフォーマンス +- セキュリティ脆弱性 +- パフォーマンスのボトルネック +- 外部APIのレート制限考慮(該当する場合) +- リソース管理 + +### ✅ まとめ +- 主な強み +- クリティカルな問題(もしあれば) +- 優先順位付けされたアクション項目 + +--- + +**手順**: +1. 検出されたモードを使用してレビューするコードを収集 +2. プロジェクトのコンテキスト(CLAUDE.md、package.jsonなど)を確認 +3. 拡張思考を使用して徹底的に分析 +4. プロジェクト固有の基準とこのレビュー基準を適用 +5. 例を含む実行可能で具体的なフィードバックを提供 +6. 建設的でありながら正直に - 実際の問題を指摘 +7. 現在の機能性と将来の保守性の両方を考慮 + +## レビュー完了後のアクション + +レビューレポートを提供した後、**自動的に修正作業を開始してください**: + +### 1. 修正タスクの作成 +- TodoWriteツールを使用して、レビューで指摘したすべての問題を修正タスクとして登録 +- 優先度(高/中/低)を明確に設定 +- 各タスクには具体的な修正内容を記載 + +### 2. 修正作業の実施 +以下の順序で修正を進めます: +- **優先度High**: クリティカルな問題から着手 +- **優先度Medium**: 重要だが緊急ではない問題 +- **優先度Low**: 細かい改善点 + +各修正について: +- タスクを `in_progress` に変更してから作業開始 +- 該当ファイルを編集(Editツール使用) +- 修正完了後、タスクを `completed` にマーク +- 次のタスクに進む + +### 3. テストの実行 +修正作業中は適宜テストを実行: +- package.jsonの `test` スクリプトがある場合は実行 +- リンター/フォーマッター(`lint`, `check`, `format`など)がある場合は実行 +- ビルドスクリプト(`build`)がある場合は実行 +- プロジェクト固有のチェックコマンドがあれば実行 + +### 4. 修正の方針 +- **段階的な修正**: 1つの問題を完全に修正してから次へ +- **明確な説明**: 各修正で何を変更したかを簡潔に説明 +- **テストの維持**: 既存のテストが壊れないよう注意 +- **破壊的変更の場合**: 特に慎重に対応し、必要に応じてユーザーに確認 + - 例: 公開APIの変更、関数シグネチャの変更、既存テストの削除、データ構造の変更 + +### 5. 修正完了後の報告 +すべての修正タスクが完了したら: +- 修正内容の要約を提供 +- テスト結果を共有 +- 残っている課題や今後の改善提案があれば言及 + +--- + +Review: $ARGUMENTS diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..d66097a --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,49 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:MH4GF/shared-config:.claude-plugins/mh4gf", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "ee41d75a8b35f1e20e9f807c1f8b4ece18d3cdfa", + "treeHash": "c93792c9e4203804a3f8ca1e59513f7794a53cee7c269c7409a5ca3d8899e19c", + "generatedAt": "2025-11-28T10:12:03.533163Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "mh4gf", + "description": "MH4GF's reusable Claude Code commands for workflow automation", + "version": "0.1.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "e6d8f90e00134c221a91a4f388ab176691b6379134d8119a70354d958d9732a9" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "c8fd0fa02b887d520a37dd487368e55e8fc29431e330e4dbeee673ca8ebb6038" + }, + { + "path": "commands/ts-review.md", + "sha256": "14cd8b39eb77b264460d0aca43e9596789d8973376f9a9896f3c4d34b5384275" + }, + { + "path": "commands/compact-docs.md", + "sha256": "50b9229ae091d4fafe2022c4c01d814d46c36191561a7bbd194ae6c04bbccfbd" + } + ], + "dirSha256": "c93792c9e4203804a3f8ca1e59513f7794a53cee7c269c7409a5ca3d8899e19c" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file