agentleFS
leosiminileosimini/keelokit/skills/ship-setup/SKILL.md

ship-setup

Skill2 starsChanged 10 days agoMITView on GitHub

Set up where the product runs — staging and production — for people who have never deployed. Writes docs/deploy.md with a checklist per environment, does every step that needs no credentials or money (Fly.io apps, GitHub environments with production approval, deploy tokens into GitHub secrets), walks the user through the rest, and verifies each step for real. Use when the user says "setup", "infra", "configurá staging", "prepará producción", "deploy guide", "dónde lo publico", after project-new's skeleton, before the first ship-release, or when the dashboard shows an environment not ready.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Only for projects the profile marks hosted.

    line 8
  2. Very specific:

    Write (or update) docs/deploy.md, in the user's language, one section per environment, each a checklist the dashboard reads (- [x] done and …

    line 24
  3. Very specific:

    Update the URLs in docs/context/environments.md, close the "staging not configured" gap if it was open, commit docs: deploy setup (<env>), …

    line 69

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Ship setup — environments a founder can own

Only for projects the profile marks hosted. A library, CLI or plugin isn't deployed: say so, and point at /keelokit:ship-release, which publishes it.

The stack deploys the API to Fly.io (staging from every green main, production from a tag with REL-1) and the web and site to any static host. Environments and owners are in docs/context/environments.md. This skill turns that into working environments and keeps the proof in docs/deploy.md.

Never type, print or commit a credential. The user's accounts, logins, card and third-party API keys are theirs: give them the exact command or screen, and wait. Creating something that costs money (a Fly app with Postgres, a paid plan, a domain) needs a clear yes first, with the price if known. Random secrets the app itself needs (a JWT secret) can be generated in place without being shown: fly secrets set JWT_SECRET="$(openssl rand -hex 32)" --config ….

1. The guide

Write (or update) docs/deploy.md, in the user's language, one section per environment, each a checklist the dashboard reads (- [x] done and verified, - [ ] pending), with who owns each step. Plain words first, the command after:

# Deploy

## staging
Where the team tries every change before users see it. Updates itself on every green main.
- [x] Fly.io account — owner: Ana · verified 2026-10-02
- [ ] Logged in on this computer — run `fly auth login` (opens the browser)
- [ ] API app and its database — `fly launch --no-deploy --config apps/api/fly.staging.toml` (about USD 5/month)
- [ ] API settings — every key of the README's API configuration block, set with `fly secrets set`
- [ ] GitHub can deploy it — a deploy token saved as the `staging` environment's `FLY_API_TOKEN`
- [ ] First deploy green, `https://<app>.fly.dev/health` answers 200
- [ ] Web app published — <static host>, pointing at the staging API

## production
Where users are. Only a tagged version gets here, and only after a person approves it.
- [ ] …the same steps with `fly.production.toml`…
- [ ] GitHub environment `production` requires a reviewer (the approval of REL-1)
- [ ] Domain and HTTPS · error reports (Sentry DSN) · database backups on

2. Do what can be done

In order, stopping at the first step that needs the user; after each, tick it only once verified:

StepWhoHow it's verified
Accounts (GitHub, Fly.io, static host, Sentry, domain)userthe login below works
gh auth login, fly auth loginuser, in their terminalgh auth status, fly auth whoami
Fly apps + Postgres from the template's fly.*.tomlClaude, after a yes (it costs)fly status --config …
App config that isn't secret, generated app secretsClaudefly secrets list --config … shows the names
Third-party keys (payments, mail, WhatsApp…)user types them into fly secrets setsame, names only
GitHub environments staging and production; required reviewer on productionClaude, via gh api -X PUT repos/<owner>/<repo>/environments/<env>gh api repos/<owner>/<repo>/environments
Deploy tokensClaude pipes fly tokens create deploy --config … into gh secret set FLY_API_TOKEN --env <env>, never printing itgh secret list --env <env>
First deployCI on the next green main (staging) or /keelokit:ship-release (production)the run is green; curl -fsS <url>/health
Domain, HTTPSuser at their registrar; Claude gives the exact DNS records (fly certs add)fly certs check, curl -I https://<domain>
Backups, error reportsClaude enables, user owns the accountfly postgres backup list, a test event in Sentry

A step that fails is left unticked with what went wrong and the next thing to try.

3. Close

Update the URLs in docs/context/environments.md, close the "staging not configured" gap if it was open, commit docs: deploy setup (<env>), and refresh the dashboard: its Environments panel shows each checklist. Report what is ready, what waits for the user and the cost per month so far.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.