stack-create について
順序のある複数段階の計画から Git ブランチを作成するスキルです。各ブランチを前の段階のブランチを基点として構成し、依存する変更を順番に進めます。
主な機能
- 01計画の各段階にブランチを作成
- 02前段階のブランチを基点に設定
- 03Git バージョンと jj の有無を確認
- 04ブランチ構成を検証
活用シーン
- 01依存関係のあるプルリクエストの準備
- 02データベース、API、UI 変更の順次構成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ athola/ claude-night-market --skill stack-createインストール後、Claude Code で/stack-createを入力して読み込まれたか確認します。
詳細
Stack Create
複数段階の計画から、積み重ね型のブランチセットを初期化します。 計画の各論理スライスは、ひとつ前のスライスのブランチを ベースとするブランチになります。
使用する場合
計画から、順序が決まっていて、各変更が完了(およびマージ)
してからでないと次の変更を取り込めない変更が2つ以上生じる
場合は、stack-createを使用します。
独立した変更には、代わりに並列ワークツリーを使用してください
(egregoreを参照)。
使用しない場合
- 通常のブランチを作成すべき、単独の独立した変更
- スタックがすでに存在し、公開する必要がある場合(
sanctum:stack-pushを使用)
前提条件
- Git 2.38+(確認するには
git version | awk '{print $3}'を実行) ghCLIで認証済みであること- スライスの順序が記載された計画(
do-issueまたはattune:blueprintによるもの) - ベースブランチ上の作業ツリーがクリーンであること(
git status)
進捗の追跡(必須)
開始前に進捗項目を作成します。
stack-create:git-version-checkedstack-create:slices-identifiedstack-create:branches-createdstack-create:stack-verified
ステップ1:Gitのバージョンを確認する(git-version-checked)
git version
出力が2.38.0以上であることを確認します。
そうでない場合、--update-refsフラグは使用できません。
ユーザーに警告し、手動でブランチを追跡する方法に切り替えます。
オプションのjjアクセラレーターを確認します。
if command -v jj &>/dev/null && jj root &>/dev/null 2>&1; then
echo "jj available"
else
echo "using git --update-refs"
fi
ステップ2:スライスを特定する(slices-identified)
計画を読み、順序付けられたスライスを抽出します。 各スライスは次の条件を満たす必要があります。
- 単一の論理的な関心事であること(PR 1件分の変更)
- ひとつ前のスライス(存在する場合)への明確な依存関係があること
- ブランチ名のサフィックスに適した短い名前であること
3つのパートからなる計画のスライス例:
Slice 1: add-schema -- database schema changes
Slice 2: add-api -- API layer (depends on schema)
Slice 3: add-ui -- frontend (depends on API)
ブランチを作成する前に、スライスの一覧を記録します。
ステップ3:ブランチを作成する(branches-created)
ベースブランチ(通常はmasterまたはmain)から開始します。
BASE=master
STACK=stack/my-feature
# Slice 1 branches from master
git checkout -b ${STACK}/add-schema ${BASE}
# Slice 2 branches from slice 1
git checkout -b ${STACK}/add-api ${STACK}/add-schema
# Slice 3 branches from slice 2
git checkout -b ${STACK}/add-ui ${STACK}/add-api
命名規則:stack/<feature-name>/<slice-name>
作業を開始するため、最初のスライスブランチに戻ります。
git checkout ${STACK}/add-schema
jjアクセラレーター(利用可能な場合)
# jj creates an empty commit on each branch automatically
# Use jj new to move to a new change
jj new -m "stack: add-schema" --no-edit
ステップ4:スタックを確認する(stack-verified)
ブランチのトポロジーが正しいことを確認します。
git log --oneline --graph \
${BASE}..${STACK}/add-ui
各スライスブランチが、ベースの上に直線状に連なることを確認します。
jjが利用可能な場合:
jj log --revisions \
"ancestors(${STACK}/add-ui, 10) & !ancestors(${BASE})"
メモ
- 各スライスに少なくとも1つのコミットができるまで、ブランチをプッシュしないでください(空のブランチは混乱を招くPRになります)
- ブランチ内のスライス名は、慣例としてPRタイトルのプレフィックスになります。短く、内容が分かる名前にしてください
- スタックの作成後は、
stack-pushに進んでPRを作成するか、スライスごとに作業し、準備ができたらプッシュします - 計画が変わった場合は、ブランチを手動で追加または削除し、ステップ4でトポロジーを再確認します
完了条件
- ブランチ作成を開始する前に、4つの進捗項目(
stack-create:git-version-checkedからstack-create:stack-verifiedまで)がすべて作成され、順番に完了としてマークされている - Gitのバージョンが≥ 2.38.0であることを確認済み。そうでない場合は、手動でブランチを追跡する方法を記録し、ユーザーに警告している
- 命名規則
stack/<feature-name>/<slice-name>に従って、すべてのスライスブランチが作成されている -
git log --oneline --graph <base>..<tip>で、各スライスブランチが依存関係の順に並ぶ直線状の連なりが表示される - トポロジーの確認後、作業ツリーが最初のスライスブランチに戻っている
コメント
Markdown 対応