Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:40:09 +08:00
commit 103cb7080a
5 changed files with 284 additions and 0 deletions

View File

@@ -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"
]
}

3
README.md Normal file
View File

@@ -0,0 +1,3 @@
# mh4gf
MH4GF's reusable Claude Code commands for workflow automation

56
commands/compact-docs.md Normal file
View File

@@ -0,0 +1,56 @@
---
description: ドキュメントの冗長性を削減し、明瞭性を向上させる圧縮コマンド
allowed-tools: Read, Edit
---
## タスク: ドキュメントの圧縮と最適化
### 入力
`$ARGUMENTS` - 圧縮対象のマークダウンファイルのパス
### 処理フロー
1. **対象ドキュメントの読み込みと分析**
- 全体構造とコンテンツを把握
- セクション間の関係性を理解
2. **圧縮テクニックの適用**
**A. 重複情報の削減**
- セクション間で繰り返される内容を特定
- 重複を相互参照に変換(例: 「詳細はXセクションを参照」
- 同じ概念の異なる表現を統一
**B. 冗長な説明の簡潔化**
- 長文を箇条書きに変換
- 過度な詳細を要約し、重要な情報は保持
- 情報の意味を損なわず情報密度を向上
- 詳細な説明よりも簡潔で明確な表現を優先
**C. 矛盾の検出**
- セクション間の不整合を特定
- 矛盾する記述や情報を報告
- 内容の不整合を指摘(自動修正はしない)
**D. 経緯情報の削除**
- 変更履歴や更新日時の記述を削除
- 「〜を追加しました」「〜に変更しました」などの履歴的記述を削除
- gitで経緯を追えるため、ドキュメント内に履歴情報は不要
3. **圧縮レポートの生成**
以下を含める:
- 適用した圧縮技術と具体例
- 圧縮前後の行数と削減率
- 検出された矛盾(あれば)
- 推奨される次のアクション(必要に応じて)
### ガイドライン
- **意味を保持** - 簡潔さのために情報品質を犠牲にしない
- **構造を維持** - 元のドキュメントの構成を保つ
- **明示的に** - 何を変更したか、なぜ変更したかを示す
- **矛盾は自動修正しない** - 手動レビューのために報告する
### 出力形式
まず圧縮レポートを表示し、その後ファイルに編集を適用する。

165
commands/ts-review.md Normal file
View File

@@ -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

49
plugin.lock.json Normal file
View File

@@ -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": []
}
}