Vibeops deploy
Build and deploy the app to its live environment, with health checks and one-command rollback. Only runs when the user explicitly asks to deploy, ship, go live, push to production, or update the live site. Never triggers on ambient or future-tense mentions of deploying. Requires .infra/config.yml to exist before running.From its SKILL.md
npx -y skills add rifatshampod/vibeops --skill vibeops-deployAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.8 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Vibeops — Deploy
You are deploying the user's app to Railway. This skill has real side effects: it builds code, creates live deployments, and if production is configured, makes changes that real users will see.
This is a gated skill. In Codex it is marked allow_implicit_invocation: false — it must be invoked explicitly (e.g. $vibeops-deploy). Do not run it from an ambient mention.
Required references:
- The vibeops
references/safety-rules.md— Rules 1 (Destructive Blocklist), 2 (Production Lock), 3 (Leak Gate), 5 (Dry-Run First) references/railway.md— load whenhost: railwayin config
This skill only runs when the user explicitly says to deploy. It does not trigger on "I want to deploy someday" or "we'll need to deploy later." Ambient mentions = do not run.
Resolving the shared scripts (read this first)
Vibeops keeps its scripts as one shared source used by both Claude Code and Codex. This
skill folder is at codex/skills/vibeops-deploy/; the shared scripts live at the repo root
under scripts/. Before running any script, establish the absolute vibeops root once:
-
Find the absolute path of this skill's own directory on disk (the folder containing this
SKILL.md). Call itSKILL_DIR. -
Run the locator and capture its output — it prints the canonical absolute root (it prefers
$CLAUDE_PLUGIN_ROOTif set, otherwise derives the root from its own location, so it is correct regardless of the current working directory):ROOT="$(bash "$SKILL_DIR/../../../scripts/vibeops_root.sh")" -
Call every shared script through that absolute
ROOT, for examplebash "$ROOT/scripts/deploy.sh" .infra/config.yml.
Never invoke a bare relative scripts/<name>.sh — Codex's working directory is not
guaranteed to be the skill folder. Always go through $ROOT.
Step 1 — Pre-flight checks
Before doing anything else, verify the project is ready to deploy.
1a. Read .infra/config.yml
If the file does not exist:
"I need your project configured before I can deploy. Run
vibeops-configurefirst." Stop.
Parse: app.name, stack.build, stack.start, host, environments, secrets
1b. Check Railway CLI
Run railway whoami. If not authenticated:
"You need to be logged in to Railway first. Run
railway loginand then come back." Stop.
Run railway status. If no project linked:
"Your project isn't linked to a Railway project yet. Run
railway linkto connect, orrailway initto create a new one." Stop.
1c. Check secrets are set
Run railway variables --environment dev and compare the output against the secrets: list in config.
If any secrets are missing:
"Some secrets aren't set yet. Before deploying, I need to collect them — otherwise your app will fail to start.
Missing: [SECRET_NAME_1], [SECRET_NAME_2]
Say 'set up secrets' and I'll walk you through it, or run
vibeops-secretsdirectly." Stop.
Step 2 — Leak gate (Rule 3)
Run scripts/leak_scan.sh on staged files:
bash "$ROOT/scripts/leak_scan.sh" --staged /path/to/project
If leaks found:
"I found exposed secrets in your staged files — I can't deploy until these are fixed."
Translate each finding to plain language. Point to vibeops-secrets to resolve.
Do not proceed if the leak gate fails.
Step 3 — Dry-run plan (Rule 5)
Print the deployment plan before running anything:
Here's what I'm going to do:
1. Run your build: [stack.build from config]
2. Deploy to your dev environment on Railway
3. Wait for the app to start and check it's responding
[If prod in environments:]
4. Ask for your confirmation before pushing to production
5. Deploy to production with a second health check
6. Give you the live URL
[If prod:] I'll keep the previous version pinned — if anything goes wrong, one command reverts it.
Type 'yes' to run this, or tell me what you'd like to change.
Wait for explicit confirmation. Do not proceed without it.
Step 4 — Execute scripts/deploy.sh
Run the deploy script:
bash "$ROOT/scripts/deploy.sh" .infra/config.yml
Relay its output in plain English. Do not show raw Railway CLI output — translate each step as it completes:
- "Running your build..." → "Build finished successfully." or "Build failed — see errors above."
- "Deploying to dev..." → "Deployed to dev. Checking it's working..."
- "Health check passed" → "Dev is up and responding."
- "Health check failed" → "Dev didn't start correctly. I've rolled it back automatically. Here's what to check: [translated reasons]"
Translate deploy.sh output
Stream deploy.sh output to the user with this translation approach:
- Replace technical Railway CLI status messages with plain-English equivalents
- Keep error messages verbatim (they contain important technical info the user may need to share)
- Prefix each translated line with the current step number from the plan
Production confirmation (Rule 2)
When deploy.sh prompts for production confirmation, relay the prompt exactly:
"Dev deployment looks good.
I'm ready to push to production. This will update your live app — real users will see the new version immediately.
Type DEPLOY to continue, or anything else to cancel."
This confirmation is required by Rule 2 (Production Lock). Do not skip it, do not pre-confirm on the user's behalf.
Step 5 — Report outcome
Success
Your app is live!
Dev: https://your-app-dev.up.railway.app
[If prod:]
Production: https://your-app.up.railway.app
If anything goes wrong, say "rollback" — I'll revert to the previous version instantly.
Dev-only success (no production configured)
Deployed to dev!
Dev URL: https://your-app-dev.up.railway.app
When you're ready to go live with real users, run vibeops-configure to add
a production environment, then deploy again.
Health check failure (auto-rollback ran)
The deployment didn't pass the health check — something went wrong when the app started.
I've automatically rolled back to the previous version, so your live app is still running normally.
Here's what to check:
1. Are all secrets set correctly? (Say "check secrets" to verify)
2. Did the build succeed? (Check the build output above for errors)
3. Is your app listening on $PORT? Railway sets this automatically — your app must use it
4. Check your app logs: railway logs --environment [dev/production]
Say "doctor" to run a full diagnosis, or fix the issue and say "deploy" again.
Build failure
The build failed before anything was deployed. No changes were made to your live app.
Build error: [the error from deploy.sh output]
Fix the build error above and say "deploy" again when ready.
Rollback (if user says "rollback" after this skill ran)
Route immediately to scripts/rollback.sh:
bash "$ROOT/scripts/rollback.sh" [env] .infra/config.yml
Relay the rollback script's confirmation prompt verbatim. Translate its output to plain English.
What you must never do
- Never skip the dry-run plan (Step 3)
- Never skip the production confirmation prompt (Rule 2)
- Never run deploy.sh without first passing the leak gate (Step 2)
- Never attempt a
git push --forceto main or any destructive command (Rule 1) - Never tell the user "I deployed" if deploy.sh did not confirm success
- Never show raw Railway CLI output without translation
- Never deploy if pre-flight checks (Step 1) failed — always stop and explain what's missing
What ships with it: 1 file
436 B alongside SKILL.md
agents/
- openai.yaml436 B
Gives 0 of the 12 instructions most ship operate skills give in ~1.8k tokens
Counted across 779 of the 1,178 authors here whose files we hold, read 2026-08-07
- Document a rollback plan before deploymentin 41 of 779, across 22 files
- Update the changelogin 21 of 779, across 19 files
- Run the test suitein 20 of 779
- Create an annotated git tagin 20 of 779
- Clean up feature flags after full rolloutin 18 of 779, across 10 files
- Verify deployment health after launchin 18 of 779, across 10 files
- Test both feature flag statesin 17 of 779, across 9 files
- Verify the working tree is cleanin 17 of 779
- Make database migrations backward-compatiblein 16 of 779, across 8 files
- Set up error monitoring before launchin 15 of 779, across 7 files
- Monitor metrics at each rollout stagein 14 of 779, across 5 files
- Create a GitHub releasein 14 of 779
Said here and by no other author read
- check Railway CLI authentication
- verify all required secrets are set
- scan staged files for leaked secrets
- translate script output to plain English
- relay the production confirmation prompt exactly
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.