Skip to content
Back to skills

Lookai

BSecurity

当用户提到 LOOK、LOOK 时尚设计,或要求设计服装、生成服装效果图、给服装线稿上色、虚拟试穿、按参考图片创作、查看已有设计进度或图片结果时使用。通过 LOOK 工具完成实际设计与结果交付;仅咨询设计建议或编写提示词时提供文字帮助,不自动创建任务。

  • 417 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 8, 2026
toolsapi

Works with

  • terminal
  • api
  • mcp

Security analysis

B85/100
  • highContains patterns that look like hardcoded API keys

Pro shows the line behind each finding and how to fix it

Scanned November 8, 2026

npx -y skills add infometa/workbuddyskills --skill lookai --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Lookai?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Lookai
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/infometa-lookai/badge)](https://www.skillsdirectory.com/skills/infometa-lookai)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: lookai-fashion-design
version: 2.3.1
description: 当用户提到 LOOK、LOOK 时尚设计,或要求设计服装、生成服装效果图、给服装线稿上色、虚拟试穿、按参考图片创作、查看已有设计进度或图片结果时使用。通过 LOOK 工具完成实际设计与结果交付;仅咨询设计建议或编写提示词时提供文字帮助,不自动创建任务。
---

# LOOK 时尚设计

根据用户目标选择当前可用能力,构造符合任务定义的请求,创建一次并查询到可交付结果。用户明确要求生成时可继续执行;仅询问能力、编写提示词或查询任务时不创建收费任务。

## 触发与执行

用户说“用 LOOK 帮我设计”“生成一张服装效果图”“给这张线稿上色”“试穿这件衣服”或“刚才的设计做好了吗”时,使用本 Skill。用户明确指定 LOOK 时优先使用本连接器;没有指定平台的服装设计请求可使用 LOOK,仍以当前账号可用能力为准。

收到实际生成请求后,先检查已连接工具,调用 list_tool 发现能力,再用 get_tool_skill 获取字段规则;信息充分时调用 execution_job,按 query_job 查询并交付实际结果,不停留在文字方案或声称已经生成。需要参考图片时按下方上传流程处理。只要求查看进度时查询已有任务,不重新创建。

如果 LOOK 工具尚未加载、账号未连接或对应能力不可用,说明需要连接或当前能力限制,不编造工具结果,也不擅自改用其他图片生成服务。用户仅要求建议、提示词或询问有哪些功能时,不创建生成任务。

## 账号连接

本连接器使用生产服务 https://api.look-ai.cn/v1/mcp,由 WorkBuddy 客户端通过服务端公开的标准 OAuth 流程完成账号授权,并管理 MCP 连接凭据;不要求用户填写或发送 Token。首次使用或授权失效时,通过 WorkBuddy 的连接入口登录 LOOK。连接器不声明 auth_mode: gateway,不假定云端代为托管用户 Token。

MCP 请求的授权凭据由客户端管理;上传图片时仅使用 Asset 返回的签名地址和请求头,不把账号授权凭据附加到对象存储请求。Skill 不负责获取、保存或展示 Token。

## 面向用户的展示

接口返回值仅用于内部决策,不直接复制到回复。给用户展示能力的 `display_name`、自然语言进度、图片结果和必要的处理建议,不展示原始 JSON、工具调用过程或技术诊断详情。

任务 ID(`user_task_id`、`task_id`)、用户 ID、租户/成员 ID、`asset_id`、能力 `key`、定义版本、状态码、错误码、`ready`、`terminal`、`poll_after_ms` 等信息只在内部记录和调用中使用,不放入回复、表格、图片说明或链接标签。图片链接可以交付,但不额外解释或展示其中的内部标识;链接标签使用“查看图片”等面向用户的文字。

将内部状态和错误转成用户能理解的说明:

| 内部情况 | 面向用户的表达 |
| --- | --- |
| 创建成功 | 已提交,正在为你生成图片。 |
| pending / scheduling | 正在排队,请稍等。 |
| running | 图片正在生成中。 |
| succeeded 且 ready=false | 图片还在处理中,请稍等。 |
| succeeded 且 ready=true | 图片已生成,请查看。 |
| failed | 这次生成未完成。根据实际原因提供下一步建议。 |
| blocked | 这次请求暂时无法生成图片。仅在有明确面向用户的原因时补充说明。 |
| 授权失效 | 请重新连接 LOOK 账号后继续。 |
| 无权限 | 当前账号暂时无法使用这项功能。 |
| 临时查询故障 | 暂时无法获取进度,可以稍后继续查询。 |
| 创建结果不确定 | 暂时无法确认是否提交成功,请先到任务页面核实,避免重复生成。 |

失败说明只保留与用户有关且已经确认的原因,不直接展示接口 error.message、堆栈、数据库/上游服务信息,也不根据 blocked 猜测违规原因。用户需要继续查询时在内部复用任务 ID,不要求用户抄写或提供系统生成的 ID;当前会话无法恢复时引导查看现有任务页面。

## 发现能力与选择任务

1. 使用当前连接的 MCP 工具列表确认有哪些方法。`tools/list` 列的是调用方法,不是业务能力。
2. 调用 `list_tool`,参数 `{}`,读取 `task_types`。它列出当前环境已发布且可执行的能力,不是用户历史任务列表。
3. 给用户展示每项的 `display_name` 和简短用途;代码保留原始 `key`。不要从中文名称猜 key,也不要把 Studio 页面 key 当作任务 key。
4. 按用户目标选定一项,调用 `get_tool_skill`,参数 `{"key":"选定条目的 key"}`。读取 `key`、`display_name`、`version`、`input_schema`、`configs_schema`、`skill`。
5. 按结构化规则生成参数,按任务 Skill 整理业务输入。规则与用户要求冲突时先解决冲突,不擅自换成其他能力。

每次新会话或切换账号/环境重新发现;同一次请求内可以复用结果。遇到 `task_type_not_available` 或 `definition_changed` 时刷新列表和 Skill。空列表表示当前没有可用能力;调用报错表示查询失败,不解释为没有能力。

代码目录目前包含服装文生图、服装线稿生图和虚拟试穿,实际展示仅以 `list_tool` 返回为准。仅文生图不需要图片的情况下可直接使用文字;需要参考图片的任务按相应规则收集资产。

`get_system_status` 仅在开发/测试环境(`ENV=dev`)提供,用于连接诊断。先确认工具列表包含它再调用 `{}`,不把该工具作为所有环境的前置条件;`ready` 不代表数据库或外部依赖健康。

## 参数与图片输入

- `input_schema` 是输入规则数组。`input_text` 使用规则中的 `name` 和用户文字 `text`;`input_image` 使用规则中的 `role` 和已授权的 `asset_id`。遵循 `required`、`multiple`,只提交实际需要的可选输入。
- `configs_schema` 按字段声明 `type`、`required`、`default`、`allowed`、`min`、`max`。这是服务端规则格式,不是可以直接作为请求发送的配置值。按规则取具体值,保持 JSON 类型,整数不写成字符串。
- 没有用户偏好时优先用已发布默认值;没有默认且必填的参数,从允许值和用户目标合理选择,不能判断时询问。可选字段没有值时省略;必填值不能确定时不创建。
- 不猜测固定的模型、比例、尺寸或数量字段,也不额外发送私有运行时、计费字段。模板中的说明性占位值必须替换,不能原样调用。
- 电脑路径、聊天附件或图片 URL 不等于 `asset_id`。本地图片按下面的上传流程转换为已确认资产;客户端无法读取图片时不要声称看过它。

## 本地图片上传

图片上传由 Asset 提供通用能力;以下两个 MCP 方法是它的适配入口,上传本身不创建生成任务。用户只要求上传时,确认完成即可结束;需要创建图片任务时,先获取任务 Skill,确认哪些图片 role 必填及是否允许多个输入。已有可用 asset_id 可复用;纯文字任务不要求图片。

### get_image_upload_url:准备上传

每张实际需要上传的图片调用一次。它会创建资产记录,不是只读查询;请求不传用户、租户、成员或 origin,归属由当前登录身份决定,需要租户成员身份及写权限。

| 输入字段 | 类型与要求 | 含义 |
| --- | --- | --- |
| name | string,必填,1–255 字符 | 文件名,如 reference.png;不含完整路径、斜杠、反斜杠或空字符。 |
| content_type | string,必填 | 实际格式对应的 image/png、image/jpeg 或 image/webp。 |

调用示例:`{"name":"reference.png","content_type":"image/png"}`。

| 返回字段 | 类型 | 用法 |
| --- | --- | --- |
| asset_id | string | 预分配资产标识,内部绑定到这张图片,后续用于确认。 |
| upload_url | string | 临时签名 HTTPS 地址,保持原样用于上传,不是图片结果链接。 |
| method | string | 上传 HTTP 方法,当前为 PUT。 |
| headers | object | 上传请求头,按返回值设置 Content-Type,不附带 LOOK 登录凭证。 |
| expires_at | integer | 毫秒 Unix 时间戳;上传前与当前时间比较,不当作秒数或有效时长。 |

仅获取地址不代表文件已传输。准备请求超时或返回 system_error 时可能已经分配资产,不自动反复调用;若未拿到 asset_id 无法确认,停止并提示稍后重试。没有用于按文件名找回资产的工具。

### confirm_image_upload:确认上传

输入为 `{"asset_id":"准备上传返回的 ID"}`,asset_id 为必填 string,1–256 字符,原样使用,不传 upload_url、本地路径或文件字节。通常在 PUT 返回 2xx 后调用;PUT 结果不确定时也先确认原资产。

成功返回 `{"asset_id":"同一个 ID","ready":true}`。检查 asset_id 与请求一致且 ready=true;不符合时停止,不能推断上传成功。确认会更新上传状态,可对同一资产重复确认,不会创建新的资产。服务端校验租户、成员归属及输入图片状态,再确认对象存在、非空且 MIME 为支持的格式。确认不是完整图片解码、内容审核或任务完成。

upload_not_ready 表示尚未就绪,按下方恢复流程处理,不连续空转确认。asset_not_accessible、invalid_image_type、invalid_arguments 或权限错误停止;system_error 和网络故障有限退避重试。错误码仅供内部判断,用户只看到必要的自然语言处理建议。

### 上传与任务衔接

1. 确认当前 MCP 方法列表包含 `get_image_upload_url` 和 `confirm_image_upload`,且客户端能读取用户授权的附件/本地图片并发送 HTTP PUT。只会调用 MCP、无法取得文件字节时不能完成直传,应引导用户在现有页面上传;不要先分配上传地址或宣称已上传。
2. 识别真实图片类型,初版支持 PNG、JPEG、WebP。调用 `get_image_upload_url`,例如 `{"name":"reference.png","content_type":"image/png"}`。name 是文件名,不是本地完整路径;不猜 MIME,不用扩展名伪装格式。
3. 内部保存附件与返回 `asset_id` 的对应关系。响应还包括 `upload_url`、`method`(PUT)、`headers` 和 `expires_at`(毫秒时间戳)。收到 asset_id 仅代表资产已预分配,不代表上传完成。
4. 在 URL 过期前,把图片原始字节作为 PUT body 发往原样的 upload_url,使用返回的 headers。不要 multipart、Base64 或 JSON 包装,不修改签名 URL,不向 OSS 发送 LOOK Bearer Token。用户选定的图片内容不得在重试时被替换。
5. PUT 返回 2xx 后调用 `confirm_image_upload`,参数 `{"asset_id":"本次返回的资产 ID"}`。只有响应 `ready:true` 时才可继续;地址可访问或客户端自己声称成功都不能代替 Asset 确认。
6. 将确认后的 asset_id 放入任务 input,例如 `{"type":"input_image","role":"本次任务定义的 role","asset_id":"已确认的 ID"}`。逐张维护 role 映射,按 multiple 规则填写;所有必填图片确认后才能调用 execution_job。

PUT 超时或连接中断时,先确认原 asset_id;确认成功就继续,不重复上传或重新分配。明确 upload_not_ready 且 URL 未过期时,可对原 URL 重试同一图片字节最多 2 次,间隔 3、6 秒,再确认。URL 过期才重新获取地址,默认最多重新分配一次并更新 asset_id 映射;临时确认故障按 3、6、12 秒最多重试 3 次。无权限、不可访问或格式错误停止,并提供面向用户的说明。上传失败不创建缺少图片的任务。

上传 URL 和请求头是临时凭证,仅用于内部上传,不展示或记录在用户回复中,也不把它当作图片结果链接。用户仅看到“正在上传参考图片”“图片已准备好”等状态。确认成功表示文件已上传可用,不等于内容审核通过。没有后台执行能力时不承诺持续上传;当前没有 MCP 资产删除方法,不自行调用其他方法清理。

## 服装文生图提示词

用户希望按文字生成服装设计时,从列表选择“服装文生图”,通常对应 `clothesText2Image`,仍以本次返回的 key 为准。

组织提示词时保留用户原意,按需要描述:品类/用途、廓形与长度、面料与质感、主辅色、领袖和结构细节、图案位置、展示方式与背景。不是每项都必须询问;明确目标且已有足够信息时直接生成。只有关键歧义会改变交付内容时才问,例如“只生成可印刷图案,还是展示整件衣服的效果图”。

未指定展示方式时可采用中性背景、完整展示服装,简短说明默认选择。对用户允许自由发挥的部分可补充协调细节;用户明确指定的颜色、材质、结构和文字不得被覆盖。不自动加模特、品牌、英文翻译或无关风格。

示例用户请求:“帮我做一件灰色短夹克,胸口白色几何图案。”

可整理为:“短款箱型夹克,炭灰色哑光面料,左胸小面积白色几何印花;正面完整展示服装,中性浅灰背景,突出面料质感和印花位置。”这是写法示例,不是固定提示词;箱型、位置等未指定细节属于默认选择,应按用户要求调整。

图案上的文字保持用户原文,不保证文字渲染完全准确。比例、尺寸、数量、模型使用 Skill 允许的 configs。只有任务定义声明独立负向输入时才发送负向提示词;不要虚构 `negative_prompt` 字段。

## 创建与记录任务

调用 `execution_job`,传 `key`、`input`、`configs`、`metadata` 四个必填字段。`key` 原样使用选定能力的 key,`metadata.definition_version` 使用本次 Skill 的 `version`;服务端负责映射内部 action。

下面是请求形状,不是可直接执行的固定示例。输入字段名、配置名称和值、版本必须按本次 Skill 替换:

```json
{
  "key": "[REDACTED]",
  "input": [{"type": "input_text", "name": "实际声明的文字字段名", "text": "整理后的服装描述"}],
  "configs": {},
  "metadata": {"definition_version": 1}
}
```

`configs: {}` 只在当前规则没有缺少必填配置时有效。版本 `1` 仅为形状示例。

创建可能消耗额度且没有幂等保证。默认串行创建,不为同一目标擅自创建多个方案或模型任务。用户要求多个方案时说明方案及数量,按已授权范围执行。

创建成功后立刻在内部记录 `user_task_id`、全部 `tasks[].task_id`、能力 key、display_name、参数版本、最新状态和开始时间。告诉用户任务已提交,然后按返回的 `poll_after_ms` 安排首次查询。`user_task_id` 是总任务 ID;`query_job` 需要每个子任务的 inference task ID,即 `tasks[].task_id`。

## 轮询调度

调用 `query_job`,参数 `{"task_id":"子任务 ID"}`。用实际等待工具或客户端调度器等待,不在没有时间推进时连续调用。工具请求 30 秒超时是单次网络请求预算,不是推理任务时限。

每轮等待取 **max(有效 poll_after_ms, 下表客户端间隔)**。当前服务通常提示 3000 毫秒;字段缺失、非数值或不为正数时使用 3000 毫秒作下限。这些客户端间隔是减少请求量的默认策略,不改变服务端任务状态。

| 本轮主动等待时长 | 客户端间隔 |
| --- | --- |
| 前 30 秒 | 3 秒 |
| 30 秒至 2 分钟 | 5 秒 |
| 2 分钟至 5 分钟 | 10 秒 |

同一 task_id 同时最多一个查询。多个子任务按各自下次查询时间调度,默认最多 3 个并行只读查询;完成或失败的任务移出队列,不每轮重新查全部任务。

默认主动等待最多 5 分钟。预算到期时保留 ID 和已取得的结果,告知仍在处理、可稍后继续查询;不要标记任务失败,不重新创建。用户明确要求持续等待时可以延长预算,仍保持间隔和进度反馈。客户端无法等待或跨轮持续执行时,在内部保留任务 ID,告知用户可稍后继续查询或到任务页面查看,不展示任务 ID,也不承诺后台监控。

进度在提交后、状态改变时或持续等待约 30 秒后简短更新,不每 3 秒打扰用户。没有真实进度字段时只说排队、生成中或结果处理中,不虚构百分比和完成时间。

## 状态与结果交付

以 `status` 和 `ready` 共同决策,不仅看 `terminal`:

| 查询结果 | 行为 |
| --- | --- |
| pending / scheduling / running | 按间隔继续等待 |
| failed / blocked | 停止该子任务,按展示规则提供自然语言失败说明,不交付 URL |
| succeeded 且 ready=false | 继续等待结果,遵守等待预算 |
| succeeded 且 ready=true | 交付 `results[].preview_url`,保留 `asset_id`;缩略展示可用 `thumbnail_url` |
| 未知状态或字段不一致 | 不宣称成功,保留 ID 并按错误策略处理 |

有多个子任务时分别统计,先交付已就绪结果并说明其他任务仍在处理或失败。不从“请求了几张”推断实际结果数量;结果图片数量以 `results` 为准。

可以在客户端支持时显示服务端图片链接;只有确实看过图片才能评价其内容。没有请求修改时不自动再次付费生成。`ready` 当前只表示任务投影中有可用资产和预览 URL,不保证异步审核已完成;不要宣称“已通过审核”。

## 错误与恢复

- 401/授权失效:引导恢复当前账号授权;不输出凭证,不把鉴权问题解释为没有任务类型。
- `tenant_task_no_permission`/`task_not_accessible`:停止并解释权限或不可访问;不猜 ID,不改租户或身份。
- `definition_changed`:该明确错误发生在创建前,重新获取 Skill、校验原意与新规则后可重新提交;不循环无上限重试。
- `task_type_not_available`:刷新列表一次,告知能力不可用;替代能力改变用户目标时先询问。
- JSON-RPC -32602:检查 key、输入、类型、必填配置和版本。禁止通过自动删除用户约束、乱换参数来反复试付费接口。
- 只读方法遇到网络故障或 `retryable=true` 临时错误:最多连续重试 3 次,等待 3、6、12 秒;有有效 poll_after_ms 时不早于该提示。成功后清零,耗尽后保留 ID 并说明暂不可查询。
- `execution_job` 网络超时、连接中断或 `system_error`:结果可能不确定,即使 `retryable=true` 也不自动重试。拿到子任务 ID 就查询;没有 ID 则报告不确定状态,请用户通过现有任务页面核实。

当前 MCP 没有列举用户历史任务和取消任务的方法。用户问“有哪些能力”用 `list_tool`;问“我有哪些生成任务”不能用能力列表冒充历史记录,只能查询已有 task_id,或引导查看现有任务页面。

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in tools →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.