テスト生成と準備確認を実行する。workflow-setup の後に呼び出す。 Use when user: says テスト準備/test-ready, or when called from workflow-setup chain.
workflow-setup の後に呼び出す。CR="${CLAUDE_PLUGIN_ROOT}/scripts/chain-runner.sh" として使用。
CR="${CLAUDE_PLUGIN_ROOT}/scripts/chain-runner.sh"
ISSUE_NUM=$(bash "$CR" resolve-issue-num 2>/dev/null || echo "")
AUTOPILOT_DIR="${AUTOPILOT_DIR:-.autopilot}"
CONTEXT_FILE="${AUTOPILOT_DIR}/issues/issue-${ISSUE_NUM}-context.md"
[[ -n "$ISSUE_NUM" && -f "$CONTEXT_FILE" ]] && echo "=== 前 workflow コンテキスト ===" && cat "$CONTEXT_FILE"
bash "$CR" quick-guard || { echo "quick Issue — test-ready スキップ"; exit 0; }
quick なら終了。非 quick → Step 1 へ。
CHANGE_ID=$(bash "$CR" change-id-resolve) → change-id を記録。
deltaspec/changes/<change-id>/specs/ に Scenario が存在 AND test-mapping.yaml 未存在 のとき:
/twl:test-scaffold <change-id> --type=unit --coverage=edge-cases条件不成立 or テスト対象コードなし → スキップ理由を報告。テスト生成の独断スキップ禁止。
bash "$CR" check → CRITICAL FAIL あれば報告して停止、なければ Step 4 へ。
state 記録 → change-apply → state 記録 → autopilot 判定:
source "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-issue-num.sh" 2>/dev/null || true
ISSUE_NUM=$(resolve_issue_num)
[[ -n "$ISSUE_NUM" ]] && python3 -m twl.autopilot.state write --autopilot-dir "${AUTOPILOT_DIR:-}" --type issue --issue "$ISSUE_NUM" --role worker --set "current_step=change-apply" 2>/dev/null || true
/twl:change-apply <change-id> を Skill 実行。完了後:
[[ -n "$ISSUE_NUM" ]] && python3 -m twl.autopilot.state write --autopilot-dir "${AUTOPILOT_DIR:-}" --type issue --issue "$ISSUE_NUM" --role worker --set "current_step=post-change-apply" 2>/dev/null || true
eval "$(bash "$CR" autopilot-detect)"
/twl:workflow-pr-verify --spec <change-id> を Skill 実行(停止禁止)/twl:workflow-pr-verify --spec <change-id>」と案内refs/ref-compaction-recovery.md を Read し従うこと。ステップリスト: change-id-resolve test-scaffold check change-apply post-change-apply
change-apply 復帰: Step 4 の手順を再実行(state 記録 → /twl:change-apply → state 記録)post-change-apply 復帰: IS_AUTOPILOT 判定スニペット(Step 4 後半)を実行し、IS_AUTOPILOT=true なら即座に /twl:workflow-pr-verify --spec <change-id> を Skill tool で実行source "${CLAUDE_PLUGIN_ROOT}/scripts/resolve-issue-num.sh" 2>/dev/null || true
ISSUE_NUM=$(resolve_issue_num 2>/dev/null || echo "")
eval "$(bash "$CR" autopilot-detect)"
current_step=post-change-apply を terminal として検知し次 workflow を inject する)context.md 書き出しスニペット(停止直前):
ISSUE_NUM=$(bash "$CR" resolve-issue-num 2>/dev/null || echo "")
if [[ -n "$ISSUE_NUM" ]]; then
AUTOPILOT_DIR="${AUTOPILOT_DIR:-.autopilot}"
mkdir -p "${AUTOPILOT_DIR}/issues"
CHANGE_ID_VAL=$(python3 -m twl.autopilot.state read --autopilot-dir "${AUTOPILOT_DIR}" --type issue --issue "${ISSUE_NUM}" --field change_id 2>/dev/null || echo "")
cat > "${AUTOPILOT_DIR}/issues/issue-${ISSUE_NUM}-context.md" <<EOF
# Workflow Context: Issue #${ISSUE_NUM}