deployment-architecture
Skill9 starsChanged 17 days agoApache-2.0View on GitHub
ShipIt deployment architecture: auto-deploy on push via platform Git integration, GitHub Deployments API for status tracking, deployment status in PR lifecycle card. Load when working on deployment features.
In this repository15 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- add-endpointSkill
- android-buildSkill
- client-architectureSkill
- design-languageSkill
- docs-navigatorSkill
- dogfooding-shipitSkill
- frontend-design:frontend-designSkill
- git-architectureSkill
- prompt-architectureSkill
- server-architectureSkill
- session-containersSkill
- session-lifecycleSkill
- session-processesSkill
- testing-and-qualitySkill
The file
Files
Deployment Architecture
ShipIt uses automatic deployments via platform Git integration — no manual deploy button or ShipIt-managed build. Users connect their repo to Vercel, Cloudflare Pages, or Netlify once, and every push triggers the platform's native deploy pipeline. Since ShipIt auto-pushes after every agent turn, deploys happen automatically.
How It Works
- User imports their GitHub repo on a hosting platform (Vercel, Cloudflare Pages, Netlify)
- ShipIt's auto-push after agent turns triggers the platform's deploy pipeline
- The platform creates GitHub Deployments on each deploy
- ShipIt's
PrStatusPollerfetches deployment status via the GitHub GraphQL API - Deployment status (URLs, state) appears in the PR lifecycle card
Components
| Component | Location | Role |
PrStatusPoller | src/server/orchestrator/pr-status-poller.ts | Polls GitHub for PR + deployment status |
GraphQL selection + mapDeploymentState | src/server/orchestrator/pr-status-parser.ts | The deployments query fields and the GitHub-state → ShipIt-state mapping |
GitHubDeploymentStatus | src/server/shared/types/deployment-types.ts | Type for deployment status data |
PrStatusSummary.deployments | src/server/shared/types/github-types.ts | Deployment data on PR status |
DeploymentStatusRow | src/client/components/PrLifecycleCard/indicators/DeploymentStatusRow.tsx | UI row showing deploy status, rendered from phases/OpenPhase.tsx |
| PR tab Status section | src/client/components/pr-detail/PrStatusSection.tsx | The second render site — same rows, without the "via" attribution |
| Project Settings "Deployments" tab | src/client/components/ProjectSettings.tsx | Setup guide with platform links |
Deployment Status Tracking
The PR status GraphQL selection includes commit.deployments(last: 3) on the PR's head commit —
so only the three most recent deployments of that commit are ever fetched. Each deployment
includes:
- environment — e.g. "Production", "Preview"
- latestStatus.state — normalized by
mapDeploymentState:SUCCESS/ACTIVE→ success,FAILURE→ failure,ERROR→ error,INACTIVE/DESTROYED/ABANDONED→ inactive,IN_PROGRESS→ in_progress,QUEUED/WAITING→ queued,PENDINGand anything unrecognized → pending - latestStatus.environmentUrl — the deployed URL (preview or production), or
null - createdAt
- creator.login — the platform that created the deployment (e.g. "vercel[bot]"). Recorded only; nothing filters on it, so a repo's own GitHub Actions workflow renders identically
This data is broadcast via SSE pr_status events and displayed in both render sites above.
Setup Guide
The per-repo Project Settings → Deployments tab shows:
- Links to import repos on Vercel, Cloudflare Pages, and Netlify
- A brief explanation of how auto-deploy works with ShipIt
That tab opens from a repository group's overflow menu in the sidebar, so it exists per repository and a sandbox session has no such menu. No credentials are stored — the platform's own Git integration handles auth.
Key Design Decisions
- No manual deploy button — deploys happen on push, not on click
- No ShipIt-managed builds — the platform runs its own build with its own env vars
- GitHub Deployments API — platform-agnostic status tracking (works with any platform that creates GitHub Deployments)
- No new credentials — uses the existing GitHub token from PR polling
- Inline on the PR only — the lifecycle card and the PR tab, no toasts or notifications (deploys are frequent due to auto-push)
Shipped docs to keep in step
Changing anything above means changing the material baked into session containers:
src/server/shipit-docs/deployment.md— the agent's operating manual: the Actions log reads, the one permittedgh run rerunand its scope, polling behavioursrc/server/shipit-docs/wiki/deploying.md— the product-facing page the agent answers a user's "can ShipIt deploy?" from
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

