{"id":"b0e9806f-325f-4e2f-a274-e51c953e4a84","entityType":"agent","slug":"clawhub-dlazyai-clothing-grass-planting","name":"穿搭种草图 Clothing Grass Planting","canonicalUrl":"https://www.xpersona.co/agent/clawhub-dlazyai-clothing-grass-planting","canonicalPath":"/agent/clawhub-dlazyai-clothing-grass-planting","generatedAt":"2026-10-11T01:49:07.961Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T23:38:53.931Z","emptyReason":null},"description":"同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。 Skill: 穿搭种草图 Clothing Grass Planting Owner: dlazyai Summary: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。 Tags: latest:1.0.18 Version history: v1.0.18 | 2026-10-10T01:47:50.604Z | user 例行版本更新 2026-10-10 v1.0.17 | 2026-10-08T01:40:45.147Z | user 例行版本更新 2026-10-08 v1.0.16 | 2026-10-04T01:41:09.670Z | user 例行版本更新 2026-10-04 v1.0.15 | 2026-10-02T05:14:29.813Z | user 例行版本更新 2026-10-02 v1.0.14 | 2026-09","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:clothing-grass-planting","sourceUrl":"https://clawhub.ai/dlazyai/clothing-grass-planting","homepage":"https://clawhub.ai/dlazyai/skills/clothing-grass-planting","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/dlazyai/clothing-grass-planting","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/dlazyai/skills/clothing-grass-planting","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。 Skill: 穿搭种草图 Clothing Grass Planting Owner: dlazyai Summary: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T23:38:53.931Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T23:38:53.931Z","emptyReason":null},"stars":null,"forks":null,"downloads":1228,"packageName":null,"latestVersion":"1.0.18","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T23:38:53.865Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T23:38:53.931Z","lastCrawledAt":"2026-10-10T23:38:53.865Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T23:38:53.865Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.18","createdAt":"2026-10-10T01:47:50.604Z","changelog":"例行版本更新 2026-10-10","fileCount":11,"zipByteSize":25394},{"version":"1.0.17","createdAt":"2026-10-08T01:40:45.147Z","changelog":"例行版本更新 2026-10-08","fileCount":11,"zipByteSize":25467},{"version":"1.0.16","createdAt":"2026-10-04T01:41:09.670Z","changelog":"例行版本更新 2026-10-04","fileCount":11,"zipByteSize":25561},{"version":"1.0.15","createdAt":"2026-10-02T05:14:29.813Z","changelog":"例行版本更新 2026-10-02","fileCount":11,"zipByteSize":25533},{"version":"1.0.14","createdAt":"2026-09-30T01:44:16.915Z","changelog":"例行版本更新 2026-09-30","fileCount":11,"zipByteSize":25487},{"version":"1.0.13","createdAt":"2026-09-28T02:34:29.227Z","changelog":"例行版本更新 2026-09-28","fileCount":11,"zipByteSize":25560},{"version":"1.0.12","createdAt":"2026-09-24T02:34:21.639Z","changelog":"例行版本更新 2026-09-24","fileCount":11,"zipByteSize":25604},{"version":"1.0.11","createdAt":"2026-09-22T01:38:19.439Z","changelog":"例行版本更新 2026-09-22","fileCount":11,"zipByteSize":25603}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:clothing-grass-planting","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-clothing-grass-planting/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-clothing-grass-planting/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-clothing-grass-planting/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-clothing-grass-planting/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-clothing-grass-planting/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-clothing-grass-planting/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T01:49:07.958Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-clothing-grass-planting/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-clothing-grass-planting/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-clothing-grass-planting/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-clothing-grass-planting/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T23:38:53.931Z","emptyReason":null},"readme":"Skill: 穿搭种草图 Clothing Grass Planting\n\nOwner: dlazyai\n\nSummary: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。\n\nTags: latest:1.0.18\n\nVersion history:\n\nv1.0.18 | 2026-10-10T01:47:50.604Z | user\n\n例行版本更新 2026-10-10\n\nv1.0.17 | 2026-10-08T01:40:45.147Z | user\n\n例行版本更新 2026-10-08\n\nv1.0.16 | 2026-10-04T01:41:09.670Z | user\n\n例行版本更新 2026-10-04\n\nv1.0.15 | 2026-10-02T05:14:29.813Z | user\n\n例行版本更新 2026-10-02\n\nv1.0.14 | 2026-09-30T01:44:16.915Z | user\n\n例行版本更新 2026-09-30\n\nv1.0.13 | 2026-09-28T02:34:29.227Z | user\n\n例行版本更新 2026-09-28\n\nv1.0.12 | 2026-09-24T02:34:21.639Z | user\n\n例行版本更新 2026-09-24\n\nv1.0.11 | 2026-09-22T01:38:19.439Z | user\n\n例行版本更新 2026-09-22\n\nv1.0.10 | 2026-09-20T01:48:29.723Z | user\n\n例行版本更新 2026-09-20\n\nv1.0.9 | 2026-09-14T01:35:31.711Z | user\n\n例行版本更新 2026-09-14\n\nv1.0.8 | 2026-09-10T01:32:51.445Z | user\n\n例行版本更新 2026-09-10\n\nv1.0.7 | 2026-09-08T01:39:10.318Z | user\n\n例行版本更新 2026-09-08\n\nv1.0.6 | 2026-09-07T01:47:32.465Z | user\n\n例行版本更新 2026-09-07\n\nv1.0.5 | 2026-09-04T01:40:41.766Z | user\n\n例行版本更新 2026-09-04\n\nv1.0.4 | 2026-09-02T01:36:11.881Z | user\n\n例行版本更新 2026-09-02\n\nv1.0.3 | 2026-08-31T07:02:43.949Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.2 | 2026-08-31T05:24:11.551Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.1 | 2026-08-29T03:58:22.827Z | user\n\nSync from GitHub\n\nv1.0.0 | 2026-08-18T04:38:41.303Z | user\n\nSync from GitHub\n\nArchive index:\n\nArchive v1.0.18: 11 files, 25394 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (1763b), SKILL.md (11887b), _meta.json (143b)\n\nFile v1.0.18:SKILL.md\n\n---\nname: clothing-grass-planting\nversion: 1.0.18\ndescription: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。\n---\n\n# clothing-grass-planting — 相同穿搭改模特场景姿势\n\n**穿搭不动，人 / 场景 / 姿势全换**，换成社交平台的种草风格。\n\n和 [one-shot](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/one-shot/skill.md) 的区别：one-shot 面向电商主图（保持棚拍规范、构图不动），本技能面向**内容种草**——要的是生活感、抓拍感、氛围光，构图和景别都可以变。\n\n---\n\n## 生成效果示例\n\n| 输入：原穿搭图 | 输入：场景/模特参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/source-outfit.jpg\" width=\"240\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/scene-reference.jpg\" width=\"240\"> |\n| `source-outfit.jpg` — 浅灰针织连衣裙 + 珍珠项链 + 托特包 + 银色高跟鞋，喷泉庭院 | `scene-reference.jpg` — 咖啡馆门口街拍，手抚头发，树影暖光 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep: a light-grey textured sleeveless knit mini dress with a mock neckline, a pearl choker, a cream-and-tan tote bag and silver pointed heels. Image 2 is the model, pose, scene and lighting reference: a young woman on a sunlit tree-lined street outside a coffee shop, hand in her hair, warm dappled daylight, shallow depth of field. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful: same grey knit texture, same neckline and hem length, same pearl choker, same tote bag colour blocking. Reproduce image 2 for the model identity, pose, camera angle, crop, street background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/clothing-grass-planting/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536。连衣裙的浅灰针织纹理、立领、腰线与裙长，珍珠项链的珠径，托特包的米白/棕拼色全部保留；模特、抚发姿势、咖啡馆街景、树影暖光与浅景深照抄参考图。\n\n---\n\n## 1、能力边界\n\n| 保持不变 | 会改变 |\n| --- | --- |\n| 上衣 / 下装 / 鞋 / 包 / 配饰的颜色、图案、材质、版型与搭配关系 | 模特身份、姿势与动作、场景与背景、光线与色调、机位与景别 |\n\n| 控制方式 | 说明 |\n| --- | --- |\n| 参考图 | 照抄某张种草图的模特、场景、姿势与光线 |\n| 自定义提示词 | 用文字描述目标场景与动作 |\n\n**不做**：不改穿搭的任何一件单品；不生成特定真人的换脸图；不用于伪造他人肖像代言或伪造使用体验。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 全身或大半身穿搭图 | 种草图通常要看到整套搭配 |\n| ✅ 每件单品都清晰可辨 | 看不清的单品换场景后会被重绘 |\n| ✅ 单人 | 多人同框模型分不清主体 |\n| ❌ 商品被严重遮挡 | 挡住的部分换姿势后必然变形 |\n| ❌ 已带滤镜/文字贴纸 | 会被一起带进新图，先洗干净 |\n\n---\n\n## 3、种草图的场景配方\n\n种草图的说服力来自「像是随手拍的」。四个要素缺一不可：\n\n| 要素 | 写法示例 |\n| --- | --- |\n| 场景 | `a sunlit tree-lined street outside a coffee shop` / `a bright bedroom with sheer curtains` / `a seaside boardwalk at golden hour` |\n| 动作 | `hand in her hair` / `mid-stride walking toward the camera` / `sitting on a step holding a coffee cup` |\n| 光线 | `warm dappled daylight through leaves` / `soft window light with visible haze` / `low golden-hour backlight with rim glow` |\n| 相机语言 | `shallow depth of field, shot on 50mm, slight film grain, natural colour grading` |\n\n**一套穿搭铺多篇笔记**：固定穿搭描述段，只换这四个要素 → 一套衣服出 5 个场景版本，覆盖不同内容主题（通勤 / 约会 / 旅行 / 居家 / 运动）。\n\n**穿搭锁定句**（必写，逐件点名）：\n\n```text\nKeep every garment detail faithful: same [上装描述], same [下装描述],\nsame [鞋], same [包], same [配饰] — colour, pattern, texture and fit unchanged.\n```\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（图像编辑模型；本技能要「整套穿搭逐件保真 + 人和环境全换」，是对指令跟随要求最高的一类任务）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task clothing-grass-planting \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/clothing-grass-planting-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/clothing-grass-planting.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[原穿搭图, 场景/模特参考图]`；纯文字描述场景时只传原图 | 顺序即 prompt 中的 image 1 / 2 |\n| `--size` | `1024x1536`（社交平台竖版） | 小红书/抖音以 3:4、9:16 为主 |\n| `--quality` | `medium` 常规；`high` 面料是卖点时 | 种草图对纹理要求略低于主图 |\n| `--imageFormat` | `jpeg` | 通用格式 |\n| `--batch` | `3` ~ `4` | 姿势与手部随机性大 |\n| `--save` | `docs/clothing-grass-planting/output-<场景>.jpg` | 按内容主题归档 |\n\n### Command Examples\n\n```bash\n# basic call: 用参考图换模特+场景+姿势\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep. Image 2 is the model, pose, scene and lighting reference. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful — colour, pattern, texture and fit unchanged. Reproduce image 2 for model identity, pose, camera angle, crop, background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 一套穿搭铺 5 个内容场景（纯文字描述场景）\nSRC=docs/clothing-grass-planting/source-outfit.jpg\nOUTFIT='Keep the complete outfit from the source image faithful: same light-grey textured sleeveless knit mini dress with mock neckline, same pearl choker, same cream-and-tan tote bag, same silver pointed heels — colour, pattern, texture and fit unchanged.'\nCAM='Photorealistic influencer-style photo, shallow depth of field, shot on 50mm, slight film grain, natural colour grading, no text, no watermark.'\nfor S in street cafe home travel commute; do\n  case $S in\n    street)  SCENE='on a sunlit tree-lined street, mid-stride walking toward the camera, warm dappled daylight through the leaves' ;;\n    cafe)    SCENE='sitting at a marble cafe table holding a coffee cup, soft window light with visible haze' ;;\n    home)    SCENE='standing by a bright bedroom window with sheer curtains, hand resting on the frame, soft diffused morning light' ;;\n    travel)  SCENE='on a seaside boardwalk at golden hour, hair moving in the wind, low backlight with rim glow' ;;\n    commute) SCENE='in a modern office lobby, walking past glass panels, cool even daylight' ;;\n  esac\n  dlazy gpt-image-2 \\\n    --prompt \"Lifestyle social-commerce photo. Replace the model, pose, scene and lighting: a young woman $SCENE. $OUTFIT $CAM\" \\\n    --images \"$SRC\" --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --batch 3 --save \"docs/clothing-grass-planting/output-$S.jpg\"\ndone\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 5、Prompt 模板\n\n```text\nLifestyle social-commerce photo.\n\nImage 1 shows the outfit to keep: [逐件描述：上装 / 下装 / 鞋 / 包 / 配饰].\nImage 2 is the model, pose, scene and lighting reference.   ← 用参考图时保留这行\n\nPut the complete outfit from image 1 onto the model from image 2.\n\nKeep every garment detail faithful: same [上装], same [下装], same [鞋], same [包],\nsame [配饰] — colour, pattern, texture and fit unchanged.\n\nReproduce image 2 for the model identity, pose, camera angle, crop, background\nand colour grading.\n（纯文字版改为：Replace the model, pose, scene and lighting: [场景 + 动作 + 光线]）\n\nPhotorealistic influencer-style photo, shallow depth of field, shot on 50mm,\nslight film grain, natural colour grading, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被换掉了 | 把它单独再点一次名，并追加 `This item must appear unchanged; substituting it is a failure.` |\n| 太像棚拍，没有生活感 | `Candid snapshot feel: slightly off-centre framing, motion in the hair or fabric, imperfect natural light.` |\n| 姿势太僵 | `Natural mid-action pose, weight on one leg, relaxed hands, not posing straight at the camera.` |\n| 手部崩坏 | `Hands must be anatomically correct — five distinct fingers, natural knuckles.` |\n| 场景抢戏 | `The outfit must remain the visual subject; keep the background softly defocused.` |\n\n---\n\n## 6、执行流程\n\n1. **洗干净输入**：去掉滤镜、文字贴纸（[remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)）。\n2. **逐件列穿搭**：上装 / 下装 / 鞋 / 包 / 配饰——一件一句，这段整组复用。\n3. **定内容主题**：通勤 / 约会 / 旅行 / 居家 / 运动，每个主题对应一组场景 + 动作 + 光线（第三节配方）。\n4. **补相机语言**：50mm、浅景深、轻微颗粒——这是「像随手拍」的关键。\n5. **`--batch 3~4`** 出多张挑姿势自然的，落盘到 `docs/clothing-grass-planting/`。\n6. **质检**：单品是否齐、是否被换、手部、生活感是否够、背景是否抢戏。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 包或鞋被换成别的 | 未逐件点名 | 逐件点名 + 追加「换掉即失败」句 |\n| 看起来还是棚拍 | 缺生活感描述 | 追加抓拍感句 + 相机语言 |\n| 姿势僵硬像证件照 | 未描述动作 | 追加自然动态姿势句 |\n| 手指崩坏 | 换姿势重绘手部 | 追加修手句 + `--batch 4` |\n| 裙长/领口变了 | 保真项写得笼统 | 写死领口形状与下摆长度 |\n| 一组图风格不统一 | 相机语言段每次都改 | 相机语言段整组逐字不变 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.18:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"clothing-grass-planting\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791596870604\n}\n\nFile v1.0.18:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\r\n  --dry-run                    Print payload without executing the tool\r\n  --no-wait                    Return generateId immediately for async tasks\r\n  --timeout <seconds>          Max seconds to wait for async completion\r\n                               (default: \"1800\")\r\n  --input <jsonOrFile>         Inline JSON or @path/to/file.json — merged under\r\n                               flag values (flags win)\r\n  --save <path>                Download the result asset to this local path\r\n                               (mkdir + retry handled for you). A destination\r\n                               path — NOT a response format; for stdout shape\r\n                               use --format\r\n  --batch <n>                  Fan-out N parallel runs (cloud tools only)\r\n                               (default: \"1\")\r\n  -h, --help                   display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.18:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.18:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.18:skill-card.md\n\n## Description:\n\nCreates social-commerce outfit images that preserve the clothing while changing the model, pose, scene, and lighting.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and commerce teams use this skill to turn an outfit photo into lifestyle promotional images for social platforms, using a reference image or a written scene description.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A reference person's likeness could appear in promotional images and imply an endorsement.\n\nMitigation: Review the skill before use; use reference images only with rights and consent, and avoid implying that a real person endorses a product.\n\nRisk: Prompts and reference images may be sent to the selected cloud image provider.\n\nMitigation: Check the provider and obtain permission before uploading images or sensitive prompts.\n\n## Reference(s):\n\n- [Image model options](references/model-flags.md)\n- [Provider setup and usage](references/provider-cli.md)\n\n## Skill Output:\n\n**Output Type(s):** [Image files, Shell commands, Guidance]\n\n**Output Format:** [JPEG images with Markdown instructions and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Typically 1024×1536 images; supports generating several variations.]\n\n## Skill Version(s):\n\n1.0.18 (source: frontmatter and server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.18:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.17: 11 files, 25467 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (1934b), SKILL.md (11887b), _meta.json (143b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: clothing-grass-planting\nversion: 1.0.17\ndescription: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。\n---\n\n# clothing-grass-planting — 相同穿搭改模特场景姿势\n\n**穿搭不动，人 / 场景 / 姿势全换**，换成社交平台的种草风格。\n\n和 [one-shot](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/one-shot/skill.md) 的区别：one-shot 面向电商主图（保持棚拍规范、构图不动），本技能面向**内容种草**——要的是生活感、抓拍感、氛围光，构图和景别都可以变。\n\n---\n\n## 生成效果示例\n\n| 输入：原穿搭图 | 输入：场景/模特参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/source-outfit.jpg\" width=\"240\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/scene-reference.jpg\" width=\"240\"> |\n| `source-outfit.jpg` — 浅灰针织连衣裙 + 珍珠项链 + 托特包 + 银色高跟鞋，喷泉庭院 | `scene-reference.jpg` — 咖啡馆门口街拍，手抚头发，树影暖光 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep: a light-grey textured sleeveless knit mini dress with a mock neckline, a pearl choker, a cream-and-tan tote bag and silver pointed heels. Image 2 is the model, pose, scene and lighting reference: a young woman on a sunlit tree-lined street outside a coffee shop, hand in her hair, warm dappled daylight, shallow depth of field. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful: same grey knit texture, same neckline and hem length, same pearl choker, same tote bag colour blocking. Reproduce image 2 for the model identity, pose, camera angle, crop, street background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/clothing-grass-planting/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536。连衣裙的浅灰针织纹理、立领、腰线与裙长，珍珠项链的珠径，托特包的米白/棕拼色全部保留；模特、抚发姿势、咖啡馆街景、树影暖光与浅景深照抄参考图。\n\n---\n\n## 1、能力边界\n\n| 保持不变 | 会改变 |\n| --- | --- |\n| 上衣 / 下装 / 鞋 / 包 / 配饰的颜色、图案、材质、版型与搭配关系 | 模特身份、姿势与动作、场景与背景、光线与色调、机位与景别 |\n\n| 控制方式 | 说明 |\n| --- | --- |\n| 参考图 | 照抄某张种草图的模特、场景、姿势与光线 |\n| 自定义提示词 | 用文字描述目标场景与动作 |\n\n**不做**：不改穿搭的任何一件单品；不生成特定真人的换脸图；不用于伪造他人肖像代言或伪造使用体验。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 全身或大半身穿搭图 | 种草图通常要看到整套搭配 |\n| ✅ 每件单品都清晰可辨 | 看不清的单品换场景后会被重绘 |\n| ✅ 单人 | 多人同框模型分不清主体 |\n| ❌ 商品被严重遮挡 | 挡住的部分换姿势后必然变形 |\n| ❌ 已带滤镜/文字贴纸 | 会被一起带进新图，先洗干净 |\n\n---\n\n## 3、种草图的场景配方\n\n种草图的说服力来自「像是随手拍的」。四个要素缺一不可：\n\n| 要素 | 写法示例 |\n| --- | --- |\n| 场景 | `a sunlit tree-lined street outside a coffee shop` / `a bright bedroom with sheer curtains` / `a seaside boardwalk at golden hour` |\n| 动作 | `hand in her hair` / `mid-stride walking toward the camera` / `sitting on a step holding a coffee cup` |\n| 光线 | `warm dappled daylight through leaves` / `soft window light with visible haze` / `low golden-hour backlight with rim glow` |\n| 相机语言 | `shallow depth of field, shot on 50mm, slight film grain, natural colour grading` |\n\n**一套穿搭铺多篇笔记**：固定穿搭描述段，只换这四个要素 → 一套衣服出 5 个场景版本，覆盖不同内容主题（通勤 / 约会 / 旅行 / 居家 / 运动）。\n\n**穿搭锁定句**（必写，逐件点名）：\n\n```text\nKeep every garment detail faithful: same [上装描述], same [下装描述],\nsame [鞋], same [包], same [配饰] — colour, pattern, texture and fit unchanged.\n```\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（图像编辑模型；本技能要「整套穿搭逐件保真 + 人和环境全换」，是对指令跟随要求最高的一类任务）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task clothing-grass-planting \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/clothing-grass-planting-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/clothing-grass-planting.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[原穿搭图, 场景/模特参考图]`；纯文字描述场景时只传原图 | 顺序即 prompt 中的 image 1 / 2 |\n| `--size` | `1024x1536`（社交平台竖版） | 小红书/抖音以 3:4、9:16 为主 |\n| `--quality` | `medium` 常规；`high` 面料是卖点时 | 种草图对纹理要求略低于主图 |\n| `--imageFormat` | `jpeg` | 通用格式 |\n| `--batch` | `3` ~ `4` | 姿势与手部随机性大 |\n| `--save` | `docs/clothing-grass-planting/output-<场景>.jpg` | 按内容主题归档 |\n\n### Command Examples\n\n```bash\n# basic call: 用参考图换模特+场景+姿势\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep. Image 2 is the model, pose, scene and lighting reference. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful — colour, pattern, texture and fit unchanged. Reproduce image 2 for model identity, pose, camera angle, crop, background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 一套穿搭铺 5 个内容场景（纯文字描述场景）\nSRC=docs/clothing-grass-planting/source-outfit.jpg\nOUTFIT='Keep the complete outfit from the source image faithful: same light-grey textured sleeveless knit mini dress with mock neckline, same pearl choker, same cream-and-tan tote bag, same silver pointed heels — colour, pattern, texture and fit unchanged.'\nCAM='Photorealistic influencer-style photo, shallow depth of field, shot on 50mm, slight film grain, natural colour grading, no text, no watermark.'\nfor S in street cafe home travel commute; do\n  case $S in\n    street)  SCENE='on a sunlit tree-lined street, mid-stride walking toward the camera, warm dappled daylight through the leaves' ;;\n    cafe)    SCENE='sitting at a marble cafe table holding a coffee cup, soft window light with visible haze' ;;\n    home)    SCENE='standing by a bright bedroom window with sheer curtains, hand resting on the frame, soft diffused morning light' ;;\n    travel)  SCENE='on a seaside boardwalk at golden hour, hair moving in the wind, low backlight with rim glow' ;;\n    commute) SCENE='in a modern office lobby, walking past glass panels, cool even daylight' ;;\n  esac\n  dlazy gpt-image-2 \\\n    --prompt \"Lifestyle social-commerce photo. Replace the model, pose, scene and lighting: a young woman $SCENE. $OUTFIT $CAM\" \\\n    --images \"$SRC\" --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --batch 3 --save \"docs/clothing-grass-planting/output-$S.jpg\"\ndone\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 5、Prompt 模板\n\n```text\nLifestyle social-commerce photo.\n\nImage 1 shows the outfit to keep: [逐件描述：上装 / 下装 / 鞋 / 包 / 配饰].\nImage 2 is the model, pose, scene and lighting reference.   ← 用参考图时保留这行\n\nPut the complete outfit from image 1 onto the model from image 2.\n\nKeep every garment detail faithful: same [上装], same [下装], same [鞋], same [包],\nsame [配饰] — colour, pattern, texture and fit unchanged.\n\nReproduce image 2 for the model identity, pose, camera angle, crop, background\nand colour grading.\n（纯文字版改为：Replace the model, pose, scene and lighting: [场景 + 动作 + 光线]）\n\nPhotorealistic influencer-style photo, shallow depth of field, shot on 50mm,\nslight film grain, natural colour grading, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被换掉了 | 把它单独再点一次名，并追加 `This item must appear unchanged; substituting it is a failure.` |\n| 太像棚拍，没有生活感 | `Candid snapshot feel: slightly off-centre framing, motion in the hair or fabric, imperfect natural light.` |\n| 姿势太僵 | `Natural mid-action pose, weight on one leg, relaxed hands, not posing straight at the camera.` |\n| 手部崩坏 | `Hands must be anatomically correct — five distinct fingers, natural knuckles.` |\n| 场景抢戏 | `The outfit must remain the visual subject; keep the background softly defocused.` |\n\n---\n\n## 6、执行流程\n\n1. **洗干净输入**：去掉滤镜、文字贴纸（[remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)）。\n2. **逐件列穿搭**：上装 / 下装 / 鞋 / 包 / 配饰——一件一句，这段整组复用。\n3. **定内容主题**：通勤 / 约会 / 旅行 / 居家 / 运动，每个主题对应一组场景 + 动作 + 光线（第三节配方）。\n4. **补相机语言**：50mm、浅景深、轻微颗粒——这是「像随手拍」的关键。\n5. **`--batch 3~4`** 出多张挑姿势自然的，落盘到 `docs/clothing-grass-planting/`。\n6. **质检**：单品是否齐、是否被换、手部、生活感是否够、背景是否抢戏。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 包或鞋被换成别的 | 未逐件点名 | 逐件点名 + 追加「换掉即失败」句 |\n| 看起来还是棚拍 | 缺生活感描述 | 追加抓拍感句 + 相机语言 |\n| 姿势僵硬像证件照 | 未描述动作 | 追加自然动态姿势句 |\n| 手指崩坏 | 换姿势重绘手部 | 追加修手句 + `--batch 4` |\n| 裙长/领口变了 | 保真项写得笼统 | 写死领口形状与下摆长度 |\n| 一组图风格不统一 | 相机语言段每次都改 | 相机语言段整组逐字不变 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.17:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"clothing-grass-planting\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1791423645147\n}\n\nFile v1.0.17:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\r\n  --dry-run                    Print payload without executing the tool\r\n  --no-wait                    Return generateId immediately for async tasks\r\n  --timeout <seconds>          Max seconds to wait for async completion\r\n                               (default: \"1800\")\r\n  --input <jsonOrFile>         Inline JSON or @path/to/file.json — merged under\r\n                               flag values (flags win)\r\n  --save <path>                Download the result asset to this local path\r\n                               (mkdir + retry handled for you). A destination\r\n                               path — NOT a response format; for stdout shape\r\n                               use --format\r\n  --batch <n>                  Fan-out N parallel runs (cloud tools only)\r\n                               (default: \"1\")\r\n  -h, --help                   display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.17:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.17:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.17:skill-card.md\n\n## Description:\n\nTurns outfit photos into social-style images with new models, poses, and settings while aiming to preserve the clothing and accessories.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and marketers use an outfit photo, optionally with a model or setting reference, to make lifestyle images for social posts while keeping the pictured outfit consistent.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prompts and clothing, model, or reference photos are sent to a cloud image provider.\n\nMitigation: Use a dry run to inspect the request, select the provider explicitly when privacy or billing matters, and share only images authorized for upload.\n\nRisk: Generated likenesses could imply a real person's endorsement or experience.\n\nMitigation: Do not use real people's images for impersonation, fabricated endorsements, or face-swap-like outputs.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/clothing-grass-planting)\n- [Image model options](artifact/references/model-flags.md)\n- [Provider setup and data flow](artifact/references/provider-cli.md)\n\n## Skill Output:\n\n**Output Type(s):** [Image files, Prompt text, Shell commands]\n\n**Output Format:** [Generated images (JPEG by default) with text guidance and optional JSON results]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Supports batches and a dry run that previews the request before generation.]\n\n## Skill Version(s):\n\n1.0.17 (source: ClawHub release and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.17:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.16: 11 files, 25561 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2167b), SKILL.md (11887b), _meta.json (143b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: clothing-grass-planting\nversion: 1.0.16\ndescription: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。\n---\n\n# clothing-grass-planting — 相同穿搭改模特场景姿势\n\n**穿搭不动，人 / 场景 / 姿势全换**，换成社交平台的种草风格。\n\n和 [one-shot](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/one-shot/skill.md) 的区别：one-shot 面向电商主图（保持棚拍规范、构图不动），本技能面向**内容种草**——要的是生活感、抓拍感、氛围光，构图和景别都可以变。\n\n---\n\n## 生成效果示例\n\n| 输入：原穿搭图 | 输入：场景/模特参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/source-outfit.jpg\" width=\"240\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/scene-reference.jpg\" width=\"240\"> |\n| `source-outfit.jpg` — 浅灰针织连衣裙 + 珍珠项链 + 托特包 + 银色高跟鞋，喷泉庭院 | `scene-reference.jpg` — 咖啡馆门口街拍，手抚头发，树影暖光 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep: a light-grey textured sleeveless knit mini dress with a mock neckline, a pearl choker, a cream-and-tan tote bag and silver pointed heels. Image 2 is the model, pose, scene and lighting reference: a young woman on a sunlit tree-lined street outside a coffee shop, hand in her hair, warm dappled daylight, shallow depth of field. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful: same grey knit texture, same neckline and hem length, same pearl choker, same tote bag colour blocking. Reproduce image 2 for the model identity, pose, camera angle, crop, street background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/clothing-grass-planting/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536。连衣裙的浅灰针织纹理、立领、腰线与裙长，珍珠项链的珠径，托特包的米白/棕拼色全部保留；模特、抚发姿势、咖啡馆街景、树影暖光与浅景深照抄参考图。\n\n---\n\n## 1、能力边界\n\n| 保持不变 | 会改变 |\n| --- | --- |\n| 上衣 / 下装 / 鞋 / 包 / 配饰的颜色、图案、材质、版型与搭配关系 | 模特身份、姿势与动作、场景与背景、光线与色调、机位与景别 |\n\n| 控制方式 | 说明 |\n| --- | --- |\n| 参考图 | 照抄某张种草图的模特、场景、姿势与光线 |\n| 自定义提示词 | 用文字描述目标场景与动作 |\n\n**不做**：不改穿搭的任何一件单品；不生成特定真人的换脸图；不用于伪造他人肖像代言或伪造使用体验。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 全身或大半身穿搭图 | 种草图通常要看到整套搭配 |\n| ✅ 每件单品都清晰可辨 | 看不清的单品换场景后会被重绘 |\n| ✅ 单人 | 多人同框模型分不清主体 |\n| ❌ 商品被严重遮挡 | 挡住的部分换姿势后必然变形 |\n| ❌ 已带滤镜/文字贴纸 | 会被一起带进新图，先洗干净 |\n\n---\n\n## 3、种草图的场景配方\n\n种草图的说服力来自「像是随手拍的」。四个要素缺一不可：\n\n| 要素 | 写法示例 |\n| --- | --- |\n| 场景 | `a sunlit tree-lined street outside a coffee shop` / `a bright bedroom with sheer curtains` / `a seaside boardwalk at golden hour` |\n| 动作 | `hand in her hair` / `mid-stride walking toward the camera` / `sitting on a step holding a coffee cup` |\n| 光线 | `warm dappled daylight through leaves` / `soft window light with visible haze` / `low golden-hour backlight with rim glow` |\n| 相机语言 | `shallow depth of field, shot on 50mm, slight film grain, natural colour grading` |\n\n**一套穿搭铺多篇笔记**：固定穿搭描述段，只换这四个要素 → 一套衣服出 5 个场景版本，覆盖不同内容主题（通勤 / 约会 / 旅行 / 居家 / 运动）。\n\n**穿搭锁定句**（必写，逐件点名）：\n\n```text\nKeep every garment detail faithful: same [上装描述], same [下装描述],\nsame [鞋], same [包], same [配饰] — colour, pattern, texture and fit unchanged.\n```\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（图像编辑模型；本技能要「整套穿搭逐件保真 + 人和环境全换」，是对指令跟随要求最高的一类任务）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task clothing-grass-planting \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/clothing-grass-planting-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/clothing-grass-planting.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[原穿搭图, 场景/模特参考图]`；纯文字描述场景时只传原图 | 顺序即 prompt 中的 image 1 / 2 |\n| `--size` | `1024x1536`（社交平台竖版） | 小红书/抖音以 3:4、9:16 为主 |\n| `--quality` | `medium` 常规；`high` 面料是卖点时 | 种草图对纹理要求略低于主图 |\n| `--imageFormat` | `jpeg` | 通用格式 |\n| `--batch` | `3` ~ `4` | 姿势与手部随机性大 |\n| `--save` | `docs/clothing-grass-planting/output-<场景>.jpg` | 按内容主题归档 |\n\n### Command Examples\n\n```bash\n# basic call: 用参考图换模特+场景+姿势\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep. Image 2 is the model, pose, scene and lighting reference. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful — colour, pattern, texture and fit unchanged. Reproduce image 2 for model identity, pose, camera angle, crop, background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 一套穿搭铺 5 个内容场景（纯文字描述场景）\nSRC=docs/clothing-grass-planting/source-outfit.jpg\nOUTFIT='Keep the complete outfit from the source image faithful: same light-grey textured sleeveless knit mini dress with mock neckline, same pearl choker, same cream-and-tan tote bag, same silver pointed heels — colour, pattern, texture and fit unchanged.'\nCAM='Photorealistic influencer-style photo, shallow depth of field, shot on 50mm, slight film grain, natural colour grading, no text, no watermark.'\nfor S in street cafe home travel commute; do\n  case $S in\n    street)  SCENE='on a sunlit tree-lined street, mid-stride walking toward the camera, warm dappled daylight through the leaves' ;;\n    cafe)    SCENE='sitting at a marble cafe table holding a coffee cup, soft window light with visible haze' ;;\n    home)    SCENE='standing by a bright bedroom window with sheer curtains, hand resting on the frame, soft diffused morning light' ;;\n    travel)  SCENE='on a seaside boardwalk at golden hour, hair moving in the wind, low backlight with rim glow' ;;\n    commute) SCENE='in a modern office lobby, walking past glass panels, cool even daylight' ;;\n  esac\n  dlazy gpt-image-2 \\\n    --prompt \"Lifestyle social-commerce photo. Replace the model, pose, scene and lighting: a young woman $SCENE. $OUTFIT $CAM\" \\\n    --images \"$SRC\" --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --batch 3 --save \"docs/clothing-grass-planting/output-$S.jpg\"\ndone\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 5、Prompt 模板\n\n```text\nLifestyle social-commerce photo.\n\nImage 1 shows the outfit to keep: [逐件描述：上装 / 下装 / 鞋 / 包 / 配饰].\nImage 2 is the model, pose, scene and lighting reference.   ← 用参考图时保留这行\n\nPut the complete outfit from image 1 onto the model from image 2.\n\nKeep every garment detail faithful: same [上装], same [下装], same [鞋], same [包],\nsame [配饰] — colour, pattern, texture and fit unchanged.\n\nReproduce image 2 for the model identity, pose, camera angle, crop, background\nand colour grading.\n（纯文字版改为：Replace the model, pose, scene and lighting: [场景 + 动作 + 光线]）\n\nPhotorealistic influencer-style photo, shallow depth of field, shot on 50mm,\nslight film grain, natural colour grading, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被换掉了 | 把它单独再点一次名，并追加 `This item must appear unchanged; substituting it is a failure.` |\n| 太像棚拍，没有生活感 | `Candid snapshot feel: slightly off-centre framing, motion in the hair or fabric, imperfect natural light.` |\n| 姿势太僵 | `Natural mid-action pose, weight on one leg, relaxed hands, not posing straight at the camera.` |\n| 手部崩坏 | `Hands must be anatomically correct — five distinct fingers, natural knuckles.` |\n| 场景抢戏 | `The outfit must remain the visual subject; keep the background softly defocused.` |\n\n---\n\n## 6、执行流程\n\n1. **洗干净输入**：去掉滤镜、文字贴纸（[remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)）。\n2. **逐件列穿搭**：上装 / 下装 / 鞋 / 包 / 配饰——一件一句，这段整组复用。\n3. **定内容主题**：通勤 / 约会 / 旅行 / 居家 / 运动，每个主题对应一组场景 + 动作 + 光线（第三节配方）。\n4. **补相机语言**：50mm、浅景深、轻微颗粒——这是「像随手拍」的关键。\n5. **`--batch 3~4`** 出多张挑姿势自然的，落盘到 `docs/clothing-grass-planting/`。\n6. **质检**：单品是否齐、是否被换、手部、生活感是否够、背景是否抢戏。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 包或鞋被换成别的 | 未逐件点名 | 逐件点名 + 追加「换掉即失败」句 |\n| 看起来还是棚拍 | 缺生活感描述 | 追加抓拍感句 + 相机语言 |\n| 姿势僵硬像证件照 | 未描述动作 | 追加自然动态姿势句 |\n| 手指崩坏 | 换姿势重绘手部 | 追加修手句 + `--batch 4` |\n| 裙长/领口变了 | 保真项写得笼统 | 写死领口形状与下摆长度 |\n| 一组图风格不统一 | 相机语言段每次都改 | 相机语言段整组逐字不变 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.16:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"clothing-grass-planting\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1791078069670\n}\n\nFile v1.0.16:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\r\n  --dry-run                    Print payload without executing the tool\r\n  --no-wait                    Return generateId immediately for async tasks\r\n  --timeout <seconds>          Max seconds to wait for async completion\r\n                               (default: \"1800\")\r\n  --input <jsonOrFile>         Inline JSON or @path/to/file.json — merged under\r\n                               flag values (flags win)\r\n  --save <path>                Download the result asset to this local path\r\n                               (mkdir + retry handled for you). A destination\r\n                               path — NOT a response format; for stdout shape\r\n                               use --format\r\n  --batch <n>                  Fan-out N parallel runs (cloud tools only)\r\n                               (default: \"1\")\r\n  -h, --help                   display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.16:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.16:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.16:skill-card.md\n\n## Description:\n\nHelps create social-media-style outfit images that preserve the clothing while changing the model, pose, setting, and lighting.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and commerce teams use the skill to turn an outfit photo into lifestyle promotional images across different scenes while retaining the pictured garments and accessories.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Prompts and supplied clothing or model photos are sent to the selected cloud image provider.\n\nMitigation: Use only images you have permission to share, avoid sensitive personal photos without consent, and confirm the provider before generation.\n\nRisk: Synthetic lifestyle images could be mistaken for a real person's endorsement or actual product experience.\n\nMitigation: Do not use the skill to impersonate a real person or fabricate endorsements or usage claims; review images before publishing.\n\nRisk: Generated images can alter garment details or introduce visual defects.\n\nMitigation: Compare each output against the source outfit and inspect accessories, fit, and anatomy before use.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/clothing-grass-planting)\n- [Provider and authentication guide](artifact/references/provider-cli.md)\n- [Image model options](artifact/references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Image files]\n\n**Output Format:** [Text guidance and commands; generated JPEG images saved to a chosen path]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Supports reference images or scene descriptions and multiple image variants.]\n\n## Skill Version(s):\n\n1.0.16 (source: skill frontmatter and server release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.16:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.15: 11 files, 25533 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2144b), SKILL.md (11887b), _meta.json (143b)\n\nFile v1.0.15:SKILL.md\n\n---\nname: clothing-grass-planting\nversion: 1.0.15\ndescription: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。\n---\n\n# clothing-grass-planting — 相同穿搭改模特场景姿势\n\n**穿搭不动，人 / 场景 / 姿势全换**，换成社交平台的种草风格。\n\n和 [one-shot](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/one-shot/skill.md) 的区别：one-shot 面向电商主图（保持棚拍规范、构图不动），本技能面向**内容种草**——要的是生活感、抓拍感、氛围光，构图和景别都可以变。\n\n---\n\n## 生成效果示例\n\n| 输入：原穿搭图 | 输入：场景/模特参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/source-outfit.jpg\" width=\"240\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/scene-reference.jpg\" width=\"240\"> |\n| `source-outfit.jpg` — 浅灰针织连衣裙 + 珍珠项链 + 托特包 + 银色高跟鞋，喷泉庭院 | `scene-reference.jpg` — 咖啡馆门口街拍，手抚头发，树影暖光 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep: a light-grey textured sleeveless knit mini dress with a mock neckline, a pearl choker, a cream-and-tan tote bag and silver pointed heels. Image 2 is the model, pose, scene and lighting reference: a young woman on a sunlit tree-lined street outside a coffee shop, hand in her hair, warm dappled daylight, shallow depth of field. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful: same grey knit texture, same neckline and hem length, same pearl choker, same tote bag colour blocking. Reproduce image 2 for the model identity, pose, camera angle, crop, street background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/clothing-grass-planting/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536。连衣裙的浅灰针织纹理、立领、腰线与裙长，珍珠项链的珠径，托特包的米白/棕拼色全部保留；模特、抚发姿势、咖啡馆街景、树影暖光与浅景深照抄参考图。\n\n---\n\n## 1、能力边界\n\n| 保持不变 | 会改变 |\n| --- | --- |\n| 上衣 / 下装 / 鞋 / 包 / 配饰的颜色、图案、材质、版型与搭配关系 | 模特身份、姿势与动作、场景与背景、光线与色调、机位与景别 |\n\n| 控制方式 | 说明 |\n| --- | --- |\n| 参考图 | 照抄某张种草图的模特、场景、姿势与光线 |\n| 自定义提示词 | 用文字描述目标场景与动作 |\n\n**不做**：不改穿搭的任何一件单品；不生成特定真人的换脸图；不用于伪造他人肖像代言或伪造使用体验。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 全身或大半身穿搭图 | 种草图通常要看到整套搭配 |\n| ✅ 每件单品都清晰可辨 | 看不清的单品换场景后会被重绘 |\n| ✅ 单人 | 多人同框模型分不清主体 |\n| ❌ 商品被严重遮挡 | 挡住的部分换姿势后必然变形 |\n| ❌ 已带滤镜/文字贴纸 | 会被一起带进新图，先洗干净 |\n\n---\n\n## 3、种草图的场景配方\n\n种草图的说服力来自「像是随手拍的」。四个要素缺一不可：\n\n| 要素 | 写法示例 |\n| --- | --- |\n| 场景 | `a sunlit tree-lined street outside a coffee shop` / `a bright bedroom with sheer curtains` / `a seaside boardwalk at golden hour` |\n| 动作 | `hand in her hair` / `mid-stride walking toward the camera` / `sitting on a step holding a coffee cup` |\n| 光线 | `warm dappled daylight through leaves` / `soft window light with visible haze` / `low golden-hour backlight with rim glow` |\n| 相机语言 | `shallow depth of field, shot on 50mm, slight film grain, natural colour grading` |\n\n**一套穿搭铺多篇笔记**：固定穿搭描述段，只换这四个要素 → 一套衣服出 5 个场景版本，覆盖不同内容主题（通勤 / 约会 / 旅行 / 居家 / 运动）。\n\n**穿搭锁定句**（必写，逐件点名）：\n\n```text\nKeep every garment detail faithful: same [上装描述], same [下装描述],\nsame [鞋], same [包], same [配饰] — colour, pattern, texture and fit unchanged.\n```\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（图像编辑模型；本技能要「整套穿搭逐件保真 + 人和环境全换」，是对指令跟随要求最高的一类任务）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task clothing-grass-planting \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/clothing-grass-planting-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/clothing-grass-planting.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[原穿搭图, 场景/模特参考图]`；纯文字描述场景时只传原图 | 顺序即 prompt 中的 image 1 / 2 |\n| `--size` | `1024x1536`（社交平台竖版） | 小红书/抖音以 3:4、9:16 为主 |\n| `--quality` | `medium` 常规；`high` 面料是卖点时 | 种草图对纹理要求略低于主图 |\n| `--imageFormat` | `jpeg` | 通用格式 |\n| `--batch` | `3` ~ `4` | 姿势与手部随机性大 |\n| `--save` | `docs/clothing-grass-planting/output-<场景>.jpg` | 按内容主题归档 |\n\n### Command Examples\n\n```bash\n# basic call: 用参考图换模特+场景+姿势\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep. Image 2 is the model, pose, scene and lighting reference. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful — colour, pattern, texture and fit unchanged. Reproduce image 2 for model identity, pose, camera angle, crop, background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 一套穿搭铺 5 个内容场景（纯文字描述场景）\nSRC=docs/clothing-grass-planting/source-outfit.jpg\nOUTFIT='Keep the complete outfit from the source image faithful: same light-grey textured sleeveless knit mini dress with mock neckline, same pearl choker, same cream-and-tan tote bag, same silver pointed heels — colour, pattern, texture and fit unchanged.'\nCAM='Photorealistic influencer-style photo, shallow depth of field, shot on 50mm, slight film grain, natural colour grading, no text, no watermark.'\nfor S in street cafe home travel commute; do\n  case $S in\n    street)  SCENE='on a sunlit tree-lined street, mid-stride walking toward the camera, warm dappled daylight through the leaves' ;;\n    cafe)    SCENE='sitting at a marble cafe table holding a coffee cup, soft window light with visible haze' ;;\n    home)    SCENE='standing by a bright bedroom window with sheer curtains, hand resting on the frame, soft diffused morning light' ;;\n    travel)  SCENE='on a seaside boardwalk at golden hour, hair moving in the wind, low backlight with rim glow' ;;\n    commute) SCENE='in a modern office lobby, walking past glass panels, cool even daylight' ;;\n  esac\n  dlazy gpt-image-2 \\\n    --prompt \"Lifestyle social-commerce photo. Replace the model, pose, scene and lighting: a young woman $SCENE. $OUTFIT $CAM\" \\\n    --images \"$SRC\" --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --batch 3 --save \"docs/clothing-grass-planting/output-$S.jpg\"\ndone\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 5、Prompt 模板\n\n```text\nLifestyle social-commerce photo.\n\nImage 1 shows the outfit to keep: [逐件描述：上装 / 下装 / 鞋 / 包 / 配饰].\nImage 2 is the model, pose, scene and lighting reference.   ← 用参考图时保留这行\n\nPut the complete outfit from image 1 onto the model from image 2.\n\nKeep every garment detail faithful: same [上装], same [下装], same [鞋], same [包],\nsame [配饰] — colour, pattern, texture and fit unchanged.\n\nReproduce image 2 for the model identity, pose, camera angle, crop, background\nand colour grading.\n（纯文字版改为：Replace the model, pose, scene and lighting: [场景 + 动作 + 光线]）\n\nPhotorealistic influencer-style photo, shallow depth of field, shot on 50mm,\nslight film grain, natural colour grading, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被换掉了 | 把它单独再点一次名，并追加 `This item must appear unchanged; substituting it is a failure.` |\n| 太像棚拍，没有生活感 | `Candid snapshot feel: slightly off-centre framing, motion in the hair or fabric, imperfect natural light.` |\n| 姿势太僵 | `Natural mid-action pose, weight on one leg, relaxed hands, not posing straight at the camera.` |\n| 手部崩坏 | `Hands must be anatomically correct — five distinct fingers, natural knuckles.` |\n| 场景抢戏 | `The outfit must remain the visual subject; keep the background softly defocused.` |\n\n---\n\n## 6、执行流程\n\n1. **洗干净输入**：去掉滤镜、文字贴纸（[remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)）。\n2. **逐件列穿搭**：上装 / 下装 / 鞋 / 包 / 配饰——一件一句，这段整组复用。\n3. **定内容主题**：通勤 / 约会 / 旅行 / 居家 / 运动，每个主题对应一组场景 + 动作 + 光线（第三节配方）。\n4. **补相机语言**：50mm、浅景深、轻微颗粒——这是「像随手拍」的关键。\n5. **`--batch 3~4`** 出多张挑姿势自然的，落盘到 `docs/clothing-grass-planting/`。\n6. **质检**：单品是否齐、是否被换、手部、生活感是否够、背景是否抢戏。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 包或鞋被换成别的 | 未逐件点名 | 逐件点名 + 追加「换掉即失败」句 |\n| 看起来还是棚拍 | 缺生活感描述 | 追加抓拍感句 + 相机语言 |\n| 姿势僵硬像证件照 | 未描述动作 | 追加自然动态姿势句 |\n| 手指崩坏 | 换姿势重绘手部 | 追加修手句 + `--batch 4` |\n| 裙长/领口变了 | 保真项写得笼统 | 写死领口形状与下摆长度 |\n| 一组图风格不统一 | 相机语言段每次都改 | 相机语言段整组逐字不变 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.15:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"clothing-grass-planting\",\n  \"version\": \"1.0.15\",\n  \"publishedAt\": 1790918069813\n}\n\nFile v1.0.15:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\r\n  --dry-run                    Print payload without executing the tool\r\n  --no-wait                    Return generateId immediately for async tasks\r\n  --timeout <seconds>          Max seconds to wait for async completion\r\n                               (default: \"1800\")\r\n  --input <jsonOrFile>         Inline JSON or @path/to/file.json — merged under\r\n                               flag values (flags win)\r\n  --save <path>                Download the result asset to this local path\r\n                               (mkdir + retry handled for you). A destination\r\n                               path — NOT a response format; for stdout shape\r\n                               use --format\r\n  --batch <n>                  Fan-out N parallel runs (cloud tools only)\r\n                               (default: \"1\")\r\n  -h, --help                   display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.15:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.15:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.15:skill-card.md\n\n## Description:\n\nTurns an outfit photo into social-style fashion images with a different model, pose, and setting while aiming to preserve the clothing details.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and marketers use the skill to turn an outfit photo into lifestyle fashion images for social content, changing the model and setting while keeping the outfit consistent.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Outfit photos, reference images, and prompts are sent to the selected cloud image provider.\n\nMitigation: Use explicit image paths, avoid private or regulated photos, and review the provider and credentials before submission.\n\nRisk: Generated images may misstate clothing details or imply a real person's endorsement.\n\nMitigation: Review clothing fidelity and obtain permission for likeness references; do not use outputs to impersonate people or fabricate endorsements.\n\nRisk: Batch generation may incur cloud provider charges.\n\nMitigation: Run a dry run to inspect the request and estimated cost before generating images.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/dlazyai/skills/clothing-grass-planting)\n- [Provider and data-flow reference](artifact/references/provider-cli.md)\n- [Image generation options](artifact/references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Image files, Guidance, Shell commands]\n\n**Output Format:** [Locally saved JPEG, PNG, or WebP images; text guidance and generation commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Optional batches of scene variations; a dry run previews the request and estimated cost.]\n\n## Skill Version(s):\n\n1.0.15 (source: server-resolved release, skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.15:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.14: 11 files, 25487 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (1946b), SKILL.md (11887b), _meta.json (143b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: clothing-grass-planting\nversion: 1.0.14\ndescription: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。\n---\n\n# clothing-grass-planting — 相同穿搭改模特场景姿势\n\n**穿搭不动，人 / 场景 / 姿势全换**，换成社交平台的种草风格。\n\n和 [one-shot](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/one-shot/skill.md) 的区别：one-shot 面向电商主图（保持棚拍规范、构图不动），本技能面向**内容种草**——要的是生活感、抓拍感、氛围光，构图和景别都可以变。\n\n---\n\n## 生成效果示例\n\n| 输入：原穿搭图 | 输入：场景/模特参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/source-outfit.jpg\" width=\"240\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/scene-reference.jpg\" width=\"240\"> |\n| `source-outfit.jpg` — 浅灰针织连衣裙 + 珍珠项链 + 托特包 + 银色高跟鞋，喷泉庭院 | `scene-reference.jpg` — 咖啡馆门口街拍，手抚头发，树影暖光 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep: a light-grey textured sleeveless knit mini dress with a mock neckline, a pearl choker, a cream-and-tan tote bag and silver pointed heels. Image 2 is the model, pose, scene and lighting reference: a young woman on a sunlit tree-lined street outside a coffee shop, hand in her hair, warm dappled daylight, shallow depth of field. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful: same grey knit texture, same neckline and hem length, same pearl choker, same tote bag colour blocking. Reproduce image 2 for the model identity, pose, camera angle, crop, street background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/clothing-grass-planting/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536。连衣裙的浅灰针织纹理、立领、腰线与裙长，珍珠项链的珠径，托特包的米白/棕拼色全部保留；模特、抚发姿势、咖啡馆街景、树影暖光与浅景深照抄参考图。\n\n---\n\n## 1、能力边界\n\n| 保持不变 | 会改变 |\n| --- | --- |\n| 上衣 / 下装 / 鞋 / 包 / 配饰的颜色、图案、材质、版型与搭配关系 | 模特身份、姿势与动作、场景与背景、光线与色调、机位与景别 |\n\n| 控制方式 | 说明 |\n| --- | --- |\n| 参考图 | 照抄某张种草图的模特、场景、姿势与光线 |\n| 自定义提示词 | 用文字描述目标场景与动作 |\n\n**不做**：不改穿搭的任何一件单品；不生成特定真人的换脸图；不用于伪造他人肖像代言或伪造使用体验。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 全身或大半身穿搭图 | 种草图通常要看到整套搭配 |\n| ✅ 每件单品都清晰可辨 | 看不清的单品换场景后会被重绘 |\n| ✅ 单人 | 多人同框模型分不清主体 |\n| ❌ 商品被严重遮挡 | 挡住的部分换姿势后必然变形 |\n| ❌ 已带滤镜/文字贴纸 | 会被一起带进新图，先洗干净 |\n\n---\n\n## 3、种草图的场景配方\n\n种草图的说服力来自「像是随手拍的」。四个要素缺一不可：\n\n| 要素 | 写法示例 |\n| --- | --- |\n| 场景 | `a sunlit tree-lined street outside a coffee shop` / `a bright bedroom with sheer curtains` / `a seaside boardwalk at golden hour` |\n| 动作 | `hand in her hair` / `mid-stride walking toward the camera` / `sitting on a step holding a coffee cup` |\n| 光线 | `warm dappled daylight through leaves` / `soft window light with visible haze` / `low golden-hour backlight with rim glow` |\n| 相机语言 | `shallow depth of field, shot on 50mm, slight film grain, natural colour grading` |\n\n**一套穿搭铺多篇笔记**：固定穿搭描述段，只换这四个要素 → 一套衣服出 5 个场景版本，覆盖不同内容主题（通勤 / 约会 / 旅行 / 居家 / 运动）。\n\n**穿搭锁定句**（必写，逐件点名）：\n\n```text\nKeep every garment detail faithful: same [上装描述], same [下装描述],\nsame [鞋], same [包], same [配饰] — colour, pattern, texture and fit unchanged.\n```\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（图像编辑模型；本技能要「整套穿搭逐件保真 + 人和环境全换」，是对指令跟随要求最高的一类任务）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task clothing-grass-planting \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/clothing-grass-planting-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/clothing-grass-planting.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[原穿搭图, 场景/模特参考图]`；纯文字描述场景时只传原图 | 顺序即 prompt 中的 image 1 / 2 |\n| `--size` | `1024x1536`（社交平台竖版） | 小红书/抖音以 3:4、9:16 为主 |\n| `--quality` | `medium` 常规；`high` 面料是卖点时 | 种草图对纹理要求略低于主图 |\n| `--imageFormat` | `jpeg` | 通用格式 |\n| `--batch` | `3` ~ `4` | 姿势与手部随机性大 |\n| `--save` | `docs/clothing-grass-planting/output-<场景>.jpg` | 按内容主题归档 |\n\n### Command Examples\n\n```bash\n# basic call: 用参考图换模特+场景+姿势\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep. Image 2 is the model, pose, scene and lighting reference. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful — colour, pattern, texture and fit unchanged. Reproduce image 2 for model identity, pose, camera angle, crop, background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 一套穿搭铺 5 个内容场景（纯文字描述场景）\nSRC=docs/clothing-grass-planting/source-outfit.jpg\nOUTFIT='Keep the complete outfit from the source image faithful: same light-grey textured sleeveless knit mini dress with mock neckline, same pearl choker, same cream-and-tan tote bag, same silver pointed heels — colour, pattern, texture and fit unchanged.'\nCAM='Photorealistic influencer-style photo, shallow depth of field, shot on 50mm, slight film grain, natural colour grading, no text, no watermark.'\nfor S in street cafe home travel commute; do\n  case $S in\n    street)  SCENE='on a sunlit tree-lined street, mid-stride walking toward the camera, warm dappled daylight through the leaves' ;;\n    cafe)    SCENE='sitting at a marble cafe table holding a coffee cup, soft window light with visible haze' ;;\n    home)    SCENE='standing by a bright bedroom window with sheer curtains, hand resting on the frame, soft diffused morning light' ;;\n    travel)  SCENE='on a seaside boardwalk at golden hour, hair moving in the wind, low backlight with rim glow' ;;\n    commute) SCENE='in a modern office lobby, walking past glass panels, cool even daylight' ;;\n  esac\n  dlazy gpt-image-2 \\\n    --prompt \"Lifestyle social-commerce photo. Replace the model, pose, scene and lighting: a young woman $SCENE. $OUTFIT $CAM\" \\\n    --images \"$SRC\" --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --batch 3 --save \"docs/clothing-grass-planting/output-$S.jpg\"\ndone\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 5、Prompt 模板\n\n```text\nLifestyle social-commerce photo.\n\nImage 1 shows the outfit to keep: [逐件描述：上装 / 下装 / 鞋 / 包 / 配饰].\nImage 2 is the model, pose, scene and lighting reference.   ← 用参考图时保留这行\n\nPut the complete outfit from image 1 onto the model from image 2.\n\nKeep every garment detail faithful: same [上装], same [下装], same [鞋], same [包],\nsame [配饰] — colour, pattern, texture and fit unchanged.\n\nReproduce image 2 for the model identity, pose, camera angle, crop, background\nand colour grading.\n（纯文字版改为：Replace the model, pose, scene and lighting: [场景 + 动作 + 光线]）\n\nPhotorealistic influencer-style photo, shallow depth of field, shot on 50mm,\nslight film grain, natural colour grading, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被换掉了 | 把它单独再点一次名，并追加 `This item must appear unchanged; substituting it is a failure.` |\n| 太像棚拍，没有生活感 | `Candid snapshot feel: slightly off-centre framing, motion in the hair or fabric, imperfect natural light.` |\n| 姿势太僵 | `Natural mid-action pose, weight on one leg, relaxed hands, not posing straight at the camera.` |\n| 手部崩坏 | `Hands must be anatomically correct — five distinct fingers, natural knuckles.` |\n| 场景抢戏 | `The outfit must remain the visual subject; keep the background softly defocused.` |\n\n---\n\n## 6、执行流程\n\n1. **洗干净输入**：去掉滤镜、文字贴纸（[remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)）。\n2. **逐件列穿搭**：上装 / 下装 / 鞋 / 包 / 配饰——一件一句，这段整组复用。\n3. **定内容主题**：通勤 / 约会 / 旅行 / 居家 / 运动，每个主题对应一组场景 + 动作 + 光线（第三节配方）。\n4. **补相机语言**：50mm、浅景深、轻微颗粒——这是「像随手拍」的关键。\n5. **`--batch 3~4`** 出多张挑姿势自然的，落盘到 `docs/clothing-grass-planting/`。\n6. **质检**：单品是否齐、是否被换、手部、生活感是否够、背景是否抢戏。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 包或鞋被换成别的 | 未逐件点名 | 逐件点名 + 追加「换掉即失败」句 |\n| 看起来还是棚拍 | 缺生活感描述 | 追加抓拍感句 + 相机语言 |\n| 姿势僵硬像证件照 | 未描述动作 | 追加自然动态姿势句 |\n| 手指崩坏 | 换姿势重绘手部 | 追加修手句 + `--batch 4` |\n| 裙长/领口变了 | 保真项写得笼统 | 写死领口形状与下摆长度 |\n| 一组图风格不统一 | 相机语言段每次都改 | 相机语言段整组逐字不变 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.14:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"clothing-grass-planting\",\n  \"version\": \"1.0.14\",\n  \"publishedAt\": 1790732656915\n}\n\nFile v1.0.14:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\r\n  --dry-run                    Print payload without executing the tool\r\n  --no-wait                    Return generateId immediately for async tasks\r\n  --timeout <seconds>          Max seconds to wait for async completion\r\n                               (default: \"1800\")\r\n  --input <jsonOrFile>         Inline JSON or @path/to/file.json — merged under\r\n                               flag values (flags win)\r\n  --save <path>                Download the result asset to this local path\r\n                               (mkdir + retry handled for you). A destination\r\n                               path — NOT a response format; for stdout shape\r\n                               use --format\r\n  --batch <n>                  Fan-out N parallel runs (cloud tools only)\r\n                               (default: \"1\")\r\n  -h, --help                   display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.14:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.14:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.14:skill-card.md\n\n## Description:\n\nTurns an outfit photo into lifestyle social-commerce images with a different model, pose, and setting while aiming to preserve the clothing details.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nContent creators and commerce teams use the skill to create social-media-ready outfit images in varied settings from clothing photos and optional model or scene references.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A reference person's likeness could be reproduced in a misleading endorsement or fabricated experience.\n\nMitigation: Use only images with rights and consent; avoid depicting public figures or private individuals, or implying their endorsement, without authorization.\n\nRisk: Local or linked photos may be sent to a third-party image provider for processing.\n\nMitigation: Review the destination before generating and submit only photos whose upload and processing are authorized.\n\n## Reference(s):\n\n- [Provider CLI and data-flow reference](references/provider-cli.md)\n- [Image model options](references/model-flags.md)\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/clothing-grass-planting)\n\n## Skill Output:\n\n**Output Type(s):** [Image files, Shell commands, Guidance]\n\n**Output Format:** [JPEG images with Markdown instructions and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Typically 1024 × 1536 pixels; optional batches of three or four images.]\n\n## Skill Version(s):\n\n1.0.14 (source: skill frontmatter and ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.14:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.13: 11 files, 25560 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2179b), SKILL.md (11887b), _meta.json (143b)\n\nFile v1.0.13:SKILL.md\n\n---\nname: clothing-grass-planting\nversion: 1.0.13\ndescription: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。\n---\n\n# clothing-grass-planting — 相同穿搭改模特场景姿势\n\n**穿搭不动，人 / 场景 / 姿势全换**，换成社交平台的种草风格。\n\n和 [one-shot](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/one-shot/skill.md) 的区别：one-shot 面向电商主图（保持棚拍规范、构图不动），本技能面向**内容种草**——要的是生活感、抓拍感、氛围光，构图和景别都可以变。\n\n---\n\n## 生成效果示例\n\n| 输入：原穿搭图 | 输入：场景/模特参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/source-outfit.jpg\" width=\"240\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/scene-reference.jpg\" width=\"240\"> |\n| `source-outfit.jpg` — 浅灰针织连衣裙 + 珍珠项链 + 托特包 + 银色高跟鞋，喷泉庭院 | `scene-reference.jpg` — 咖啡馆门口街拍，手抚头发，树影暖光 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep: a light-grey textured sleeveless knit mini dress with a mock neckline, a pearl choker, a cream-and-tan tote bag and silver pointed heels. Image 2 is the model, pose, scene and lighting reference: a young woman on a sunlit tree-lined street outside a coffee shop, hand in her hair, warm dappled daylight, shallow depth of field. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful: same grey knit texture, same neckline and hem length, same pearl choker, same tote bag colour blocking. Reproduce image 2 for the model identity, pose, camera angle, crop, street background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/clothing-grass-planting/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536。连衣裙的浅灰针织纹理、立领、腰线与裙长，珍珠项链的珠径，托特包的米白/棕拼色全部保留；模特、抚发姿势、咖啡馆街景、树影暖光与浅景深照抄参考图。\n\n---\n\n## 1、能力边界\n\n| 保持不变 | 会改变 |\n| --- | --- |\n| 上衣 / 下装 / 鞋 / 包 / 配饰的颜色、图案、材质、版型与搭配关系 | 模特身份、姿势与动作、场景与背景、光线与色调、机位与景别 |\n\n| 控制方式 | 说明 |\n| --- | --- |\n| 参考图 | 照抄某张种草图的模特、场景、姿势与光线 |\n| 自定义提示词 | 用文字描述目标场景与动作 |\n\n**不做**：不改穿搭的任何一件单品；不生成特定真人的换脸图；不用于伪造他人肖像代言或伪造使用体验。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 全身或大半身穿搭图 | 种草图通常要看到整套搭配 |\n| ✅ 每件单品都清晰可辨 | 看不清的单品换场景后会被重绘 |\n| ✅ 单人 | 多人同框模型分不清主体 |\n| ❌ 商品被严重遮挡 | 挡住的部分换姿势后必然变形 |\n| ❌ 已带滤镜/文字贴纸 | 会被一起带进新图，先洗干净 |\n\n---\n\n## 3、种草图的场景配方\n\n种草图的说服力来自「像是随手拍的」。四个要素缺一不可：\n\n| 要素 | 写法示例 |\n| --- | --- |\n| 场景 | `a sunlit tree-lined street outside a coffee shop` / `a bright bedroom with sheer curtains` / `a seaside boardwalk at golden hour` |\n| 动作 | `hand in her hair` / `mid-stride walking toward the camera` / `sitting on a step holding a coffee cup` |\n| 光线 | `warm dappled daylight through leaves` / `soft window light with visible haze` / `low golden-hour backlight with rim glow` |\n| 相机语言 | `shallow depth of field, shot on 50mm, slight film grain, natural colour grading` |\n\n**一套穿搭铺多篇笔记**：固定穿搭描述段，只换这四个要素 → 一套衣服出 5 个场景版本，覆盖不同内容主题（通勤 / 约会 / 旅行 / 居家 / 运动）。\n\n**穿搭锁定句**（必写，逐件点名）：\n\n```text\nKeep every garment detail faithful: same [上装描述], same [下装描述],\nsame [鞋], same [包], same [配饰] — colour, pattern, texture and fit unchanged.\n```\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（图像编辑模型；本技能要「整套穿搭逐件保真 + 人和环境全换」，是对指令跟随要求最高的一类任务）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task clothing-grass-planting \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/clothing-grass-planting-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/clothing-grass-planting.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[原穿搭图, 场景/模特参考图]`；纯文字描述场景时只传原图 | 顺序即 prompt 中的 image 1 / 2 |\n| `--size` | `1024x1536`（社交平台竖版） | 小红书/抖音以 3:4、9:16 为主 |\n| `--quality` | `medium` 常规；`high` 面料是卖点时 | 种草图对纹理要求略低于主图 |\n| `--imageFormat` | `jpeg` | 通用格式 |\n| `--batch` | `3` ~ `4` | 姿势与手部随机性大 |\n| `--save` | `docs/clothing-grass-planting/output-<场景>.jpg` | 按内容主题归档 |\n\n### Command Examples\n\n```bash\n# basic call: 用参考图换模特+场景+姿势\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep. Image 2 is the model, pose, scene and lighting reference. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful — colour, pattern, texture and fit unchanged. Reproduce image 2 for model identity, pose, camera angle, crop, background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 一套穿搭铺 5 个内容场景（纯文字描述场景）\nSRC=docs/clothing-grass-planting/source-outfit.jpg\nOUTFIT='Keep the complete outfit from the source image faithful: same light-grey textured sleeveless knit mini dress with mock neckline, same pearl choker, same cream-and-tan tote bag, same silver pointed heels — colour, pattern, texture and fit unchanged.'\nCAM='Photorealistic influencer-style photo, shallow depth of field, shot on 50mm, slight film grain, natural colour grading, no text, no watermark.'\nfor S in street cafe home travel commute; do\n  case $S in\n    street)  SCENE='on a sunlit tree-lined street, mid-stride walking toward the camera, warm dappled daylight through the leaves' ;;\n    cafe)    SCENE='sitting at a marble cafe table holding a coffee cup, soft window light with visible haze' ;;\n    home)    SCENE='standing by a bright bedroom window with sheer curtains, hand resting on the frame, soft diffused morning light' ;;\n    travel)  SCENE='on a seaside boardwalk at golden hour, hair moving in the wind, low backlight with rim glow' ;;\n    commute) SCENE='in a modern office lobby, walking past glass panels, cool even daylight' ;;\n  esac\n  dlazy gpt-image-2 \\\n    --prompt \"Lifestyle social-commerce photo. Replace the model, pose, scene and lighting: a young woman $SCENE. $OUTFIT $CAM\" \\\n    --images \"$SRC\" --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --batch 3 --save \"docs/clothing-grass-planting/output-$S.jpg\"\ndone\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 5、Prompt 模板\n\n```text\nLifestyle social-commerce photo.\n\nImage 1 shows the outfit to keep: [逐件描述：上装 / 下装 / 鞋 / 包 / 配饰].\nImage 2 is the model, pose, scene and lighting reference.   ← 用参考图时保留这行\n\nPut the complete outfit from image 1 onto the model from image 2.\n\nKeep every garment detail faithful: same [上装], same [下装], same [鞋], same [包],\nsame [配饰] — colour, pattern, texture and fit unchanged.\n\nReproduce image 2 for the model identity, pose, camera angle, crop, background\nand colour grading.\n（纯文字版改为：Replace the model, pose, scene and lighting: [场景 + 动作 + 光线]）\n\nPhotorealistic influencer-style photo, shallow depth of field, shot on 50mm,\nslight film grain, natural colour grading, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被换掉了 | 把它单独再点一次名，并追加 `This item must appear unchanged; substituting it is a failure.` |\n| 太像棚拍，没有生活感 | `Candid snapshot feel: slightly off-centre framing, motion in the hair or fabric, imperfect natural light.` |\n| 姿势太僵 | `Natural mid-action pose, weight on one leg, relaxed hands, not posing straight at the camera.` |\n| 手部崩坏 | `Hands must be anatomically correct — five distinct fingers, natural knuckles.` |\n| 场景抢戏 | `The outfit must remain the visual subject; keep the background softly defocused.` |\n\n---\n\n## 6、执行流程\n\n1. **洗干净输入**：去掉滤镜、文字贴纸（[remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)）。\n2. **逐件列穿搭**：上装 / 下装 / 鞋 / 包 / 配饰——一件一句，这段整组复用。\n3. **定内容主题**：通勤 / 约会 / 旅行 / 居家 / 运动，每个主题对应一组场景 + 动作 + 光线（第三节配方）。\n4. **补相机语言**：50mm、浅景深、轻微颗粒——这是「像随手拍」的关键。\n5. **`--batch 3~4`** 出多张挑姿势自然的，落盘到 `docs/clothing-grass-planting/`。\n6. **质检**：单品是否齐、是否被换、手部、生活感是否够、背景是否抢戏。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 包或鞋被换成别的 | 未逐件点名 | 逐件点名 + 追加「换掉即失败」句 |\n| 看起来还是棚拍 | 缺生活感描述 | 追加抓拍感句 + 相机语言 |\n| 姿势僵硬像证件照 | 未描述动作 | 追加自然动态姿势句 |\n| 手指崩坏 | 换姿势重绘手部 | 追加修手句 + `--batch 4` |\n| 裙长/领口变了 | 保真项写得笼统 | 写死领口形状与下摆长度 |\n| 一组图风格不统一 | 相机语言段每次都改 | 相机语言段整组逐字不变 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.13:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"clothing-grass-planting\",\n  \"version\": \"1.0.13\",\n  \"publishedAt\": 1790562869227\n}\n\nFile v1.0.13:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\r\n  --dry-run                    Print payload without executing the tool\r\n  --no-wait                    Return generateId immediately for async tasks\r\n  --timeout <seconds>          Max seconds to wait for async completion\r\n                               (default: \"1800\")\r\n  --input <jsonOrFile>         Inline JSON or @path/to/file.json — merged under\r\n                               flag values (flags win)\r\n  --save <path>                Download the result asset to this local path\r\n                               (mkdir + retry handled for you). A destination\r\n                               path — NOT a response format; for stdout shape\r\n                               use --format\r\n  --batch <n>                  Fan-out N parallel runs (cloud tools only)\r\n                               (default: \"1\")\r\n  -h, --help                   display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.13:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTTP status code error (500)` |\n| 504 | 异步任务失败 | `=== Generation Failed ===` / `Prompt violates safety policy` |\n\n**给 Agent 的硬性要求**\n\n1. 命中 `insufficient_balance` → 明确告诉用户算力不足，并给出充值入口\n   <https://dlazy.com/dashboard/organization/settings?tab=credits>\n2. 命中 `unauthorized` / 缺 key → 告诉用户去 <https://dlazy.com/dashboard/organization/api-key>\n   取 key，用 `dlazy auth set <key>` 存好再继续。\n3. 用 `gen.mjs` 时，429 与 5xx 已自动重试；仍失败才向用户报错。\n4. **不要**为了「跑通」而偷偷降级参数（尺寸、档位、批量），先问用户。\n\nFile v1.0.13:scripts/lib/tasks.json\n\n{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-video-ad\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"ugc-testimonial\":         { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true }\r\n  }\r\n}\n\nFile v1.0.13:skill-card.md\n\n## Description:\n\nCreates lifestyle social-commerce outfit images while preserving clothing details and changing the model, pose, setting, and lighting.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[dlazyai](https://clawhub.ai/user/dlazyai)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal creators and marketers use this skill to turn an outfit photo into social-commerce lifestyle images with new models, poses, and scenes while keeping the outfit consistent.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Selected prompts and reference images are sent to the configured image provider.\n\nMitigation: Use only images you have rights to share, inspect the selected provider with doctor or dry-run first, and avoid sensitive imagery.\n\nRisk: Model likeness or generated lifestyle imagery could imply an unauthorized endorsement or real-world experience.\n\nMitigation: Obtain consent for likeness references and do not present generated imagery as a real endorsement or customer experience.\n\nRisk: Generated garments or accessories may differ from the source outfit.\n\nMitigation: Review each output against the source before publishing and regenerate images with inaccurate product details.\n\n## Reference(s):\n\n- [Clothing Grass Planting on ClawHub](https://clawhub.ai/dlazyai/skills/clothing-grass-planting)\n- [Provider CLI and data flow](references/provider-cli.md)\n- [Image model options](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Image files, Shell commands, Guidance]\n\n**Output Format:** [JPEG images with optional Markdown guidance and shell commands]\n\n**Output Parameters:** [2D images, typically 1024×1536]\n\n**Other Properties Related to Output:** [Saves generated images locally; optional batches provide multiple candidates for review.]\n\n## Skill Version(s):\n\n1.0.13 (source: frontmatter and ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.13:examples/brand.yaml\n\n# ⚠️ 由 scripts/build-skills.mjs 从 shared/examples/brand.yaml 同步生成，不要直接改这里。\r\n# 店铺品牌视觉规范 —— 所有生图技能读这一份，保证几百个 SKU 看起来像同一家店。\r\n#   node scripts/brand.mjs --brand brand.yaml --for flat-lay\r\n#   node scripts/gen.mjs --task flat-lay --brand brand.yaml --prompt '...'\r\n\r\nbrand:\r\n  name: 示例品牌\r\n  # 一句话概括调性，会原样进 prompt\r\n  tone: quiet minimalist, warm and lived-in, never glossy or commercial\r\n\r\nmodel:\r\n  # 锁模特：给一张脸的参考图，所有技能都会把它作为最后一张参考图传入\r\n  reference: assets/model/face-a.jpg\r\n  description: East Asian woman, late twenties, natural makeup, shoulder-length black hair\r\n  body: slim, height around 168cm\r\n\r\nphotography:\r\n  background: seamless off-white studio backdrop, RGB 248 248 246\r\n  lighting: soft large softbox from camera left, gentle fill, no hard shadows\r\n  camera: 85mm equivalent, eye level, shallow depth of field\r\n  grade: neutral white balance around 5200K, low contrast, slightly lifted blacks\r\n  crop: full body with headroom, product centered\r\n\r\nlayout:\r\n  # 给带排版的技能（主图 / 详情页）用\r\n  margin: at least 8% empty margin on all sides\r\n  typeface: clean sans-serif, no decorative fonts\r\n  text_color: near-black on light background\r\n\r\nforbid:\r\n  - no visible brand logos other than the product's own\r\n  - no text or watermark\r\n  - no exaggerated poses or dramatic wind effects\r\n  - no oversaturated colors\r\n\r\n# 可选：把这些直接写进合规目标，生成时就按平台要求出图\r\ncompliance:\r\n  platform: amazon\n\nArchive v1.0.12: 11 files, 25604 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2218b), SKILL.md (11887b), _meta.json (143b)\n\nFile v1.0.12:SKILL.md\n\n---\nname: clothing-grass-planting\nversion: 1.0.12\ndescription: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。\n---\n\n# clothing-grass-planting — 相同穿搭改模特场景姿势\n\n**穿搭不动，人 / 场景 / 姿势全换**，换成社交平台的种草风格。\n\n和 [one-shot](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/one-shot/skill.md) 的区别：one-shot 面向电商主图（保持棚拍规范、构图不动），本技能面向**内容种草**——要的是生活感、抓拍感、氛围光，构图和景别都可以变。\n\n---\n\n## 生成效果示例\n\n| 输入：原穿搭图 | 输入：场景/模特参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/source-outfit.jpg\" width=\"240\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/scene-reference.jpg\" width=\"240\"> |\n| `source-outfit.jpg` — 浅灰针织连衣裙 + 珍珠项链 + 托特包 + 银色高跟鞋，喷泉庭院 | `scene-reference.jpg` — 咖啡馆门口街拍，手抚头发，树影暖光 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep: a light-grey textured sleeveless knit mini dress with a mock neckline, a pearl choker, a cream-and-tan tote bag and silver pointed heels. Image 2 is the model, pose, scene and lighting reference: a young woman on a sunlit tree-lined street outside a coffee shop, hand in her hair, warm dappled daylight, shallow depth of field. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful: same grey knit texture, same neckline and hem length, same pearl choker, same tote bag colour blocking. Reproduce image 2 for the model identity, pose, camera angle, crop, street background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/clothing-grass-planting/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536。连衣裙的浅灰针织纹理、立领、腰线与裙长，珍珠项链的珠径，托特包的米白/棕拼色全部保留；模特、抚发姿势、咖啡馆街景、树影暖光与浅景深照抄参考图。\n\n---\n\n## 1、能力边界\n\n| 保持不变 | 会改变 |\n| --- | --- |\n| 上衣 / 下装 / 鞋 / 包 / 配饰的颜色、图案、材质、版型与搭配关系 | 模特身份、姿势与动作、场景与背景、光线与色调、机位与景别 |\n\n| 控制方式 | 说明 |\n| --- | --- |\n| 参考图 | 照抄某张种草图的模特、场景、姿势与光线 |\n| 自定义提示词 | 用文字描述目标场景与动作 |\n\n**不做**：不改穿搭的任何一件单品；不生成特定真人的换脸图；不用于伪造他人肖像代言或伪造使用体验。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 全身或大半身穿搭图 | 种草图通常要看到整套搭配 |\n| ✅ 每件单品都清晰可辨 | 看不清的单品换场景后会被重绘 |\n| ✅ 单人 | 多人同框模型分不清主体 |\n| ❌ 商品被严重遮挡 | 挡住的部分换姿势后必然变形 |\n| ❌ 已带滤镜/文字贴纸 | 会被一起带进新图，先洗干净 |\n\n---\n\n## 3、种草图的场景配方\n\n种草图的说服力来自「像是随手拍的」。四个要素缺一不可：\n\n| 要素 | 写法示例 |\n| --- | --- |\n| 场景 | `a sunlit tree-lined street outside a coffee shop` / `a bright bedroom with sheer curtains` / `a seaside boardwalk at golden hour` |\n| 动作 | `hand in her hair` / `mid-stride walking toward the camera` / `sitting on a step holding a coffee cup` |\n| 光线 | `warm dappled daylight through leaves` / `soft window light with visible haze` / `low golden-hour backlight with rim glow` |\n| 相机语言 | `shallow depth of field, shot on 50mm, slight film grain, natural colour grading` |\n\n**一套穿搭铺多篇笔记**：固定穿搭描述段，只换这四个要素 → 一套衣服出 5 个场景版本，覆盖不同内容主题（通勤 / 约会 / 旅行 / 居家 / 运动）。\n\n**穿搭锁定句**（必写，逐件点名）：\n\n```text\nKeep every garment detail faithful: same [上装描述], same [下装描述],\nsame [鞋], same [包], same [配饰] — colour, pattern, texture and fit unchanged.\n```\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`gpt-image-2`**（图像编辑模型；本技能要「整套穿搭逐件保真 + 人和环境全换」，是对指令跟随要求最高的一类任务）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task clothing-grass-planting \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/clothing-grass-planting-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/clothing-grass-planting.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[原穿搭图, 场景/模特参考图]`；纯文字描述场景时只传原图 | 顺序即 prompt 中的 image 1 / 2 |\n| `--size` | `1024x1536`（社交平台竖版） | 小红书/抖音以 3:4、9:16 为主 |\n| `--quality` | `medium` 常规；`high` 面料是卖点时 | 种草图对纹理要求略低于主图 |\n| `--imageFormat` | `jpeg` | 通用格式 |\n| `--batch` | `3` ~ `4` | 姿势与手部随机性大 |\n| `--save` | `docs/clothing-grass-planting/output-<场景>.jpg` | 按内容主题归档 |\n\n### Command Examples\n\n```bash\n# basic call: 用参考图换模特+场景+姿势\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep. Image 2 is the model, pose, scene and lighting reference. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful — colour, pattern, texture and fit unchanged. Reproduce image 2 for model identity, pose, camera angle, crop, background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 一套穿搭铺 5 个内容场景（纯文字描述场景）\nSRC=docs/clothing-grass-planting/source-outfit.jpg\nOUTFIT='Keep the complete outfit from the source image faithful: same light-grey textured sleeveless knit mini dress with mock neckline, same pearl choker, same cream-and-tan tote bag, same silver pointed heels — colour, pattern, texture and fit unchanged.'\nCAM='Photorealistic influencer-style photo, shallow depth of field, shot on 50mm, slight film grain, natural colour grading, no text, no watermark.'\nfor S in street cafe home travel commute; do\n  case $S in\n    street)  SCENE='on a sunlit tree-lined street, mid-stride walking toward the camera, warm dappled daylight through the leaves' ;;\n    cafe)    SCENE='sitting at a marble cafe table holding a coffee cup, soft window light with visible haze' ;;\n    home)    SCENE='standing by a bright bedroom window with sheer curtains, hand resting on the frame, soft diffused morning light' ;;\n    travel)  SCENE='on a seaside boardwalk at golden hour, hair moving in the wind, low backlight with rim glow' ;;\n    commute) SCENE='in a modern office lobby, walking past glass panels, cool even daylight' ;;\n  esac\n  dlazy gpt-image-2 \\\n    --prompt \"Lifestyle social-commerce photo. Replace the model, pose, scene and lighting: a young woman $SCENE. $OUTFIT $CAM\" \\\n    --images \"$SRC\" --size 1024x1536 --quality medium --imageFormat jpeg \\\n    --batch 3 --save \"docs/clothing-grass-planting/output-$S.jpg\"\ndone\n\n# 先估价不真跑\ndlazy gpt-image-2 --dry-run --prompt '...' --images a.jpg b.jpg --size 1024x1536\n```\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `gpt-image-2` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 5、Prompt 模板\n\n```text\nLifestyle social-commerce photo.\n\nImage 1 shows the outfit to keep: [逐件描述：上装 / 下装 / 鞋 / 包 / 配饰].\nImage 2 is the model, pose, scene and lighting reference.   ← 用参考图时保留这行\n\nPut the complete outfit from image 1 onto the model from image 2.\n\nKeep every garment detail faithful: same [上装], same [下装], same [鞋], same [包],\nsame [配饰] — colour, pattern, texture and fit unchanged.\n\nReproduce image 2 for the model identity, pose, camera angle, crop, background\nand colour grading.\n（纯文字版改为：Replace the model, pose, scene and lighting: [场景 + 动作 + 光线]）\n\nPhotorealistic influencer-style photo, shallow depth of field, shot on 50mm,\nslight film grain, natural colour grading, no text, no watermark.\n```\n\n**按问题追加的修正句**\n\n| 问题 | 追加到 prompt 末尾 |\n| --- | --- |\n| 某件单品被换掉了 | 把它单独再点一次名，并追加 `This item must appear unchanged; substituting it is a failure.` |\n| 太像棚拍，没有生活感 | `Candid snapshot feel: slightly off-centre framing, motion in the hair or fabric, imperfect natural light.` |\n| 姿势太僵 | `Natural mid-action pose, weight on one leg, relaxed hands, not posing straight at the camera.` |\n| 手部崩坏 | `Hands must be anatomically correct — five distinct fingers, natural knuckles.` |\n| 场景抢戏 | `The outfit must remain the visual subject; keep the background softly defocused.` |\n\n---\n\n## 6、执行流程\n\n1. **洗干净输入**：去掉滤镜、文字贴纸（[remove-watermark](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/remove-watermark/skill.md)）。\n2. **逐件列穿搭**：上装 / 下装 / 鞋 / 包 / 配饰——一件一句，这段整组复用。\n3. **定内容主题**：通勤 / 约会 / 旅行 / 居家 / 运动，每个主题对应一组场景 + 动作 + 光线（第三节配方）。\n4. **补相机语言**：50mm、浅景深、轻微颗粒——这是「像随手拍」的关键。\n5. **`--batch 3~4`** 出多张挑姿势自然的，落盘到 `docs/clothing-grass-planting/`。\n6. **质检**：单品是否齐、是否被换、手部、生活感是否够、背景是否抢戏。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 包或鞋被换成别的 | 未逐件点名 | 逐件点名 + 追加「换掉即失败」句 |\n| 看起来还是棚拍 | 缺生活感描述 | 追加抓拍感句 + 相机语言 |\n| 姿势僵硬像证件照 | 未描述动作 | 追加自然动态姿势句 |\n| 手指崩坏 | 换姿势重绘手部 | 追加修手句 + `--batch 4` |\n| 裙长/领口变了 | 保真项写得笼统 | 写死领口形状与下摆长度 |\n| 一组图风格不统一 | 相机语言段每次都改 | 相机语言段整组逐字不变 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.12:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"clothing-grass-planting\",\n  \"version\": \"1.0.12\",\n  \"publishedAt\": 1790217261639\n}\n\nFile v1.0.12:references/model-flags.md\n\n# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\r\n  --dry-run                    Print payload without executing the tool\r\n  --no-wait                    Return generateId immediately for async tasks\r\n  --timeout <seconds>          Max seconds to wait for async completion\r\n                               (default: \"1800\")\r\n  --input <jsonOrFile>         Inline JSON or @path/to/file.json — merged under\r\n                               flag values (flags win)\r\n  --save <path>                Download the result asset to this local path\r\n                               (mkdir + retry handled for you). A destination\r\n                               path — NOT a response format; for stdout shape\r\n                               use --format\r\n  --batch <n>                  Fan-out N parallel runs (cloud tools only)\r\n                               (default: \"1\")\r\n  -h, --help                   display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。\n\nFile v1.0.12:references/provider-cli.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额\n\nArchive v1.0.11: 11 files, 25603 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2302b), SKILL.md (11887b), _meta.json (143b)\n\nArchive v1.0.10: 11 files, 25643 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2313b), SKILL.md (11887b), _meta.json (143b)\n\nArchive v1.0.9: 11 files, 25624 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (2144b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), skill-card.md (2059b), SKILL.md (11886b), _meta.json (142b)","readmeExcerpt":"Skill: 穿搭种草图 Clothing Grass Planting Owner: dlazyai Summary: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。 Tags: latest:1.0.18 Version history: v1.0.18 | 2026-10-10T01:47:50.604Z | user 例行版本更新 2026-10-10 v1.0.17 | 2026-10-08T01:40:45.147Z | user 例行版本更新 2026-10-08 v1.0.16 | 2026-10-04T01:41:09.670Z | user 例行版本更新 2026-10-04 v1.0.15 | 2026-10-02T05:14:29.813Z | user 例行版本更新 2026-10-02 v1.0.14 | 2026-09","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"dlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep: a light-grey textured sleeveless knit mini dress with a mock neckline, a pearl choker, a cream-and-tan tote bag and silver pointed heels. Image 2 is the model, pose, scene and lighting reference: a young woman on a sunlit tree-lined street outside a coffee shop, hand in her hair, warm dappled daylight, shallow depth of field. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful: same grey knit texture, same neckline and hem length, same pearl choker, same tote bag colour blocking. Reproduce image 2 for the model identity, pose, camera angle, crop, street background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/clothing-grass-planting/example-output.jpg"},{"language":"text","snippet":"Keep every garment detail faithful: same [上装描述], same [下装描述],\nsame [鞋], same [包], same [配饰] — colour, pattern, texture and fit unchanged."},{"language":"bash","snippet":"# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task clothing-grass-planting \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/clothing-grass-planting-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy gpt-image-2 --prompt '...' --images ... --save output/clothing-grass-planting.jpg"},{"language":"bash","snippet":"# basic call: 用参考图换模特+场景+姿势\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep. Image 2 is the model, pose, scene and lighting reference. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful — colour, pattern, texture and fit unchanged. Reproduce image 2 for model identity, pose, camera angle, crop, background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium\n\n# complex call: 一套穿搭铺 5 个内容场景（纯文字描述场景）\nSRC=docs/clothing-grass-planting/source-outfit.jpg\nOUTFIT='Keep the complete outfit from the source image faithful: same light-grey textured sleeveless knit mini dress with mock neckline, same pearl choker, same cream-and-tan tote bag, same silver pointed heels — colour, pattern, texture and fit unchanged.'\nCAM='Photorealistic influencer-style photo, shallow depth of field, shot on 50mm, slight film grain, natural colour grading, no text, no watermark.'\nfor S in street cafe home travel commute; do\n  case $S in\n    street)  SCENE='on a sunlit tree-lined street, mid-stride walking toward the camera, warm dappled daylight through the leaves' ;;\n    cafe)    SCENE='sitting at a marble cafe table holding a coffee cup, soft window light with visible haze' ;;\n    home)    SCENE='standing by a bright bedroom window with sheer curtains, hand resting on the frame, soft diffused morning light' ;;\n    travel)  SCENE='on a seaside boardwalk at golden hour, hair moving in the wind, low backlight with rim glow' ;;\n    commute) SCENE='in a modern office lobby, walking past glass panels, cool even daylight' ;;\n  esac\n  dlazy gpt-image-2 \\\n    --prompt \"Lifestyle social-commerce photo. Replace the model, pose, scene and lighting: a young woman $SCENE. $OUTFIT $CAM\" \\\n    --images \"$SRC\" --size 1024x1536 --quality medium"},{"language":"text","snippet":"Lifestyle social-commerce photo.\n\nImage 1 shows the outfit to keep: [逐件描述：上装 / 下装 / 鞋 / 包 / 配饰].\nImage 2 is the model, pose, scene and lighting reference.   ← 用参考图时保留这行\n\nPut the complete outfit from image 1 onto the model from image 2.\n\nKeep every garment detail faithful: same [上装], same [下装], same [鞋], same [包],\nsame [配饰] — colour, pattern, texture and fit unchanged.\n\nReproduce image 2 for the model identity, pose, camera angle, crop, background\nand colour grading.\n（纯文字版改为：Replace the model, pose, scene and lighting: [场景 + 动作 + 光线]）\n\nPhotorealistic influencer-style photo, shallow depth of field, shot on 50mm,\nslight film grain, natural colour grading, no text, no watermark."},{"language":"bash","snippet":"dlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: clothing-grass-planting\nversion: 1.0.18\ndescription: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。\n---\n\n# clothing-grass-planting — 相同穿搭改模特场景姿势\n\n**穿搭不动，人 / 场景 / 姿势全换**，换成社交平台的种草风格。\n\n和 [one-shot](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/one-shot/skill.md) 的区别：one-shot 面向电商主图（保持棚拍规范、构图不动），本技能面向**内容种草**——要的是生活感、抓拍感、氛围光，构图和景别都可以变。\n\n---\n\n## 生成效果示例\n\n| 输入：原穿搭图 | 输入：场景/模特参考图 |\n| --- | --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/source-outfit.jpg\" width=\"240\"> | <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/scene-reference.jpg\" width=\"240\"> |\n| `source-outfit.jpg` — 浅灰针织连衣裙 + 珍珠项链 + 托特包 + 银色高跟鞋，喷泉庭院 | `scene-reference.jpg` — 咖啡馆门口街拍，手抚头发，树影暖光 |\n\n实际执行的命令：\n\n```bash\ndlazy gpt-image-2 \\\n  --prompt 'Lifestyle social-commerce photo. Image 1 shows the outfit to keep: a light-grey textured sleeveless knit mini dress with a mock neckline, a pearl choker, a cream-and-tan tote bag and silver pointed heels. Image 2 is the model, pose, scene and lighting reference: a young woman on a sunlit tree-lined street outside a coffee shop, hand in her hair, warm dappled daylight, shallow depth of field. Put the complete outfit from image 1 onto the model from image 2. Keep every garment detail faithful: same grey knit texture, same neckline and hem length, same pearl choker, same tote bag colour blocking. Reproduce image 2 for the model identity, pose, camera angle, crop, street background and colour grading. Photorealistic influencer-style photo, no text, no watermark.' \\\n  --images docs/clothing-grass-planting/source-outfit.jpg docs/clothing-grass-planting/scene-reference.jpg \\\n  --size 1024x1536 --quality medium --imageFormat jpeg \\\n  --save docs/clothing-grass-planting/example-output.jpg\n```\n\n**输出**\n\n<img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/clothing-grass-planting/example-output.jpg\" width=\"320\">\n\n`example-output.jpg` — 1024×1536。连衣裙的浅灰针织纹理、立领、腰线与裙长，珍珠项链的珠径，托特包的米白/棕拼色全部保留；模特、抚发姿势、咖啡馆街景、树影暖光与浅景深照抄参考图。\n\n---\n\n## 1、能力边界\n\n| 保持不变 | 会改变 |\n| --- | --- |\n| 上衣 / 下装 / 鞋 / 包 / 配饰的颜色、图案、材质、版型与搭配关系 | 模特身份、姿势与动作、场景与背景、光线与色调、机位与景别 |\n\n| 控制方式 | 说明 |\n| --- | --- |\n| 参考图 | 照抄某张种草图的模特、场景、姿势与光线 |\n| 自定义提示词 | 用文字描述目标场景与动作 |\n\n**不做**：不改穿搭的任何一件单品；不生成特定真人的换脸图；不用于伪造他人肖像代言或伪造使用体验。\n\n---\n\n## 2、输入素材规则\n\n生成前先自检这几条硬性约束：\n\n- 大小：**20KB ~ 15MB**\n- 分辨率：**大于 400×400**\n- 格式：**jpg / jpeg / png / webp**\n\n**输入建议**\n\n| 做法 | 说明 |\n| --- | --- |\n| ✅ 全身或大半身穿搭图 | 种草图通常要看到整套搭配 |\n| ✅ 每件单品都清晰可辨 | 看不清的单品换场景后会被重绘 |\n| ✅ 单人 | 多人同框模型分不清主体 |\n| ❌ 商品被严重遮挡 | 挡住的部分换姿势后必然变形 |\n| ❌ 已带滤镜/文字贴纸 | 会被一起带进新图，先洗干净 |\n\n---\n\n## 3、种草图的场景配方\n\n种草图的说服力来自「像是随手拍的」。四个要素缺一不可：\n\n| 要素 | 写法示例 |\n| --- | --- |\n| 场景 | `a sunlit tree-lined street outside a coffee shop` / `a bright bedroom with sheer curtains` / `a seaside boardwalk at golden hour` |\n| 动作 | `hand in her hair` / `mid-stride walking toward the camera` / `sitting on a step holding a coffee cup"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"clothing-grass-planting\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791596870604\n}"},{"path":"references/model-flags.md","content":"# `gpt-image-2` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy gpt-image-2` command to get results.\r\n\r\n```bash\r\ndlazy gpt-image-2 -h\r\n\r\nOptions:\r\n  --prompt <prompt>            Prompt\r\n  --images [images...]         Images [image: url or local path] (max 5)\r\n  --size <size>                Size [default: auto] (choices: \"1024x1024\",\r\n                               \"1536x1024\", \"1024x1536\", \"2048x2048\",\r\n                               \"2048x1152\", \"3840x2160\", \"2160x3840\", \"auto\")\r\n  --imageFormat <imageFormat>  Image Format [default: jpeg] (choices: \"jpeg\",\r\n                               \"png\", \"webp\")\r\n  --quality <quality>          Quality [default: medium] (choices: \"low\",\r\n                               \"medium\", \"high\")\r\n  --dry-run                    Print payload without executing the tool\r\n  --no-wait                    Return generateId immediately for async tasks\r\n  --timeout <seconds>          Max seconds to wait for async completion\r\n                               (default: \"1800\")\r\n  --input <jsonOrFile>         Inline JSON or @path/to/file.json — merged under\r\n                               flag values (flags win)\r\n  --save <path>                Download the result asset to this local path\r\n                               (mkdir + retry handled for you). A destination\r\n                               path — NOT a response format; for stdout shape\r\n                               use --format\r\n  --batch <n>                  Fan-out N parallel runs (cloud tools only)\r\n                               (default: \"1\")\r\n  -h, --help                   display help for command\r\n```\r\n\r\n> Any flag also accepts pipe references — `-` (auto-pick from upstream stdin), `@N` (n-th output), `@N.path` (jsonpath into output), `@*` (all primary values), `@stdin` / `@stdin:path` (whole envelope). See `dlazy --help` for details.\r\n\r\n---\r\n\r\n换其他后端时参数由 `scripts/gen.mjs` 统一翻译，见 [`provider-cli.md`](provider-cli.md)。"},{"path":"references/provider-cli.md","content":"<!-- 由 scripts/build-skills.mjs 从 shared/references/provider-cli.md 同步生成，不要直接改这里。 -->\n# 后端调用参考\n\n技能正文只写「要生成什么」。认证、计费、错误码、输出结构这些每个技能都一样的东西放在这里，\n**用到时再读**，不占技能的常驻上下文。\n\n---\n\n## 一、认证\n\n### 默认后端 dLazy\n\n```bash\ndlazy login            # 设备码流程，远程 shell 也能用，自动写入本地配置\ndlazy auth set <KEY>   # 已有 key 时直接写入\n```\n\nkey 存在用户配置目录（macOS/Linux `~/.dlazy/config.json`，Windows `%USERPROFILE%\\.dlazy\\config.json`），\n权限限本机用户。也可以每次调用用环境变量 `DLAZY_API_KEY` 传入。\n\n手动获取：登录 [dlazy.com](https://dlazy.com) → [API Key 页面](https://dlazy.com/dashboard/organization/api-key)。\nkey 按组织隔离，可随时轮换或吊销。\n\n### 其他后端\n\n本技能库不锁定单一厂商。配好任意一家的 key 即可跑：\n\n| 后端 | 环境变量 | 说明 |\n| --- | --- | --- |\n| `dlazy` | `dlazy login` 或 `DLAZY_API_KEY` | 默认，最省事 |\n| `openai` | `OPENAI_API_KEY` | 走 `/v1/images/edits` 与 `/v1/images/generations` |\n| `gemini` | `GEMINI_API_KEY` | Nano Banana 系列 |\n| `fal` | `FAL_KEY` | |\n| `replicate` | `REPLICATE_API_TOKEN` | |\n| `ark` | `ARK_API_KEY` + `ARK_MODEL` | 火山方舟，模型 ID 需按开通情况填 |\n\n选路优先级：`--provider` 参数 > `PROVIDER` 环境变量 > 第一个配了 key 的 > `dlazy`。\n\n```bash\nnode scripts/gen.mjs --doctor     # 看当前哪个后端可用\n```\n\n各后端的模型 ID 可用 `GEN_MODEL_OPENAI` / `GEN_MODEL_GEMINI` / `GEN_MODEL_FAL` /\n`GEN_MODEL_REPLICATE` / `GEN_MODEL_ARK` 覆盖。**厂商目录会变，以各家最新文档为准。**\n\n---\n\n## 二、两种调用方式\n\n### 方式 A：统一入口（推荐）\n\n```bash\nnode scripts/gen.mjs --task <技能名> --prompt '...' --images a.jpg b.jpg --save out.jpg\n```\n\n它负责：后端选路、默认尺寸档位、失败重试（429/5xx 指数退避）、落盘建目录、成本估算。\n\n```bash\nnode scripts/gen.mjs --task flat-lay --prompt '...' --dry-run   # 不调用不计费，只看要发什么\nnode scripts/gen.mjs --help\n```\n\n### 方式 B：直接用 dLazy CLI\n\n不想引入 Node 依赖时，技能正文里的 `dlazy ...` 命令可以原样执行，效果等价。\n\n```bash\nnpx @dlazy/cli@1.2.3 <command>     # 不装全局二进制\n```\n\n- CLI 源码：[github.com/dlazy-ai/cli](https://github.com/dlazy-ai/cli) · npm 包 `@dlazy/cli`\n\n---\n\n## 三、数据流向\n\n调用 dLazy 时：提示词与参数发往 `api.dlazy.com`；传入的本地图片会上传到 `files.dlazy.com`\n供模型读取；产出 URL 同样托管在 `files.dlazy.com`。这是云端生成 API 的通用形态。\n换成其他后端时，数据流向对应厂商，不经过 dLazy。\n\n---\n\n## 四、输出结构\n\n`gen.mjs`（加 `--json`）：\n\n```json\n{\n  \"ok\": true,\n  \"task\": \"flat-lay\",\n  \"provider\": \"dlazy\",\n  \"model\": \"gpt-image-2\",\n  \"files\": [\"docs/flat-lay/output-sku001.jpg\"],\n  \"texts\": [],\n  \"estimatedCredits\": 60,\n  \"elapsedMs\": 58213\n}\n```\n\ndLazy CLI 原生：\n\n```json\n{\n  \"ok\": true,\n  \"result\": {\n    \"tool\": \"gpt-image-2\",\n    \"data\": { \"urls\": [\"https://files.dlazy.com/data/ai/....jpg\"] },\n    \"savedPath\": \"docs/flat-lay/example-output.jpg\"\n  }\n}\n```\n\n加 `--no-wait` 的异步任务不返回 `data`，返回 `task: { generateId, status }`，\n用 `dlazy status <generateId> --wait` 轮询。\n\n文本类模型（如质检）产出在 `result.data.texts[0]`：\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images x.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n---\n\n## 五、错误处理\n\n| Code | 类型 | 示例 |\n| --- | --- | --- |\n| 401 | 未授权 / 无 key | `ok: false, code: \"unauthorized\"` |\n| 501 | 缺必填参数 | `error: required option '--prompt <prompt>' not specified` |\n| 502 | 本地文件读不到 | `Error: Image file not found: ...` |\n| 503 | 余额不足 | `ok: false, code: \"insufficient_balance\"` |\n| 503 | 服务端错误 | `HTT"},{"path":"scripts/lib/tasks.json","content":"{\r\n  \"_note\": \"技能 → 默认模型与参数。dlazy 列为默认后端的模型名；其他后端走 providers.mjs 的通用映射，可用 GEN_MODEL_<PROVIDER> 覆盖。\",\r\n  \"_credits\": { \"gpt-image-2\": 60, \"seedream-5.0\": 30, \"seedream-5.0-pro\": 45, \"banana-pro\": 25, \"claude-sonnet-5\": 3 },\r\n  \"tasks\": {\r\n    \"flat-lay\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"wear-everything\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"image-fusion\":            { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"one-shot\":                { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"fission-pattern\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-detail\":             { \"model\": \"seedream-5.0-pro\", \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"creative-scene\":          { \"model\": \"banana-pro\",       \"size\": \"1024x1536\", \"format\": \"jpeg\" },\r\n    \"batch-image\":             { \"model\": \"seedream-5.0\",     \"size\": \"3:4\",       \"resolution\": \"2k\" },\r\n    \"to-3d\":                   { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-extraction\":     { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"fabric-on-body\":          { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-detail\":         { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"clothing-grass-planting\": { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"medium\", \"format\": \"jpeg\" },\r\n    \"item-selling-point\":      { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"item-change-background\":  { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"remove-watermark\":        { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"material-enhancement\":    { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"item-repair\":             { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"detect-task\":             { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"listing-optimizer\":       { \"model\": \"gpt-image-2\",      \"size\": \"1024x1024\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"cross-border-localize\":   { \"model\": \"seedream-5.0-pro\", \"size\": \"1:1\",       \"resolution\": \"2k\" },\r\n    \"brand-kit\":               { \"model\": \"gpt-image-2\",      \"size\": \"1024x1536\", \"quality\": \"high\",   \"format\": \"jpeg\" },\r\n    \"platform-compliance\":     { \"model\": \"claude-sonnet-5\",  \"text\": true },\r\n    \"main-image-video\":        { \"model\": \"$DLAZY_VIDEO_MODEL\", \"video\": true },\r\n    \"product-"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。 Skill: 穿搭种草图 Clothing Grass Planting Owner: dlazyai Summary: 同款穿搭换模特换场景做种草图。穿搭图 → 社交平台风格的种草图。当用户说「种草图」「小红书风格」「换场景发帖」「达人图」时使用。 Tags: latest:1.0.18 Version history: v1.0.18 | 2026-10-10T01:47:50.604Z | user 例行版本更新 2026-10-10 v1.0.17 | 2026-10-08T01:40:45.147Z | user 例行版本更新 2026-10-08 v1.0.16 | 2026-10-04T01:41:09.670Z | user 例行版本更新 2026-10-04 v1.0.15 | 2026-10-02T05:14:29.813Z | user 例行版本更新 2026-10-02 v1.0.14 | 2026-09","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1030,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T23:38:53.931Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T23:38:53.931Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T01:49:07.961Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}