deploylisted
Install: claude install-skill KogaCyber/jarvis-skills
# Deploy to Server
Deploy a project to production safely: check first, deploy, verify after.
## Config
Server credentials live in `~/.jarvis/servers.md` (never in this skill, never in git):
```markdown
| Name | Host | User | Auth | Projects |
|------|------|------|------|----------|
| prod | 1.2.3.4 | deploy | ssh key | my-app |
```
If the file doesn't exist, ask the user for server details once and create it.
## Before Deploy — ALWAYS
1. **Blackout check** — if the user defined no-deploy hours (e.g. business hours for a client-facing app), refuse and say when the next window opens
2. **Tests** — run the project's test suite; a red suite blocks the deploy
3. **Uncommitted changes** — `git status` must be clean; deploy from a pushed commit, not from the working tree
## Deploy
### Docker projects
```bash
ssh $USER@$HOST "cd ~/$PROJECT && git pull && docker compose build && docker compose up -d"
```
### Bare projects (systemd / supervisor)
```bash
ssh $USER@$HOST "cd ~/$PROJECT && git pull && sudo systemctl restart $PROJECT"
```
Prefer pull-based deploys (server pulls from git) over pushing files with scp — the server state stays reproducible.
## After Deploy — ALWAYS
1. Tail logs for errors: `docker logs --tail 30 $PROJECT` or `journalctl -u $PROJECT -n 30`
2. Hit the health endpoint: `curl -sf https://myapp.com/health` — non-200 means roll back
3. Report to the user: what was deployed, commit hash, health status
## Rules
- Never `kill -9` — always graceful res