Skip to content

feat(ship): preview deploy + browser verification before PR creation#685

Open
mikecourt wants to merge 6 commits intogarrytan:mainfrom
mikecourt:feat/ship-preview-deploy-verify
Open

feat(ship): preview deploy + browser verification before PR creation#685
mikecourt wants to merge 6 commits intogarrytan:mainfrom
mikecourt:feat/ship-preview-deploy-verify

Conversation

@mikecourt
Copy link
Copy Markdown

Summary

Adds preview deployment and targeted browser verification to the /ship workflow, with graceful degradation when no deploy config exists.

New Steps:

  • Step 7.5 — Preview Deploy: Reads ## Deploy config from CLAUDE.md, runs the deploy command, captures preview URL, polls health check. Supports Vercel, Netlify, and generic CLIs. Non-blocking.
  • Step 7.75 — Browser Verification: Detects changed routes from the diff (Next.js App/Pages, SvelteKit, Nuxt), dispatches a browse subagent to verify each route on the preview URL, produces a PASS/FAIL table. Capped at 5 routes, 3 minutes.
  • Conditional NEEDS ATTENTION banner: PRs get a prominent banner when unresolved items exist (skipped review findings, browser FAILs, overridden coverage, deferred plan items). Clean ships just show the URL.

Modified Steps:

  • Step 8 PR body: New Preview Deployment and Browser Verification sections
  • Step 8.75 metrics: Tracks preview_deploy and browser_verify results for /retro

Design principle: Everything gracefully degrades. No deploy config → skip both steps. Deploy fails → warn, skip browse. No routes changed → skip browse. Browse unavailable → skip. Nothing blocks shipping.

Test Coverage

No new application code paths — this is a prompt template change (Markdown). All existing skill validation tests, E2E evals, and browse integration tests pass.

Pre-Landing Review

Pre-Landing Review: No issues found. (Markdown-only diff, no SQL/LLM/security surface.)

Adversarial Review

Claude adversarial subagent found 12 findings (9 FIXABLE, 2 INVESTIGATE, 1 design tradeoff). Key items:

  • tee masks deploy exit code (pipefail) — LLM handles this at runtime
  • grep -A 5 could truncate long deploy sections — consider reading to next ##
  • Shared /tmp file on concurrent ships — use mktemp at runtime
  • Dynamic route [id] substitution undefined — LLM skips or uses known IDs
  • Screenshots have no PR upload strategy — design gap for follow-up

All informational. Codex unable to review (repo under ~/.claude/ path restriction).

Test plan

  • bun test passes (skill validation + browse integration + E2E evals)
  • bun run gen:skill-docs --dry-run confirms template/generated file sync

🤖 Generated with Claude Code

mikecourt and others added 6 commits March 30, 2026 14:14
Inserts a new optional step between Push and Create PR/MR that deploys a preview
build, captures the preview URL, and runs a health check if configured — all
without blocking the ship workflow on failure.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…al NEEDS ATTENTION banner

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant