Skip to content
Back to skills

Levn Ln 030 Vps Bootstrap

ASecurity

Use when bootstrapping or managing VPS agent environments: fresh install, add project, hex-relay redeploy, diagnostics, or fleet plan/apply.

  • 9 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 4, 2026
devopsgobashnodegit

Works with

  • mcp

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned September 4, 2026

npx -y skills add boisenoise/skills-collections --skill levn-ln-030-vps-bootstrap --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Levn Ln 030 Vps Bootstrap?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Levn Ln 030 Vps Bootstrap
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/boisenoise-levn-ln-030-vps-bootstrap/badge)](https://www.skillsdirectory.com/skills/boisenoise-levn-ln-030-vps-bootstrap)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ln-030-vps-bootstrap
description: "Use when bootstrapping or managing VPS agent environments: fresh install, add project, hex-relay redeploy, diagnostics, or fleet plan/apply."
license: MIT
allowed-tools: Bash, Read, mcp__hex-ssh__remote-ssh, mcp__hex-ssh__ssh-read-lines
---

<!-- markdownlint-disable MD012 MD022 MD032 MD040 MD041 MD060 -->

> **Paths:** File paths (`shared/`, `references/`, `../ln-*`, `agents/hex-relay/`, `ops/`) are relative to the skills repo root. If not found at CWD, locate this `SKILL.md` directory and go up two levels for repo root.

# ln-030-vps-bootstrap

**Type:** L2 Domain Coordinator
**Category:** 0XX Shared / Infrastructure
**Tested on:** Ubuntu 24.04 (apt + systemd base: Contabo, Hetzner, DigitalOcean)

Public entrypoint for VPS agent environments. This skill routes between fresh install, adding a project to an existing VPS, `hex-relay` lifecycle work, diagnostics, and fleet `plan/apply`. It does not inline detailed install work; it delegates to focused runtime workers and consumes their machine-readable summaries.

## MANDATORY READ

**MANDATORY READ:** Load `shared/references/skill_contract.md`, `shared/references/worker_runtime_contract.md`, `shared/references/coordinator_summary_contract.md`, `shared/references/vps_runtime_contract.md`, and `shared/references/meta_analysis_protocol.md`
**MANDATORY READ:** Load `references/scope_layers.md`, `references/shared_user_pattern.md`, `references/troubleshooting.md`, and `references/verification_recipes.md`

Reference inventory owned by this coordinator family but loaded by the worker that needs it:
`README.md`, `vps_base_install.md`, `agent_runtime_install.md`, `god_session_install.md`, `project_repo_bootstrap.md`, `hex_relay_deploy.md`, `operator_dispatcher_install.md`, `provider_credentials.md`, `fleet_registry.md`, `fleet_plan_apply.md`, `substitution_rules.md`, `agent-sandbox.sh`, `agent-update.sh`, `agent-update.service`, `agent-update.timer`, `claude-usage-report.sh`, `codex-config.toml.template`, `codex-notify.sh`, `dispatch.md`, `dispatch.service`, `dispatch.timer`, `dispatcher.md.template`, `god-session.service`, `god-session.sh`, `hex-relay.service`, `mint-gh-token.sh`, `operator.CLAUDE.md`, `register-telegram-commands.sh`, `secrets.env.template`, `settings.agent-config.fragment.json`, `settings.hooks.fragment.json`, `settings.statusline.fragment.json`, `statusline.sh`.

---

## Inputs

| Parameter | Required | Default | Description |
|---|---:|---|---|
| `mode` | No | `auto` | `auto`, `fresh_install`, `add_project`, `relay_redeploy`, `diagnose`, `fleet_plan`, or `fleet_apply` |
| `dry_run` | No | `false` | Produce planned actions without mutation where supported |
| `registry_path` | No | `/etc/agent-fleet/environments` | VPS-local fleet registry directory for `fleet_plan` / `fleet_apply`; repo `ops/environments` is templates/docs only |
| `environment_id` | No | unset | Limit fleet operations to one registry environment |
| `plan_artifact_path` | No | generated | Existing plan for `fleet_apply`, or output path for `fleet_plan` |
| `repair_scope` | No | `safe` | `none`, `safe`, or explicit bounded repair action for diagnostics |

Single-project modes also require the project/VPS variables documented in `references/scope_layers.md` and worker inputs:
`PROJECT_NAME`, `SERVICE_PREFIX`, `PROJECT_DIR`, `REPO_URL`, `REPO_REF`, `BOT_USER`, `VPS_HOST`, `VPS_SSH_KEY`, `TARGET_REPO_PATH`, `GIT_PROVIDER`, `REPO_SLUG`, plus optional Telegram/provider variables.

---

## Phase Map

### Phase 1: Resolve Intent

Classify the requested operation:

| Condition | Operation |
|---|---|
| `mode=fleet_plan` | Validate registry and compute drift plan for selected environments |
| `mode=fleet_apply` | Revalidate registry, re-check live state, and apply approved plan targets |
| `mode=relay_redeploy` | Redeploy `agents/hex-relay/` for one existing project environment |
| `mode=diagnose` | Inspect one environment and run only bounded safe repairs |
| `mode=fresh_install` | Force host reconcile, project runtime, optional relay, verification |
| `mode=add_project` | Reuse host through verify/update, then project runtime and optional relay |
| `mode=auto` | Discover host state before selecting fresh vs add-project path |

Evidence:
- selected mode
- target environment ids
- missing required variables
- `dry_run` / apply gate status

### Phase 2: Host Discovery

Always perform a lightweight host discovery before project mutation unless the operation is registry validation only.

Discovery checks:
- SSH connectivity to `${VPS_HOST}`
- `id ${BOT_USER}`
- required package binaries
- Node/nvm, `claude`, `codex`
- `~${BOT_USER}/.claude/`, `~${BOT_USER}/.codex/`
- `${AGENT_SKILLS_DIR}` and marketplace manifests
- `agent-update.timer`
- existing `${SERVICE_PREFIX}` units and port collisions

Decision:
- new or unhealthy shared host -> call `ln-031-vps-host-runtime` with `mode=install_or_reconcile`
- existing host -> call `ln-031-vps-host-runtime` with `mode=verify_or_update`
- diagnostics-only -> call `ln-034-vps-environment-diagnostics`

### Phase 3: Project Runtime

Call `ln-032-vps-project-runtime` for one selected project unless the operation is only `relay_redeploy`, `diagnose`, or registry `plan`.

The worker owns project clone, project config/state dirs, god-session, scheduler, provider credentials, and local dispatcher setup. It must not rebuild shared host runtime or deploy `hex-relay`.

### Phase 4: `hex-relay` Lifecycle

Call `ln-033-hex-relay-lifecycle` when:
- Telegram is enabled for a fresh/add-project install
- `mode=relay_redeploy`
- fleet drift plan includes `hex-relay` source/service/user drift

Skip with explicit `N/A:` reason when `TELEGRAM_BOT_TOKEN` is empty and no relay redeploy was requested.

### Phase 5: Diagnostics And Fleet

Call `ln-034-vps-environment-diagnostics` after install/redeploy when final health evidence is needed, or directly for `mode=diagnose`.

Fleet rules:
- `fleet_plan` loads and validates the live VPS registry from `/etc/agent-fleet/environments/*.yaml` by default, checks live state, and writes a plan artifact under `.hex-skills/runtime-artifacts/runs/{run_id}/vps-fleet-plan/`.
- `fleet_apply` must re-check the live VPS registry and live state before mutation. A stale, missing, or registry-mismatched plan is a blocker.
- The repo `ops/environments/` directory is template-only. Do not treat it as the source of truth for real fleet membership.
- v1 is push-over-SSH only; no continuous daemon/reconciler.
- registry secrets are references only, never values.

### Phase 6: Final Summary

Aggregate child summaries into one coordinator summary:
- operation
- environments selected
- workers activated
- changes planned/applied
- skipped/N/A gates
- warnings and blockers
- verification evidence
- artifact paths

---

## Worker Invocation (MANDATORY)

| Phase | Worker | Use |
|---|---|---|
| 2 | `ln-031-vps-host-runtime` | Shared VPS host/runtime install, verify, update |
| 3 | `ln-032-vps-project-runtime` | Per-project VPS runtime and local operator setup |
| 4 | `ln-033-hex-relay-lifecycle` | `hex-relay` deploy, redeploy, migration, Telegram users |
| 5 | `ln-034-vps-environment-diagnostics` | Health, drift, logs, bounded safe repair |

Managed worker pattern:

```text
childRunId="run-ln-030-${operation}-${worker}-${environment_id}"
childSummaryArtifactPath=".hex-skills/runtime-artifacts/runs/${run_id}/vps-runtime-worker/${worker}--${environment_id}.json"

Skill(skill: "ln-031-vps-host-runtime", args: "mode={install_or_reconcile|verify_or_update|verify_only} environment_id={environment_id} runId=${childRunId} summaryArtifactPath=${childSummaryArtifactPath}")
Skill(skill: "ln-032-vps-project-runtime", args: "mode={bootstrap|verify_only} environment_id={environment_id} runId=${childRunId} summaryArtifactPath=${childSummaryArtifactPath}")
Skill(skill: "ln-033-hex-relay-lifecycle", args: "mode={initial_deploy|redeploy|verify_only|sync_users} environment_id={environment_id} runId=${childRunId} summaryArtifactPath=${childSummaryArtifactPath}")
Skill(skill: "ln-034-vps-environment-diagnostics", args: "mode={inspect|verify|repair_safe} environment_id={environment_id} repair_scope={repair_scope} runId=${childRunId} summaryArtifactPath=${childSummaryArtifactPath}")
Read ${childSummaryArtifactPath}
```

Risk Checklist:
- checkpoint child metadata before each delegation
- never continue from child chat prose when the summary artifact is missing
- do not run workers whose phase is gated `N/A:`
- do not apply a fleet plan if live state has changed since plan creation

## TodoWrite format (mandatory)

```text
- Phase 1: Resolve operation and required variables (pending)
- Phase 2: Discover host state and call host runtime worker when needed (pending)
- Phase 3: Call project runtime worker when project bootstrap is in scope (pending)
- Phase 4: Call hex-relay lifecycle worker when Telegram/relay is in scope (pending)
- Phase 5: Call diagnostics worker and/or write fleet plan/apply evidence (pending)
- Phase 6: Aggregate child summaries and run self-check (pending)
```

---

## Critical Rules

- `ln-030` owns routing decisions and ordering.
- Workers remain standalone; do not encode upward ownership in worker instructions.
- Host bootstrap is never blindly skipped. Existing VPS hosts go through `verify_or_update`.
- `fleet_apply` is not a continuous reconciler. It applies an approved plan after a fresh live-state check.
- Real fleet membership is stored on the VPS under `/etc/agent-fleet/environments`; repo `ops/environments` is a template contract only.
- Registry files may contain secret references only.
- Project-specific units, ports, state dirs, and Telegram bot tokens must be unique per environment.
- `hex-relay` source is owned by `agents/hex-relay/`; deployment logic lives in `ln-033`.

---

## Definition of Done

- [ ] Operation mode resolved with required variables or registry targets.
- [ ] Initial TodoWrite plan contains every phase above and all gated `N/A:` items.
- [ ] Host discovery completed or registry-only mode explicitly skipped it.
- [ ] Selected worker invocations used `runId` and `summaryArtifactPath`.
- [ ] Every activated worker produced a structured summary artifact.
- [ ] Fresh/add-project flow called host runtime before project runtime.
- [ ] Existing-host flow used `verify_or_update`, not a blind skip.
- [ ] `hex-relay` work was delegated only when Telegram/relay scope required it.
- [ ] Fleet plan/apply used the live VPS registry path and wrote or consumed a run-scoped artifact with registry evidence.
- [ ] Final coordinator summary lists applied changes, skipped gates, blockers, warnings, and verification evidence.
- [ ] Meta-analysis completed using `shared/references/meta_analysis_protocol.md`.

## Meta-Analysis

**MANDATORY READ:** Load `shared/references/meta_analysis_protocol.md`

Skill type: `domain-coordinator`. Run after Phase 6 and include whether the split reduced inline execution, preserved worker independence, and kept fleet apply guarded by a plan artifact.

---

**Version:** 1.0.0
**Last Updated:** 2026-05-05

Files in this skill

  • SKILL.md10.9 KB
  • references/README.md13.7 KB
  • references/agent-sandbox.sh4.2 KB
  • references/agent-update.service328 B
  • references/agent-update.sh7.3 KB
  • references/agent-update.timer214 B
  • references/agent_runtime_install.md4.5 KB
  • references/claude-usage-report.sh2.1 KB
  • references/codex-config.toml.template2.1 KB
  • references/codex-notify.sh981 B
  • references/dispatch.md5.6 KB
  • references/dispatch.service364 B
  • references/dispatch.timer204 B
  • references/dispatcher.md.template15.4 KB
  • references/fleet_plan_apply.md1.7 KB
  • references/fleet_registry.md3.1 KB
  • references/god-session.service1 KB
  • references/god-session.sh8.6 KB
  • references/god_session_install.md6.1 KB
  • references/hex-relay.service1.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.