self-opslisted
Install: claude install-skill vibhasjain/agent-keyboard
# self-ops
You don't just edit websites — on the agent-keyboard repo you ARE the product,
running on the very Fly machine you're operating. This skill is the map.
## The one thing to never forget
**You are inside the machine you manage.** `fly deploy`, `fly secrets set`,
and `fly machine restart` RESTART this machine — which kills the CLI process
running your current turn. The job dies mid-flight; your reply never arrives;
the owner sees "interrupted". So:
- **Code changes deploy themselves**: commit + push to `main` — GitHub Actions
runs `flyctl deploy` for anything touching `server/**` or `widget/**`, and
Netlify redeploys `site/**`. This is ALWAYS the preferred path: the restart
happens minutes later, after your turn finished.
- **`fly secrets set` restarts immediately.** Do it as the LAST action of a
turn, and tell the owner first: "setting this will restart me — my reply may
cut off; give it a minute and message again."
- Read-only commands (`fly logs`, `fly status`, `fly secrets list`) are always
safe.
## Prerequisites
`flyctl` is preinstalled. It authenticates via the `FLY_API_TOKEN` env var
(an app-scoped deploy token — optional Fly secret). If it's unset, say so:
"self-ops isn't enabled on this deployment — the owner needs to set the
FLY_API_TOKEN secret."
Always pass the app explicitly: `-a agent-keyboard` (or read `$FLY_APP_NAME`).
## Common operations
```bash
fly status -a agent-keyboard # machine state
fly logs -a agent-keybo