From dev
ローカルの変更差分を分析し、実装意図 (Why) を説明するコメントをコードに追加する。Use when 変更にコメントを付けたい、Why コメントを追加したい、実装意図をコメントしたい際に使用する。
How this skill is triggered — by the user, by Claude, or both
Slash command
/dev:commentThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
ローカルの変更差分 (staged + unstaged) を分析し、「なぜそうしているのか (Why)」を説明するコメントをコードに直接追加する。
ローカルの変更差分 (staged + unstaged) を分析し、「なぜそうしているのか (Why)」を説明するコメントをコードに直接追加する。
変更ファイルが 3 つ以上、または差分が大きい場合は TaskCreate ツールでステップを管理する。小規模な変更の場合はタスク登録なしで直接実行する。
タスク登録する場合は、まず TaskList で残存タスクを確認し、存在する場合は全て TaskUpdate({ status: "deleted" }) で削除する。
タスク登録する場合の例:
TaskCreate({ subject: "変更差分の取得", description: "git diff HEAD で全変更を取得し、変更ファイルを特定", activeForm: "差分を取得中" })
TaskCreate({ subject: "差分の分析とコメント箇所の特定", description: "各変更について Why コメントが必要な箇所を特定", activeForm: "差分を分析中" })
TaskCreate({ subject: "コメントの追加", description: "特定した箇所にコメントを追加", activeForm: "コメントを追加中" })
TaskCreate({ subject: "完了報告", description: "追加したコメントのサマリを報告", activeForm: "完了報告を作成中" })
各ステップの開始時に TaskUpdate で in_progress に、完了時に completed に更新する。
staged と unstaged の両方の変更を取得する:
# 変更ファイル一覧
git diff HEAD --name-only
# 全変更 (staged + unstaged)
git diff HEAD
変更がない場合は「変更がありません」と報告して終了する。
各変更ファイルについて以下を行う:
// ユーザー名を取得 等)// リストをソートする 等)変更の意図が差分やコンテキストから判断できない場合、推測でコメントを書かず AskUserQuestion で確認する。
確認の例:
src/api/handler.ts:42 でリトライ回数を 3 から 5 に変更していますが、この変更の意図を教えてください。」変更箇所ごとに個別に質問するのではなく、意図が不明な箇所をまとめて 1 回で確認する。確認結果を基にコメントを作成する。
Edit ツールで対象ファイルにコメントを直接追加する。
コメントの配置:
コメント形式の決定:
| 言語 | 単行コメント | 複数行・補足 | 関数/クラスの説明 |
|---|---|---|---|
| TypeScript/JavaScript | // | // を複数行 | JSDoc (/** */) は既存に合わせる場合のみ |
| Python | # | # を複数行 | docstring は既存に合わせる場合のみ |
| Go | // | // を複数行 | godoc 形式は既存に合わせる場合のみ |
| Rust | // | // を複数行 | /// doc comment は既存に合わせる場合のみ |
| Ruby | # | # を複数行 | YARD は既存に合わせる場合のみ |
| Shell | # | # を複数行 | - |
| CSS | /* */ | /* */ | - |
| SCSS | // | /* */ | - |
| HTML | <!-- --> | <!-- --> | - |
| SQL | -- | -- を複数行 | - |
| Swift | // | // を複数行 | /// doc comment は既存に合わせる場合のみ |
| Dart | // | // を複数行 | /// doc comment は既存に合わせる場合のみ |
| Kotlin/Java | // | // を複数行 | KDoc/Javadoc は既存に合わせる場合のみ |
コメント例 (良い例):
// 外部 API が RFC 3339 形式を要求するため、Date ではなく文字列で保持
const createdAt: string = response.created_at;
# バッチサイズを 100 に制限 - DB コネクションプールの上限が 100 のため
BATCH_SIZE = 100
// nil チェックを先に行う - gRPC のレスポンスで nil が返るケースが本番で確認されたため
if resp == nil {
return ErrNilResponse
}
// デフォルトの Ord 実装では NaN の比較で panic するため、partial_cmp を使用
items.sort_by(|a, b| a.score.partial_cmp(&b.score).unwrap_or(Ordering::Equal));
コメント例 (悪い例 - 絶対に書かない):
// createdAt を文字列として宣言
const createdAt: string = response.created_at;
# バッチサイズを定義
BATCH_SIZE = 100
追加したコメントのサマリを報告する:
## コメント追加完了
| ファイル | 追加数 | 内容 |
| ------------------ | ------ | ------------------------------------------------ |
| src/api/handler.ts | 2 | リトライポリシー変更理由、エラーハンドリング意図 |
| src/utils/date.ts | 1 | 日付フォーマット選択理由 |
**合計:** 3 件のコメントを追加
変更ファイルが多数の場合、主要なロジック変更に絞ってコメントを追加する。設定ファイルやテストファイル、自動生成コードは対象外とする。
差分を分析した結果、コメントが不要と判断した場合は:
変更内容を分析しましたが、追加のコメントは不要です。
理由:
- 変更がコードから明確に読み取れる
- 既存のコメントで十分にカバーされている
git diff が失敗した場合は「Git リポジトリ内で実行してください」と案内して終了する。
対象ファイルが読み込めない場合はスキップし、完了報告で明記する。
npx claudepluginhub ronnnnn/cc --plugin devCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.