specsfy-specialist-gitflow について
Gitflowの採用を明示しているプロジェクト向けのブランチ運用スキルです。ブランチ命名、マージ、リリースタグ、ブランチサイクルの終了を案内し、リポジトリ構成だけから採用を推測しません。
主な機能
- 01Gitflowの明示的な採用確認
- 02常設ブランチと命名プレフィックスの定義
- 03feature、release、hotfixの運用案内
- 04追跡可能なno-fast-forwardマージ
- 05リリースタグと戻しマージの確認
活用シーン
- 01Gitflowプロジェクトでのfeatureブランチ命名と統合
- 02releaseブランチの準備と終了
- 03hotfixのmainおよびdevelopへの反映
- 04ブランチ方針とリリース履歴の検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ promovaweb/ specsfy --skill specsfy-specialist-gitflowインストール後、Claude Code で/specsfy-specialist-gitflowを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlreferences/standards.md
詳細
Gitflow
使用する場面
- ユーザーが Gitflow モデル(
main/master、develop、feature/*、release/*、hotfix/*ブランチ)を明示的に求めた場合、またはgit flowの設定(git config --get-regexp '^gitflow\.')がすでに存在する場合、あるいはプロジェクトの指示でその選択が宣言されている場合に使用します。 - Gitflow をブランチ戦略としてすでに宣言しているプロジェクト内で、
feature/、release/、hotfix/ブランチの命名、順序付け、または終了を行う場合にも使用します。 - Gitflow を求めていないプロジェクトに Gitflow を提案するためには使用しません。ブランチモデルの選択はプロジェクトを進行する人が明示的に決めるものであり、
developという名前のブランチが存在することや、オープン中のブランチ数から推測してはいけません。 - すでに進行中の競合(
$specsfy-specialist-merge-conflict-resolution)の解決や、環境間のパイプラインまたはアーティファクト昇格($specsfy-specialist-delivery-engineering)の設計には使用しません。ここで扱うのはブランチのトポロジーとポリシーであり、テキスト上の競合解決やデリバリーではありません。
フロー
- 慣例を適用する前に、ユーザーが Gitflow を明示的に求めたことを確認するか、その選択をすでに宣言している設定や指示を示します。リポジトリの構成から Gitflow を推測してはいけません。
- ブランチの実際の状態(
git branch -a、git config --get-regexp '^gitflow\.')を確認し、main/masterとdevelopがすでに存在するか、補助ブランチの命名が採用済みの標準と異なっていないかを把握します。 - 恒久ブランチの名前(本番用の
main、統合用のdevelop)と、短命ブランチのプレフィックス(該当する場合はfeature/、release/、hotfix/、support/)をユーザーと決めます。 - その決定をプロジェクトの確定ルールとして記録します(
$specsfy-aux-rulesが.specsfy/RULES.mdに記録します)。プレフィックス、各種ブランチのマージ先、マージポリシーを含め、慣例を口頭だけで済ませてはいけません。 - 各種ブランチの作成、統合、終了について案内します。
feature/*はdevelopから作成してdevelopに戻し、release/*はdevelopから作成してmainとdevelopにマージし、hotfix/*はmainから作成してmainとdevelopにマージします。いずれもmerge --no-ffを使用します。 release/*またはhotfix/*をmainにマージする際のバージョンタグ付けを調整し、プロジェクトですでに採用されているバージョン管理戦略(semver など)に合わせます。- サイクルを終了とみなす前に、
release/*またはhotfix/*で適用した修正がすべてdevelopに戻されていることを確認します。ここでの差異は次のリリースでのリグレッションとして再び現れます。
標準
feature/*、release/*、hotfix/*の統合にはすべてgit merge --no-ffを使用します。fast-forward マージでは、そのブランチが存在した記録が消えてしまい、Gitflow のリリース監査はその記録に依存しています。- 一貫したプレフィックスと同じ区切り文字をプロジェクト全体で使用します(
feature/<slug>、release/<versao>、hotfix/<versao-ou-slug>)。同じリポジトリ内でfeature-xとfeature/yのような慣例を混在させてはいけません。 release/*とhotfix/*は、対応するdevelopまたはmainのコミットから正確に作成し、まだ統合されていないコミットを選択的に cherry-pick してはいけません。release/*にはバグ修正、テキスト、ドキュメント、リリース準備(変更履歴、バージョン)のみを適用します。新機能は、すでに開かれているリリースブランチには追加せず、次のfeature/*に戻します。- すべての
hotfix/*は、同じ作業でmain(タグ付き)とdevelop(または、開いている場合はrelease/*)にマージして終了します。mainにしか届かない hotfix は、次のリリースに反映されません。 - 短命ブランチ(
feature/*、release/*、hotfix/*)は、両方のマージ先でマージが確認された後に削除します。終了したブランチを削除しないと、すでに統合されたコードに対する作業のやり直しを招きます。
アンチパターン
feature/、release/、hotfix/を経由せずにmain/developへ直接プッシュしたり、fast-forward マージしたりすると、よりシンプルなモデルではなく Gitflow を採用する根拠となる追跡可能性が損なわれます。- すでに開始した
release/*に「この機会に」と新機能を追加すると、リリースカット後にテスト対象の範囲が広がり、必要なくリリースが遅れます。 - hotfix を
mainにだけマージし、developを別の状態のままにすると、developから切った次のrelease/*で、本番環境ですでに修正済みのバグが再発します。 - 1日に何度も継続的デプロイを行うプロジェクトで Gitflow を採用すると、長期間存続する
release/hotfixブランチのオーバーヘッドが継続的デリバリーと相容れません。このような状況では、慣習で Gitflow を適用する前に、GitHub Flow と trunk-based のどちらが適しているかを担当者と検討してください。 - 「develop という名前のブランチがある」ことと「プロジェクトが Gitflow を使っている」ことを混同すると、マージポリシー、プレフィックス、リリースサイクルが完全に整っていない場合、単にその名前のブランチがあるだけで、Gitflow モデルを採用しているとは言えません。
検証
git log --graph --oneline --all(またはgit log --first-parent main)で、各feature/、release/、hotfix/の--no-ffマージが、判別可能なマージコミットとして表示され、見分けのつかない線形コミットになっていないことを確認します。- 寿命の短いブランチを削除する前に
git branch -a --merged developとgit branch -a --merged mainを確認し、想定される両方の宛先に実際にマージされていることを確かめます。 - 完了した各
release/*またはhotfix/*について、バージョンタグがmainに存在すること(git tag --contains <commit-do-merge>)と、同じ修正がdevelopに存在すること(git log develop --oneline | grep <commit>または同等の方法)を確認します。 .specsfy/RULES.md(または同等のプロジェクト指示)に命名規則とマージポリシーが記載されていることを確認し、違反があった場合は$specsfy-aux-rulesで見直します。developブランチがあるという理由だけで「プロジェクトは Gitflow に従っている」と宣言しないでください。根拠として、一貫したプレフィックス、追跡可能な--no-ffマージ、および両方の宛先で完了したrelease/hotfixサイクルが必要です。
関連するスキル
- 進行中の
feature/、release/、hotfix/の統合で競合が発生した場合は、$specsfy-specialist-merge-conflict-resolutionを使用します。このスキルはブランチのトポロジーとポリシーを決定し、もう一方のスキルはすでに発生しているテキスト上または意味上の競合を解決します。 mainへのマージやリリースタグをきっかけに、パイプライン、成果物のビルド、環境間の昇格を実行する必要がある場合は、$specsfy-specialist-delivery-engineeringを使用します。このスキルは適切なブランチとタグを用意し、もう一方のスキルはパイプラインの反応を決定します。
ブランチの全体像、Gitflow に相当する Git 純正のコマンド、およびモデルの公式情報源については、references/standards.md をお読みください。
コメント
Markdown 対応