Reg Commit Flat (Register & Commit - Flat)
差分からIssueを作成してプロジェクトに登録し、ファイル単位・機能単位で複数のコミットに分けてGitフローを実行する省略形スキルです。
フロー: analyze-diff → project-mgmt → 複数のコミット → Gitフロー
重要: サブイシューは作成しません。1つのIssueに対して、複数のコミットを行います。巻き戻しやすいよう、変更はファイル単位・機能単位で細かくコミットします。
reg-commit との違い
| スキル | 構造 | コミット | 用途 |
|---|---|---|---|
| reg-commit | 親Issue + サブイシュー | サブイシューごとに分割 | 大規模な変更、複数の独立した機能、各機能ごとにレビューを受けたい |
| reg-commit-flat | 単一Issueのみ | ファイル単位・機能単位で複数コミット | 小〜中規模の変更、単一の機能改善、巻き戻しを重視 |
使い方
/reg-commit-flat
ワークフロー
┌─────────────────────────────────────────────────────────────┐
│ 1. analyze-diff モジュール │
│ - 現在の差分を解析(git status, git diff) │
│ - タスク分割案の作成 │
├─────────────────────────────────────────────────────────────┤
│ 2. project-mgmt モジュール │
│ - 単一Issueを作成(サブイシューなし) │
│ - マイルストーンの取得・設定(あれば) │
│ - プロジェクトへの追加 │
│ - ステータス設定(Done) │
│ - 日付設定 │
├─────────────────────────────────────────────────────────────┤
│ 3. ブランチ作成 │
│ - develop からフィーチャーブランチを作成 │
│ - ブランチ名: feature/<description>-<issue_number> │
├─────────────────────────────────────────────────────────────┤
│ 4. コミット │
│ - ファイル単位・機能単位で複数のコミットに分ける │
│ - 巻き戻しやすいよう、細かくコミットする │
│ - すべてのコミットメッセージにIssue番号を含める │
├─────────────────────────────────────────────────────────────┤
│ 5. Gitフロー(repo-flow モジュール) │
│ - プッシュ │
│ - PR 作成 │
│ - develop へマージ │
│ - クリーンアップ │
└─────────────────────────────────────────────────────────────┘
実行手順
1. 差分解析
# 現在の差分を確認
git status
git diff --stat
# 変更の詳細を確認
git diff
2. Issue 作成(単一)
サブイシューを作成せず、1つのIssueのみを作成します。
gh issue create \
--title "✨ feat: 機能改善のタイトル" \
--body "## 概要
変更内容の概要を記述。
## 変更内容
- 変更1
- 変更2
- 変更3
## テスト
- [ ] テスト項目1
- [ ] テスト項目2" \
--label "enhancement"
3. マイルストーンの取得・設定(あれば)
# マイルストーン一覧を取得
gh api /repos/OWNER/REPO/milestones
# 出力例:
# [
# {
# "number": 1,
# "title": "v0.1.0",
# "state": "open",
# "due_on": "2026-01-31T23:59:59Z"
# },
# {
# "number": 2,
# "title": "v0.2.0",
# "state": "open"
# }
# ]
# マイルストーンがある場合、Issueにアタッチ
gh api --method PATCH /repos/OWNER/REPO/issues/ISSUE_NUMBER \
-f milestone=MILESTONE_NUMBER
# 例: v0.1.0(milestone: 1)をアタッチ
# gh api --method PATCH /repos/OWNER/REPO/issues/25 -f milestone=1
注意: マイルストーンがない場合は、この手順をスキップして進めてください。
4. プロジェクトに追加
gh project item-add PROJECT_NUMBER \
--url "https://github.com/OWNER/REPO/issues/ISSUE_NUMBER" \
--owner OWNER
5. ステータスと日付の設定
# ステータスを Done に設定
gh project item-edit \
--project-id PROJECT_GLOBAL_ID \
--id ITEM_ID \
--field-id STATUS_FIELD_ID \
--single-select-option-id DONE_OPTION_ID
# 日付を設定
gh project item-edit \
--project-id PROJECT_GLOBAL_ID \
--id ITEM_ID \
--field-id START_DATE_FIELD_ID \
--date "YYYY-MM-DD"
gh project item-edit \
--project-id PROJECT_GLOBAL_ID \
--id ITEM_ID \
--field-id END_DATE_FIELD_ID \
--date "YYYY-MM-DD"
6. ブランチ作成
重要: コミットする前に、develop からフィーチャーブランチを作成します。
# develop に切り替え
git checkout develop 2>/dev/null || git checkout main
git pull
# フィーチャーブランチを作成
# ブランチ名: feature/<description>-<issue_number>
git checkout -b feature/docs-update-25
# 例:
# - feature/docs-update-25
# - feature/add-auth-system-42
# - feature/fix-login-bug-17
ブランチ名の決め方:
- Issueのタイトルや内容から簡潔な説明を抽出
- 英語の小文字とハイフンを使用
- 末尾にIssue番号を付ける
7. コミット(ファイル単位・機能単位で分割)
重要: 変更はファイル単位・機能単位で細かくコミットし、巻き戻しやすくします。
Issue番号が判明している場合: すべてのコミットメッセージにIssue番号を付けてください。
# ファイル1
git add path/to/file1.ext
git commit -m "✨ feat: 機能1の追加 (#ISSUE_NUMBER)
- 変更内容の詳細
Co-Authored-By: Claude <noreply@anthropic.com>"
# ファイル2
git add path/to/file2.ext
git commit -m "🐛 fix: バグの修正 (#ISSUE_NUMBER)
- 修正内容の詳細
Co-Authored-By: Claude <noreply@anthropic.com>"
# ファイル3
git add path/to/file3.ext
git commit -m "📚 docs: ドキュメント更新 (#ISSUE_NUMBER)
- 更新内容の詳細
Co-Authored-By: Claude <noreply@anthropic.com>"
# 最後のコミットに Closes キーワードを含める(自動クローズ用)
git add path/to/last-file.ext
git commit -m "🔧 chore: 設定ファイルの追加 (#ISSUE_NUMBER)
Closes #ISSUE_NUMBER
Co-Authored-By: Claude <noreply@anthropic.com>"
コミットの粒度:
- 1ファイル = 1コミット(基本)
- 関連する変更はまとめてOK
- すべてのコミットにIssue番号を付ける(例:
#25) - 最後のコミットに
Closes #番号を含める(自動クローズ用)
8. Gitフロー
repo-flow モジュールを実行して、プッシュ・PR作成・マージを行います。
重要: マージ方法は merge commit(--merge) を使用します。複数のコミットを保持したままマージするため、--squash は使用しません。
# プッシュ
git push -u origin feature/<name>
# PR 作成
gh pr create --base develop \
--title "タイトル" \
--body "PRボディ"
# マージ(merge commit を作成)
gh pr merge PR_NUMBER --merge --delete-branch=false
実例
シナリオ: ドキュメントを更新する場合
# 1. 差分を解析
git status
# 変更ファイル: README.md, CONTRIBUTING.md, docs/api.md
# 2. Issue 作成(単一)
gh issue create \
--title "📚 docs: ドキュメントの更新と整備" \
--body "## 概要
README、CONTRIBUTING、APIドキュメントを更新します。
## 変更内容
- README.md: インストール手順の更新
- CONTRIBUTING.md: 開発環境設定の追加
- docs/api.md: API仕様の最新化
## テスト
- [ ] リンク切れの確認
- [ ] 誤字脱字のチェック" \
--label "documentation"
# 出力: https://github.com/owner/repo/issues/25
# 3. マイルストーンの取得・設定(あれば)
gh api /repos/OWNER/REPO/milestones
# 出力例にマイルストーンがある場合、アタッチ
# 例: v0.1.0(milestone: 1)をアタッチ
gh api --method PATCH /repos/OWNER/REPO/issues/25 -f milestone=1
# 4. プロジェクトに追加・ステータス設定
gh project item-add 2 --owner OWNER \
--url "https://github.com/owner/repo/issues/25"
# ステータスを Done に
gh project item-edit \
--project-id PVT_kwXXX \
--id PVTI_XXX \
--field-id PVTSSF_XXX \
--single-select-option-id 98236657 # Done
# 5. ブランチ作成
git checkout develop
git pull
git checkout -b feature/docs-update-25
# 6. ファイル単位でコミット(複数)
# README.md
git add README.md
git commit -m "📚 docs(readme): インストール手順を最新化 (#25)
Node.js v20+ の要件を明記し、手順を更新しました。
Co-Authored-By: Claude <noreply@anthropic.com>"
# CONTRIBUTING.md
git add CONTRIBUTING.md
git commit -m "📚 docs(contributing): 開発環境設定手順を追加 (#25)
Docker Desktop を使用した開発環境のセットアップ手順を追加しました。
Co-Authored-By: Claude <noreply@anthropic.com>"
# docs/api.md(最後のコミットに Closes を含める)
git add docs/api.md
git commit -m "📚 docs(api): API仕様をv2.0.0に更新 (#25)
エンドポイントの追加と廃止を反映しました。
Closes #25
Co-Authored-By: Claude <noreply@anthropic.com>"
# 7. Gitフロー(repo-flow)
git push -u origin feature/docs-update-25
gh pr create --base develop \
--title "📚 docs: ドキュメントの更新と整備" \
--body "## 概要
ドキュメントを一括更新しました。
## 変更内容
- README.md: インストール手順を最新化
- CONTRIBUTING.md: 開発環境設定手順を追加
- docs/api.md: API仕様をv2.0.0に更新
Closes #25
Co-Authored-By: Claude <noreply@anthropic.com>"
# PRをマージ(merge commit を作成)
gh pr merge 30 --merge --delete-branch=false
# develop に切り替えて最新を取得
git checkout develop
git pull
# クリーンアップ
git branch -d feature/docs-update-25
git push origin --delete feature/docs-update-25
使用するタイミング
reg-commit-flat を使うべき時:
- 小〜中規模の変更(1〜5ファイル)
- 単一の機能改善やバグ修正
- ドキュメント更新
- 設定ファイルの変更
- サブイシューに分けるほどの複雑さがない
reg-commit を使うべき時:
- 大規模な変更(6ファイル以上)
- 複数の独立した機能
- 各機能ごとにレビューを受けたい
- 複数人で並行して開発する
注意点
- サブイシューは作成しない: 単一のIssueのみ作成します
- コミットは細かく分ける: ファイル単位・機能単位でコミットし、巻き戻しやすくします
- すべてのコミットにIssue番号を付ける: Issue番号が判明していれば、すべてのコミットメッセージに
#番号を付けてください(例:#25) - 最後のコミットに Closes:
Closes #番号を含めると自動的にIssueがクローズされます
詳細
このスキルは以下のモジュールを組み合わせたものです:
- .claude/skills/analyze-diff/SKILL.md - 差分解析 → タスク分割
- .claude/skills/project-mgmt/SKILL.md - プロジェクト追加・ステータス設定・日付設定
- .claude/skills/repo-flow/SKILL.md - ブランチ作成・コミット・プッシュ・PR・マージ
関連スキル
| スキル | 用途 |
|---|---|
| reg-commit | サブイシューごとにコミットするパターン(大規模変更用) |
| reg-issue | 計画からIssueを作成 + プロジェクトに登録(plan + project-mgmt) |
| repo-flow | Gitフロー(ブランチ作成・PR・マージ) |
| repo-manager | 全モジュールを組み合わせたタスク管理 |