按本文打 ZIP 上传 → 自动 L3 可执行。卡在 L2 几乎都是因为 ZIP 里没有 handler.js。
| ZIP 内容 | 结果 | 执行 |
|---|---|---|
只有 SKILL.md | L2 文档 | 接入中 |
SKILL.md + handler.js | L3 代码插件 | 可执行 |
再加 app/index.html | L3 + 独立应用 | 打开独立应用 |
my-skill/ ├── SKILL.md ← 必填 ├── handler.js ← 要能用就必填 ├── skill.manifest.json ← 可选(可自动生成) └── app/index.html ← 可选(独立网页)
打 ZIP:压缩文件夹,解压后应看到 my-skill/SKILL.md。Studio 右侧「打包 ZIP」会按此结构输出。
---
name: my-skill
description: >-
一句话:做什么、给谁用。
version: 1.0.0
category: utility
skill_tier: L3
platform_skill_code: my-skill
uses_compute: false
billing_mode: free
license: MIT
---
# my-skill
## 输入
| 字段 | 说明 |
|------|------|
| message | 用户输入 |
## 调用
POST /api/front/skills/my-skill/invoke
{ "message": "你好" }
module.exports = {
async invoke({ params }) {
const message = String(params?.message || params?.prompt || '').trim();
return {
skill_id: 'my-skill',
type: 'utility',
reply: message ? `已处理:${message}` : 'Skill 就绪',
result: { ok: true, input: params || {} },
mode: 'local'
};
}
};
页面放 app/index.html,handler 返回 open_url: '/skill-apps/my-skill/' 即可。
| 声明 | 含义 |
|---|---|
uses_compute: false | 简单工具 · 可免费 / 自定价 |
uses_compute: true | 用 GPU/云 · 必须扣 Token |
handler.js(文件名全小写)name = 文件夹名 = platform_skill_code = skill_idskill_tier: L3样板:开发中心官方 7 个 · 市场也可装「最快路径 Hello」
| 现在 | 未来(开关切换,包结构不变) |
|---|---|
| 有 handler → 自动 L3 可执行 | 严审、沙箱、实名、独立 Skill 机 |
完整 Markdown:/docs/SKILL-UPLOAD-SPEC.md