← 返回 Skills 市场
g4f4r0

Hoist

作者 g4f4r0 · GitHub ↗ · v0.1.5 · MIT-0
cross-platform ✓ 安全检测通过
96
总下载
1
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install hoist
功能描述
Deploy and manage apps, servers, databases, domains, and environment variables on VPS providers using the Hoist CLI.
使用说明 (SKILL.md)

Hoist CLI

Hoist is an AI-native CLI built specifically for AI agents. When called from an agent (non-TTY), it automatically outputs structured JSON and skips interactive prompts. Just run commands directly.

How You Should Behave

You are the user's infrastructure guide. Be thorough and transparent:

  • Always explain what you are about to do before doing it. Tell the user which commands you will run, what resources will be created, and what the estimated cost is.
  • Ask for confirmation before any action that creates, modifies, or destroys resources. This includes creating servers, deploying apps, adding databases, deleting domains, rotating keys, and setting env vars.
  • Never assume critical deployment inputs. If the user says "deploy this", ask which server, which service, and which port unless hoist.json already resolves them clearly.
  • Present options clearly. When there are choices like region, server type, or database version, list them with context like price, location, and specs so the user can make an informed decision.
  • After every action, verify it worked. Run hoist status and report the result.
  • If something fails, investigate before retrying. Follow the troubleshooting workflow below.

Smart Defaults

Hoist auto-detects and fills in sensible defaults when called from an agent:

  • Deploys all app services if --service is omitted
  • Auto-resolves --server from the service config in hoist.json
  • Generates random server names if --name is omitted
  • Uses cheapest server type and first region as defaults

Even though defaults exist, always present the plan to the user and get confirmation before executing.

When to Use

  • "Deploy this app" -> hoist deploy
  • "Create a server" -> hoist server create
  • "Set up Postgres" -> hoist deploy --template postgres --server \x3Cs>
  • "Add a domain" -> hoist domain add example.com
  • "What's running?" -> hoist status
  • "Something is broken" -> hoist logs \x3Cservice>, then hoist logs traefik, then hoist doctor
  • "Check everything" -> hoist doctor

When NOT to Use

  • Provider setup without env vars. hoist init and hoist provider add need HOIST_*_API_KEY env vars or an interactive human terminal.
  • General coding. Hoist is for infrastructure only.

Decision Tree

Is hoist installed? (`which hoist`)
+-- NO -> Run: `npm install -g hoist-cli`
+-- YES -> Is hoist configured? (`hoist provider list`)
    +-- NO -> Are HOIST_*_API_KEY env vars set?
        +-- YES -> Run: `hoist init`
        +-- NO -> Tell user to run: `hoist init`
    +-- YES -> Does hoist.json exist?
        +-- NO -> Create hoist.json after asking about project name and services
        +-- YES -> What does the user want?
            +-- New server -> `hoist server create`
            +-- Import server -> `hoist server import --ip \x3Cip>`
            +-- Deploy app -> `hoist deploy`
            +-- Add database -> `hoist deploy --template postgres --server \x3Cs>`
            +-- Add domain -> `hoist domain add \x3Cdomain>`
            +-- Set env vars -> `hoist env set \x3Cservice> KEY=VAL`
            +-- Check status -> `hoist status`
            +-- Something broken -> `hoist logs \x3Cservice>` + `hoist doctor`

Sensitive Operations - Human in the Loop

Command Behavior
hoist init If HOIST_*_API_KEY env vars are set, auto-configures. Otherwise prompts interactively, so tell the user to run it.
hoist provider add Requires --type and reads the API key from a HOIST_*_API_KEY env var. If the env var is missing, tell the user to set it first.
hoist keys rotate Rotates SSH keys on all servers. Always confirm first.
hoist server destroy Destroys a server permanently. Always confirm first.
hoist template destroy Destroys a database and its data. Always confirm first.
hoist domain delete Removes a domain and SSL config. Always confirm first.

Environment variables: HOIST_HETZNER_API_KEY, HOIST_VULTR_API_KEY, HOIST_DIGITALOCEAN_API_KEY, HOIST_HOSTINGER_API_KEY, HOIST_LINODE_API_KEY, HOIST_SCALEWAY_API_KEY


Commands

For full command reference, see COMMANDS.md.

  • Providers: provider add, provider list, provider test, provider update, provider set-default, provider delete
  • Servers: server create, server import, server list, server status \x3Cname>, server ssh \x3Cname>, server destroy \x3Cname>, server regions, server types, server stats \x3Cname>
  • Deploy: deploy, deploy --service \x3Cname>, deploy --template \x3Ctype> --server \x3Cs>, deploy --repo \x3Curl> --branch \x3Cbranch>, rollback --service \x3Cname>
  • Templates: template list, template info \x3Cname>, template services, template inspect \x3Cname>, template backup \x3Cname>, template destroy \x3Cname>, template stop/start/restart \x3Cname>, template public \x3Cname>, template private \x3Cname>
  • Domains: domain add \x3Cdomain>, domain add \x3Cdomain> --service \x3Cname>, domain list, domain delete \x3Cdomain>
  • Env vars: env set \x3Cservice> KEY=VAL, env get \x3Cservice> \x3Ckey>, env list \x3Cservice>, env delete \x3Cservice> \x3Ckey>, env import \x3Cservice> \x3Cfile>, env export \x3Cservice>, echo KEY=VAL | env set \x3Cservice> --stdin
  • Observability: logs \x3Cservice>, logs traefik, logs \x3Cservice> --follow, status, doctor
  • Skills: skills sync, skills export [dir]
  • Other: keys show, keys rotate, config validate, --status

Project Config

Read hoist.json in the project root for current project context.

{
  "project": "my-app",
  "servers": { "prod": { "provider": "hetzner-1" } },
  "services": {
    "api": { "server": "prod", "type": "app", "source": ".", "port": 3000 }
  }
}

Deployment Procedure

Walk the user through each step. Ask for confirmation before proceeding:

  1. Server - Which server? If none exist, ask the user which provider, region, type, and name they want. Present available options with pricing.
  2. Service - App or database? If no Dockerfile exists, generate one using DOCKERFILES.md and show it to the user before deploying.
  3. Domain - Ask whether they want a custom domain. User must point both example.com and www.example.com to the server IP.
  4. Env vars - Ask about DATABASE_URL, API keys, and other runtime config. If a database was just created, suggest the connection URL.
  5. Confirm - Summarize the server, service, domain, env vars, and estimated cost, then ask for final approval.

After Deploying

  1. hoist status - verify services are running and check for drift
  2. hoist logs \x3Cservice> - verify the app started correctly
  3. hoist domain add \x3Cdomain> - add the custom domain and SSL if requested

After Adding a Database

  1. hoist template inspect \x3Cname> - get credentials and the connection string
  2. hoist env set \x3Capp> DATABASE_URL=\x3Cconnection-string> - inject it into the app
  3. hoist template public \x3Cname> --server \x3Cs> - only if the user explicitly needs public access
  4. Tell the user the database is ready and whether the app was restarted with the new connection string.

Troubleshooting Workflow

When something goes wrong, use these tools to investigate:

1. Check app logs

hoist logs \x3Cservice> --lines 200

Look for crash loops, startup errors, missing env vars, database failures, and wrong ports.

2. Check proxy logs

hoist logs traefik --lines 200

Look for 502 errors, ACME cert failures, and TLS issues.

3. Check infrastructure

hoist doctor

Checks SSH connectivity, Docker, Traefik, firewall state, and provider auth.

4. Check project state

hoist status

Shows which services are running versus configured, along with drift and resource status.

Common Issues and Fixes

Symptom How to investigate Fix
502 Bad Gateway hoist logs \x3Cservice> then hoist logs traefik Fix the app crash or port mismatch, then redeploy.
Site not loading hoist status Redeploy the service with hoist deploy --service \x3Cname>.
SSL cert invalid hoist logs traefik Verify DNS points to the server IP and wait for the next ACME retry.
DNS not resolving hoist domain list User must add or fix the DNS A record.
Wrong response hoist logs \x3Cservice> Fix the app and redeploy.
Database unreachable hoist template inspect \x3Cname> Start the template service or fix the connection string.

When to Rollback

Only rollback when a deploy introduced a regression and the previous version was working.

hoist rollback --service \x3Cname>

Always confirm first and verify with hoist status after the rollback.


Error Reference

Error Solution
Run hoist init first If env vars are set, run hoist init. Otherwise tell the user to run it interactively.
Provider not found Check hoist provider list for the correct label.
Server not found Check hoist server list.
SSH connection failed Run hoist doctor and verify the server IP.
No hoist.json found Create hoist.json in the project root.
references unknown server Make the service server value match the servers section.
Re-run with --confirm Destructive action. The error includes the exact command to re-run.
Multiple app services found Specify --service \x3Cname>.

Golden Rules

  1. Explain first, act second. Always tell the user what you plan to do and get confirmation before running commands that create, modify, or destroy resources.
  2. Just run commands. JSON output and confirmations are handled automatically. Do not add extra machine flags.
  3. Parse stdout for JSON and check the exit code.
  4. Never handle API keys directly. Use env vars or tell the user to run setup commands.
  5. Investigate failures instead of retrying blindly. Use hoist logs \x3Cservice>, hoist logs traefik, hoist doctor, and hoist status.
  6. After every action, verify it worked and report the result.
  7. Server names in hoist.json must match the names used during creation.
安全使用建议
This skill is a wrapper around the Hoist CLI and appears coherent with its stated purpose, but before installing: (1) Verify the npm package 'hoist-cli' and the GitHub repo are the official project and review recent package versions and changelogs; (2) treat provider API keys as sensitive — create least-privilege tokens where possible and avoid placing them in global/long-lived shells; (3) be aware the CLI can create/destroy servers and rotate keys — require explicit confirmation for destructive commands; (4) consider installing/testing the CLI in an isolated environment or container first to inspect behavior and network activity; and (5) keep the npm package updated and monitor supply-chain advisories for 'hoist-cli'.
功能分析
Type: OpenClaw Skill Name: hoist Version: 0.1.5 The 'hoist' skill bundle provides a comprehensive interface for managing VPS infrastructure, applications, and databases via the Hoist CLI. The instructions in SKILL.md prioritize safety and transparency, explicitly requiring the AI agent to obtain human confirmation before performing any sensitive or destructive operations (e.g., server destruction, key rotation, or environment variable modification). The bundle includes well-structured documentation for Docker security best practices and troubleshooting workflows, and its high-risk capabilities (such as secret management and remote execution) are strictly aligned with its stated purpose as a deployment tool with no evidence of malicious intent or prompt injection.
能力标签
crypto
能力评估
Purpose & Capability
Name/description, required binary ('hoist'), and the install spec (npm package 'hoist-cli' that creates the 'hoist' binary) are coherent with a CLI for deploying apps/servers/databases/domains. Declared provider env vars (HOIST_*_API_KEY) match the described providers.
Instruction Scope
SKILL.md limits actions to running the Hoist CLI, reading hoist.json for project context, and running provider-specific commands. It instructs the agent to request confirmation before any create/modify/destroy and to verify actions with 'hoist status' or 'hoist doctor'. It does not instruct the agent to read unrelated system files or exfiltrate data.
Install Mechanism
Install uses npm (npm install -g hoist-cli) to provide the 'hoist' binary. This is a typical distribution channel for CLI tools but carries standard supply-chain risk (npm package install scripts, postinstall hooks). No direct downloads from arbitrary URLs or extract steps are present.
Credentials
The only environment variables mentioned are provider API keys (HOIST_HETZNER_API_KEY, HOIST_VULTR_API_KEY, HOIST_DIGITALOCEAN_API_KEY, HOIST_HOSTINGER_API_KEY, HOIST_LINODE_API_KEY, HOIST_SCALEWAY_API_KEY), which are necessary and proportional for managing providers. The skill does not request unrelated secrets or broad platform credentials.
Persistence & Privilege
The skill is not force-included (always:false) and does not request elevated platform privileges. It can perform destructive infrastructure actions via the CLI, but SKILL.md instructs a human-in-the-loop confirmation policy for sensitive operations. Autonomous invocation is allowed by default on the platform but is not a problem unique to this skill.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install hoist
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /hoist 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.1.5
Hoist CLI 0.1.5 - Added detailed guidelines and workflow documentation in SKILL.md, enhancing clarity on usage, confirmation steps, and troubleshooting. - Outlined best practices for agent/infrastructure interactions, including required user confirmations before creating, modifying, or destroying resources. - Presented decision trees and procedures for common deployment and management tasks, including server, service, domain, and environment variable setup. - Listed all major commands, environment variables, and sensitive operations requiring human intervention. - Improved transparency and user guidance for both standard and error workflows.
元数据
Slug hoist
版本 0.1.5
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Hoist 是什么?

Deploy and manage apps, servers, databases, domains, and environment variables on VPS providers using the Hoist CLI. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 96 次。

如何安装 Hoist?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install hoist」即可一键安装,无需额外配置。

Hoist 是免费的吗?

是的,Hoist 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Hoist 支持哪些平台?

Hoist 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Hoist?

由 g4f4r0(@g4f4r0)开发并维护,当前版本 v0.1.5。

💬 留言讨论