Gem (gem.com). Use this skill for ANY Gem request — searching and reading data. Whenever a task involves Gem, use this skill instead of calling the API direc...
Design & media
gemdesign-skill
Try itGenerate, save, and modify GemDesign prototype pages via CLI. Invoke when user wants to create UI prototypes, design pages, or batch-generate pages from requirements.
What it does
Generate, save, and modify GemDesign prototype pages via CLI. Invoke when user wants to create UI prototypes, design pages, or batch-generate pages from requirements.
The skill document
GemDesign Prototyping
Use the gemdesign CLI to create, save, and modify high-fidelity prototype pages on the GemDesign platform. You generate HTML following the GemDesign Page Spec, validate it, then save via CLI.
When to Invoke
- User wants to create a UI prototype or design a page
- User has a requirements document and wants batch page generation
- User wants to modify an existing GemDesign page
- User wants to view existing GemDesign pages
Prerequisites
CRITICAL: Step 1, Step 2, and Step 2.5 MUST be executed strictly in order BEFORE starting any Workflow. Each step MUST fully complete before proceeding to the next. Do NOT skip, parallelize, or advance until the current step is confirmed successful.
IMPORTANT — Step 3 timing: Step 3 (Start the Local Server) is NOT executed immediately after login. It MUST be executed INSIDE a Workflow, AFTER the app is created or reused (i.e., after
gemdesign app create/gemdesign app use+gemdesign app info), and BEFORE any page generation. Starting the server before the app exists is a violation — the server serves pages from the project subdirectory derived from the app, so the app must exist first.
Step 1: Verify & Install GemDesign CLI (MUST complete before Step 2)
ALWAYS verify CLI installation and version first before doing any other work. This step is a hard gate — no other operations (auth, app, page, style, etc.) may run until this step is confirmed complete.
-
Check if CLI is installed:
npm list -g @gemdesign-ai/cli- If the command returns version info (e.g.,
@gemdesign-ai/cli@1.2.3), CLI is installed - proceed to step 2. - If the command returns empty or error (e.g.,
(empty)orERR!), CLI is NOT installed. Run:
Wait for the installation to finish, then re-verify withnpm install -g @gemdesign-ai/clinpm list -g @gemdesign-ai/cli. Do NOT proceed until re-verification confirms the installed version.
- If the command returns version info (e.g.,
-
Check if CLI is latest version (only after step 1 confirms CLI is installed):
npm outdated -g @gemdesign-ai/cli- If the command returns empty or shows
Current=Latest, CLI is up-to-date - this step is complete, proceed to Step 2. - If the command shows version info with different
CurrentandLatestvalues, CLI is outdated. Update to latest:
Wait for the update to finish, then re-verify withnpm update -g @gemdesign-ai/clinpm outdated -g @gemdesign-ai/cli. Do NOT proceed until re-verification confirms the CLI is up-to-date.
- If the command returns empty or shows
After this step is confirmed complete, the gemdesign-ai command is available globally at the latest version. Only then may you advance to Step 2.
Step 2: Verify Login (MUST complete after Step 1, before any Workflow)
ALWAYS verify login status after Step 1 is complete. Run this command:
gemdesign auth whoami
- If it succeeds (returns user info), the user is logged in — proceed to a Workflow (A/B/C). Step 3 (local server) will be executed INSIDE the workflow, after the app is created/reused.
- If it fails (returns an error like "GemDesign令牌 无效" or "未提供 GemDesign令牌"), the user is NOT authenticated. You MUST:
- Tell the user: if they don't have an account or GemDesign令牌 yet, go to https://design.gemcoder.com to register an account and get a GemDesign令牌. The GemDesign令牌 retrieval path is: log in to the platform -> click 个人中心 (Personal Center) -> get the GemDesign令牌 (GemDesign令牌).
- Ask the user for their GemDesign令牌 (use
AskUserQuestiontool to prompt the user to input their GemDesign令牌). - Once the user provides their GemDesign令牌, automatically run the login command for them:
gemdesign auth login --token - Re-verify with
gemdesign auth whoamito confirm login succeeded. - If login still fails, repeat from step 2 (ask the user to provide their GemDesign令牌 again).
- Only proceed to a Workflow after login is confirmed.
HARD GATE: Until login is confirmed via gemdesign auth whoami, you MUST NOT perform ANY page-generation work — this includes CLI commands (app, page, style, validate) AND local file operations (writing .html, streaming write, creating the ./output/ directory). Local HTML generation is NOT a workaround for the login gate; a page can only be saved to the platform by an authenticated user, so generating it before login is wasted work. If login fails, stop and resolve authentication first — do not start writing any HTML.
Step 2.5: Clean Up and Configure htmlWorkdir (MUST complete after Step 2, before any Workflow)
After login is confirmed, FIRST clean up stale empty project directories left over from previous interrupted sessions, THEN configure the HTML working directory (htmlWorkdir). The order is MANDATORY: cleanup MUST run BEFORE workdir --path, never after. Both operations MUST complete before starting any Workflow (in particular, before app create).
CRITICAL — Why cleanup MUST run BEFORE workdir (order is non-negotiable):
gemdesign server workdir --path ./outputcreates the./outputdirectory — at this moment it is an empty workdir with NO project subdirectories ({projectName}__{appuuid}) yet, becauseapp createhas not run.gemdesign server cleanuprunspruneEmptyWorkdirs(), which deletes any workdir directory that contains zero project subdirectories AND removes it from thehtmlWorkdirconfig. If you runworkdirfirst and thencleanup, the freshly-created empty./outputis treated as a stale empty workdir —cleanupdeletes the directory and wipes it from config, leavinghtmlWorkdirempty. Downstream effect:app createskips local folder creation (returns awarning), andserver startrefuses to start ("未配置 htmlWorkdir..."), causing "page generated but canvas not showing". RunningcleanupFIRST avoids this: it clears stale state from previous sessions, thenworkdircreates./outputLAST so it survives. (Note:cleanupdoes NOT requirehtmlWorkdirto be pre-configured — when unconfigured it simply returns"未配置 htmlWorkdir,无需清理"and exits cleanly.)
-
Clean up empty project directories (MUST run FIRST, before configuring htmlWorkdir):
gemdesign server cleanup- If
htmlWorkdiris not configured yet, the command returns{"success":true,"message":"未配置 htmlWorkdir,无需清理","removedDirs":[],"removedLocks":[],"removedWorkdirs":[],"removedWorkdirDirs":[]}— this is normal, continue to step 2. - If
htmlWorkdiris already configured from a previous session, the command scans each configured workdir for project subdirectories (named{projectName}__{appuuid}) and:- Deletes empty project directories: project subdirectories that contain zero
.htmlfiles (created byapp createbut never had a page saved — e.g., the session was interrupted). - Cleans orphaned streaming files:
.stream.lockfiles left over from streaming write that was started but never completed. - Removes empty workdirs: workdir directories that contain zero project subdirectories are deleted and removed from config (this is exactly why
workdir --pathMUST run AFTERcleanup, not before).
- Deletes empty project directories: project subdirectories that contain zero
- Returns JSON:
{"success":true,"message":"清理完成:删除 N 个空项目目录,清理 M 个遗留文件,移除 K 个无项目的 htmlWorkdir","removedDirs":[...],"removedLocks":[...],"removedWorkdirs":[...],"removedWorkdirDirs":[...]} - This step is non-blocking: cleanup failures do not prevent proceeding to a Workflow. The command always returns
success: trueunless an unexpected error occurs.
- If
-
Configure htmlWorkdir (MUST run AFTER step 1; run once, persists across sessions):
CRITICAL -
app createsync-creates the local project folder underhtmlWorkdir, andserver startvalidateshtmlWorkdirbefore launching. IfhtmlWorkdiris not configured,app createskips local folder creation (returns awarning), andserver startreturns{"success":false,"error":"未配置 htmlWorkdir,请先执行 gemdesign server workdir --path 设置 HTML 工作目录"}and refuses to start. This prevents the background process's cwd from mismatching the actual HTML generation directory, which would cause fileWatcher to miss.htmlchanges and the canvas to stay blank ("page generated but canvas not showing").gemdesign server workdir --path ./output- Relative paths are resolved against the current working directory to an absolute path.
- Verify with
gemdesign server workdir(no flags) - returns{"success":true,"htmlWorkdir":[""]}. - The
./outputdirectory created here will NOT be deleted bycleanupwithin this same Step 2.5, becausecleanupalready ran in step 1. Do NOT re-runcleanupafter this step — re-running it would delete the freshly-created empty./output(sinceapp createhas not run yet and there are no project subdirectories).
Step 3: Start the Local Server (MUST complete after app is created/reused, before any page generation)
CRITICAL - HARD GATE: You MUST open the browser in this step. This is NON-NEGOTIABLE and MUST NOT be skipped, deferred, or treated as optional. Generating any page before the browser is open is a SERIOUS VIOLATION - the user needs the real-time preview surface to see pages as they are generated. You MUST actively open the browser yourself using your platform's built-in browser/preview tool (see step 3 below for the fallback strategy). Do NOT just output a URL in chat text and wait for the user to click it — you MUST programmatically open the browser.
TIMING — Execute INSIDE a Workflow, NOT immediately after login. Step 3 is invoked from within Workflow A/B/C (see each workflow's "Start the local server" step), AFTER the app has been created or reused via
gemdesign app create/gemdesign app useand confirmed viagemdesign app info. Do NOT start the server right after Step 2 (login) — the server serves pages from the project subdirectory derived from the app (= {projectName}__{appuuid}), so the app must exist first. Starting the server before the app exists is a violation.
After Step 1 (CLI installed), Step 2 (Login verified), AND the app is created/reused (inside a Workflow) are all confirmed complete, start the local server for real-time streaming preview.
The local server provides real-time streaming preview of HTML pages as they are being generated. The server is built into the CLI and managed via the gemdesign server commands. The server runs on port 4056 by default; if that port is occupied it auto-retries the next available port (up to 4066).
-
Ensure htmlWorkdir is configured (MUST complete before
app createin a Workflow, and beforeserver start):htmlWorkdir is configured in Step 2.5 (persists across sessions).
app createsync-creates the local project folder underhtmlWorkdir, andserver startvalidateshtmlWorkdirbefore launching — if it is not configured,app createskips local folder creation (returns awarning) andserver startrefuses to start, causing fileWatcher to miss.htmlchanges and the canvas to stay blank ("page generated but canvas not showing").If Step 2.5 was skipped (e.g. resuming a session), verify now:
gemdesign server workdir(no flags) returns{"success":true,"htmlWorkdir":""}. If it returns an emptyhtmlWorkdir, rungemdesign server workdir --path ./outputbefore proceeding. -
Stop any previously running server (MANDATORY before every
server start, CANNOT be skipped):CRITICAL — 执行
server start之前必须先执行server stop终止之前启动的服务,无论应用是新建还是复用都不可跳过。这确保 fileWatcher 绑定到正确的项目目录,避免残留进程干扰新会话。HARD GATE - 严禁跳过此步:无论你认为当前是否已有服务在运行,都必须执行
gemdesign server stop命令。禁止以"服务器未运行"、"上一次会话已启动"、"浏览器预览已打开"、"为了节省时间"等任何理由跳过 stop。必须以gemdesign server stop的实际返回结果作为唯一判定依据。gemdesign server stop- 返回
{"success":true,"message":"本地服务已停止"}表示已停止,继续下一步。 - 返回
{"success":false,"error":"未发现运行中的本地服务"}表示无运行中的服务,忽略此错误继续下一步。 - 必须等待上述命令返回结果后才能进入第 2 步。在 stop 命令未返回前,不得执行任何
server start操作。
- 返回
-
Start the local server using the CLI command:
gemdesign server start必须在执行此命令前先完成上一步的
gemdesign server stop,不得在未停止旧服务的情况下直接 start。HARD GATE - 顺序约束:
server start必须在server stop命令返回结果(成功或"未发现运行中的本地服务"错误)之后才能执行。严禁以下行为:- 将
server stop与server start并行执行(例如在同一个并行工具调用批次中); - 在
server stop命令尚未返回结果时就发起server start; - 先执行
server start再执行server stop; - 因为"觉得没必要 stop"而跳过 stop 直接 start。
正确顺序:执行
gemdesign server stop-> 等待命令返回结果 -> 执行gemdesign server start。这是不可逆的串行依赖关系。- If the server starts successfully, the command returns JSON:
{"success":true,"port":,"url":"http://localhost:"} - If the server fails to start, the command returns JSON with an error:
{"success":false,"error":""} - On error: Read the error message carefully. Common errors:
"服务文件不存在": The CLI installation is incomplete — reinstall the CLI."服务启动失败,进程已退出": Possible port conflict or config file error — check~/.gemdesign/config.json.
- Record the `` from the success response for subsequent steps.
- 将
-
Check server status (optional, for debugging):
gemdesign server statusReturns:
{"success":true,"status":"running","port":,"url":"http://localhost:"}or{"success":true,"status":"stopped"} -
Open the preview (MANDATORY — HARD GATE, DO NOT SKIP): After the server is confirmed running (the
server startcommand returned success), you MUST open the browser and navigate to the service page named GemDesign设计器 (URL:http://localhost:- use the port from theserver startresponse).This step is NON-NEGOTIABLE. Do NOT proceed to any page generation workflow (Workflow A/B/C) until the browser is open at
http://localhost:. The server being up is NOT the same as the preview being open - the user must SEE the preview surface in the browser.DO NOT just output a URL in chat text. You MUST use a tool to actually open the browser. Outputting something like "服务器启动成功!请在浏览器中打开 http://localhost:4056" is a VIOLATION — the browser must be opened programmatically, not by asking the user to click a link.
How to open the browser — use the following methods in priority order:
Try the following methods in priority order. Use the FIRST one that is available and succeeds. If a method fails, skip it and try the next:
Priority Method How to use 1 Your platform's built-in browser/preview tool You MUST check what browser/preview tools are available on your current agent platform and use the most appropriate one. Different platforms provide different built-in tools — use whichever one your platform offers. Examples of platform-specific tools: Trae provides OpenPreviewand theintegrated_browserMCP'sbrowser_navigate; Cursor provides its own preview mechanism; other platforms may have equivalent tools. The key requirement is: you MUST use a tool to programmatically open the browser, not just output a URL in chat. Navigate tohttp://localhost:/using the tool.2 OS default browser command If no built-in browser/preview tool is available (or it failed), open the default browser via OS command: Windows start http://localhost:/, macOSopen http://localhost:/, Linuxxdg-open http://localhost:/.3 Tell the user to open the URL If ALL above methods fail or are unavailable, as a last resort, clearly tell the user: "请在浏览器中打开 http://localhost:/ 查看设计器预览" and wait for the user to confirm before proceeding. How to find your platform's built-in tool: Check your available tools list — look for tools with names like
OpenPreview,browser_navigate,preview,browser, or similar. Any tool that can open a URL in a browser panel qualifies. Use it with the URLhttp://localhost:/.Ensuring success:
- If the highest-priority method returned an error or you're unsure whether it succeeded, immediately fall back to the next method in the table.
- After opening the browser, verify the server is still accessible by re-checking the debug endpoint (
http://localhost:/api/local/stream/debugreturns 200). - Only proceed to page generation after you have made a best-effort attempt to open the browser using at least one available method.
After the preview is open, you may proceed to page generation workflows.
CRITICAL - The browser is opened EXACTLY ONCE, only here in Step 3. Once the browser is open at
http://localhost:(the designer SPA root), you MUST NEVER open the browser again — not during page generation (Workflows A/B/C), not during modification flows, not to "refresh" or "show" a generated page. The designer SPA stays open for the entire session; generated HTML is loaded into an iframe INSIDE the designer via SSE (see "Streaming Write Workflow"), NOT by navigating the browser to a new URL.Opening the browser again will navigate it away from the designer to whatever URL you passed — this OVERWRITES the designer with the generated HTML (or a 404), destroying the preview surface the user needs. The URL used to open the browser MUST ALWAYS be the designer root URL
http://localhost:/— NEVER a path to a generated.htmlfile (e.g.http://localhost:/output//.html), NEVER a page-specific URL. Generated pages have no direct browser URL; they are only viewable through the designer's iframe via SSE.
CLI Command Reference
Server Management
gemdesign server start [--port ] # 启动本地设计器服务(默认端口 4056)
gemdesign server stop # 停止本地设计器服务
gemdesign server status # 查看服务运行状态
gemdesign server workdir --path # 保存 HTML 工作目录(htmlWorkdir,相对路径基于当前目录解析为绝对路径)
gemdesign server workdir # 查看当前 htmlWorkdir
gemdesign server workdir --clear # 清除 htmlWorkdir 配置
gemdesign server cleanup # 清理空项目目录和遗留的流式文件
server workdir 保存 HTML 工作目录到
~/.gemdesign/config.json的htmlWorkdir字段。本地服务启动后通过 fileWatcher 监听此目录下的.html文件变更,并经 SSE 推送到浏览器画布。app create会在此目录下同步创建项目子目录{projectName}__{appuuid},server start也会在启动前校验 htmlWorkdir 是否已配置--未配置时app create跳过本地目录创建(返回warning),server start拒绝启动并返回错误提示,避免后台进程 cwd 与实际 HTML 生成目录不一致导致"页面生成但画布不显示"。建议在登录后、app create之前执行一次gemdesign server workdir --path ./output(路径通常是./output,即页面 HTML 的根目录)。配置一次后持久化,后续无需重复设置。 server start 以后台进程方式启动本地服务。执行server start之前必须先执行server stop终止之前的服务,不得在未停止旧服务的情况下直接 start。server stop严禁跳过(即使你认为没有运行中的服务也必须执行该命令),且server start必须等server stop命令返回结果后才能执行——禁止将两者并行执行、或在 stop 未返回时就发起 start。启动成功返回含port和url的 JSON;失败返回含error的 JSON,需仔细阅读错误信息诊断并修复后再重试(重试前同样要先 stop)。 server stop stops the running server. On Windows, usestaskkillto terminate the process tree. Returns error if no server is running or if the process cannot be terminated — 此时该错误可忽略(表示本就无运行中的服务),但仍视为 stop 步骤已执行完成,可继续 start。 server status returns the current status (runningorstopped), port, and URL if running.
Authentication
gemdesign auth login --token # 配置 GemDesign 令牌
gemdesign auth whoami # Verify identity
App Management
gemdesign app create --name "MyApp" --workdir [--type web|app] [--width ] [--height ] # Create new app (sync-creates local project folder under --workdir), --type defaults to web
gemdesign app list # List all apps
gemdesign app info [--appuuid ] # App details
gemdesign app use --appuuid --workdir # Switch current default app (creates/locates local project folder under --workdir)
app create 画布尺寸:
--width/--height用于指定画布像素尺寸。不传时按--type取默认值:web-> 1920×1080,app-> 440×956。传入的尺寸会随应用信息同步到本地设计器画布(覆盖默认值)。示例:gemdesign app create --name "PadApp" --type app --width 768 --height 1024。 CRITICAL -app createandapp userequire--workdir:app create和app use的--workdir是必填参数,指定本地项目子目录{projectName}__{appuuid}的父目录。路径由 agent 显式给出,CLI 不再通过配置自动猜测。--workdir会自动追加到htmlWorkdir配置数组(去重),local-server 据此扫描所有项目目录。建议传入./output(即gemdesign server workdir --path ./output配置的同一目录)。page create的--file同理:lock 文件直接写入--file推导出的项目子目录,保证 lock 与 html 同目录。 appuuid priority:--appuuidflag >defaultAppUuid(set byapp create/app use) >GEMDESIGN_APPUUIDenv Once you runapp createorapp use, subsequentpagecommands don't need--appuuid. IMPORTANT: Always checkgemdesign app listBEFORE creating a new app. Reuse existing apps to keep all pages in the same project folder. Only create a new app when the user explicitly asks for one. CRITICAL - Never create duplicate apps: Never callgemdesign app createmore than once in a single session/task. If you have already runapp createin this session, you MUST NOT run it again — even if a later workflow step or retry seems to require app setup. Instead, reuse the existing app by runninggemdesign app listto find it, thengemdesign app use --appuuid --workdir ./output. Creating a second app leaves the first one empty and orphaned on the platform. CRITICAL - Session lock error handling: The CLI now automatically verifies session locks via appuuid. Ifapp createreturnsstage: "appCreateSession"(session lock exists and the app still exists on remote), do NOT retry with--force. Instead: (1) Rungemdesign app use --appuuid --workdir ./outputto reuse the app. (2) If the existing app is from a different completed task, rungemdesign app end-session, thenapp create(without--force). (3) Only use--forceif you have verified viaapp listthat the session-lock app was deleted from the remote — note that the CLI now auto-cleans stale session locks (app deleted from remote), so--forceshould rarely be needed. (4) Ifapp createreturnsstage: "appCreateSessionVerify"(unable to verify app existence due to network error), wait and retry — do NOT use--force. CRITICAL - Restart the server around everyapp createorapp use: 正确顺序为:gemdesign server stop-> (等待 stop 命令返回结果) -> (确保htmlWorkdir已配置) ->gemdesign app create/gemdesign app use->gemdesign server start。该顺序由 workflow 步骤强制执行,不要作为独立序列重复执行。执行server start之前必须先执行server stop终止之前的服务,无论应用是新建还是复用,否则旧服务的 fileWatcher 仍绑定在前一个 app 的,新页面不会推送到画布。**`server stop` 这一步严禁跳过**(即使你认为没有运行中的服务也必须执行),且 **`server start` 必须等 `server stop` 命令返回结果后才能执行**,禁止并行执行或先 start 后 stop。 **IMPORTANT - Output app info to user**: After selecting/switching/creating an app (i.e., after any `app create`, `app use`, or `app info` call that establishes the working app), you MUST clearly tell the user in your text response which app is now the active target for page generation. At minimum, output the **app name** and **appuuid** (and ideally the computed). This ensures the user always knows which app pages will be generated/modified in, and can interrupt if the wrong app was picked. See the "Output current app info to user" step in each workflow for the exact format. CRITICAL - App type determines page type: Apps have a type -web(桌面端) orapp(移动端) - returned byapp infoas thepageScenefield. When generating new pages, the page type MUST match the app type: awebapp can only containwebpages (desktop layout, wide screen), and anappapp can only containapppages (mobile layout, narrow screen). Before generating any HTML, check the app'spageScenefromapp infoand design the page accordingly. Do NOT generate a desktop-width page for anapptype app, or a mobile-width page for awebtype app.
Style Search (optional helper)
gemdesign style search --keywords "科技,深蓝,企业" --limit 5 # Search styles
gemdesign style get --id
<!-- Page DOM -->
<!-- jsHandle functions (optional) -->
<!-- -->
<!-- Interaction DSL (MUST be last script) -->
Validation Rules Summary
The gemdesign validate command checks:
| # | Rule | What it checks |
|---|---|---|
| 1 | interaction_data_exists | `` present |
| 2 | dsl_json_valid | Content is valid JSON array |
| 3 | selector_exists | All original/target selectors exist in DOM |
| 4 | selector_format | Only #id and .class, no attribute selectors |
| 5 | original_single | original has only one selector |
| 6 | target_no_class | target uses only #id, no .class |
| 7 | jshandle_func_match | Each funcName has matching `` |
| 8 | script_id_funcname_match | script id equals function name |
| 9 | button_type | All buttons have type="button", no type="submit" |
| 10 | no_vh | No vh unit in classes or styles |
| 11 | no_hash_href | No href="#" |
| 12 | image_url_format | Placeholder image URLs use ./api/searchImage?query=...&width=...&height=... with numeric width/height, no spaces around & |
| 13 | data_uuid_complete | Tags with data-uuid also have id |
| 14 | interaction_data_last | interaction-data is the last script tag |
Tips
- Always validate before saving —
gemdesign validatecatches errors early - For batch generation, validate each page individually before saving
- Save HTML locally for every page:
./output//.htmlfor editing and saving to the platform. Always compute= {projectName}__{appuuid>first viagemdesign app info. The CLI is idempotent - passing a path that already contains `` will not duplicate it. - When creating a new page, pass a readable
--pageuuid(e.g.home,login) - use the same value asdata-uuidin navigation elements, so you don't need to update them after saving - Use
gemdesign page get --fileto retrieve editable HTML+DSL before modifying - The full page spec is available at
page-spec.mdin the CLI project directory
Related skills
High-fidelity HTML design and prototype skill for landing pages, slide decks, mobile mockups, interactive prototypes, dashboard explorations, design-directio...
Generate clickable HTML prototypes from a text prompt — landing pages, mobile apps, dashboards, and wireframes.
GenPage (genpage.ai). Use this skill for ANY GenPage request — reading, creating, updating, and deleting data. Whenever a task involves GenPage, use this skill instead of calling the API directly.
Semantic Design System Skill for Google Stitch. Generates agent-friendly DESIGN.md files that enforce premium, anti-generic UI standards — strict typography,...
Claude Code / Codex / Factory Droid plugin and Cursor / Copilot / Gemini CLI Agent Skill. Install with npx skills add Kayforkind/reimagine-it, /plugin marketplace add Kayforkind/reimagine-it, or codex plugin marketplace add Kayforkind/reimagine-it. Redesign any file from its own content: webpage, HTML, landing page, README, PDF, document, slides, PowerPoint, infographic, SVG, dashboard, CLI, or protocol. Use when the user says /reimagine-it, reimagine it, reinvent this, redesign this page, make an infographic, content-aware redesign, or wants a visual leap instead of a mood board. Tokens: artistic, cinematic, photography, neon, glassmorphism, bento, infographic, svg, 3js, simulation, plus leftover words as an open brief. Not /better.