← ClaudeAtlas

commitlisted

Analyze conversation history to extract "Why" for commit message, fallback to "How" if no Why found. Use when user says "commit", "コミット", or "コミットして"
trapple/skills · ★ 0 · Code & Development · score 68
Install: claude install-skill trapple/skills
# commit - 会話履歴ベースのコミット 会話履歴からWhyを探し出し、意味のあるコミットメッセージを生成してコミットする。 ## 手順 1. `git status` と `git diff` を実行し、変更内容を把握する 2. `git log --oneline -5` で直近のコミットスタイルを確認する 3. **会話履歴を分析**して、Whyを抽出する ### Why の抽出と分割 **Whyが複数ある場合はコミットを分ける。** - 会話履歴を遡り、ユーザーの目的・動機・課題をすべて列挙する - 異なるWhyに対応する変更は、別々のコミットに分割する - 各コミットには、そのWhyに関連するファイルだけをステージする - 例: 「バグ修正」と「新機能追加」が混在 → 2つのコミットに分ける **Whyが1つ、またはWhyが見つからない場合は1コミット。** ### メッセージ組み立てルール **優先度1: Why(なぜこの変更をしたか)** - ユーザーが最初に伝えた目的・動機・課題を探す - 例: 「バグで○○が動かない」→ `fix: ○○が動作しない問題を修正` - 例: 「パフォーマンスが遅い」→ `perf: ○○のパフォーマンスを改善` **優先度2: How(何をどう変えたか)** - Whyが見つからない場合のフォールバック - 変更内容を簡潔にまとめる - 例: `refactor: ○○のロジックをシンプルに書き換え` ### WhyとHowの判定ガイド メッセージがHowになっていないか、以下の例で確認する。 | NG(How: 手段を述べている) | OK(Why: 目的・動機を述べている) | |---|---| | `コメント追加` | `各プロパティの意味を明確化` | | `関数名変更` | `命名規則を統一` | | `ファイル分割` | `責務ごとに管理しやすくする` | | `型定義を追加` | `型安全性を向上` | | `テストを追加` | `リグレッションを防止` | **判定のコツ**: 「何をしたか」ではなく「なぜそうしたか」が伝わるかを自問する。 ### メッセージフォーマット - 1行目: 簡潔な要約(日本語OK、70文字以内) - Conventional Commits形式のprefixを付ける(feat, fix, refactor, chore, docs, perf, test) - Whyが抽出できた場合: 3行目にWhyを記載する(2行目は空行) - Whyが見つからない場合: 1行目のみでOK ``` feat: ○○機能を追加 ユーザーから○○できないという要望があったため ``` 4. コミット計画をユーザーに提示し、確認を取る - 分割する場合: 各コミットの対象ファイルとメッセージを一覧表示 - 単一の場合: メッセージのみ表示 5. 承認されたら、各コミットを順番に実行する - 対象ファイルを `git add` する(.env等の機密ファイルは除外) - `git commit` を実行する(HEREDOCでメッセージを渡す) 6. コミット結果を報告する