Deploy Skill
Six modes. Match the request to a section.
| Signal | Section |
|---|---|
| Deploy site, HTTPS, nginx, go live, public site | A. Public Web Deploy |
| Cron job, scheduled task, audit cron script | C. Cron Automation |
| Headless agent, wrapper script, recurring Claude task | D. Headless Cron Creator |
| Install toolkit, verify setup, health check | E. Toolkit Install |
| Fish shell, Zsh, shell config, migration | F. Shell Configuration |
| Background process, nohup, trap, PID, signals | G. Process Management |
When the request spans modes, compose the relevant sections.
A. Public Web Deploy
Serve public sites through nginx/Caddy/Apache -- never a raw dev server. Local preview binds 127.0.0.1; public sites require HTTPS + hardened nginx.
5-phase workflow: DNS -> Web Server -> HTTPS -> Hardening -> Verify.
- DNS: Create A/AAAA record. Verify:
dig +short A <fqdn>. Gate: resolves to intended IP. - Web Server: nginx server block with explicit docroot. Backend proxied to
127.0.0.1. Test:nginx -t && systemctl reload nginx. - HTTPS:
certbot --nginx -d <fqdn>. Verify renewal:certbot renew --dry-run. Verify redirect:curl -sI http://<fqdn> | grep -iE '301|308'. - Hardening: Firewall (ufw allow 80/443/SSH only), nginx deny rules (
location ~ /\. { deny all; }), security headers (HSTS, X-Content-Type-Options, CSP in Report-Only), rate limiting (limit_req), fail2ban. - Verify: Run the 13-item security checklist. Spot-check:
curl -s https://<fqdn>/.env -w '%{http_code}\n'(expect 403/404),ss -tlnp(no app ports public).
Load references/public-web-deploy.md for the full 13-item checklist, nginx config blocks, and error handling.
C. Cron Automation
Static analysis of cron scripts against a 9-point reliability checklist. Read-only -- never execute scripts.
- DISCOVER: Locate scripts in
scripts/*.sh,cron/*.sh,jobs/*.sh. Verify shell shebang. - AUDIT: Run all 9 checks via regex (verify matches not in comments):
| # | Check | Severity | Key patterns |
|---|---|---|---|
| 1 | Error handling | CRITICAL | set -e, set -o errexit |
| 2 | Exit code checking | HIGH | $?, if [ $? -eq |
| 3 | Logging with timestamps | HIGH | >> *.log, $(date) |
| 4 | Log rotation | MEDIUM | find -mtime -delete, logrotate |
| 5 | Working directory | HIGH | cd "$(dirname", SCRIPT_DIR= |
| 6 | PATH environment | MEDIUM | PATH=, export PATH |
| 7 | Lock file / concurrency | HIGH | .lock, flock, .pid |
| 8 | Cleanup on exit | MEDIUM | trap ... EXIT |
| 9 | Failure notification | LOW | mail -s, curl *webhook |
- REPORT: Per-script scores with paste-ready fixes for every FAIL/WARN. Aggregate summary for multi-script audits.
Load references/cron-automation.md for the best-practices reference script.
D. Headless Cron Creator
Create headless Claude Code cron jobs. All crontab mutations go through crontab-manager.py.
- PARSE: Extract name (kebab-case), prompt, schedule, workdir, budget ($2.00 default).
- GENERATE:
python3 ~/.claude/scripts/crontab-manager.py generate-wrapper --name <name> .... Verify:flock,--permission-mode auto,--max-budget-usd,teelogging, dry-run default. - VALIDATE:
bash -n scripts/<name>-cron.sh. Run 9-point cron checklist. - INSTALL: Dry-run first (
--dry-run), ask user confirmation, then install. - REPORT: Script path, schedule, log dir, budget, management commands.
Load references/headless-cron-creator.md for the full methodology and schedule conversion table.
E. Toolkit Install
- Run
python3 ~/.claude/scripts/install-doctor.py checkandpython3 ~/.claude/scripts/toolkit-health.py --json. - If issues: guide user to
./install.sh --symlink. Fix permissions and deps as needed. - Show inventory:
python3 ~/.claude/scripts/install-doctor.py inventory. - Show MCP status:
python3 ~/.claude/scripts/mcp-registry.py list. - Orient:
/do,/comprehensive-review,/installcommands.
Load references/install.md for full diagnostic steps and error handling.
F. Shell Configuration
Detect target shell first. Fish and Zsh have incompatible syntax.
| Concept | Fish | Zsh |
|---|---|---|
| Variable assignment | set -gx VAR value | export VAR=value |
| PATH management | fish_add_path | typeset -U path; path=(...) |
| Completions | completions/ directory | compinit + fpath |
| Conditionals | test, not [[ ]] | [[ ]] preferred |
| Interactive guard | status is-interactive | [[ -o interactive ]] |
Load the shell-specific reference matching the task:
| Task | Fish | Zsh |
|---|---|---|
| Full config | references/fish-shell-config.md | references/zsh-shell-config.md |
| Migration from Bash | references/fish-bash-migration.md | references/zsh-bash-migration.md |
| Variables, special vars | references/fish-quick-reference.md | references/zsh-quick-reference.md |
| Error audit, failure modes | references/fish-preferred-patterns.md | references/zsh-preferred-patterns.md |
| Dev tool integration | references/fish-tool-integrations.md | references/zsh-tool-integrations.md |
G. Process Management
Match the need to the pattern:
| Goal | Command |
|---|---|
| Background job, exits with shell | cmd & |
| Survive shell exit | nohup cmd > log 2>&1 & |
| Detach from job control | cmd & disown |
| Full detach, new session | setsid cmd > log 2>&1 < /dev/null & |
| System daemon | systemd unit file |
All backgrounded processes must redirect stdio: > out 2>&1 < /dev/null &. Order matters: > out 2>&1 is correct; 2>&1 > out is almost always a bug.
Key rule: verify the observable state (port free, PID dead) after every kill -- do not assume kill succeeded.
Load deep references for specific tasks:
| Task | Reference |
|---|---|
| Process lifecycle patterns | references/shell-process-patterns.md, references/starting-processes.md |
| PID capture and resolution | references/pid-resolution.md |
| Signal and trap discipline | references/signals-and-traps.md |
| Kill verification, stale PID | references/cleanup-verification.md |
Shell gotchas (set -e, ` |
Deep References
All references below are >100 lines of domain-specific content. Load as directed by the sections above.
| Reference | Lines | Domain |
|---|---|---|
references/public-web-deploy.md | 259 | Full public deploy workflow + security checklist |
references/cron-automation.md | 194 | 9-point cron audit checklist |
references/headless-cron-creator.md | 150 | Headless cron job creation |
references/install.md | 195 | Toolkit install and health check |
references/shell-error-handling.md | 226 | Shell error handling patterns |
references/concurrency-and-locks.md | 219 | Concurrency and locking |
references/logging-and-rotation.md | 231 | Logging and rotation |
references/starting-processes.md | 152 | Process start patterns |
references/shell-process-patterns.md | 247 | Process lifecycle patterns |
references/pid-resolution.md | 200 | PID capture and resolution |
references/signals-and-traps.md | 259 | Signal and trap discipline |
references/cleanup-verification.md | 253 | Kill-and-check verification |
references/preferred-patterns.md | 354 | Shell gotchas and fixes |
references/fish-shell-config.md | 247 | Fish shell configuration |
references/fish-bash-migration.md | 149 | Bash-to-Fish migration |
references/fish-quick-reference.md | 229 | Fish variable scope guide |
references/fish-preferred-patterns.md | 240 | Fish failure modes |
references/fish-tool-integrations.md | 318 | Fish dev tool patterns |
references/zsh-shell-config.md | 310 | Zsh shell configuration |
references/zsh-bash-migration.md | 248 | Bash-to-Zsh migration |
references/zsh-quick-reference.md | 332 | Zsh parameter expansion |
references/zsh-preferred-patterns.md | 290 | Zsh failure modes |
references/zsh-tool-integrations.md | 368 | Zsh dev tool patterns |


