跳转到正文
报告库
用途分类 / 开发辅助

Design Mobile Apps Skill 安全审计

作者说它能做什么(原文)

Use when the user wants to design a mobile app or UI screens, when they mention their Sleek (sleek.design) projects, or when implementing Sleek designs in code (HTML, React Native, SwiftUI).

第三方安全检查结论

先别安装或运行

已检查文件
1
发现的风险
4
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。发现 1 项风险
中风险

下载的完整 HTML 可能在打开时执行外部或不受信任的脚本

原文依据:3 处
发现了什么

Skill 指示把服务返回的完整 HTML 原样保存,并说明默认 HTML 会加载 Iconify 脚本。返回内容由外部 AI 服务生成,文档未要求在打开或集成前检查、净化或隔离脚本。

为什么需要注意

用户打开原型时,HTML 中的脚本或远程资源可能在浏览器权限范围内运行、发起网络请求、跟踪访问,或读取同源可访问的数据。风险取决于实际返回的 HTML;现有证据不能证明其中含恶意代码。

该风险在条件成立时可信:Skill 要求从 Sleek 获取外部 AI 生成的组件代码,并把完整 HTML 原样保存;文档还明确说明默认 HTML 会加载 Iconify 脚本。若用户随后在浏览器打开该文件,脚本可在页面上下文中运行并产生第三方网络请求。源码没有可见的审查、净化或隔离要求。用户可要求将预览限制在无敏感权限的隔离环境,并在打开前禁用或审核远程脚本。

SKILL.md:162来自说明文档打开原文件
### HTML prototypesThe component `code` is a complete HTML document. Save it directly to a `.html` file. No build step needed.
查看另外 2 个位置
SKILL.md:280来自说明文档打开原文件
Both list and get accept an optional `inlineIcons` query param (default `false`). When omitted, icons render as `<iconify-icon>` web components and the HTML pulls in the Iconify script, so leave it off by default. Pass `?inlineIcons=true` only when the consumer needs self-contained SVGs in the HTML (for example, importing into tools that don't run scripts).
SKILL.md:118来自说明文档打开原文件
When the user wants to implement the designs in code (not just preview them), **always fetch the component HTML code**. Do not rely on screenshots alone.Use `GET /api/v1/projects/:id/components/:componentId` to fetch each screen's code. The `componentId` comes from the chat run's `result.operations`.
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 2 项风险
高风险

备用登录流程要求用户把完整 API 密钥粘贴给代理

原文依据:3 处
发现了什么

当设备授权流程不可用时,Skill 明确要求用户把仅显示一次的完整密钥粘贴回来。这样密钥可能进入聊天记录、模型上下文、日志或会话导出,而不是只存在于秘密存储中。

为什么需要注意

获得该密钥的一方可在其授权范围内读取项目、创建或删除项目、发送设计消息或生成截图,直到密钥被撤销或过期。

该风险有直接依据。仅在环境变量未设置且采用备用流程时,Skill 会让用户把完整密钥粘贴进对话;密钥又只在创建时显示一次。这样密钥可能进入模型上下文、聊天记录或日志。首选设备流程会直接返回并存储密钥,风险较低。用户可要求作者移除粘贴式备用流程,并只允许设备授权或受保护的秘密存储。

SKILL.md:35来自说明文档打开原文件
Fallback: send the user to **https://sleek.design/agents/setup**, which handles sign-in, plan upgrade, and key creation in one place, and ask them to paste the key back to you. Keys can also be managed at **https://sleek.design/dashboard/api-keys**. The full key value is shown only once at creation.
查看另外 2 个位置
SKILL.md:43来自说明文档打开原文件
| ----------------- | ---------------------------- || `projects:read`   | List / get projects          || `projects:write`  | Create / delete projects     || `components:read` | List components in a project || `chats:read`      | Get chat run status          || `chats:write`     | Send chat messages           || `screenshots`     | Render component screenshots |
SKILL.md:29来自说明文档打开原文件
If `SLEEK_API_KEY` is not set, use the device flow so the user never handles the raw key:1. `POST https://sleek.design/api/v1/device/start` (no auth) with body `{"source": "your-tool-slug"}`. The response contains a `verificationUrl`, a human-checkable `userCode`, a secret `deviceCode`, and a poll `interval` in seconds.2. Show the user the `verificationUrl` and the `userCode`, and tell them to confirm the code matches before approving.3. Poll `POST https://sleek.design/api/v1/device/poll` with `{"deviceCode": "..."}` every `interval` seconds. When the user approves, the poll returns `{"status": "approved", "key": "sk_..."}` exactly once: store it as `SLEEK_API_KEY`. Codes expire after 15 minutes; on `expired`, start over.
中风险

设计需求和引用图片会发送给外部 Sleek 服务

原文依据:4 处
发现了什么

核心工作流把用户的完整设计意图提交给 Sleek;如果包含 `imageUrls`,Sleek 的服务器还会主动获取这些地址。设计描述、产品细节以及图片内容因此离开本地环境。

为什么需要注意

尚未公开的产品计划、客户资料、内部界面或图片中的个人信息可能被第三方服务处理。带查询令牌或临时签名的图片 URL 也可能泄露访问凭据。

核心操作明确把用户的完整设计意图发送给外部 Sleek API;可选的图片 URL 也会由 Sleek 服务器获取。因此,提示中的产品信息以及所引用图片的内容会离开本地环境。Skill 对敏感图片 URL 有警告,但未要求在发送设计文本前进行敏感信息检查。用户可限制可提交的信息,并要求每次发送图片或机密设计资料前确认。

SKILL.md:75来自说明文档打开原文件
Send the request with `POST /api/v1/projects/:id/chat/messages`. Sleek plans screen content and layout from your message, and will invent a visual style if you don't give it one. Don't decompose the request into screens and don't add product details the user didn't ask for; send the full intent as a single message. If the user described specific screens, include those. Sleek produces richer designs when given room to plan.
查看另外 3 个位置
SKILL.md:59来自说明文档打开原文件
- **Minimal scopes**: Create API keys with only the scopes required for the task. Prefer short-lived or revocable keys.- **Image URLs**: When using `imageUrls` in chat messages, those URLs are fetched by Sleek's servers. Avoid passing URLs that contain sensitive content.
SKILL.md:359来自说明文档打开原文件
{  "message": { "text": "Add a pricing section with three tiers" },  "source": "claude-code",  "imageUrls": ["https://example.com/ref.png"],  "target": { "screenId": "scr_abc" },  "referenceId": "proj_ref1"}
SKILL.md:16来自说明文档打开原文件
[sleek.design](https://sleek.design) is an AI-powered mobile app design tool. You interact with it via a REST API at `/api/v1/*` to create projects, describe what you want built in plain language, and get back rendered screens. All communication is standard HTTP with bearer token auth.**Base URL**: `https://sleek.design`**Auth**: `Authorization: Bearer $SLEEK_API_KEY` on every `/api/v1/*` request**Content-Type**: `application/json` (requests and responses)
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
中风险

“仅访问 sleek.design”的网络边界与实际实现指令不一致

原文依据:4 处
发现了什么

元数据和安全说明声称请求仅访问 `sleek.design`,但实现说明又要求从 `api.iconify.design` 获取 SVG,并使用 HTML 中的 Google Fonts。严格执行声明的白名单会使这些步骤失败;放宽网络权限则会引入未披露的第三方连接。

为什么需要注意

用户可能基于不准确的单主机声明授予网络权限。若允许额外主机,Iconify、字体提供方及其网络基础设施会看到请求元数据;若不允许,实现可能缺少图标或字体。

存在明确不一致:兼容性元数据和安全说明把网络访问限定为 sleek.design,但实现步骤要求从 api.iconify.design 获取 SVG;HTML 还可能加载 Iconify 脚本,并包含 Google Fonts。严格执行白名单会阻止这些功能,放宽权限则会连接未在允许主机中列出的第三方。用户可要求作者准确列出所有必要域名,并让第三方资源下载成为显式、可拒绝的步骤。

SKILL.md:4来自说明文档打开原文件
description: Use when the user wants to design a mobile app or UI screens, when they mention their Sleek (sleek.design) projects, or when implementing Sleek designs in code (HTML, React Native, SwiftUI).compatibility: Requires SLEEK_API_KEY environment variable. Network access limited to https://sleek.design only.metadata:  requires-env: SLEEK_API_KEY  allowed-hosts: https://sleek.design---
查看另外 3 个位置
SKILL.md:56来自说明文档打开原文件
- **Single host**: All requests go exclusively to `https://sleek.design`. No data is sent to third parties.- **HTTPS only**: All communication uses HTTPS. The API key is transmitted only in the `Authorization` header to Sleek endpoints.- **Minimal scopes**: Create API keys with only the scopes required for the task. Prefer short-lived or revocable keys.
SKILL.md:184来自说明文档打开原文件
1. **Check if the project already has an icon system** that supports the same sets Sleek uses (Solar, Hugeicons, Material Symbols, MDI). If so, use it. Note: `@expo/vector-icons` does **not** support these sets, so do not use it as a substitute.2. **Otherwise, fetch the SVGs from the Iconify API and embed them in the code:**   ```   GET https://api.iconify.design/{prefix}/{name}.svg   ```   Example: `https://api.iconify.design/solar/heart-bold.svg`   Collect all icon names from the HTML, fetch their SVGs, and save them as static assets or string constants in the codebase. For **React Native / Expo**, render them with `react-native-svg`'s `SvgXml` component, which works in Expo Go with no additional native dependencies.
SKILL.md:196来自说明文档打开原文件
The HTML includes Google Fonts via `<link>` tags in the `<head>`. Use the same fonts and weights when implementing in a native framework. Extract the font family names and weights from the `<link>` tags.
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

8 个说明模块

该 Skill 通过 Sleek 的 REST API 创建项目、提交设计描述,并轮询异步生成任务;这些操作使用带作用域的 API 密钥进行认证。

查看原文
SKILL.md:16来自说明文档打开原文件
[sleek.design](https://sleek.design) is an AI-powered mobile app design tool. You interact with it via a REST API at `/api/v1/*` to create projects, describe what you want built in plain language, and get back rendered screens. All communication is standard HTTP with bearer token auth.**Base URL**: `https://sleek.design`**Auth**: `Authorization: Bearer $SLEEK_API_KEY` on every `/api/v1/*` request**Content-Type**: `application/json` (requests and responses)
SKILL.md:69来自说明文档打开原文件
Create a project with `POST /api/v1/projects` if one doesn't exist yet. Derive a name from the request.
SKILL.md:89来自说明文档打开原文件
**Polling**: chat messages are async by default: you get a `runId` and poll `GET /api/v1/projects/:id/chat/runs/:runId`. Start at 2s interval, back off to 5s after 10s, give up after 5 minutes. Exit on `completed` or `failed`; if you can't read the status, stop and report it rather than counting it as "not done yet". You can also use `?wait=true` for a blocking call (up to 300s; falls back to polling if it times out with `202`).

生成或更新屏幕后,Skill 要求调用截图服务并将图片永久保存到用户项目目录;实现设计时还会下载完整组件 HTML。

查看原文
SKILL.md:99来自说明文档打开原文件
After every chat run that produces `screen_created` or `screen_updated` operations, **take screenshots and show them to the user** using `POST /api/v1/screenshots`. The step is done only when the user has seen a screenshot of every screen the run created or updated; never complete a run silently.- **New screens**: one screenshot per screen + one combined screenshot of all screens in the project.- **Updated screens**: one screenshot per affected screen.Use `background: "transparent"` unless the user explicitly requests a specific background color.Save screenshots in the project directory (not a temporary folder) so the user can easily view them.
SKILL.md:118来自说明文档打开原文件
When the user wants to implement the designs in code (not just preview them), **always fetch the component HTML code**. Do not rely on screenshots alone.Use `GET /api/v1/projects/:id/components/:componentId` to fetch each screen's code. The `componentId` comes from the chat run's `result.operations`.

文档披露免费试用后的持续使用需要付费,并指示在相关时机明确说明月付和年付价格。

查看原文
SKILL.md:37来自说明文档打开原文件
**Plans**: free accounts can try the API with their one-time trial credits (about one design run), so a new user can see their first design before any payment decision. Sustained use requires the Pro plan or higher ($49.99/month, or $30/month billed yearly at $360/year; includes 20,000 monthly AI credits, roughly 650 screens). When cost becomes relevant (the user asks, an upgrade is needed to continue, or you're about to send them to a payment page), state this pricing plainly, including the yearly option. Never let a payment step come as a surprise.

Skill 建议使用最小权限、短期或可撤销的密钥;可用权限包括读取、创建和删除项目、发送消息及生成截图。

查看原文
SKILL.md:41来自说明文档打开原文件
| Scope             | What it unlocks              || ----------------- | ---------------------------- || `projects:read`   | List / get projects          || `projects:write`  | Create / delete projects     || `components:read` | List components in a project || `chats:read`      | Get chat run status          || `chats:write`     | Send chat messages           || `screenshots`     | Render component screenshots |Create a key with only the scopes needed for the task.
SKILL.md:58来自说明文档打开原文件
- **HTTPS only**: All communication uses HTTPS. The API key is transmitted only in the `Authorization` header to Sleek endpoints.- **Minimal scopes**: Create API keys with only the scopes required for the task. Prefer short-lived or revocable keys.- **Image URLs**: When using `imageUrls` in chat messages, those URLs are fetched by Sleek's servers. Avoid passing URLs that contain sensitive content.
从这里开始 · 工作说明SKILL.md
design-mobile-apps
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。 另有 2 个章节,可在原文件中查看。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明

代码和说明中提到的操作

连接外部网站
SKILL.md:4来自说明文档打开原文件
description: Use when the user wants to design a mobile app or UI screens, when they mention their Sleek (sleek.design) projects, or when implementing Sleek designs in code (HTML, React Native, SwiftUI).compatibility: Requires SLEEK_API_KEY environment variable. Network access limited to https://sleek.design only.metadata:
SKILL.md:7来自说明文档打开原文件
  requires-env: SLEEK_API_KEY  allowed-hosts: https://sleek.design---
SKILL.md:12来自说明文档打开原文件
[![Design mobile apps in minutes](https://raw.githubusercontent.com/sleekdotdesign/agent-skills/main/assets/hero.png)](https://sleek.design)
读取密钥或账号配置
SKILL.md:4来自说明文档打开原文件
description: Use when the user wants to design a mobile app or UI screens, when they mention their Sleek (sleek.design) projects, or when implementing Sleek designs in code (HTML, React Native, SwiftUI).compatibility: Requires SLEEK_API_KEY environment variable. Network access limited to https://sleek.design only.metadata:
SKILL.md:6来自说明文档打开原文件
metadata:  requires-env: SLEEK_API_KEY  allowed-hosts: https://sleek.design
SKILL.md:19来自说明文档打开原文件
**Base URL**: `https://sleek.design`**Auth**: `Authorization: Bearer $SLEEK_API_KEY` on every `/api/v1/*` request**Content-Type**: `application/json` (requests and responses)
运行命令
SKILL.md:22来自说明文档打开原文件
**CORS**: Enabled on all `/api/v1/*` endpoints**Parsing responses**: write the body to a file (`curl -o run.json`) and parse the file. Don't pipe JSON through `echo`: in zsh it expands the escaped `\n` inside string values into real newlines, which makes the body invalid JSON.**API docs**: OpenAPI spec at `https://sleek.design/api/v1/spec.json`; browsable docs at `https://sleek.design/api/v1/docs`. Fetch the spec for any contract detail not covered here.
SKILL.md:560来自说明文档打开原文件
| Assuming `result` is present on `202`                                   | `result` is absent until status is `completed`                                                       || Piping a JSON response through `echo` to parse it                       | zsh expands the `\n` in `assistantText` and breaks the JSON; parse from a file instead               || Treating an unreadable run status as "not done yet"                     | The loop then spins to its cap long after the run finished; stop and report instead                  |
读取了多少行
565
文件校验值(用于核对版本)
03ed4310b6099c43ad45bfa3ee114524af0704d121e51ac67d815990d070ba69