Agent Skills
› anymouschina/TapCanvas
› tapcanvas-api
tapcanvas-api
GitHubTapCanvas项目统一API调用入口,管理chat/draw/vision等公共接口。通过脚本和配置文件发起请求,禁止分散调用或静默降级,确保配置与调用标准化。
Trigger Scenarios
需要调用TapCanvas的chat、draw、vision、video、tasks/result或flows接口
涉及TapCanvas公共API的配置读取与请求组装
Install
npx skills add anymouschina/TapCanvas --skill tapcanvas-api -g -y
SKILL.md
Frontmatter
{
"name": "tapcanvas-api",
"description": "统一的 TapCanvas API skill。凡是要通过 TapCanvas 项目的 `\/public\/*` 接口完成 chat、draw、vision、video、tasks\/result、flows 读写时,都必须使用这个 skill,而不是再使用分散的 tapcanvas-vision、tapcanvas-public-chat-ui-code 或其他平行 API skill。此 skill 通过同目录 `config.json` 配置 `apiBaseUrl` 和 `apiKey`,并通过脚本统一发起请求。"
}
TapCanvas API
这是 TapCanvas 项目对外 API 的唯一 skill。
目标:
- 为 TapCanvas 项目的公共接口提供唯一调用入口。
- 用一个统一配置文件管理
apiBaseUrl和apiKey。 - 明确失败,不做静默降级、不猜测默认接口、不切换到旧 skill。
唯一路径
涉及以下任一场景时,只能使用本 skill:
- 调用
/public/agents/chat - 调用
/public/draw - 调用
/public/vision - 调用
/public/video - 调用
/public/tasks/result - 调用
/public/flows相关接口
禁止:
- 再使用分散的 TapCanvas API skill
- 在不同 skill 里各自维护一套
apiKey/apiBaseUrl - 未经确认地改用其他 endpoint 或本地伪造结果
配置
必须读取同目录下的 config.json:
{
"apiBaseUrl": "http://localhost:8788",
"apiKey": "tc_sk_xxx"
}
字段说明:
apiBaseUrl: TapCanvas API 域名或本地开发地址,不带尾部斜杠更清晰apiKey: 当前用户生成的 API Key
优先级:
- 脚本参数显式传入
config.json- 环境变量
TAPCANVAS_API_BASE_URL/TAPCANVAS_API_KEY
如果最终缺少 apiBaseUrl 或 apiKey,必须直接失败。
执行方式
统一使用脚本:
node apps/agents-cli/skills/tapcanvas-api/scripts/call.mjs \
--endpoint chat \
--payload '{"vendor":"auto","prompt":"你好"}'
也支持 payload 文件:
node apps/agents-cli/skills/tapcanvas-api/scripts/call.mjs \
--endpoint draw \
--payloadFile /abs/path/request.json
Endpoint 规则
可用 endpoint:
chat->POST /public/agents/chatdraw->POST /public/drawvision->POST /public/visionvideo->POST /public/videotaskResult->POST /public/tasks/resultflows->GET /public/projects/:projectId/flowsflowGet->GET /public/flows/:idflowPatch->POST /public/flows/:id/patch
规则:
chat/draw/vision/video/taskResult必须传payloadflows必须传--projectIdflowGet必须传--flowIdflowPatch必须同时传--flowId和payload- 当前公开接口没有“列出当前用户全部 projects / flows”的 discovery endpoint;要验证或操作真实用户画布数据,调用方必须先提供真实
projectId或flowId
推荐请求模板
chat
{
"vendor": "auto",
"prompt": "请帮我完成当前任务",
"temperature": 0.2
}
draw
{
"vendor": "auto",
"prompt": "一个极简风格的白色产品海报",
"extras": {
"modelAlias": "nano-banana-pro",
"aspectRatio": "1:1"
}
}
vision
{
"vendor": "auto",
"imageUrl": "https://example.com/demo.png",
"prompt": "请分析这张图片并给出可复现英文提示词",
"modelAlias": "gemini-3.1-flash-image-preview",
"temperature": 0.2
}
video
{
"vendor": "auto",
"prompt": "一只白猫在雨夜霓虹街头慢慢走过",
"durationSeconds": 10,
"extras": {
"modelAlias": "veo-3.1"
}
}
taskResult
{
"taskId": "your-task-id",
"taskKind": "text_to_video"
}
工作流
- 先判定用户目标属于哪个 endpoint。
- 从
config.json读取apiBaseUrl和apiKey。 - 组装最小必要 payload。
- 调用统一脚本。
- 原样检查接口结果。
- 若返回错误,直接暴露错误与 endpoint,不做吞错。
画布数据验证前提
- 若目标是验证或读取真实用户画布数据,优先走:
- 已知
projectId:先调用flows - 已知
flowId:直接调用flowGet
- 已知
- 若既没有
projectId也没有flowId,必须直接说明“当前公开 API 不具备 discovery 能力”,而不是猜测、扫描本地状态、或绕过本 skill 走其他数据路径。
失败策略
- 缺少配置:直接失败。
- payload 非法:直接失败。
- 网络错误:直接报具体 URL 和系统错误。
- 后端返回 4xx/5xx:保留原始响应摘要并失败。
- 禁止自动切换到旧 skill、旧 endpoint 或匿名模式。
评审标准
一个合格的调用必须满足:
- 使用了本 skill,而不是平行 skill
- 配置来自
config.json或显式覆盖 - endpoint 与 payload 对应正确
- 返回结果来自真实接口
- 所有失败都能定位到真实原因
Version History
- 1.0.0 Current 2026-07-24 20:45


