Skip to content

feat(autopilot): Issue 宣言の base ブランチを implement で尊重する(EPIC サブ Issue 用) #829

Description

@smalruby3-editor-bot

背景

autopilot の implement フェーズは worktree を develop から分岐し、PR も --base develop 固定で作る。
EPIC のサブ Issue を親 epic ブランチに積みたいケース(例: #827topic/koshien-epic-738)では、
implement の Claude が Issue 本文の宣言を読んでたまたま正しい base を選べたが、保証が無かった。

やること(防御的対応)

Issue 本文で base ブランチが明示されていれば、autopilot が確実にその base を使う:

  • parseBaseBranch(body)(純粋関数)で base を抽出:
    • autopilot-base: <branch> ディレクティブ(最優先、HTML コメント可)
    • 「## ベースブランチ」/「base branch」セクション直後のバッククォート囲みブランチ
    • 宣言が無ければ null(= 既定 develop)
  • daemon が新ブランチを切るフェーズ(implement)で base を解決し、bin/autopilot-worktree
    base-ref として渡す + skill へ AUTOPILOT_BASE_BRANCH で渡す。
  • bin/autopilot-worktree は非 develop base のブランチを fetch して origin/<branch> に正規化。
  • implement スキルは gh pr create --base "${AUTOPILOT_BASE_BRANCH:-develop}"

受け入れ条件

  • Issue に base 宣言があれば worktree がその base から分岐し、PR も同 base 宛てになる
  • 宣言が無ければ従来どおり develop
  • PR ブランチ作業フェーズ(review/address-review/verify)は PR の base を継ぐ(変更なし)
  • parseBaseBranch の node:test を追加

Metadata

Metadata

Assignees

No one assigned

    Labels

    🤖 autopilotautopilot が処理対象にした Issue/PR(daemon が付与)

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions