Skip to main content
Invoke: /feature-preflight · Side effects: read-only · Writes: nothing
Most stalled shipflow runs don’t stall on a hard problem — they stall on an unconnected MCP server, an unauthenticated gh/az, or a dirty branch, discovered three phases in. This phase checks the environment once, up front, and reports every gap together.

Checks

  • Config shapeshipflow.config.md exists and has all 9 expected sections.
  • Standing contextproduct.md present if context.require_product_doc: true.
  • Tracker MCP connectivity (tracker mode only) — a minimal read through the connected MCP server for the configured provider.
  • Code-host CLI authgh auth status or az account show, per code_host.host.
  • Git working treegit status --porcelain on every repo in scope; dirty/mid-rebase is a warning, not automatically a blocker.
  • Polyrepo reachability — every repos[].path exists locally as a checked-out working tree.
  • Workspace hygiene.shipflow/ is present in .gitignore.

Verdict

READY (warnings noted but nothing blocking) or BLOCKED — with the exact fix for each blocker (gh auth login, clone a missing repo, add .shipflow/ to .gitignore, …). The orchestrator runs this before phase 1 and does not proceed while BLOCKED.