Create MP Skill

Other

在已有小程序项目中创建新的 AI Skill。当用户想在现有项目中添加自定义 AI 能力(而非安装现成的社区 Skill)时触发。完整流程:理解需求 → 设计接口 → 调用 wxa-skills-generate 生成代码 → wxa-skills-validate 校验通过。

Install

openclaw skills install wxa-create-mp-skill

wxa-create-mp-skill

在已有小程序项目中创建新的 AI Skill。

职责边界

  • ✅ 理解用户需求,设计原子接口
  • ✅ 产出 SKILL.md + mcp.json 设计文档
  • ✅ 调用 wxa-skills-generate 生成完整代码
  • ✅ 调用 wxa-skills-validate 校验、执行、渲染
  • ✅ 修复校验问题直至全部通过
  • ❌ 创建新小程序项目(交给 wxa-create-ai-miniprogram
  • ❌ 搜索安装社区 Skill(交给 wxa-find-skills
  • ❌ 修改小程序主包代码(如 app.js、页面文件)
  • ❌ 上架 Skill 到应用市场
  • 📦 交付:skills/{skill-name}/ 完整分包 + app.json 注册

术语约定

  • 原子接口:对外暴露给小程序 AI 的可调用 API,约定路径 skills/{skill}/apis/{name}.js
  • 原子组件:渲染原子接口返回数据的 UI 卡片,约定路径 skills/{skill}/components/{name}/
  • SKILL.md:AI 路由元数据,描述业务的触发场景和使用顺序,≤ 16KB
  • mcp.json:模型可调用能力声明,去除 outputSchema 后 ≤ 24000 字符
  • Wecard 设计规范:原子组件的视觉基线标准,详见项目 SKILL-DEV-GUIDE.md 附录 A

参考资料索引

来源用途加载时机
npx mp-skills --help获取 <generate-dir><validate-dir> 路径Step 3 前
<generate-dir>/SKILL.mdwxa-skills-generate 的完整阶段式工作流Step 3 代码生成
<generate-dir>/references/CODE_TEMPLATES.mdmcp.json / index.js / 接口实现代码模板Step 2/3 编写时
<generate-dir>/references/ATOMIC_COMPONENT_DESIGN.md原子组件设计规范Step 3 组件生成
<generate-dir>/references/JSAPI_WHITELIST.mdwx API 白名单完整清单Step 3 代码生成时
<validate-dir>/SKILL.md校验规则和修复详细流程Step 4 校验 + Step 5 修复
<validate-dir>/references/VALIDATE_RULES.mdV001~V016 规则详情校验报错需定位 id 时
<validate-dir>/references/CLI_AGENT_REFERENCE.mdexecute/render 脚本用法Step 4 执行
<project>/SKILL-DEV-GUIDE.md项目开发规范和 WeCard 视觉基线Step 2 设计时

<generate-dir><validate-dir> 在 Step 3 中通过 npx mp-skills --help 获取。

硬性约束

A. 项目前置条件

条件说明
必须是已有的 mp-skills 项目(存在 skills/ 目录)否则无法创建独立分包
项目已执行过 npx mp-skills setup确保云开发环境已就绪
不要覆盖已有的 Skill 目录如已存在同名目录,提示用户换名

B. 接口设计规范

规则说明
接口命名 camelCasesearchItemsplaceOrder,不要用 search_items
接口粒度适中每个接口职责单一,一个 skill 建议 3-6 个接口
description 含前置条件"调用前置条件:用户已进入下单页面"
description 含严禁场景"【严禁场景】不要用于修改已支付的订单"
mcp.json ≤ 24000 字符去除 outputSchema 后的体积限制

C. 组件规范

  • 遵守 WeCard 设计规范(详见 SKILL-DEV-GUIDE.md 附录 A)
  • 组件路径格式:components/{name}/index(相对路径,不带分包前缀)
  • 每个带 UI 的接口必须关联 _meta.ui.componentPath

D. 阻断规则(立即停止)

阻断情况处理方式
用户描述的功能在现有社区 Skill 中已存在建议先搜索安装,不要重复创建
需求过于宏大(超过 6 个接口)拆分为多个独立的 Skill
wxa-skills-generate 无法处理告知用户能力限制,提供替代方案
连续 3 轮校验仍未通过标记为疑难问题,请求用户确认后继续

工作流

Step 1 — 需求理解与接口设计

与用户对话明确功能需求。接口划分遵循以下原则:

  • 每个接口职责单一:searchItemsgetDetailplaceOrder 各管各的
  • 不要一个接口做太多事(避免 AI 选择困难)
  • 不要拆太细(避免多次 API 调用)
  • 建议 3-6 个原子接口

输出接口清单,用户确认后再进入下一步。

Step 2 — 产出设计文档

skills/<skill-name>/ 下创建:

SKILL.md(业务路由说明,≤ 16KB):

  • 能力域定位
  • 触发场景(few-shot 用户原话)
  • 不适用范围
  • 使用顺序

mcp.json(模型可调用能力声明,去除 outputSchema ≤ 24000 字符):

{
  "apis": [
    {
      "name": "searchItems",
      "description": "搜索商品列表。\n调用前置条件:...\n【严禁场景】...",
      "inputSchema": { "type": "object", "properties": {...}, "required": [...] },
      "_meta": { "ui": { "componentPath": "components/item-list-card/index" } }
    }
  ],
  "components": [
    { "path": "components/item-list-card/index", "relatedPage": "/pages/index/index" }
  ]
}

产出后让用户确认设计。确认前不得进入下一步。

Step 3 — 代码生成

先获取官方技能路径并记录到变量:

npx mp-skills --help

输出底部会显示:

工具型 Skill 路径(供 AI 模型引用):
  wxa-skills-generate: /Users/xxx/.mp-skills/skills/wxa-skills-generate/SKILL.md
  wxa-skills-validate: /Users/xxx/.mp-skills/skills/wxa-skills-validate/SKILL.md

记录两个路径(去掉末尾的 /SKILL.md):

  • <generate-dir> = wxa-skills-generate 所在目录
  • <validate-dir> = wxa-skills-validate 所在目录

然后读取 <generate-dir>/SKILL.md,按它的阶段式工作流执行代码生成。 按它的指引走即可,不需要在这里重复每一步。

注意:wxa-skills-generate 会自动处理 wx API 白名单检查、原子组件约束、分包配置。不要绕过这些约束。

Step 4 — 校验

使用 Step 3 中记录的 <validate-dir> 路径。

4.1 静态校验

node <validate-dir>/scripts/validate.mjs <project-path>

通过条件:summary.errors === 0summary.buildStatus === "pass"

4.2 接口执行 + 组件渲染

静态校验通过后,对每个带 _meta.ui.componentPath 的接口:

# 执行原子接口
node <validate-dir>/scripts/execute.mjs \
  --project <project-path> --name <api-name> --args '{}' \
  --output ./cli-agent-run/execute-result.<name>.json

# 渲染组件
node <validate-dir>/scripts/render.mjs \
  --project <project-path> \
  --from-execute ./cli-agent-run/execute-result.<name>.json \
  --output ./cli-agent-run/render-result.<name>.json

Step 5 — 修复问题

如果有校验失败,按 wxa-skills-validate/SKILL.md 的修复流程处理:

类型特征修复范围
T1 命名拼写字段大小写/拼写错单文件单行直接改
T2 Schema 不一致structuredContent 与 outputSchema 不匹配apis + mcp.json 对齐
T3 组件绑定不一致WXML 与 setData 字段对不上components JS/WXML 对齐
T4 组件取值路径错result.structuredContent.xxx 路径错修组件 JS
T5 合规性违规非白名单标签/CSS用白名单替代
T6 注册缺失mcp.json 声明的 name 未 registerAPI补 index.js 注册
T7/T8 链路/粒度storage key 或接口划分问题跨文件调整
T9 能力无法实现所有候选都违反硬约束⛔ 终止,告知用户
T-build 编译失败stage=compile + FAIL先检查集成配置,再动源码

修复后重跑校验,直到全部通过。

Step 6 — 收尾

确认 app.jsonagent.skills[] 中已包含新 Skill。 提示用户运行 npx mp-skills setup 完成环境配置。