design-mobile-apps
Design mobile app screens with Sleek, edit Sleek projects, and implement their designs in React Native or HTML.
Install
npx skills add https://github.com/designed-by-ai/skills --skill design-mobile-appsEndpoints
Full contract for every row in the quick-reference table in SKILL.md [blocked].
Every list endpoint accepts limit (1–100, default 50) and offset (≥0), and answers with pagination.total so you can page through everything.
Projects
List projects
Response 200:
Create project
Response 201: { "data": ... } with a single project.
A plan-capped account gets 403 FORBIDDEN at projects_limit here, and that body carries no data.url.
Get / Delete project
Components
List components
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).
Response 200:
activeVersion can be null or unmatched. See Which version to use [blocked] for code and screenshot selection. id is the component ID; nullable screenId addresses targeted chat edits.
Get component
Response 200: { "data": ... } with a single component in the same shape as a list item.
References
References are curated design styles from featured Sleek projects. They are world-readable: any valid API key can list them, no scope needed.
Response 200:
To use one, pass its id as referenceId on Send Message.
Chat: Send Message
Response: async (default, wait=false)
Status 202 Accepted. result and error are absent until the run reaches a terminal state.
Response: sync (wait=true)
Blocks up to 300 seconds. Returns 200 when completed, 202 if timed out.
screenId and componentId are distinct ids for the same screen: screenId addresses it in target, componentId addresses it in GET .../components/:componentId and in componentIds on a screenshot.
Chat: Poll Run Status
The response has the same data shape as send message: result when the run applied operations, error when failed.
A failed run can carry both error and result: the server records the operations that were already applied before the failure. Read result on either terminal status.
Run status lifecycle: queued → running → completed | failed
Chat: Cancel Run
Marks a queued or running run as failed with error code cancelled and returns the updated run; already-finished runs are returned unchanged.
Screenshots
Takes a snapshot of one or more rendered components.
componentIds takes componentId values, which the screenId from a chat operation is not.
Padding resolves per-side → axis → uniform: paddingTop falls back to paddingY, which falls back to padding.
Frames are capped at 4× the default frame height, so a screen longer than that is still cut off at the bottom even with fullHeight: true. On a very long screen, treat the component HTML as the authority for what's below the cap.
Response: raw binary image/png or image/webp with Content-Disposition: attachment.
Share Cards
Renders one shareable image from up to four screens — the social-post framing, distinct from the plain screenshot.
Response: raw binary image/png. Share cards and screenshots share one render budget — see the 429 row in SKILL.md [blocked].
Device: Start
No auth. source is optional (1–64 chars) and drives the <source> wants to connect copy the user sees on the approval page.
Response 201:
Device: Poll
No auth. data.status is one of pending, expired, or approved — and only the approved variant carries key, keyId and name. It is handed over exactly once; a poll on an already-claimed code answers 404 NOT_FOUND / Unknown device code, which is indistinguishable from a code that never existed. The full flow is in SKILL.md [blocked].