agentCreate

AI-powered OpenClaw agent creator. 用AI创作AI - 帮助用户创建和配置全新的独立agent,支持飞书机器人绑定、模型选择、工作区配置。Trigger: 创建agent、new agent、创建机器人、agent setup、new bot、卸载agent、删除agent、remove agent

1,864 stars

Best use case

agentCreate is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

AI-powered OpenClaw agent creator. 用AI创作AI - 帮助用户创建和配置全新的独立agent,支持飞书机器人绑定、模型选择、工作区配置。Trigger: 创建agent、new agent、创建机器人、agent setup、new bot、卸载agent、删除agent、remove agent

Teams using agentCreate should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/agentcreate/SKILL.md --create-dirs "https://raw.githubusercontent.com/LeoYeAI/openclaw-master-skills/main/skills/agentcreate/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/agentcreate/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How agentCreate Compares

Feature / AgentagentCreateStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

AI-powered OpenClaw agent creator. 用AI创作AI - 帮助用户创建和配置全新的独立agent,支持飞书机器人绑定、模型选择、工作区配置。Trigger: 创建agent、new agent、创建机器人、agent setup、new bot、卸载agent、删除agent、remove agent

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# 🤖 agentCreate - AI Agent Creator

> **用AI创作AI** - 帮助用户创建和配置全新的独立 OpenClaw Agent

---

## 核心使命

agentCreate 的唯一使命是:
- **创建新的 OpenClaw Agent**,确保新创建的 agent 能够正常运行并与用户交互
- **卸载已创建的 OpenClaw Agent**,安全删除指定的 agent 及其相关配置

> 🎯 用AI创作AI的思想 - 通过对话式交互,帮助用户轻松创建和管理多个独立 Agent

---

## 功能概述

| 功能 | 说明 |
|------|------|
| **创建独立 Agent** | 创建与主 agent 完全独立的 agent |
| **卸载 Agent** | 安全卸载并删除指定的 agent |
| **飞书机器人绑定** | 将新 agent 绑定到指定的飞书机器人 |
| **模型选择** | 让用户从已有模型中选择 |
| **工作区配置** | 创建独立的工作区目录 |
| **自动配置** | 自动完成所有配置文件的创建 |

---

## 4 个核心要点

### ✅ 要点一:独立运行

创建的 agent 必须:
- 与主 agent 完全独立,互不影响
- 有独立的 session 和上下文
- 独立的消息处理和响应

### ✅ 要点二:独立工作区

工作区要求:
- 位置:`/Users/honor/.openclaw/workspace-{agentName}`
- 与主 agent 的 `/Users/honor/.openclaw/workspace` 同级别
- 示例:`workspace_videomaker`、`workspace_health`、`workspace_coin`

### ✅ 要点三:飞书机器人绑定

创建时必须收集以下飞书应用信息:
```markdown
需要绑定哪个飞书机器人?
请提供以下信息:

1. 机器人名称(用于识别): ________
2. App ID (appid): ________
3. App Secret: ________
4. 机器人账号类型: 
   - bot_default (默认主机器人)
   - bot_health (健康助手)
   - bot_coin (金价助手)
   - 自定义名称: ________
```

### ✅ 要点四:模型选择

列出所有已配置的模型供用户选择:
```markdown
请为新 agent 选择模型:

可用模型列表:
1. scnet/DeepSeek-V3.2 - DeepSeek V3.2 多模态
2. scnet/MiniMax-M2.5 - MiniMax M2.5 多模态
3. scnet/MiniMax-M2 - MiniMax M2 多模态
4. deepseek/deepseek-chat - DeepSeek 对话模型
5. minimax-portal/MiniMax-M2.5 - MiniMax M2.5
6. volcengine/doubao-seed-2-0-lite-260215 - 豆包轻量版
```

---

## 卸载 Agent 功能

### 卸载流程

当用户要求卸载(删除)agent 时,执行以下流程:

```markdown
🗑️ 卸载 Agent

列出当前所有可卸载的 Agent:
| # | Agent ID | 名称 | 飞书绑定 | 模型 |
|---|----------|------|----------|------|
| 1 | health | 健康助手 | bot_health | scnet/MiniMax-M2.5 |
| 2 | coin | 金价助手 | bot_coin | scnet/MiniMax-M2.5 |

请输入要卸载的 Agent ID(或编号): health

⚠️ 警告:卸载 Agent 是不可逆操作!

| 项目 | 值 |
|------|-----|
| Agent ID | health |
| 工作区 | ~/.openclaw/workspace-test |
| 飞书绑定 | bot_test |

请选择卸载方式:
1. 仅取消飞书绑定(保留工作区 + 保留账号配置)
2. 完全卸载(取消绑定 + 删除工作区 + 删除飞书账号)
3. 取消

请输入选项 [1/2/3]: 2

⚠️ 此操作不可恢复!工作区目录将被完全删除。

是否删除飞书账号配置?(y/n): y
# 如果账号只被该 agent 使用,建议删除避免 fallback 到 main agent

确认卸载?(输入 "yes" 确认): yes

✅ 正在卸载...
[移除 agent 配置...]
[移除 bindings 配置...]
[删除飞书账号配置...]
[删除工作区目录...]
[重启网关...]

🎉 卸载完成!

Agent "health" 已完全卸载。
```

### 三种卸载模式

| 模式 | 说明 | 操作 |
|------|------|------|
| **仅取消绑定** | 保留工作区 + 保留账号配置,移除飞书绑定 | 移除 bindings |
| **完全卸载** | 取消绑定 + 删除工作区 + 删除飞书账号 | `openclaw agents delete --force` + 删账号 |
| **取消** | 不执行任何操作 | 退出 |

### ⚠️ 重要:飞书账号删除逻辑

**必须删除飞书账号配置的原因:**

当飞书账号存在但没有对应 binding 时,消息会 fallback 到 `defaultAccount`,导致消息被路由到 main agent!

```
例如:
- bot_test 已删除 binding
- 但 bot_test 账号配置还在
- 用户发消息给 bot_test → fallback 到 bot_default → main agent 回复
```

**因此,完全卸载时必须删除飞书账号配置(除非该账号被其他 agent 复用)。**

#### 模式1:仅取消飞书绑定

适用于:想保留工作区数据未来可能重新绑定,或者只是不想通过飞书接收消息了。

```bash
# 需要手动修改配置,移除 bindings 但保留 agent
# 步骤:
# 1. 获取当前配置
# 2. 移除该 agent 的 bindings
# 3. 重启网关
```

#### 模式2:完全卸载

```bash
# 删除 agent 及工作区目录
openclaw agents delete {agentId} --workspace /Users/honor/.openclaw/workspace-{agentId} --non-interactive
```

#### 模式3:取消

直接退出,不做任何修改。

### 卸载步骤(技术实现)

#### 方式一:仅取消飞书绑定(保留工作区)

适用于只想移除飞书消息入口,但保留工作区数据的场景。

**实现步骤:**

```python
import json

# 1. 读取当前配置
with open('/Users/honor/.openclaw/openclaw.json', 'r') as f:
    config = json.load(f)

# 2. 移除该 agent 的 bindings(保留 agent 配置)
agent_id = '{agentId}'
if 'bindings' in config and agent_id in config['bindings']:
    del config['bindings'][agent_id]

# 3. 写回配置
with open('/Users/honor/.openclaw/openclaw.json', 'w') as f:
    json.dump(config, f, indent=2)

# 4. 重启网关
# gateway restart
```

**注意:** 飞书账号配置(appId/appSecret)不会被删除,可被其他 agent 复用。

---

#### 方式二:完全卸载(取消绑定 + 删除工作区 + 删除飞书账号)

**步骤 1:使用 openclaw agents delete 删除 Agent**

```bash
openclaw agents delete {agentId} --force
```

**步骤 2:删除飞书账号配置**

```python
import json

with open('/Users/honor/.openclaw/openclaw.json', 'r') as f:
    config = json.load(f)

feishu_account = '{feishuAccount}'  # 如 bot_test

# 删除飞书账号配置
if feishu_account in config.get('channels', {}).get('feishu', {}).get('accounts', {}):
    del config['channels']['feishu']['accounts'][feishu_account]
    print(f'已删除飞书账号: {feishu_account}')

with open('/Users/honor/.openclaw/openclaw.json', 'w') as f:
    json.dump(config, f, indent=2)
```

**步骤 3:重启网关**

```bash
gateway restart
```

**注意:** 
- `openclaw agents delete` 会自动:移除 agent、移除 bindings、删除工作区目录
- 飞书账号配置**必须手动删除**,否则会 fallback 到 defaultAccount 导致消息流向 main agent

#### 注意事项

1. **不能删除主 agent** - `main` agent 受保护,不能删除
2. **飞书账号保留** - 飞书机器人账号配置会保留(可被其他 agent 复用)
3. **绑定自动清理** - 完全卸载时 agent 的 bindings 会自动被清理

#### 验证删除结果

```bash
# 查看所有 agent
openclaw agents list

# 查看绑定关系
openclaw agents bindings
```

### 卸载注意事项

1. **主 agent 不能卸载** - 保护主 agent (main) 不被删除
2. **三种模式选择** - 用户可以选择:仅取消绑定 / 完全卸载 / 取消
3. **数据不可恢复** - 完全卸载前必须用户确认
4. **飞书账号必须删除** - 完全卸载时必须删除飞书账号配置,避免 fallback
5. **仅取消绑定时保留账号** - 用户可能想保留账号未来重新绑定
6. **工作区可选删除** - 仅取消绑定模式会保留工作区

### 错误处理

#### 创建相关错误

| 错误 | 解决方案 |
|------|----------|
| 工作区目录已存在 | 提示用户更换名称或询问是否覆盖 |
| Agent ID 已存在 | 提示用户选择其他 ID |
| 飞书 App ID 无效 | 提示检查 App ID 和 Secret |
| 模型不存在 | 提示从列表中选择有效模型 |
| 配置更新失败 | 检查 OpenClaw 配置格式 |

#### 卸载相关错误

| 错误 | 解决方案 |
|------|----------|
| 尝试删除主 agent | 提示"主 agent 不能卸载,保护机制已启用" |
| Agent 不存在 | 提示可用的 agent 列表 |
| 配置更新失败 | 检查配置格式,保留原配置 |
| 工作区删除失败 | 检查目录权限,给出手动删除建议 |
| 仅取消绑定时无 bindings | 提示该 agent 未绑定飞书,无需取消 |

### 卸载命令示例

#### 示例1:仅取消飞书绑定

```
用户:卸载 coin agent

agentCreate:
🗑️ 确定要卸载 Agent "coin" 吗?

当前 Agent 信息:
- Agent ID: coin
- 工作区: ~/.openclaw/workspace-coin
- 飞书绑定: bot_coin
- 模型: scnet/MiniMax-M2.5

请选择卸载方式:
1. 仅取消飞书绑定(保留工作区)
2. 完全卸载(取消绑定 + 删除工作区)
3. 取消

请输入选项 [1/2/3]: 1

✅ 正在取消飞书绑定...
[移除 bindings 配置...]
[保留工作区目录...]
[重启网关...]

🎉 卸载完成!

Agent "coin" 的飞书绑定已取消,工作区已保留。
如需重新绑定,可以使用 `openclaw agents add coin --bind feishu:xxx`。
```

#### 示例2:完全卸载

```
用户:卸载 coin agent

agentCreate:
🗑️ 确定要卸载 Agent "coin" 吗?

当前 Agent 信息:
- Agent ID: coin
- 工作区: ~/.openclaw/workspace-coin
- 飞书绑定: bot_coin
- 模型: scnet/MiniMax-M2.5

请选择卸载方式:
1. 仅取消飞书绑定(保留工作区 + 保留账号配置)
2. 完全卸载(取消绑定 + 删除工作区 + 删除飞书账号)
3. 取消

请输入选项 [1/2/3]: 2

⚠️ 此操作不可恢复!工作区目录将被完全删除。

是否删除飞书账号配置?(y/n): y
# 账号 bot_coin 只被 coin agent 使用,建议删除

确认卸载?(输入 "yes" 确认): yes

✅ 正在卸载...
[移除 agent 配置...]
[移除 bindings 配置...]
[删除飞书账号配置 bot_coin...]
[删除工作区目录...]
[重启网关...]

🎉 卸载完成!

Agent "coin" 已完全卸载。
飞书账号 bot_coin 已删除(避免 fallback 到 main agent)。
```

---

## 交互流程

### 第一步:收集 Agent 信息

```markdown
🎯 让我帮你创建一个新的 OpenClaw Agent!

请提供以下信息:

1. **Agent 名称**(英文,唯一标识)
   - 例如:videomaker, writer, researcher
   - 将用于工作区目录名:workspace-{name}

2. **Agent 中文名称**(可选,用于显示)
   - 例如:视频制作者、写作助手

3. **Agent 用途描述**(可选)
   - 例如:用于生成视频脚本和内容
```

### 第二步:选择飞书机器人

```markdown
🤖 请选择或创建飞书机器人绑定:

已有飞书机器人:
- bot_default (默认主机器人)
- bot_health (健康助手)  
- bot_coin (金价助手)

或者输入新的 App ID 和 Secret 来创建新绑定。

请提供:
- 机器人名称: ________
- App ID: ________  
- App Secret: ________
```

### 第三步:选择模型

```markdown
🧠 请为新 Agent 选择模型:

当前已配置的模型:
1. scnet/DeepSeek-V3.2 - DeepSeek V3.2 (多模态,支持图像)
2. scnet/MiniMax-M2.5 - MiniMax M2.5 (多模态)
3. scnet/MiniMax-M2 - MiniMax M2 (多模态)
4. deepseek/deepseek-chat - DeepSeek Chat
5. minimax-portal/MiniMax-M2.5 - MiniMax M2.5
6. volcengine/doubao-seed-2-0-lite-260215 - 豆包轻量版

请输入编号或模型ID: ________
```

### 第四步:确认并创建

```markdown
📋 确认创建信息:

| 项目 | 值 |
|------|-----|
| Agent ID | {agentId} |
| 工作区 | ~/.openclaw/workspace-{agentId} |
| 飞书绑定 | {feishuAccount} |
| 使用模型 | {model} |

确认创建?(y/n): ________
```

---

## 创建步骤(技术实现)

### 1. 添加飞书账号(如果是新账号)

如果用户提供了新的飞书 App ID 和 Secret,需要先添加到配置中:

```python
# 使用 Python 更新配置
import json

with open('/Users/honor/.openclaw/openclaw.json', 'r') as f:
    config = json.load(f)

# 添加新账号
config['channels']['feishu']['accounts']['{feishuAccount}'] = {
    'appId': '{appId}',
    'appSecret': '{appSecret}'
}

with open('/Users/honor/.openclaw/openclaw.json', 'w') as f:
    json.dump(config, f, indent=2)

# 重启网关
gateway restart
```

### 2. 使用 openclaw agents add 创建 Agent

**正确的命令用法:**

```bash
openclaw agents add {agentId} \
  --workspace /Users/honor/.openclaw/workspace-{agentId} \
  --model {selectedModel} \
  --bind feishu:{feishuAccount} \
  --non-interactive
```

**参数说明:**
| 参数 | 说明 | 示例 |
|------|------|------|
| `{agentId}` | Agent 唯一标识 | `test`, `videomaker` |
| `--workspace` | 工作区目录路径 | `/Users/honor/.openclaw/workspace-test` |
| `--model` | 使用的模型 ID | `deepseek/deepseek-chat` |
| `--bind` | 飞书绑定 | `feishu:bot_test` |
| `--non-interactive` | 非交互模式 | 必须添加 |

**完整示例:**

```bash
# 创建 test agent
openclaw agents add test \
  --workspace /Users/honor/.openclaw/workspace-test \
  --model deepseek/deepseek-chat \
  --bind feishu:bot_test \
  --non-interactive
```

### 3. 验证创建结果

```bash
# 查看所有 agent
openclaw agents list

# 查看绑定关系
openclaw agents bindings
```

---

### ⚠️ 重要提示

1. **必须先添加飞书账号** - 如果是新账号,必须先用 Python/手动添加到配置文件,再创建 agent
2. **使用 --non-interactive** - 在自动化流程中必须添加此参数
3. **workspace 会自动创建** - `openclaw agents add` 会自动创建工作区目录
4. **绑定格式** - `--bind channel:accountId`,如 `feishu:bot_test`

### 4. 重启网关

配置更新后需要重启网关使配置生效。

---

## 错误处理

### 创建相关错误

| 错误 | 解决方案 |
|------|----------|
| 工作区目录已存在 | 提示用户更换名称或询问是否覆盖 |
| Agent ID 已存在 | 提示用户选择其他 ID |
| 飞书 App ID 无效 | 提示检查 App ID 和 Secret |
| 模型不存在 | 提示从列表中选择有效模型 |
| 配置更新失败 | 检查 OpenClaw 配置格式 |

### 卸载相关错误

| 错误 | 解决方案 |
|------|----------|
| 尝试删除主 agent | 提示"主 agent 不能卸载,保护机制已启用" |
| Agent 不存在 | 提示可用的 agent 列表 |
| 配置更新失败 | 检查配置格式,保留原配置 |
| 工作区删除失败 | 检查目录权限,给出手动删除建议 |

---

## 交互示例

### 完整对话示例(使用正确命令)

```
用户:帮我创建一个视频制作agent

agentCreate:
🎬 好的!让我帮你创建一个视频制作 Agent。

📝 请提供以下信息:

1. **Agent ID**(英文唯一标识): 
   提示:用于目录名和配置,如 videomaker

2. **中文名称**(可选): 
   提示:用于显示,如"视频助手"

3. **用途描述**(可选):
   提示:帮助agent理解自己的角色

请输入 Agent ID: videomaker

🤖 接下来绑定飞书机器人:

已有机器人:
- bot_default (默认)
- bot_health (健康)
- bot_coin (金价)

请选择或输入新的机器人信息:
1. 使用已有机器人 (请输入名称)
2. 创建新绑定 (请输入 App ID 和 Secret)

请选择: bot_default

🧠 选择模型:

可用模型:
1. scnet/DeepSeek-V3.2
2. scnet/MiniMax-M2.5
3. deepseek/deepseek-chat

请选择 [1]: 1

📋 确认创建:

| 项目 | 值 |
|------|-----|
| Agent ID | videomaker |
| 工作区 | ~/.openclaw/workspace-videomaker |
| 飞书绑定 | bot_default |
| 模型 | scnet/DeepSeek-V3.2 |

确认创建?(y/n): y

✅ 正在创建...

[检查飞书账号...]
[使用 openclaw agents add 创建 agent...]
[验证配置...]

🎉 创建成功!

执行命令:
```
openclaw agents add videomaker \
  --workspace /Users/honor/.openclaw/workspace-videomaker \
  --model scnet/DeepSeek-V3.2 \
  --bind feishu:bot_default \
  --non-interactive
```

你的新 Agent "videomaker" 已创建完成。
- 飞书绑定:bot_default
- 模型:scnet/DeepSeek-V3.2

现在可以通过飞书与 videomaker agent 对话了!
```

---

## 验证创建结果

创建完成后,验证以下内容:

1. ✅ 使用 `openclaw agents list` 查看 agent 列表
2. ✅ 使用 `openclaw agents bindings` 查看绑定关系
3. ✅ 确认飞书账号已添加(检查 channels.feishu.accounts)
4. ✅ 网关已重启
5. ✅ 可以通过飞书发送消息测试

---

## 注意事项

1. **保持简单** - 只关注创建和卸载 agent,不要做其他事情
2. **清晰引导** - 每一步都要有明确的提示
3. **确认后再执行** - 修改配置前必须用户确认
4. **错误处理** - 遇到问题要给出具体解决方案
5. **独立性** - 确保新 agent 与主 agent 完全独立
6. **保护主 agent** - 禁止删除 main agent
7. **数据安全** - 卸载前必须明确告知用户不可恢复

---

## 相关工具

- `gateway config.get` - 查看当前配置
- `gateway config.patch` - 更新配置
- `exec` - 创建目录和文件
- `sessions_list` - 查看活跃会话

Related Skills

youtube-watcher

1864
from LeoYeAI/openclaw-master-skills

Fetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.

youtube-transcript

1864
from LeoYeAI/openclaw-master-skills

Fetch and summarize YouTube video transcripts. Use when asked to summarize, transcribe, or extract content from YouTube videos. Handles transcript fetching via residential IP proxy to bypass YouTube's cloud IP blocks.

youtube-auto-captions - YouTube 自动字幕

1864
from LeoYeAI/openclaw-master-skills

## 描述

youtube

1864
from LeoYeAI/openclaw-master-skills

YouTube Data API integration with managed OAuth. Search videos, manage playlists, access channel data, and interact with comments. Use this skill when users want to interact with YouTube. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway).

yahoo-finance

1864
from LeoYeAI/openclaw-master-skills

Get stock prices, quotes, fundamentals, earnings, options, dividends, and analyst ratings using Yahoo Finance. Uses yfinance library - no API key required.

xurl

1864
from LeoYeAI/openclaw-master-skills

A Twitter research and content intelligence skill focused on attracting WordPress and Shopify clients. Use to analyze Twitter profiles, threads, and conversations for: (1) Identifying what small agency founders and eCommerce brands are discussing; (2) Understanding pain points around WordPress performance, Shopify CRO, and development bottlenecks; (3) Extracting high-performing content angles; (4) Turning insights into authority-building posts; (5) Converting Twitter intelligence into business leverage for clear content angles, strong positioning, and qualified inbound leads.

xlsx

1864
from LeoYeAI/openclaw-master-skills

Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like "the xlsx in my downloads") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.

xiaohongshu-mcp

1864
from LeoYeAI/openclaw-master-skills

Automate Xiaohongshu (RedNote) content operations using a Python client for the xiaohongshu-mcp server. Use for: (1) Publishing image, text, and video content, (2) Searching for notes and trends, (3) Analyzing post details and comments, (4) Managing user profiles and content feeds. Triggers: xiaohongshu automation, rednote content, publish to xiaohongshu, xiaohongshu search, social media management.

twitter-openclaw

1864
from LeoYeAI/openclaw-master-skills

Interact with Twitter/X — read tweets, search, post, like, retweet, and manage your timeline.

x-twitter-growth

1864
from LeoYeAI/openclaw-master-skills

X/Twitter growth engine for building audience, crafting viral content, and analyzing engagement. Use when the user wants to grow on X/Twitter, write tweets or threads, analyze their X profile, research competitors on X, plan a posting strategy, or optimize engagement. Complements social-content (generic multi-platform) with X-specific depth: algorithm mechanics, thread engineering, reply strategy, profile optimization, and competitive intelligence via web search.

akshare-online-alpha

1864
from LeoYeAI/openclaw-master-skills

Run Wyckoff master-style analysis from stock codes, holdings (symbol/cost/qty), cash, CSV data, and optional chart images. Use when users want online multi-source data fetching with source switching, strict Beijing-time trading-session checks, fixed system prompt analysis, single-stock analysis, holding rotation, holding add/reduce suggestions, or empty-position cash deployment suggestions.

writing-skills

1864
from LeoYeAI/openclaw-master-skills

Use when creating new skills, editing existing skills, or verifying skills work before deployment