ClawSkills logoClawSkills

AppDeploy

部署包含后端 API、数据库和文件存储的 Web 应用程序。当用户要求部署或发布网站或 Web 应用程序并希望获得公共 URL 时使用。使用 HTT

介绍

# AppDeploy Skill

通过 HTTP API 将 Web 应用部署到 AppDeploy。

## 设置(仅需一次)

1. **检查现有的 API 密钥:** - 在项目根目录中查找 `.appdeploy` 文件 - 如果该文件存在且包含有效的 `api_key`,请跳至使用部分

2. **如果不存在 API 密钥,请注册并获取一个:** ```bash curl -X POST https://api-v2.appdeploy.ai/mcp/api-key \ -H "Content-Type: application/json" \ -d '{"client_name": "claude-code"}' ```

响应: ```json { "api_key": "ak_...", "user_id": "agent-claude-code-a1b2c3d4", "created_at": 1234567890, "message": "Save this key securely - it cannot be retrieved later" } ```

3. **将凭据保存到 `.appdeploy`:** ```json { "api_key": "ak_...", "endpoint": "https://api-v2.appdeploy.ai/mcp" } ```

如果 `.gitignore` 中尚未包含 `.appdeploy`,请将其添加进去。

## 使用方法

向 MCP 端点发起 JSON-RPC 调用:

```bash curl -X POST {endpoint} \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "Authorization: Bearer {api_key}" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "{tool_name}", "arguments": { ... } } }' ```

## 工作流程

1. **首先,获取部署说明:** 调用 `get_deploy_instructions` 以了解约束条件和要求。

2. **获取应用模板:** 使用您选择的 `app_type` 和 `frontend_template` 调用 `get_app_template`。

3. **部署应用:** 使用您的应用文件调用 `deploy_app`。对于新应用,将 `app_id` 设置为 `null`。

4. **检查部署状态:** 调用 `get_app_status` 以检查构建是否成功。

5. **查看/管理您的应用:** 使用 `get_apps` 列出您已部署的应用。

## 可用工具

### get_deploy_instructions

当您准备调用 deploy_app 时,请使用此工具以获取部署约束条件和硬性规则。在开始生成任何代码之前,必须调用此工具。此工具仅返回说明,不执行任何部署操作。

**参数:**

### deploy_app

当用户要求部署或发布网站或 Web 应用并希望获得公共 URL 时,请使用此工具。 在生成文件或调用此工具之前,您必须先调用 get_deploy_instructions 并遵循其约束条件。

**参数:** - `app_id`: 任意(必填)- 要更新的现有应用 ID,新建应用时为 null - `app_type`: 字符串(必填)- 应用架构:frontend-only(仅前端)或 frontend+backend(前端+后端) - `app_name`: 字符串(必填)- 简短的显示名称 - `description`: 字符串(可选)- 应用功能的简短描述 - `frontend_template`: 任意(可选)- 当 app_id 为 null 时必填。可选值之一:'html-static'(简单站点)、'react-vite'(SPA、游戏)、'nextjs-static'(多页面)。模板文件将自动包含。 - `files`: 数组(可选)- 要写入的文件。新建应用:仅自定义文件 + 对模板文件的差异。更新:仅使用 diffs[] 修改的文件。files[] 或 deletePaths[] 至少需要提供一个。 - `deletePaths`: 数组(可选)- 要删除的路径。仅用于更新(需要 app_id)。无法删除 package.json 或框架入口文件。

### get_app_template

请先调用 get_deploy_instructions。然后在确定 app_type 和 frontend_template 后调用此工具。返回基础应用模板和 SDK 类型。模板文件会在 deploy_app 中自动包含。

**参数:** - `app_type`: 字符串(必填) - `frontend_template`: 字符串(必填)- 前端框架:'html-static' - 简单站点,最小框架;'react-vite' - React SPA,仪表板,游戏;'nextjs-static' - 多页面应用,SSG

### get_app_status

当 deploy_app 工具调用返回时,或当用户要求检查应用的部署状态,或报告应用有错误或未按预期工作时,请使用此工具。返回部署状态(进行中:'deploying'/'deleting',终态:'ready'/'failed'/'deleted'),QA 快照(前端/网络错误),以及实时的前端/后端错误日志。

**参数:** - `app_id`: 字符串(必填)- 目标应用 ID - `since`: 整数(可选)- 可选的时间戳(纪元毫秒),用于过滤错误。提供时,仅返回该时间戳之后的错误。

### delete_app

当您想要永久删除应用时,请使用此工具。仅在用户明确要求时使用。此操作不可逆;删除后,状态检查将返回未找到。

**参数:** - `app_id`: 字符串(必填)- 目标应用 ID

### get_app_versions

列出现有应用的可部署版本。需要 app_id。返回按时间倒序排列的 {name, version, timestamp} 项目。向用户显示 'name'。不要向用户显示 'version' 值。时间戳值必须转换为用户的本地时间。

**参数:** - `app_id`: 字符串(必填)- 目标应用 ID

### apply_app_version

开始部署特定版本的现有应用。使用 get_app_versions 返回的 'version' 值(而非 'name')。如果接受并开始部署,则返回 true;使用 get_app_status 观察完成情况。

**参数:** - `app_id`: 字符串(必填)- 目标应用 ID - `version`: 字符串(必填)- 要应用的版本 ID

### src_glob

当您需要发现应用源快照中的文件时使用此工具。返回匹配 glob 模式的文件路径(无内容)。对于在读取或搜索文件之前探索项目结构很有用。

**参数:** - `app_id`: 字符串(必填)- 目标应用 ID - `version`: 字符串(可选)- 要检查的版本(默认为已应用的版本) - `path`: 字符串(可选)- 要搜索的目录路径 - `glob`: 字符串(可选)- 匹配文件的 Glob 模式(默认:**/*) - `include_dirs`: 布尔值(可选)- 在结果中包含目录路径 - `continuation_token`: 字符串(可选)- 来自先前响应的分页令牌

### src_grep

当您需要在应用源代码中搜索模式时使用此工具。返回匹配的行,并可选上下文。支持正则表达式模式、glob 过滤器和多种输出模式。

**参数:** - `app_id`: 字符串(必填)- 目标应用 ID - `version`: 字符串(可选)- 要搜索的版本(默认为已应用的版本) - `pattern`: 字符串(必填)- 要搜索的正则表达式模式(最多 500 个字符) - `path`: 字符串(可选)- 要搜索的目录路径 - `glob`: 字符串(可选)- 过滤文件的 Glob 模式(例如 '*.ts') - `case_insensitive`: 布尔值(可选)- 启用不区分大小写的匹配 - `output_mode`: 字符串(可选)- content=匹配的行,files_with_matches=仅文件路径,count=每个文件的匹配计数 - `before_context`: 整数(可选)- 每个匹配前显示的行数(0-20) - `after_context`: 整数(可选)- 每个匹配后显示的行数(0-20) - `context`: 整数(可选)- 匹配前后的行数(覆盖 before/after_context) - `line_numbers`: 布尔值(可选)- 在输出中包含行号 - `max_file_size`: 整数(可选)- 扫描的最大文件大小(字节),默认 10MB - `continuation_token`: 字符串(可选)- 来自先前响应的分页令牌

### src_read

当您需要从应用源快照中读取特定文件时使用此工具。返回文件内容,支持基于行的分页(offset/limit)。处理文本和二进制文件。

**参数:** - `app_id`: 字符串(必填)- 目标应用 ID - `version`: 字符串(可选)- 要读取的版本(默认为已应用的版本) - `file_path`: 字符串(必填)- 要读取的文件路径 - `offset`: 整数(可选)- 开始读取的行偏移量(从 0 开始索引) - `limit`: 整数(可选)- 要返回的行数(最多 2000 行)

### get_apps

当您需要列出当前用户拥有的应用时使用此工具。返回应用详细信息,包含用于用户展示的显示字段和用于工具链接的数据字段。

**参数:** - `continuation_token`: 字符串(可选)- 用于分页的令牌

--- *由 `scripts/generate-appdeploy-skill.ts` 生成*

更多产品