{"id":"7f49de7e-f006-40b1-97ef-92b586434420","entityType":"agent","slug":"clawhub-dlazyai-detect-task","name":"投前 AI 图检测 Detect Task","canonicalUrl":"https://www.xpersona.co/agent/clawhub-dlazyai-detect-task","canonicalPath":"/agent/clawhub-dlazyai-detect-task","generatedAt":"2026-10-10T21:40:52.796Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T18:30:40.194Z","emptyReason":null},"description":"投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。 Skill: 投前 AI 图检测 Detect Task Owner: dlazyai Summary: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。 Tags: latest:1.0.20 Version history: v1.0.20 | 2026-10-10T01:49:17.775Z | user 例行版本更新 2026-10-10 v1.0.19 | 2026-10-08T01:41:55.782Z | user 例行版本更新 2026-10-08 v1.0.18 | 2026-10-04T01:42:10.743Z | user 例行版本更新 2026-10-04 v1.0.17 | 2026-10-02T05:15:16.468Z | user","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.3K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:detect-task","sourceUrl":"https://clawhub.ai/dlazyai/detect-task","homepage":"https://clawhub.ai/dlazyai/skills/detect-task","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/dlazyai/detect-task","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/dlazyai/skills/detect-task","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。 Skill: 投前 AI 图检测 Detect Task Owner: dlazyai Summary"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T18:30:40.194Z","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-10T18:30:40.194Z","emptyReason":null},"stars":null,"forks":null,"downloads":1295,"packageName":null,"latestVersion":"1.0.20","tractionLabel":"1.3K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T18:30:40.194Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T18:30:40.194Z","lastCrawledAt":"2026-10-10T18:30:40.194Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T18:30:40.194Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.20","createdAt":"2026-10-10T01:49:17.775Z","changelog":"例行版本更新 2026-10-10","fileCount":14,"zipByteSize":38247},{"version":"1.0.19","createdAt":"2026-10-08T01:41:55.782Z","changelog":"例行版本更新 2026-10-08","fileCount":14,"zipByteSize":38242},{"version":"1.0.18","createdAt":"2026-10-04T01:42:10.743Z","changelog":"例行版本更新 2026-10-04","fileCount":14,"zipByteSize":38193},{"version":"1.0.17","createdAt":"2026-10-02T05:15:16.468Z","changelog":"例行版本更新 2026-10-02","fileCount":14,"zipByteSize":38138},{"version":"1.0.16","createdAt":"2026-09-30T01:45:21.565Z","changelog":"例行版本更新 2026-09-30","fileCount":14,"zipByteSize":38056},{"version":"1.0.15","createdAt":"2026-09-28T02:35:28.763Z","changelog":"例行版本更新 2026-09-28","fileCount":14,"zipByteSize":38158},{"version":"1.0.14","createdAt":"2026-09-24T02:36:42.769Z","changelog":"例行版本更新 2026-09-24","fileCount":14,"zipByteSize":38227},{"version":"1.0.13","createdAt":"2026-09-22T01:39:42.670Z","changelog":"例行版本更新 2026-09-22","fileCount":14,"zipByteSize":38318}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170j1ymymrxasgd00dsk7tckx84cf45:detect-task","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-detect-task/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-detect-task/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-detect-task/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-detect-task/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-detect-task/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-detect-task/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-10T21:40:52.793Z"}},"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-detect-task/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-detect-task/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-detect-task/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-dlazyai-detect-task/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-10T18:30:40.194Z","emptyReason":null},"readme":"Skill: 投前 AI 图检测 Detect Task\n\nOwner: dlazyai\n\nSummary: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。\n\nTags: latest:1.0.20\n\nVersion history:\n\nv1.0.20 | 2026-10-10T01:49:17.775Z | user\n\n例行版本更新 2026-10-10\n\nv1.0.19 | 2026-10-08T01:41:55.782Z | user\n\n例行版本更新 2026-10-08\n\nv1.0.18 | 2026-10-04T01:42:10.743Z | user\n\n例行版本更新 2026-10-04\n\nv1.0.17 | 2026-10-02T05:15:16.468Z | user\n\n例行版本更新 2026-10-02\n\nv1.0.16 | 2026-09-30T01:45:21.565Z | user\n\n例行版本更新 2026-09-30\n\nv1.0.15 | 2026-09-28T02:35:28.763Z | user\n\n例行版本更新 2026-09-28\n\nv1.0.14 | 2026-09-24T02:36:42.769Z | user\n\n例行版本更新 2026-09-24\n\nv1.0.13 | 2026-09-22T01:39:42.670Z | user\n\n例行版本更新 2026-09-22\n\nv1.0.12 | 2026-09-20T01:49:22.736Z | user\n\n例行版本更新 2026-09-20\n\nv1.0.11 | 2026-09-18T02:10:39.216Z | user\n\n例行版本更新 2026-09-18\n\nv1.0.10 | 2026-09-14T01:39:54.390Z | user\n\n例行版本更新 2026-09-14\n\nv1.0.9 | 2026-09-14T01:38:14.331Z | user\n\n例行版本更新 2026-09-14\n\nv1.0.8 | 2026-09-10T01:33:44.370Z | user\n\n例行版本更新 2026-09-10\n\nv1.0.7 | 2026-09-08T01:40:33.849Z | user\n\n例行版本更新 2026-09-08\n\nv1.0.6 | 2026-09-07T01:48:30.387Z | user\n\n例行版本更新 2026-09-07\n\nv1.0.5 | 2026-09-04T01:41:40.986Z | user\n\n例行版本更新 2026-09-04\n\nv1.0.4 | 2026-09-02T01:37:14.816Z | user\n\n例行版本更新 2026-09-02\n\nv1.0.3 | 2026-08-31T07:03:47.438Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.2 | 2026-08-31T05:24:43.499Z | user\n\n源码仓库迁移至 github.com/dlazy-ai/ecommerce-skills\n\nv1.0.1 | 2026-08-29T04:01:29.589Z | user\n\nSync from GitHub\n\nv1.0.0 | 2026-08-18T04:39:16.884Z | user\n\nSync from GitHub\n\nArchive index:\n\nArchive v1.0.20: 14 files, 38247 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1617b), references/platform-specs.md (2180b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/check_listing.py (16313b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), scripts/run_loop.mjs (9938b), skill-card.md (2508b), SKILL.md (14484b), _meta.json (131b)\n\nFile v1.0.20:SKILL.md\n\n---\nname: detect-task\nversion: 1.0.20\ndescription: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。\n---\n\n# detect-task — 投放前 AI 图真实性检测\n\nAI 生图上架前的**最后一道关**。判断这张图能不能直接投，崩在哪里，怎么修。\n\n和其他技能的区别：本技能**不生成图片，输出的是判断**。它的价值在于把「生成 → 检测 → 重跑」闭起来——检测报告里直接给出该追加到 prompt 的修正句。\n\n---\n\n## 生成效果示例\n\n| 输入：待检图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/detect-task/candidate.jpg\" width=\"280\"> |\n| `candidate.jpg` — 由 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 生成的军绿毛衣模特上身图，1024×1536 |\n\n实际执行的命令：\n\n```bash\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n  > docs/detect-task/example-report.md\n```\n\n**输出**：完整报告见 [`docs/detect-task/example-report.md`](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)，3 credits。摘要：\n\n- **风险等级**：低风险\n- **8 项判定**：7 项通过；`文字乱码` 命中（轻微）——左侧袖口的织标图案模糊不可辨\n- **投放建议**：建议人工修图（仅需局部处理袖口小标签）\n- **修正建议**：`clear and legible brand tag/logo embroidery on cuff, sharp fine detail, no blurry or garbled text`\n\n这条修正句可以直接追加到 flat-lay 的原 prompt 末尾重跑——这就是闭环。\n\n---\n\n## 1、能力边界\n\n| 输出 | 说明 |\n| --- | --- |\n| 风险等级 | `低风险` / `中风险` / `高风险` |\n| 风险项逐条判定 | 8 项，每项给出 `通过` / `命中` + 一句证据 |\n| 投放建议 | `建议投放` / `建议重跑` / `建议人工修图` |\n| 修正建议 | 可直接追加到生成 prompt 的英文修正句 |\n\n**8 项风险清单**\n\n| # | 风险项 | 看什么 |\n| --- | --- | --- |\n| 1 | 商品崩坏 | 款式、织法、印花、logo 位置是否失真 |\n| 2 | 人脸不自然 | 五官比例、皮肤质感、眼神 |\n| 3 | 手部异常 | 手指数量与形态 |\n| 4 | 肢体结构错误 | 肩线、四肢数量与朝向 |\n| 5 | 文字乱码 | 画面内任何文字 |\n| 6 | 光影矛盾 | 投影方向与光源是否一致 |\n| 7 | 边缘融合痕迹 | 抠图边、鬼影、糊块 |\n| 8 | 平台合规 | 是否含违规元素 |\n\n**不做**：不替代人工终审（模型判断有误报漏报）；不做法律与平台规则的最终裁定；不用于给明显违规的图背书。\n\n---\n\n## 2、报告要能直接驱动重跑\n\n检测的意义不是打分，而是**告诉生成环节要改什么**。所以报告的第 4 项必须是**可直接复制到 prompt 的英文句子**。\n\n典型映射：\n\n| 命中项 | 应追加到生成 prompt 的修正句 |\n| --- | --- |\n| 商品崩坏 | `Cross-check the garment against the reference: [关键特征] must match exactly.` |\n| 人脸不自然 | `Photorealistic human face: correct facial proportions, natural skin pores and subsurface scattering, natural gaze.` |\n| 手部异常 | `Hands anatomically correct — five distinct fingers per hand, natural knuckles, no fused or extra digits.` |\n| 肢体结构错误 | `Correct anatomy: symmetric shoulders, two arms and two legs, no extra or missing limbs, no impossible joint angles.` |\n| 文字乱码 | `No text anywhere in the image.` 或（需要文字时）`All text must be clear, correctly formed [语言] characters.` |\n| 光影矛盾 | `Single consistent light source from [方向]; all shadows must fall in the same direction.` |\n| 边缘融合痕迹 | `Blend all edges seamlessly; no cut-out halo, no ghosting, no blurred patches.` |\n| 平台合规 | 视具体问题调整构图或去除违规元素 |\n\n**闭环写法**：\n\n```\n生成 → detect-task → 命中项 → 取修正句 → 追加到原 prompt → 重跑 → 再检测\n```\n\n---\n\n## 3、批量抽检\n\n批量出图后不必全检（成本 3 credits/张，但人工看报告的时间是瓶颈）。建议：\n\n| 场景 | 抽检比例 |\n| --- | --- |\n| 新规范段的首批 | 100% |\n| 规范已验证的批次 | 10% ~ 20% 随机 |\n| 带人物的图 | 提高到 30%（手和脸最容易崩） |\n| 纯商品图无人物 | 5% 即可 |\n\n批量脚本见第五节 command examples。把 `高风险` 的 SKU 自动打回重跑队列。\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`claude-sonnet-5`**（具备图像理解能力的文本模型；本技能要的是**判断与结构化报告**而不是图片，需要能逐项审查画面并写出可执行的修正建议——单张约 3 credits）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task detect-task \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/detect-task-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy claude-sonnet-5 --prompt '...' --images ... --save output/detect-task.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[待检图]`（最多 10 张，可一次送多张同批图对比） | 单张检测最准；多张适合看整批一致性 |\n| `--prompt` | 固定的质检 prompt（见第五节模板） | **整个项目用同一份**，否则报告不可比 |\n| `--batch` | `1` | 检测不需要多样性 |\n| `--no-wait` | 批量抽检时开启 | 先提交后统一收结果 |\n\n**取结果**：文本模型的输出在 `result.data.texts[0]`（不是 `urls`）。\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images a.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n> `dlazy --format text <tool>` 也可以把纯文本打到 stdout，注意 `--format` 是**全局**选项，必须写在子命令**之前**。\n\n### Command Examples\n\n```bash\n# basic call: 单张检测\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的商拍图能否直接投放，输出风险等级、8 项风险的逐条判定、投放建议，以及应追加到生成 prompt 的英文修正句。只输出报告。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n\n# complex call: 固定质检 prompt + 批量抽检 + 高风险自动打回\nQC='你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `claude-sonnet-5` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。'\n\nmkdir -p docs/detect-task/reports\n: > docs/detect-task/rerun-queue.txt\n\nfor f in docs/batch-image/out/*.jpg; do\n  SKU=$(basename \"$f\" .jpg)\n  dlazy claude-sonnet-5 --prompt \"$QC\" --images \"$f\" 2>/dev/null \\\n    | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n    > \"docs/detect-task/reports/${SKU}.md\"\n  if grep -q '高风险' \"docs/detect-task/reports/${SKU}.md\"; then\n    echo \"$SKU\" >> docs/detect-task/rerun-queue.txt\n  fi\ndone\n\necho \"需要重跑：$(wc -l < docs/detect-task/rerun-queue.txt) 个 SKU\"\n\n# 先估价不真跑\ndlazy claude-sonnet-5 --dry-run --prompt '...' --images a.jpg\n```\n\n### Error Handling\n\n| Code | Error Type                         | Example Message                                                                                                          |\n| ---- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| 401  | Unauthorized (No API Key)          | `ok: false, code: \"unauthorized\", message: \"API key is missing or invalid\"`                                              |\n| 501  | Missing required parameter         | `error: required option '--prompt <prompt>' not specified`                                                                |\n| 502  | Local file read error              | `Error: Image file/Video file not found: C:\\path\\to\\your\\file`                                                            |\n| 503  | API request failed (no balance)    | `ok: false, code: \"insufficient_balance\"`                                                                                |\n| 503  | API request failed (server error)  | `HTTP status code error (500 server crash)`                                                                              |\n| 504  | Asynchronous task execution failed | `=== Generation Failed ===` / `{Specific error reason returned by backend, for example \"Prompt violates safety policy\"}`  |\n\n> **AGENT CRITICAL INSTRUCTION**:\n> 1. If the execution result returns `code: \"insufficient_balance\"`, you MUST explicitly inform the user that their credits are insufficient and guide them to recharge: [https://dlazy.com/dashboard/organization/settings?tab=credits](https://dlazy.com/dashboard/organization/settings?tab=credits)\n> 2. If the execution result returns `code: \"unauthorized\"` or indicates missing API key, you MUST inform the user to get their API key from [https://dlazy.com/dashboard/organization/api-key](https://dlazy.com/dashboard/organization/api-key) and save it using `dlazy auth set <key>` and resume the task.\n\n---\n\n## 5、Prompt 模板\n\n**这份 prompt 应该在整个项目里固定不变**，否则不同批次的报告没法比较。\n\n```text\n你是电商投放前的图片质检员。审查这张 AI 生成的[品类]商拍图能否直接用于电商投放。\n全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。\n风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、\n文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；\n若建议投放，写「无需修正」。\n\n只输出报告，不要寒暄。\n```\n\n**可选的加强项**\n\n| 需求 | 追加到 prompt |\n| --- | --- |\n| 要和原商品图比对 | 多传一张原图，并写 `图1 是待检图，图2 是原始商品图，逐项比对商品保真度。` |\n| 要打分便于排序 | `在风险等级后追加一个 0-100 的可投放分数。` |\n| 要卡特定平台规则 | `额外检查以下平台规则：[规则清单]。` |\n| 要机器可读 | `以 JSON 输出，字段为 risk_level / items[] / recommendation / fixes[]。` |\n\n---\n\n## 6、执行流程\n\n1. **固定质检 prompt**（第五节模板），整个项目复用。\n2. **单张检测**：取 `result.data.texts[0]` 得到报告。\n3. **读第 3 项**：`建议投放` → 上架；`建议人工修图` → 转修图；`建议重跑` → 下一步。\n4. **取第 4 项的修正句**，追加到原生成 prompt 末尾，重跑。\n5. **再检测一次**——确认修正生效，别盲信一次重跑。\n6. **批量场景**：按第四节的比例抽检，`高风险` 自动进重跑队列。\n7. **人工终审**：模型有误报漏报，上架前仍需人眼扫一遍。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 报告输出英文 | 未强制语言 | prompt 里写明「全部用中文作答」 |\n| 拿不到结果 | 取错了字段 | 文本模型的结果在 `data.texts[0]`，不是 `urls` |\n| `--format text` 报错 | 全局选项位置错 | `--format` 要写在子命令**之前** |\n| 不同批次报告没法比 | 质检 prompt 每次都改 | 固定一份 prompt 全项目复用 |\n| 明显崩坏没被检出 | 模型漏报 | 提高抽检比例；上架前人工终审 |\n| 正常图被判高风险 | 模型误报 | 看第 2 项的证据描述再决定，不要只看等级 |\n| 修正句不够具体 | 报告太笼统 | 追加「要和原商品图比对」的加强项，多传一张原图 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.20:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"detect-task\",\n  \"version\": \"1.0.20\",\n  \"publishedAt\": 1791596957775\n}\n\nFile v1.0.20:references/model-flags.md\n\n# `claude-sonnet-5` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy claude-sonnet-5` command to get results.\r\n\r\n```bash\r\ndlazy claude-sonnet-5 -h\r\n\r\nOptions:\r\n  --prompt <prompt>     Prompt\r\n  --images [images...]  Images [image: url or local path] (max 10)\r\n  --videos [videos...]  Videos [video: url or local path] (max 8)\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 (default:\r\n                        \"1800\")\r\n  --input <jsonOrFile>  Inline JSON or @path/to/file.json — merged under flag\r\n                        values (flags win)\r\n  --save <path>         Download the result asset to this local path (mkdir +\r\n                        retry handled for you). A destination path — NOT a\r\n                        response format; for stdout shape use --format\r\n  --batch <n>           Fan-out N parallel runs (cloud tools only) (default:\r\n                        \"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.20:references/platform-specs.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/platform-specs.md 同步生成，不要直接改这里。 -->\r\n# 平台图片规格（可机检子集）\r\n\r\n`scripts/check_listing.py` 内置的规则来源与口径。**平台规则会变，以各平台最新官方文档为准**；\r\n需要覆盖时写一份 JSON 用 `--rules` 传入，结构与下表字段一一对应。\r\n\r\n---\r\n\r\n## 字段含义\r\n\r\n| 字段 | 含义 |\r\n| --- | --- |\r\n| `pure_white_bg` | 是否要求纯白 RGB(255,255,255) 背景 |\r\n| `bg_tolerance` | 判定「纯白」允许的单通道偏差 |\r\n| `bg_coverage` | 边缘一圈需要有多大比例落在容差内 |\r\n| `min_long_side` / `recommend_long_side` / `max_long_side` | 最长边像素 |\r\n| `min_occupancy` | 商品包围盒面积 ÷ 画面面积 的下限 |\r\n| `allow_alpha` | 是否允许透明通道 |\r\n| `allow_border` | 是否允许描边 / 外框 |\r\n| `formats` / `max_bytes` / `aspect` | 允许格式、体积上限、允许比例 |\r\n\r\n---\r\n\r\n## 内置规则\r\n\r\n| 平台 | 纯白底 | 最长边（下限 / 建议） | 主体占比 | 比例 | 体积上限 |\r\n| --- | --- | --- | --- | --- | --- |\r\n| `amazon` | 是 | 1000 / 1600 | ≥ 85% | 不限 | 10 MB |\r\n| `tiktok-shop` | 否 | 800 / 1600 | ≥ 60% | 1:1 或 3:4 | 5 MB |\r\n| `temu` | 是 | 800 / 1350 | ≥ 70% | 1:1 | 3 MB |\r\n| `shopee` | 否 | 500 / 1024 | ≥ 55% | 1:1 | 2 MB |\r\n| `shopify` | 否 | 1024 / 2048 | 不限 | 不限 | 20 MB |\r\n| `taobao` | 是 | 800 / 1200 | ≥ 70% | 1:1 | 3 MB |\r\n\r\n---\r\n\r\n## 几个容易踩的点\r\n\r\n- **透明 PNG**：Amazon 会把透明像素转成黑色。永远压平成白底 JPEG 再传。\r\n- **「白底」不等于「看起来是白的」**：棚拍的浅灰墙（约 RGB 208）肉眼像白，机检直接判不合格。\r\n- **主体占比**：留白过多是最常见的驳回原因之一，比分辨率不够更常见。\r\n- **文字 / 水印 / 拼图**：像素层测不了，交给 `detect-task` 的视觉模型或人工。\r\n- **自动修复的边界**：`--fix` 能压白底、按占比重构画布、补分辨率、压体积；\r\n  它**不会**修图，也不会去水印——那是 `item-repair` 和 `remove-watermark` 的活。\n\nFile v1.0.20: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.20: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.20:skill-card.md\n\n## Description:\n\nReviews AI-generated ecommerce images before publication and returns a risk rating, eight-item findings, a publishing recommendation, and suggested prompt corrections.\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\nEcommerce teams and image reviewers use this skill to screen generated product imagery for visual defects and potential listing concerns before publication, and to guide manual fixes or regeneration.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Private product images and prompts may be sent to a cloud provider; bundled helpers can route them to generation or editing services.\n\nMitigation: Review the data destination before use; prefer the direct dLazy text-model path or a dry run, and avoid unrelated provider credentials in the environment.\n\nRisk: Optional fixing and rerun commands can rewrite files or trigger additional generation requests.\n\nMitigation: Do not run --fix or run_loop unless file changes and generation reruns are intended; review commands and outputs first.\n\nRisk: Automated image judgments can miss defects or incorrectly flag compliant images.\n\nMitigation: Keep a human final review and confirm current marketplace requirements before publishing.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/dlazyai/skills/detect-task)\n- [Example image review report](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)\n- [Provider CLI reference](references/provider-cli.md)\n- [Image listing specifications](references/platform-specs.md)\n- [Model flags](references/model-flags.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance, Shell commands]\n\n**Output Format:** [Markdown report with a risk rating, eight-item findings table, recommendation, and optional English prompt corrections]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Optional JSON report; batch workflows may write reports and rerun queues. Results require human review before publication.]\n\n## Skill Version(s):\n\n1.0.20 (source: skill 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.20: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.19: 14 files, 38242 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1617b), references/platform-specs.md (2180b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/check_listing.py (16313b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), scripts/run_loop.mjs (9938b), skill-card.md (2423b), SKILL.md (14484b), _meta.json (131b)\n\nFile v1.0.19:SKILL.md\n\n---\nname: detect-task\nversion: 1.0.19\ndescription: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。\n---\n\n# detect-task — 投放前 AI 图真实性检测\n\nAI 生图上架前的**最后一道关**。判断这张图能不能直接投，崩在哪里，怎么修。\n\n和其他技能的区别：本技能**不生成图片，输出的是判断**。它的价值在于把「生成 → 检测 → 重跑」闭起来——检测报告里直接给出该追加到 prompt 的修正句。\n\n---\n\n## 生成效果示例\n\n| 输入：待检图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/detect-task/candidate.jpg\" width=\"280\"> |\n| `candidate.jpg` — 由 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 生成的军绿毛衣模特上身图，1024×1536 |\n\n实际执行的命令：\n\n```bash\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n  > docs/detect-task/example-report.md\n```\n\n**输出**：完整报告见 [`docs/detect-task/example-report.md`](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)，3 credits。摘要：\n\n- **风险等级**：低风险\n- **8 项判定**：7 项通过；`文字乱码` 命中（轻微）——左侧袖口的织标图案模糊不可辨\n- **投放建议**：建议人工修图（仅需局部处理袖口小标签）\n- **修正建议**：`clear and legible brand tag/logo embroidery on cuff, sharp fine detail, no blurry or garbled text`\n\n这条修正句可以直接追加到 flat-lay 的原 prompt 末尾重跑——这就是闭环。\n\n---\n\n## 1、能力边界\n\n| 输出 | 说明 |\n| --- | --- |\n| 风险等级 | `低风险` / `中风险` / `高风险` |\n| 风险项逐条判定 | 8 项，每项给出 `通过` / `命中` + 一句证据 |\n| 投放建议 | `建议投放` / `建议重跑` / `建议人工修图` |\n| 修正建议 | 可直接追加到生成 prompt 的英文修正句 |\n\n**8 项风险清单**\n\n| # | 风险项 | 看什么 |\n| --- | --- | --- |\n| 1 | 商品崩坏 | 款式、织法、印花、logo 位置是否失真 |\n| 2 | 人脸不自然 | 五官比例、皮肤质感、眼神 |\n| 3 | 手部异常 | 手指数量与形态 |\n| 4 | 肢体结构错误 | 肩线、四肢数量与朝向 |\n| 5 | 文字乱码 | 画面内任何文字 |\n| 6 | 光影矛盾 | 投影方向与光源是否一致 |\n| 7 | 边缘融合痕迹 | 抠图边、鬼影、糊块 |\n| 8 | 平台合规 | 是否含违规元素 |\n\n**不做**：不替代人工终审（模型判断有误报漏报）；不做法律与平台规则的最终裁定；不用于给明显违规的图背书。\n\n---\n\n## 2、报告要能直接驱动重跑\n\n检测的意义不是打分，而是**告诉生成环节要改什么**。所以报告的第 4 项必须是**可直接复制到 prompt 的英文句子**。\n\n典型映射：\n\n| 命中项 | 应追加到生成 prompt 的修正句 |\n| --- | --- |\n| 商品崩坏 | `Cross-check the garment against the reference: [关键特征] must match exactly.` |\n| 人脸不自然 | `Photorealistic human face: correct facial proportions, natural skin pores and subsurface scattering, natural gaze.` |\n| 手部异常 | `Hands anatomically correct — five distinct fingers per hand, natural knuckles, no fused or extra digits.` |\n| 肢体结构错误 | `Correct anatomy: symmetric shoulders, two arms and two legs, no extra or missing limbs, no impossible joint angles.` |\n| 文字乱码 | `No text anywhere in the image.` 或（需要文字时）`All text must be clear, correctly formed [语言] characters.` |\n| 光影矛盾 | `Single consistent light source from [方向]; all shadows must fall in the same direction.` |\n| 边缘融合痕迹 | `Blend all edges seamlessly; no cut-out halo, no ghosting, no blurred patches.` |\n| 平台合规 | 视具体问题调整构图或去除违规元素 |\n\n**闭环写法**：\n\n```\n生成 → detect-task → 命中项 → 取修正句 → 追加到原 prompt → 重跑 → 再检测\n```\n\n---\n\n## 3、批量抽检\n\n批量出图后不必全检（成本 3 credits/张，但人工看报告的时间是瓶颈）。建议：\n\n| 场景 | 抽检比例 |\n| --- | --- |\n| 新规范段的首批 | 100% |\n| 规范已验证的批次 | 10% ~ 20% 随机 |\n| 带人物的图 | 提高到 30%（手和脸最容易崩） |\n| 纯商品图无人物 | 5% 即可 |\n\n批量脚本见第五节 command examples。把 `高风险` 的 SKU 自动打回重跑队列。\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`claude-sonnet-5`**（具备图像理解能力的文本模型；本技能要的是**判断与结构化报告**而不是图片，需要能逐项审查画面并写出可执行的修正建议——单张约 3 credits）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task detect-task \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/detect-task-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy claude-sonnet-5 --prompt '...' --images ... --save output/detect-task.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[待检图]`（最多 10 张，可一次送多张同批图对比） | 单张检测最准；多张适合看整批一致性 |\n| `--prompt` | 固定的质检 prompt（见第五节模板） | **整个项目用同一份**，否则报告不可比 |\n| `--batch` | `1` | 检测不需要多样性 |\n| `--no-wait` | 批量抽检时开启 | 先提交后统一收结果 |\n\n**取结果**：文本模型的输出在 `result.data.texts[0]`（不是 `urls`）。\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images a.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n> `dlazy --format text <tool>` 也可以把纯文本打到 stdout，注意 `--format` 是**全局**选项，必须写在子命令**之前**。\n\n### Command Examples\n\n```bash\n# basic call: 单张检测\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的商拍图能否直接投放，输出风险等级、8 项风险的逐条判定、投放建议，以及应追加到生成 prompt 的英文修正句。只输出报告。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n\n# complex call: 固定质检 prompt + 批量抽检 + 高风险自动打回\nQC='你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `claude-sonnet-5` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。'\n\nmkdir -p docs/detect-task/reports\n: > docs/detect-task/rerun-queue.txt\n\nfor f in docs/batch-image/out/*.jpg; do\n  SKU=$(basename \"$f\" .jpg)\n  dlazy claude-sonnet-5 --prompt \"$QC\" --images \"$f\" 2>/dev/null \\\n    | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n    > \"docs/detect-task/reports/${SKU}.md\"\n  if grep -q '高风险' \"docs/detect-task/reports/${SKU}.md\"; then\n    echo \"$SKU\" >> docs/detect-task/rerun-queue.txt\n  fi\ndone\n\necho \"需要重跑：$(wc -l < docs/detect-task/rerun-queue.txt) 个 SKU\"\n\n# 先估价不真跑\ndlazy claude-sonnet-5 --dry-run --prompt '...' --images a.jpg\n```\n\n### Error Handling\n\n| Code | Error Type                         | Example Message                                                                                                          |\n| ---- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| 401  | Unauthorized (No API Key)          | `ok: false, code: \"unauthorized\", message: \"API key is missing or invalid\"`                                              |\n| 501  | Missing required parameter         | `error: required option '--prompt <prompt>' not specified`                                                                |\n| 502  | Local file read error              | `Error: Image file/Video file not found: C:\\path\\to\\your\\file`                                                            |\n| 503  | API request failed (no balance)    | `ok: false, code: \"insufficient_balance\"`                                                                                |\n| 503  | API request failed (server error)  | `HTTP status code error (500 server crash)`                                                                              |\n| 504  | Asynchronous task execution failed | `=== Generation Failed ===` / `{Specific error reason returned by backend, for example \"Prompt violates safety policy\"}`  |\n\n> **AGENT CRITICAL INSTRUCTION**:\n> 1. If the execution result returns `code: \"insufficient_balance\"`, you MUST explicitly inform the user that their credits are insufficient and guide them to recharge: [https://dlazy.com/dashboard/organization/settings?tab=credits](https://dlazy.com/dashboard/organization/settings?tab=credits)\n> 2. If the execution result returns `code: \"unauthorized\"` or indicates missing API key, you MUST inform the user to get their API key from [https://dlazy.com/dashboard/organization/api-key](https://dlazy.com/dashboard/organization/api-key) and save it using `dlazy auth set <key>` and resume the task.\n\n---\n\n## 5、Prompt 模板\n\n**这份 prompt 应该在整个项目里固定不变**，否则不同批次的报告没法比较。\n\n```text\n你是电商投放前的图片质检员。审查这张 AI 生成的[品类]商拍图能否直接用于电商投放。\n全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。\n风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、\n文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；\n若建议投放，写「无需修正」。\n\n只输出报告，不要寒暄。\n```\n\n**可选的加强项**\n\n| 需求 | 追加到 prompt |\n| --- | --- |\n| 要和原商品图比对 | 多传一张原图，并写 `图1 是待检图，图2 是原始商品图，逐项比对商品保真度。` |\n| 要打分便于排序 | `在风险等级后追加一个 0-100 的可投放分数。` |\n| 要卡特定平台规则 | `额外检查以下平台规则：[规则清单]。` |\n| 要机器可读 | `以 JSON 输出，字段为 risk_level / items[] / recommendation / fixes[]。` |\n\n---\n\n## 6、执行流程\n\n1. **固定质检 prompt**（第五节模板），整个项目复用。\n2. **单张检测**：取 `result.data.texts[0]` 得到报告。\n3. **读第 3 项**：`建议投放` → 上架；`建议人工修图` → 转修图；`建议重跑` → 下一步。\n4. **取第 4 项的修正句**，追加到原生成 prompt 末尾，重跑。\n5. **再检测一次**——确认修正生效，别盲信一次重跑。\n6. **批量场景**：按第四节的比例抽检，`高风险` 自动进重跑队列。\n7. **人工终审**：模型有误报漏报，上架前仍需人眼扫一遍。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 报告输出英文 | 未强制语言 | prompt 里写明「全部用中文作答」 |\n| 拿不到结果 | 取错了字段 | 文本模型的结果在 `data.texts[0]`，不是 `urls` |\n| `--format text` 报错 | 全局选项位置错 | `--format` 要写在子命令**之前** |\n| 不同批次报告没法比 | 质检 prompt 每次都改 | 固定一份 prompt 全项目复用 |\n| 明显崩坏没被检出 | 模型漏报 | 提高抽检比例；上架前人工终审 |\n| 正常图被判高风险 | 模型误报 | 看第 2 项的证据描述再决定，不要只看等级 |\n| 修正句不够具体 | 报告太笼统 | 追加「要和原商品图比对」的加强项，多传一张原图 |\n\n---\n\n## Tips\n\nVisit https://dlazy.com for more information.\n\nFile v1.0.19:_meta.json\n\n{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"detect-task\",\n  \"version\": \"1.0.19\",\n  \"publishedAt\": 1791423715782\n}\n\nFile v1.0.19:references/model-flags.md\n\n# `claude-sonnet-5` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy claude-sonnet-5` command to get results.\r\n\r\n```bash\r\ndlazy claude-sonnet-5 -h\r\n\r\nOptions:\r\n  --prompt <prompt>     Prompt\r\n  --images [images...]  Images [image: url or local path] (max 10)\r\n  --videos [videos...]  Videos [video: url or local path] (max 8)\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 (default:\r\n                        \"1800\")\r\n  --input <jsonOrFile>  Inline JSON or @path/to/file.json — merged under flag\r\n                        values (flags win)\r\n  --save <path>         Download the result asset to this local path (mkdir +\r\n                        retry handled for you). A destination path — NOT a\r\n                        response format; for stdout shape use --format\r\n  --batch <n>           Fan-out N parallel runs (cloud tools only) (default:\r\n                        \"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.19:references/platform-specs.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/platform-specs.md 同步生成，不要直接改这里。 -->\r\n# 平台图片规格（可机检子集）\r\n\r\n`scripts/check_listing.py` 内置的规则来源与口径。**平台规则会变，以各平台最新官方文档为准**；\r\n需要覆盖时写一份 JSON 用 `--rules` 传入，结构与下表字段一一对应。\r\n\r\n---\r\n\r\n## 字段含义\r\n\r\n| 字段 | 含义 |\r\n| --- | --- |\r\n| `pure_white_bg` | 是否要求纯白 RGB(255,255,255) 背景 |\r\n| `bg_tolerance` | 判定「纯白」允许的单通道偏差 |\r\n| `bg_coverage` | 边缘一圈需要有多大比例落在容差内 |\r\n| `min_long_side` / `recommend_long_side` / `max_long_side` | 最长边像素 |\r\n| `min_occupancy` | 商品包围盒面积 ÷ 画面面积 的下限 |\r\n| `allow_alpha` | 是否允许透明通道 |\r\n| `allow_border` | 是否允许描边 / 外框 |\r\n| `formats` / `max_bytes` / `aspect` | 允许格式、体积上限、允许比例 |\r\n\r\n---\r\n\r\n## 内置规则\r\n\r\n| 平台 | 纯白底 | 最长边（下限 / 建议） | 主体占比 | 比例 | 体积上限 |\r\n| --- | --- | --- | --- | --- | --- |\r\n| `amazon` | 是 | 1000 / 1600 | ≥ 85% | 不限 | 10 MB |\r\n| `tiktok-shop` | 否 | 800 / 1600 | ≥ 60% | 1:1 或 3:4 | 5 MB |\r\n| `temu` | 是 | 800 / 1350 | ≥ 70% | 1:1 | 3 MB |\r\n| `shopee` | 否 | 500 / 1024 | ≥ 55% | 1:1 | 2 MB |\r\n| `shopify` | 否 | 1024 / 2048 | 不限 | 不限 | 20 MB |\r\n| `taobao` | 是 | 800 / 1200 | ≥ 70% | 1:1 | 3 MB |\r\n\r\n---\r\n\r\n## 几个容易踩的点\r\n\r\n- **透明 PNG**：Amazon 会把透明像素转成黑色。永远压平成白底 JPEG 再传。\r\n- **「白底」不等于「看起来是白的」**：棚拍的浅灰墙（约 RGB 208）肉眼像白，机检直接判不合格。\r\n- **主体占比**：留白过多是最常见的驳回原因之一，比分辨率不够更常见。\r\n- **文字 / 水印 / 拼图**：像素层测不了，交给 `detect-task` 的视觉模型或人工。\r\n- **自动修复的边界**：`--fix` 能压白底、按占比重构画布、补分辨率、压体积；\r\n  它**不会**修图，也不会去水印——那是 `item-repair` 和 `remove-watermark` 的活。\n\nFile v1.0.19: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.19: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.19:skill-card.md\n\n## Description:\n\nReviews AI-generated e-commerce images for visual defects and platform concerns, then suggests a release decision and corrective prompt wording.\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\nE-commerce creative teams and merchants use this skill to assess AI-generated product imagery before publication. It reports eight checks, recommends release, retouching or regeneration, and provides prompt corrections for another pass.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Product images and prompts can be sent to cloud providers.\n\nMitigation: Avoid sensitive or private images; confirm the intended provider and use dry-run or doctor before submitting.\n\nRisk: Bundled multi-provider tooling can generate or edit images and write local outputs, beyond the stated image-review purpose.\n\nMitigation: Prefer the documented dlazy claude-sonnet-5 inspection path; enable alternative providers or rerun loops only when image changes and local writes are intended.\n\nRisk: Model judgments may miss defects or incorrectly flag acceptable images.\n\nMitigation: Review the itemized evidence and conduct human approval before publishing or acting on automated rerun recommendations.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/dlazyai/skills/detect-task)\n- [Example inspection report](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)\n- [Provider CLI guidance](artifact/references/provider-cli.md)\n- [Model parameters](artifact/references/model-flags.md)\n- [Platform image checks](artifact/references/platform-specs.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Structured Markdown report; optional JSON]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Risk level, eight itemized findings, publication recommendation, and one to three English prompt corrections when needed.]\n\n## Skill Version(s):\n\n1.0.19 (source: SKILL.md 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.19: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.18: 14 files, 38193 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1617b), references/platform-specs.md (2180b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/check_listing.py (16313b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), scripts/run_loop.mjs (9938b), skill-card.md (2378b), SKILL.md (14484b), _meta.json (131b)\n\nFile v1.0.18:SKILL.md\n\n---\nname: detect-task\nversion: 1.0.18\ndescription: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。\n---\n\n# detect-task — 投放前 AI 图真实性检测\n\nAI 生图上架前的**最后一道关**。判断这张图能不能直接投，崩在哪里，怎么修。\n\n和其他技能的区别：本技能**不生成图片，输出的是判断**。它的价值在于把「生成 → 检测 → 重跑」闭起来——检测报告里直接给出该追加到 prompt 的修正句。\n\n---\n\n## 生成效果示例\n\n| 输入：待检图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/detect-task/candidate.jpg\" width=\"280\"> |\n| `candidate.jpg` — 由 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 生成的军绿毛衣模特上身图，1024×1536 |\n\n实际执行的命令：\n\n```bash\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n  > docs/detect-task/example-report.md\n```\n\n**输出**：完整报告见 [`docs/detect-task/example-report.md`](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)，3 credits。摘要：\n\n- **风险等级**：低风险\n- **8 项判定**：7 项通过；`文字乱码` 命中（轻微）——左侧袖口的织标图案模糊不可辨\n- **投放建议**：建议人工修图（仅需局部处理袖口小标签）\n- **修正建议**：`clear and legible brand tag/logo embroidery on cuff, sharp fine detail, no blurry or garbled text`\n\n这条修正句可以直接追加到 flat-lay 的原 prompt 末尾重跑——这就是闭环。\n\n---\n\n## 1、能力边界\n\n| 输出 | 说明 |\n| --- | --- |\n| 风险等级 | `低风险` / `中风险` / `高风险` |\n| 风险项逐条判定 | 8 项，每项给出 `通过` / `命中` + 一句证据 |\n| 投放建议 | `建议投放` / `建议重跑` / `建议人工修图` |\n| 修正建议 | 可直接追加到生成 prompt 的英文修正句 |\n\n**8 项风险清单**\n\n| # | 风险项 | 看什么 |\n| --- | --- | --- |\n| 1 | 商品崩坏 | 款式、织法、印花、logo 位置是否失真 |\n| 2 | 人脸不自然 | 五官比例、皮肤质感、眼神 |\n| 3 | 手部异常 | 手指数量与形态 |\n| 4 | 肢体结构错误 | 肩线、四肢数量与朝向 |\n| 5 | 文字乱码 | 画面内任何文字 |\n| 6 | 光影矛盾 | 投影方向与光源是否一致 |\n| 7 | 边缘融合痕迹 | 抠图边、鬼影、糊块 |\n| 8 | 平台合规 | 是否含违规元素 |\n\n**不做**：不替代人工终审（模型判断有误报漏报）；不做法律与平台规则的最终裁定；不用于给明显违规的图背书。\n\n---\n\n## 2、报告要能直接驱动重跑\n\n检测的意义不是打分，而是**告诉生成环节要改什么**。所以报告的第 4 项必须是**可直接复制到 prompt 的英文句子**。\n\n典型映射：\n\n| 命中项 | 应追加到生成 prompt 的修正句 |\n| --- | --- |\n| 商品崩坏 | `Cross-check the garment against the reference: [关键特征] must match exactly.` |\n| 人脸不自然 | `Photorealistic human face: correct facial proportions, natural skin pores and subsurface scattering, natural gaze.` |\n| 手部异常 | `Hands anatomically correct — five distinct fingers per hand, natural knuckles, no fused or extra digits.` |\n| 肢体结构错误 | `Correct anatomy: symmetric shoulders, two arms and two legs, no extra or missing limbs, no impossible joint angles.` |\n| 文字乱码 | `No text anywhere in the image.` 或（需要文字时）`All text must be clear, correctly formed [语言] characters.` |\n| 光影矛盾 | `Single consistent light source from [方向]; all shadows must fall in the same direction.` |\n| 边缘融合痕迹 | `Blend all edges seamlessly; no cut-out halo, no ghosting, no blurred patches.` |\n| 平台合规 | 视具体问题调整构图或去除违规元素 |\n\n**闭环写法**：\n\n```\n生成 → detect-task → 命中项 → 取修正句 → 追加到原 prompt → 重跑 → 再检测\n```\n\n---\n\n## 3、批量抽检\n\n批量出图后不必全检（成本 3 credits/张，但人工看报告的时间是瓶颈）。建议：\n\n| 场景 | 抽检比例 |\n| --- | --- |\n| 新规范段的首批 | 100% |\n| 规范已验证的批次 | 10% ~ 20% 随机 |\n| 带人物的图 | 提高到 30%（手和脸最容易崩） |\n| 纯商品图无人物 | 5% 即可 |\n\n批量脚本见第五节 command examples。把 `高风险` 的 SKU 自动打回重跑队列。\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`claude-sonnet-5`**（具备图像理解能力的文本模型；本技能要的是**判断与结构化报告**而不是图片，需要能逐项审查画面并写出可执行的修正建议——单张约 3 credits）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task detect-task \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/detect-task-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy claude-sonnet-5 --prompt '...' --images ... --save output/detect-task.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[待检图]`（最多 10 张，可一次送多张同批图对比） | 单张检测最准；多张适合看整批一致性 |\n| `--prompt` | 固定的质检 prompt（见第五节模板） | **整个项目用同一份**，否则报告不可比 |\n| `--batch` | `1` | 检测不需要多样性 |\n| `--no-wait` | 批量抽检时开启 | 先提交后统一收结果 |\n\n**取结果**：文本模型的输出在 `result.data.texts[0]`（不是 `urls`）。\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images a.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n> `dlazy --format text <tool>` 也可以把纯文本打到 stdout，注意 `--format` 是**全局**选项，必须写在子命令**之前**。\n\n### Command Examples\n\n```bash\n# basic call: 单张检测\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的商拍图能否直接投放，输出风险等级、8 项风险的逐条判定、投放建议，以及应追加到生成 prompt 的英文修正句。只输出报告。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n\n# complex call: 固定质检 prompt + 批量抽检 + 高风险自动打回\nQC='你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `claude-sonnet-5` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。'\n\nmkdir -p docs/detect-task/reports\n: > docs/detect-task/rerun-queue.txt\n\nfor f in docs/batch-image/out/*.jpg; do\n  SKU=$(basename \"$f\" .jpg)\n  dlazy claude-sonnet-5 --prompt \"$QC\" --images \"$f\" 2>/dev/null \\\n    | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n    > \"docs/detect-task/reports/${SKU}.md\"\n  if grep -q '高风险' \"docs/detect-task/reports/${SKU}.md\"; then\n    echo \"$SKU\" >> docs/detect-task/rerun-queue.txt\n  fi\ndone\n\necho \"需要重跑：$(wc -l < docs/detect-task/rerun-queue.txt) 个 SKU\"\n\n# 先估价不真跑\ndlazy claude-sonnet-5 --dry-run --prompt '...' --images a.jpg\n```\n\n### Error Handling\n\n| Code | Error Type                         | Example Message                                                                                                          |\n| ---- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| 401  | Unauthorized (No API Key)          | `ok: false, code: \"unauthorized\", message: \"API key is missing or invalid\"`                                              |\n| 501  | Missing required parameter         | `error: required option '--prompt <prompt>' not specified`                                                                |\n| 502  | Local file read error              | `Error: Image file/Video file not found: C:\\path\\to\\your\\file`                                                            |\n| 503  | API request failed (no balance)    | `ok: false, code: \"insufficient_balance\"`                                                                                |\n| 503  | API request failed (server error)  | `HTTP status code error (500 server crash)`                                                                              |\n| 504  | Asynchronous task execution failed | `=== Generation Failed ===` / `{Specific error reason returned by backend, for example \"Prompt violates safety policy\"}`  |\n\n> **AGENT CRITICAL INSTRUCTION**:\n> 1. If the execution result returns `code: \"insufficient_balance\"`, you MUST explicitly inform the user that their credits are insufficient and guide them to recharge: [https://dlazy.com/dashboard/organization/settings?tab=credits](https://dlazy.com/dashboard/organization/settings?tab=credits)\n> 2. If the execution result returns `code: \"unauthorized\"` or indicates missing API key, you MUST inform the user to get their API key from [https://dlazy.com/dashboard/organization/api-key](https://dlazy.com/dashboard/organization/api-key) and save it using `dlazy auth set <key>` and resume the task.\n\n---\n\n## 5、Prompt 模板\n\n**这份 prompt 应该在整个项目里固定不变**，否则不同批次的报告没法比较。\n\n```text\n你是电商投放前的图片质检员。审查这张 AI 生成的[品类]商拍图能否直接用于电商投放。\n全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。\n风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、\n文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；\n若建议投放，写「无需修正」。\n\n只输出报告，不要寒暄。\n```\n\n**可选的加强项**\n\n| 需求 | 追加到 prompt |\n| --- | --- |\n| 要和原商品图比对 | 多传一张原图，并写 `图1 是待检图，图2 是原始商品图，逐项比对商品保真度。` |\n| 要打分便于排序 | `在风险等级后追加一个 0-100 的可投放分数。` |\n| 要卡特定平台规则 | `额外检查以下平台规则：[规则清单]。` |\n| 要机器可读 | `以 JSON 输出，字段为 risk_level / items[] / recommendation / fixes[]。` |\n\n---\n\n## 6、执行流程\n\n1. **固定质检 prompt**（第五节模板），整个项目复用。\n2. **单张检测**：取 `result.data.texts[0]` 得到报告。\n3. **读第 3 项**：`建议投放` → 上架；`建议人工修图` → 转修图；`建议重跑` → 下一步。\n4. **取第 4 项的修正句**，追加到原生成 prompt 末尾，重跑。\n5. **再检测一次**——确认修正生效，别盲信一次重跑。\n6. **批量场景**：按第四节的比例抽检，`高风险` 自动进重跑队列。\n7. **人工终审**：模型有误报漏报，上架前仍需人眼扫一遍。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 报告输出英文 | 未强制语言 | prompt 里写明「全部用中文作答」 |\n| 拿不到结果 | 取错了字段 | 文本模型的结果在 `data.texts[0]`，不是 `urls` |\n| `--format text` 报错 | 全局选项位置错 | `--format` 要写在子命令**之前** |\n| 不同批次报告没法比 | 质检 prompt 每次都改 | 固定一份 prompt 全项目复用 |\n| 明显崩坏没被检出 | 模型漏报 | 提高抽检比例；上架前人工终审 |\n| 正常图被判高风险 | 模型误报 | 看第 2 项的证据描述再决定，不要只看等级 |\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\": \"detect-task\",\n  \"version\": \"1.0.18\",\n  \"publishedAt\": 1791078130743\n}\n\nFile v1.0.18:references/model-flags.md\n\n# `claude-sonnet-5` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy claude-sonnet-5` command to get results.\r\n\r\n```bash\r\ndlazy claude-sonnet-5 -h\r\n\r\nOptions:\r\n  --prompt <prompt>     Prompt\r\n  --images [images...]  Images [image: url or local path] (max 10)\r\n  --videos [videos...]  Videos [video: url or local path] (max 8)\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 (default:\r\n                        \"1800\")\r\n  --input <jsonOrFile>  Inline JSON or @path/to/file.json — merged under flag\r\n                        values (flags win)\r\n  --save <path>         Download the result asset to this local path (mkdir +\r\n                        retry handled for you). A destination path — NOT a\r\n                        response format; for stdout shape use --format\r\n  --batch <n>           Fan-out N parallel runs (cloud tools only) (default:\r\n                        \"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/platform-specs.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/platform-specs.md 同步生成，不要直接改这里。 -->\r\n# 平台图片规格（可机检子集）\r\n\r\n`scripts/check_listing.py` 内置的规则来源与口径。**平台规则会变，以各平台最新官方文档为准**；\r\n需要覆盖时写一份 JSON 用 `--rules` 传入，结构与下表字段一一对应。\r\n\r\n---\r\n\r\n## 字段含义\r\n\r\n| 字段 | 含义 |\r\n| --- | --- |\r\n| `pure_white_bg` | 是否要求纯白 RGB(255,255,255) 背景 |\r\n| `bg_tolerance` | 判定「纯白」允许的单通道偏差 |\r\n| `bg_coverage` | 边缘一圈需要有多大比例落在容差内 |\r\n| `min_long_side` / `recommend_long_side` / `max_long_side` | 最长边像素 |\r\n| `min_occupancy` | 商品包围盒面积 ÷ 画面面积 的下限 |\r\n| `allow_alpha` | 是否允许透明通道 |\r\n| `allow_border` | 是否允许描边 / 外框 |\r\n| `formats` / `max_bytes` / `aspect` | 允许格式、体积上限、允许比例 |\r\n\r\n---\r\n\r\n## 内置规则\r\n\r\n| 平台 | 纯白底 | 最长边（下限 / 建议） | 主体占比 | 比例 | 体积上限 |\r\n| --- | --- | --- | --- | --- | --- |\r\n| `amazon` | 是 | 1000 / 1600 | ≥ 85% | 不限 | 10 MB |\r\n| `tiktok-shop` | 否 | 800 / 1600 | ≥ 60% | 1:1 或 3:4 | 5 MB |\r\n| `temu` | 是 | 800 / 1350 | ≥ 70% | 1:1 | 3 MB |\r\n| `shopee` | 否 | 500 / 1024 | ≥ 55% | 1:1 | 2 MB |\r\n| `shopify` | 否 | 1024 / 2048 | 不限 | 不限 | 20 MB |\r\n| `taobao` | 是 | 800 / 1200 | ≥ 70% | 1:1 | 3 MB |\r\n\r\n---\r\n\r\n## 几个容易踩的点\r\n\r\n- **透明 PNG**：Amazon 会把透明像素转成黑色。永远压平成白底 JPEG 再传。\r\n- **「白底」不等于「看起来是白的」**：棚拍的浅灰墙（约 RGB 208）肉眼像白，机检直接判不合格。\r\n- **主体占比**：留白过多是最常见的驳回原因之一，比分辨率不够更常见。\r\n- **文字 / 水印 / 拼图**：像素层测不了，交给 `detect-task` 的视觉模型或人工。\r\n- **自动修复的边界**：`--fix` 能压白底、按占比重构画布、补分辨率、压体积；\r\n  它**不会**修图，也不会去水印——那是 `item-repair` 和 `remove-watermark` 的活。\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\nReviews AI-generated e-commerce images before listing, reporting eight visual and compliance checks, an overall risk level, and prompt-ready corrections.\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\nE-commerce content teams and developers use this skill to screen AI-generated product images before publication and obtain specific corrections for editing or another generation pass. Human review remains necessary before listing.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Unreleased product images and prompts may be sent to a configured cloud provider.\n\nMitigation: Use only approved images and an explicitly selected provider; avoid sensitive inputs without authorization.\n\nRisk: Provider calls and automatic reruns may incur costs.\n\nMitigation: Use dry-run before paid calls and set appropriate limits for repeated runs.\n\nRisk: Bundled helpers can generate or edit media and write derived files, beyond image review.\n\nMitigation: Review output paths and requested actions before invoking run-loop or --fix modes.\n\nRisk: Image assessments can miss defects or incorrectly clear images for publication.\n\nMitigation: Require human final review and verify platform requirements before listing.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/dlazyai/skills/detect-task)\n- [Example image review report](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)\n- [Provider CLI reference](references/provider-cli.md)\n- [Platform image specifications](references/platform-specs.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Markdown report with a risk table and prompt-ready correction sentences; optional JSON]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Helper scripts can save generated or edited media and run records when invoked.]\n\n## Skill Version(s):\n\n1.0.18 (source: ClawHub release and SKILL.md 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.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: 14 files, 38138 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1617b), references/platform-specs.md (2180b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/check_listing.py (16313b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), scripts/run_loop.mjs (9938b), skill-card.md (2220b), SKILL.md (14484b), _meta.json (131b)\n\nFile v1.0.17:SKILL.md\n\n---\nname: detect-task\nversion: 1.0.17\ndescription: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。\n---\n\n# detect-task — 投放前 AI 图真实性检测\n\nAI 生图上架前的**最后一道关**。判断这张图能不能直接投，崩在哪里，怎么修。\n\n和其他技能的区别：本技能**不生成图片，输出的是判断**。它的价值在于把「生成 → 检测 → 重跑」闭起来——检测报告里直接给出该追加到 prompt 的修正句。\n\n---\n\n## 生成效果示例\n\n| 输入：待检图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/detect-task/candidate.jpg\" width=\"280\"> |\n| `candidate.jpg` — 由 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 生成的军绿毛衣模特上身图，1024×1536 |\n\n实际执行的命令：\n\n```bash\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n  > docs/detect-task/example-report.md\n```\n\n**输出**：完整报告见 [`docs/detect-task/example-report.md`](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)，3 credits。摘要：\n\n- **风险等级**：低风险\n- **8 项判定**：7 项通过；`文字乱码` 命中（轻微）——左侧袖口的织标图案模糊不可辨\n- **投放建议**：建议人工修图（仅需局部处理袖口小标签）\n- **修正建议**：`clear and legible brand tag/logo embroidery on cuff, sharp fine detail, no blurry or garbled text`\n\n这条修正句可以直接追加到 flat-lay 的原 prompt 末尾重跑——这就是闭环。\n\n---\n\n## 1、能力边界\n\n| 输出 | 说明 |\n| --- | --- |\n| 风险等级 | `低风险` / `中风险` / `高风险` |\n| 风险项逐条判定 | 8 项，每项给出 `通过` / `命中` + 一句证据 |\n| 投放建议 | `建议投放` / `建议重跑` / `建议人工修图` |\n| 修正建议 | 可直接追加到生成 prompt 的英文修正句 |\n\n**8 项风险清单**\n\n| # | 风险项 | 看什么 |\n| --- | --- | --- |\n| 1 | 商品崩坏 | 款式、织法、印花、logo 位置是否失真 |\n| 2 | 人脸不自然 | 五官比例、皮肤质感、眼神 |\n| 3 | 手部异常 | 手指数量与形态 |\n| 4 | 肢体结构错误 | 肩线、四肢数量与朝向 |\n| 5 | 文字乱码 | 画面内任何文字 |\n| 6 | 光影矛盾 | 投影方向与光源是否一致 |\n| 7 | 边缘融合痕迹 | 抠图边、鬼影、糊块 |\n| 8 | 平台合规 | 是否含违规元素 |\n\n**不做**：不替代人工终审（模型判断有误报漏报）；不做法律与平台规则的最终裁定；不用于给明显违规的图背书。\n\n---\n\n## 2、报告要能直接驱动重跑\n\n检测的意义不是打分，而是**告诉生成环节要改什么**。所以报告的第 4 项必须是**可直接复制到 prompt 的英文句子**。\n\n典型映射：\n\n| 命中项 | 应追加到生成 prompt 的修正句 |\n| --- | --- |\n| 商品崩坏 | `Cross-check the garment against the reference: [关键特征] must match exactly.` |\n| 人脸不自然 | `Photorealistic human face: correct facial proportions, natural skin pores and subsurface scattering, natural gaze.` |\n| 手部异常 | `Hands anatomically correct — five distinct fingers per hand, natural knuckles, no fused or extra digits.` |\n| 肢体结构错误 | `Correct anatomy: symmetric shoulders, two arms and two legs, no extra or missing limbs, no impossible joint angles.` |\n| 文字乱码 | `No text anywhere in the image.` 或（需要文字时）`All text must be clear, correctly formed [语言] characters.` |\n| 光影矛盾 | `Single consistent light source from [方向]; all shadows must fall in the same direction.` |\n| 边缘融合痕迹 | `Blend all edges seamlessly; no cut-out halo, no ghosting, no blurred patches.` |\n| 平台合规 | 视具体问题调整构图或去除违规元素 |\n\n**闭环写法**：\n\n```\n生成 → detect-task → 命中项 → 取修正句 → 追加到原 prompt → 重跑 → 再检测\n```\n\n---\n\n## 3、批量抽检\n\n批量出图后不必全检（成本 3 credits/张，但人工看报告的时间是瓶颈）。建议：\n\n| 场景 | 抽检比例 |\n| --- | --- |\n| 新规范段的首批 | 100% |\n| 规范已验证的批次 | 10% ~ 20% 随机 |\n| 带人物的图 | 提高到 30%（手和脸最容易崩） |\n| 纯商品图无人物 | 5% 即可 |\n\n批量脚本见第五节 command examples。把 `高风险` 的 SKU 自动打回重跑队列。\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`claude-sonnet-5`**（具备图像理解能力的文本模型；本技能要的是**判断与结构化报告**而不是图片，需要能逐项审查画面并写出可执行的修正建议——单张约 3 credits）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task detect-task \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/detect-task-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy claude-sonnet-5 --prompt '...' --images ... --save output/detect-task.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[待检图]`（最多 10 张，可一次送多张同批图对比） | 单张检测最准；多张适合看整批一致性 |\n| `--prompt` | 固定的质检 prompt（见第五节模板） | **整个项目用同一份**，否则报告不可比 |\n| `--batch` | `1` | 检测不需要多样性 |\n| `--no-wait` | 批量抽检时开启 | 先提交后统一收结果 |\n\n**取结果**：文本模型的输出在 `result.data.texts[0]`（不是 `urls`）。\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images a.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n> `dlazy --format text <tool>` 也可以把纯文本打到 stdout，注意 `--format` 是**全局**选项，必须写在子命令**之前**。\n\n### Command Examples\n\n```bash\n# basic call: 单张检测\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的商拍图能否直接投放，输出风险等级、8 项风险的逐条判定、投放建议，以及应追加到生成 prompt 的英文修正句。只输出报告。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n\n# complex call: 固定质检 prompt + 批量抽检 + 高风险自动打回\nQC='你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `claude-sonnet-5` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。'\n\nmkdir -p docs/detect-task/reports\n: > docs/detect-task/rerun-queue.txt\n\nfor f in docs/batch-image/out/*.jpg; do\n  SKU=$(basename \"$f\" .jpg)\n  dlazy claude-sonnet-5 --prompt \"$QC\" --images \"$f\" 2>/dev/null \\\n    | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n    > \"docs/detect-task/reports/${SKU}.md\"\n  if grep -q '高风险' \"docs/detect-task/reports/${SKU}.md\"; then\n    echo \"$SKU\" >> docs/detect-task/rerun-queue.txt\n  fi\ndone\n\necho \"需要重跑：$(wc -l < docs/detect-task/rerun-queue.txt) 个 SKU\"\n\n# 先估价不真跑\ndlazy claude-sonnet-5 --dry-run --prompt '...' --images a.jpg\n```\n\n### Error Handling\n\n| Code | Error Type                         | Example Message                                                                                                          |\n| ---- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| 401  | Unauthorized (No API Key)          | `ok: false, code: \"unauthorized\", message: \"API key is missing or invalid\"`                                              |\n| 501  | Missing required parameter         | `error: required option '--prompt <prompt>' not specified`                                                                |\n| 502  | Local file read error              | `Error: Image file/Video file not found: C:\\path\\to\\your\\file`                                                            |\n| 503  | API request failed (no balance)    | `ok: false, code: \"insufficient_balance\"`                                                                                |\n| 503  | API request failed (server error)  | `HTTP status code error (500 server crash)`                                                                              |\n| 504  | Asynchronous task execution failed | `=== Generation Failed ===` / `{Specific error reason returned by backend, for example \"Prompt violates safety policy\"}`  |\n\n> **AGENT CRITICAL INSTRUCTION**:\n> 1. If the execution result returns `code: \"insufficient_balance\"`, you MUST explicitly inform the user that their credits are insufficient and guide them to recharge: [https://dlazy.com/dashboard/organization/settings?tab=credits](https://dlazy.com/dashboard/organization/settings?tab=credits)\n> 2. If the execution result returns `code: \"unauthorized\"` or indicates missing API key, you MUST inform the user to get their API key from [https://dlazy.com/dashboard/organization/api-key](https://dlazy.com/dashboard/organization/api-key) and save it using `dlazy auth set <key>` and resume the task.\n\n---\n\n## 5、Prompt 模板\n\n**这份 prompt 应该在整个项目里固定不变**，否则不同批次的报告没法比较。\n\n```text\n你是电商投放前的图片质检员。审查这张 AI 生成的[品类]商拍图能否直接用于电商投放。\n全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。\n风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、\n文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；\n若建议投放，写「无需修正」。\n\n只输出报告，不要寒暄。\n```\n\n**可选的加强项**\n\n| 需求 | 追加到 prompt |\n| --- | --- |\n| 要和原商品图比对 | 多传一张原图，并写 `图1 是待检图，图2 是原始商品图，逐项比对商品保真度。` |\n| 要打分便于排序 | `在风险等级后追加一个 0-100 的可投放分数。` |\n| 要卡特定平台规则 | `额外检查以下平台规则：[规则清单]。` |\n| 要机器可读 | `以 JSON 输出，字段为 risk_level / items[] / recommendation / fixes[]。` |\n\n---\n\n## 6、执行流程\n\n1. **固定质检 prompt**（第五节模板），整个项目复用。\n2. **单张检测**：取 `result.data.texts[0]` 得到报告。\n3. **读第 3 项**：`建议投放` → 上架；`建议人工修图` → 转修图；`建议重跑` → 下一步。\n4. **取第 4 项的修正句**，追加到原生成 prompt 末尾，重跑。\n5. **再检测一次**——确认修正生效，别盲信一次重跑。\n6. **批量场景**：按第四节的比例抽检，`高风险` 自动进重跑队列。\n7. **人工终审**：模型有误报漏报，上架前仍需人眼扫一遍。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 报告输出英文 | 未强制语言 | prompt 里写明「全部用中文作答」 |\n| 拿不到结果 | 取错了字段 | 文本模型的结果在 `data.texts[0]`，不是 `urls` |\n| `--format text` 报错 | 全局选项位置错 | `--format` 要写在子命令**之前** |\n| 不同批次报告没法比 | 质检 prompt 每次都改 | 固定一份 prompt 全项目复用 |\n| 明显崩坏没被检出 | 模型漏报 | 提高抽检比例；上架前人工终审 |\n| 正常图被判高风险 | 模型误报 | 看第 2 项的证据描述再决定，不要只看等级 |\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\": \"detect-task\",\n  \"version\": \"1.0.17\",\n  \"publishedAt\": 1790918116468\n}\n\nFile v1.0.17:references/model-flags.md\n\n# `claude-sonnet-5` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy claude-sonnet-5` command to get results.\r\n\r\n```bash\r\ndlazy claude-sonnet-5 -h\r\n\r\nOptions:\r\n  --prompt <prompt>     Prompt\r\n  --images [images...]  Images [image: url or local path] (max 10)\r\n  --videos [videos...]  Videos [video: url or local path] (max 8)\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 (default:\r\n                        \"1800\")\r\n  --input <jsonOrFile>  Inline JSON or @path/to/file.json — merged under flag\r\n                        values (flags win)\r\n  --save <path>         Download the result asset to this local path (mkdir +\r\n                        retry handled for you). A destination path — NOT a\r\n                        response format; for stdout shape use --format\r\n  --batch <n>           Fan-out N parallel runs (cloud tools only) (default:\r\n                        \"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/platform-specs.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/platform-specs.md 同步生成，不要直接改这里。 -->\r\n# 平台图片规格（可机检子集）\r\n\r\n`scripts/check_listing.py` 内置的规则来源与口径。**平台规则会变，以各平台最新官方文档为准**；\r\n需要覆盖时写一份 JSON 用 `--rules` 传入，结构与下表字段一一对应。\r\n\r\n---\r\n\r\n## 字段含义\r\n\r\n| 字段 | 含义 |\r\n| --- | --- |\r\n| `pure_white_bg` | 是否要求纯白 RGB(255,255,255) 背景 |\r\n| `bg_tolerance` | 判定「纯白」允许的单通道偏差 |\r\n| `bg_coverage` | 边缘一圈需要有多大比例落在容差内 |\r\n| `min_long_side` / `recommend_long_side` / `max_long_side` | 最长边像素 |\r\n| `min_occupancy` | 商品包围盒面积 ÷ 画面面积 的下限 |\r\n| `allow_alpha` | 是否允许透明通道 |\r\n| `allow_border` | 是否允许描边 / 外框 |\r\n| `formats` / `max_bytes` / `aspect` | 允许格式、体积上限、允许比例 |\r\n\r\n---\r\n\r\n## 内置规则\r\n\r\n| 平台 | 纯白底 | 最长边（下限 / 建议） | 主体占比 | 比例 | 体积上限 |\r\n| --- | --- | --- | --- | --- | --- |\r\n| `amazon` | 是 | 1000 / 1600 | ≥ 85% | 不限 | 10 MB |\r\n| `tiktok-shop` | 否 | 800 / 1600 | ≥ 60% | 1:1 或 3:4 | 5 MB |\r\n| `temu` | 是 | 800 / 1350 | ≥ 70% | 1:1 | 3 MB |\r\n| `shopee` | 否 | 500 / 1024 | ≥ 55% | 1:1 | 2 MB |\r\n| `shopify` | 否 | 1024 / 2048 | 不限 | 不限 | 20 MB |\r\n| `taobao` | 是 | 800 / 1200 | ≥ 70% | 1:1 | 3 MB |\r\n\r\n---\r\n\r\n## 几个容易踩的点\r\n\r\n- **透明 PNG**：Amazon 会把透明像素转成黑色。永远压平成白底 JPEG 再传。\r\n- **「白底」不等于「看起来是白的」**：棚拍的浅灰墙（约 RGB 208）肉眼像白，机检直接判不合格。\r\n- **主体占比**：留白过多是最常见的驳回原因之一，比分辨率不够更常见。\r\n- **文字 / 水印 / 拼图**：像素层测不了，交给 `detect-task` 的视觉模型或人工。\r\n- **自动修复的边界**：`--fix` 能压白底、按占比重构画布、补分辨率、压体积；\r\n  它**不会**修图，也不会去水印——那是 `item-repair` 和 `remove-watermark` 的活。\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\nReviews AI-generated product images before publication, reporting eight visual and compliance checks with risk ratings and actionable prompt corrections.\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\nE-commerce creative teams and merchants use this skill to screen AI-generated product images before listing or advertising, identify visual defects, and decide whether to publish, retouch, or regenerate.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Private product images, unreleased designs, or customer photos may be sent to third-party providers.\n\nMitigation: Review data-sharing requirements before installation and avoid sending sensitive or regulated images without authorization.\n\nRisk: Bundled helpers can generate or edit images, beyond the skill's inspection-only description.\n\nMitigation: Review helper capabilities, choose the provider explicitly, and use a dry run where available before invoking them.\n\nRisk: Image judgments may miss defects or misclassify compliance issues.\n\nMitigation: Review the itemized evidence and conduct a human final check before publication.\n\n## Reference(s):\n\n- [Example inspection report](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)\n- [Platform image specifications](references/platform-specs.md)\n- [Model flags](references/model-flags.md)\n- [Provider CLI reference](references/provider-cli.md)\n\n## Skill Output:\n\n**Output Type(s):** [Analysis, Guidance]\n\n**Output Format:** [Markdown report or optional JSON]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Risk level, eight itemized judgments with evidence, publication recommendation, and optional English prompt corrections.]\n\n## Skill Version(s):\n\n1.0.17 (source: skill 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.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: 14 files, 38056 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1617b), references/platform-specs.md (2180b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/check_listing.py (16313b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), scripts/run_loop.mjs (9938b), skill-card.md (1984b), SKILL.md (14484b), _meta.json (131b)\n\nFile v1.0.16:SKILL.md\n\n---\nname: detect-task\nversion: 1.0.16\ndescription: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。\n---\n\n# detect-task — 投放前 AI 图真实性检测\n\nAI 生图上架前的**最后一道关**。判断这张图能不能直接投，崩在哪里，怎么修。\n\n和其他技能的区别：本技能**不生成图片，输出的是判断**。它的价值在于把「生成 → 检测 → 重跑」闭起来——检测报告里直接给出该追加到 prompt 的修正句。\n\n---\n\n## 生成效果示例\n\n| 输入：待检图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/detect-task/candidate.jpg\" width=\"280\"> |\n| `candidate.jpg` — 由 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 生成的军绿毛衣模特上身图，1024×1536 |\n\n实际执行的命令：\n\n```bash\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n  > docs/detect-task/example-report.md\n```\n\n**输出**：完整报告见 [`docs/detect-task/example-report.md`](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)，3 credits。摘要：\n\n- **风险等级**：低风险\n- **8 项判定**：7 项通过；`文字乱码` 命中（轻微）——左侧袖口的织标图案模糊不可辨\n- **投放建议**：建议人工修图（仅需局部处理袖口小标签）\n- **修正建议**：`clear and legible brand tag/logo embroidery on cuff, sharp fine detail, no blurry or garbled text`\n\n这条修正句可以直接追加到 flat-lay 的原 prompt 末尾重跑——这就是闭环。\n\n---\n\n## 1、能力边界\n\n| 输出 | 说明 |\n| --- | --- |\n| 风险等级 | `低风险` / `中风险` / `高风险` |\n| 风险项逐条判定 | 8 项，每项给出 `通过` / `命中` + 一句证据 |\n| 投放建议 | `建议投放` / `建议重跑` / `建议人工修图` |\n| 修正建议 | 可直接追加到生成 prompt 的英文修正句 |\n\n**8 项风险清单**\n\n| # | 风险项 | 看什么 |\n| --- | --- | --- |\n| 1 | 商品崩坏 | 款式、织法、印花、logo 位置是否失真 |\n| 2 | 人脸不自然 | 五官比例、皮肤质感、眼神 |\n| 3 | 手部异常 | 手指数量与形态 |\n| 4 | 肢体结构错误 | 肩线、四肢数量与朝向 |\n| 5 | 文字乱码 | 画面内任何文字 |\n| 6 | 光影矛盾 | 投影方向与光源是否一致 |\n| 7 | 边缘融合痕迹 | 抠图边、鬼影、糊块 |\n| 8 | 平台合规 | 是否含违规元素 |\n\n**不做**：不替代人工终审（模型判断有误报漏报）；不做法律与平台规则的最终裁定；不用于给明显违规的图背书。\n\n---\n\n## 2、报告要能直接驱动重跑\n\n检测的意义不是打分，而是**告诉生成环节要改什么**。所以报告的第 4 项必须是**可直接复制到 prompt 的英文句子**。\n\n典型映射：\n\n| 命中项 | 应追加到生成 prompt 的修正句 |\n| --- | --- |\n| 商品崩坏 | `Cross-check the garment against the reference: [关键特征] must match exactly.` |\n| 人脸不自然 | `Photorealistic human face: correct facial proportions, natural skin pores and subsurface scattering, natural gaze.` |\n| 手部异常 | `Hands anatomically correct — five distinct fingers per hand, natural knuckles, no fused or extra digits.` |\n| 肢体结构错误 | `Correct anatomy: symmetric shoulders, two arms and two legs, no extra or missing limbs, no impossible joint angles.` |\n| 文字乱码 | `No text anywhere in the image.` 或（需要文字时）`All text must be clear, correctly formed [语言] characters.` |\n| 光影矛盾 | `Single consistent light source from [方向]; all shadows must fall in the same direction.` |\n| 边缘融合痕迹 | `Blend all edges seamlessly; no cut-out halo, no ghosting, no blurred patches.` |\n| 平台合规 | 视具体问题调整构图或去除违规元素 |\n\n**闭环写法**：\n\n```\n生成 → detect-task → 命中项 → 取修正句 → 追加到原 prompt → 重跑 → 再检测\n```\n\n---\n\n## 3、批量抽检\n\n批量出图后不必全检（成本 3 credits/张，但人工看报告的时间是瓶颈）。建议：\n\n| 场景 | 抽检比例 |\n| --- | --- |\n| 新规范段的首批 | 100% |\n| 规范已验证的批次 | 10% ~ 20% 随机 |\n| 带人物的图 | 提高到 30%（手和脸最容易崩） |\n| 纯商品图无人物 | 5% 即可 |\n\n批量脚本见第五节 command examples。把 `高风险` 的 SKU 自动打回重跑队列。\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`claude-sonnet-5`**（具备图像理解能力的文本模型；本技能要的是**判断与结构化报告**而不是图片，需要能逐项审查画面并写出可执行的修正建议——单张约 3 credits）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task detect-task \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/detect-task-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy claude-sonnet-5 --prompt '...' --images ... --save output/detect-task.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[待检图]`（最多 10 张，可一次送多张同批图对比） | 单张检测最准；多张适合看整批一致性 |\n| `--prompt` | 固定的质检 prompt（见第五节模板） | **整个项目用同一份**，否则报告不可比 |\n| `--batch` | `1` | 检测不需要多样性 |\n| `--no-wait` | 批量抽检时开启 | 先提交后统一收结果 |\n\n**取结果**：文本模型的输出在 `result.data.texts[0]`（不是 `urls`）。\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images a.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n> `dlazy --format text <tool>` 也可以把纯文本打到 stdout，注意 `--format` 是**全局**选项，必须写在子命令**之前**。\n\n### Command Examples\n\n```bash\n# basic call: 单张检测\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的商拍图能否直接投放，输出风险等级、8 项风险的逐条判定、投放建议，以及应追加到生成 prompt 的英文修正句。只输出报告。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n\n# complex call: 固定质检 prompt + 批量抽检 + 高风险自动打回\nQC='你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `claude-sonnet-5` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。'\n\nmkdir -p docs/detect-task/reports\n: > docs/detect-task/rerun-queue.txt\n\nfor f in docs/batch-image/out/*.jpg; do\n  SKU=$(basename \"$f\" .jpg)\n  dlazy claude-sonnet-5 --prompt \"$QC\" --images \"$f\" 2>/dev/null \\\n    | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n    > \"docs/detect-task/reports/${SKU}.md\"\n  if grep -q '高风险' \"docs/detect-task/reports/${SKU}.md\"; then\n    echo \"$SKU\" >> docs/detect-task/rerun-queue.txt\n  fi\ndone\n\necho \"需要重跑：$(wc -l < docs/detect-task/rerun-queue.txt) 个 SKU\"\n\n# 先估价不真跑\ndlazy claude-sonnet-5 --dry-run --prompt '...' --images a.jpg\n```\n\n### Error Handling\n\n| Code | Error Type                         | Example Message                                                                                                          |\n| ---- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| 401  | Unauthorized (No API Key)          | `ok: false, code: \"unauthorized\", message: \"API key is missing or invalid\"`                                              |\n| 501  | Missing required parameter         | `error: required option '--prompt <prompt>' not specified`                                                                |\n| 502  | Local file read error              | `Error: Image file/Video file not found: C:\\path\\to\\your\\file`                                                            |\n| 503  | API request failed (no balance)    | `ok: false, code: \"insufficient_balance\"`                                                                                |\n| 503  | API request failed (server error)  | `HTTP status code error (500 server crash)`                                                                              |\n| 504  | Asynchronous task execution failed | `=== Generation Failed ===` / `{Specific error reason returned by backend, for example \"Prompt violates safety policy\"}`  |\n\n> **AGENT CRITICAL INSTRUCTION**:\n> 1. If the execution result returns `code: \"insufficient_balance\"`, you MUST explicitly inform the user that their credits are insufficient and guide them to recharge: [https://dlazy.com/dashboard/organization/settings?tab=credits](https://dlazy.com/dashboard/organization/settings?tab=credits)\n> 2. If the execution result returns `code: \"unauthorized\"` or indicates missing API key, you MUST inform the user to get their API key from [https://dlazy.com/dashboard/organization/api-key](https://dlazy.com/dashboard/organization/api-key) and save it using `dlazy auth set <key>` and resume the task.\n\n---\n\n## 5、Prompt 模板\n\n**这份 prompt 应该在整个项目里固定不变**，否则不同批次的报告没法比较。\n\n```text\n你是电商投放前的图片质检员。审查这张 AI 生成的[品类]商拍图能否直接用于电商投放。\n全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。\n风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、\n文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；\n若建议投放，写「无需修正」。\n\n只输出报告，不要寒暄。\n```\n\n**可选的加强项**\n\n| 需求 | 追加到 prompt |\n| --- | --- |\n| 要和原商品图比对 | 多传一张原图，并写 `图1 是待检图，图2 是原始商品图，逐项比对商品保真度。` |\n| 要打分便于排序 | `在风险等级后追加一个 0-100 的可投放分数。` |\n| 要卡特定平台规则 | `额外检查以下平台规则：[规则清单]。` |\n| 要机器可读 | `以 JSON 输出，字段为 risk_level / items[] / recommendation / fixes[]。` |\n\n---\n\n## 6、执行流程\n\n1. **固定质检 prompt**（第五节模板），整个项目复用。\n2. **单张检测**：取 `result.data.texts[0]` 得到报告。\n3. **读第 3 项**：`建议投放` → 上架；`建议人工修图` → 转修图；`建议重跑` → 下一步。\n4. **取第 4 项的修正句**，追加到原生成 prompt 末尾，重跑。\n5. **再检测一次**——确认修正生效，别盲信一次重跑。\n6. **批量场景**：按第四节的比例抽检，`高风险` 自动进重跑队列。\n7. **人工终审**：模型有误报漏报，上架前仍需人眼扫一遍。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 报告输出英文 | 未强制语言 | prompt 里写明「全部用中文作答」 |\n| 拿不到结果 | 取错了字段 | 文本模型的结果在 `data.texts[0]`，不是 `urls` |\n| `--format text` 报错 | 全局选项位置错 | `--format` 要写在子命令**之前** |\n| 不同批次报告没法比 | 质检 prompt 每次都改 | 固定一份 prompt 全项目复用 |\n| 明显崩坏没被检出 | 模型漏报 | 提高抽检比例；上架前人工终审 |\n| 正常图被判高风险 | 模型误报 | 看第 2 项的证据描述再决定，不要只看等级 |\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\": \"detect-task\",\n  \"version\": \"1.0.16\",\n  \"publishedAt\": 1790732721565\n}\n\nFile v1.0.16:references/model-flags.md\n\n# `claude-sonnet-5` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy claude-sonnet-5` command to get results.\r\n\r\n```bash\r\ndlazy claude-sonnet-5 -h\r\n\r\nOptions:\r\n  --prompt <prompt>     Prompt\r\n  --images [images...]  Images [image: url or local path] (max 10)\r\n  --videos [videos...]  Videos [video: url or local path] (max 8)\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 (default:\r\n                        \"1800\")\r\n  --input <jsonOrFile>  Inline JSON or @path/to/file.json — merged under flag\r\n                        values (flags win)\r\n  --save <path>         Download the result asset to this local path (mkdir +\r\n                        retry handled for you). A destination path — NOT a\r\n                        response format; for stdout shape use --format\r\n  --batch <n>           Fan-out N parallel runs (cloud tools only) (default:\r\n                        \"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/platform-specs.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/platform-specs.md 同步生成，不要直接改这里。 -->\r\n# 平台图片规格（可机检子集）\r\n\r\n`scripts/check_listing.py` 内置的规则来源与口径。**平台规则会变，以各平台最新官方文档为准**；\r\n需要覆盖时写一份 JSON 用 `--rules` 传入，结构与下表字段一一对应。\r\n\r\n---\r\n\r\n## 字段含义\r\n\r\n| 字段 | 含义 |\r\n| --- | --- |\r\n| `pure_white_bg` | 是否要求纯白 RGB(255,255,255) 背景 |\r\n| `bg_tolerance` | 判定「纯白」允许的单通道偏差 |\r\n| `bg_coverage` | 边缘一圈需要有多大比例落在容差内 |\r\n| `min_long_side` / `recommend_long_side` / `max_long_side` | 最长边像素 |\r\n| `min_occupancy` | 商品包围盒面积 ÷ 画面面积 的下限 |\r\n| `allow_alpha` | 是否允许透明通道 |\r\n| `allow_border` | 是否允许描边 / 外框 |\r\n| `formats` / `max_bytes` / `aspect` | 允许格式、体积上限、允许比例 |\r\n\r\n---\r\n\r\n## 内置规则\r\n\r\n| 平台 | 纯白底 | 最长边（下限 / 建议） | 主体占比 | 比例 | 体积上限 |\r\n| --- | --- | --- | --- | --- | --- |\r\n| `amazon` | 是 | 1000 / 1600 | ≥ 85% | 不限 | 10 MB |\r\n| `tiktok-shop` | 否 | 800 / 1600 | ≥ 60% | 1:1 或 3:4 | 5 MB |\r\n| `temu` | 是 | 800 / 1350 | ≥ 70% | 1:1 | 3 MB |\r\n| `shopee` | 否 | 500 / 1024 | ≥ 55% | 1:1 | 2 MB |\r\n| `shopify` | 否 | 1024 / 2048 | 不限 | 不限 | 20 MB |\r\n| `taobao` | 是 | 800 / 1200 | ≥ 70% | 1:1 | 3 MB |\r\n\r\n---\r\n\r\n## 几个容易踩的点\r\n\r\n- **透明 PNG**：Amazon 会把透明像素转成黑色。永远压平成白底 JPEG 再传。\r\n- **「白底」不等于「看起来是白的」**：棚拍的浅灰墙（约 RGB 208）肉眼像白，机检直接判不合格。\r\n- **主体占比**：留白过多是最常见的驳回原因之一，比分辨率不够更常见。\r\n- **文字 / 水印 / 拼图**：像素层测不了，交给 `detect-task` 的视觉模型或人工。\r\n- **自动修复的边界**：`--fix` 能压白底、按占比重构画布、补分辨率、压体积；\r\n  它**不会**修图，也不会去水印——那是 `item-repair` 和 `remove-watermark` 的活。\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\nReviews AI-generated ecommerce images before publication and reports visual risks, eight itemized checks, and prompt corrections for reruns.\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\nEcommerce creators and marketing teams use the skill to screen AI-generated product images before publishing, identify defects, and draft corrections for a rerun or manual retouching.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Inspection images may be uploaded to third-party cloud model providers, including an unexpected provider selected automatically.\n\nMitigation: Use only images suitable for cloud processing and explicitly choose and review the provider before sending them.\n\nRisk: Bundled scripts can initiate generation and reruns beyond image inspection, potentially incurring charges or producing additional files.\n\nMitigation: Review the requested command and run a dry-run first when possible; require user approval before generation or repeated runs.\n\n## Reference(s):\n\n- [Provider CLI and data flow](references/provider-cli.md)\n- [Model flags](references/model-flags.md)\n- [Platform image specifications](references/platform-specs.md)\n\n## Skill Output:\n\n**Output Type(s):** [Analysis, Guidance, Shell commands]\n\n**Output Format:** [Markdown report with a risk level, eight checks, publishing recommendation, and prompt corrections]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Supports batch screening and optional rerun guidance.]\n\n## Skill Version(s):\n\n1.0.16 (source: release evidence and SKILL.md 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.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: 14 files, 38158 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1617b), references/platform-specs.md (2180b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/check_listing.py (16313b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), scripts/run_loop.mjs (9938b), skill-card.md (2270b), SKILL.md (14484b), _meta.json (131b)\n\nFile v1.0.15:SKILL.md\n\n---\nname: detect-task\nversion: 1.0.15\ndescription: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。\n---\n\n# detect-task — 投放前 AI 图真实性检测\n\nAI 生图上架前的**最后一道关**。判断这张图能不能直接投，崩在哪里，怎么修。\n\n和其他技能的区别：本技能**不生成图片，输出的是判断**。它的价值在于把「生成 → 检测 → 重跑」闭起来——检测报告里直接给出该追加到 prompt 的修正句。\n\n---\n\n## 生成效果示例\n\n| 输入：待检图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/detect-task/candidate.jpg\" width=\"280\"> |\n| `candidate.jpg` — 由 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 生成的军绿毛衣模特上身图，1024×1536 |\n\n实际执行的命令：\n\n```bash\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n  > docs/detect-task/example-report.md\n```\n\n**输出**：完整报告见 [`docs/detect-task/example-report.md`](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)，3 credits。摘要：\n\n- **风险等级**：低风险\n- **8 项判定**：7 项通过；`文字乱码` 命中（轻微）——左侧袖口的织标图案模糊不可辨\n- **投放建议**：建议人工修图（仅需局部处理袖口小标签）\n- **修正建议**：`clear and legible brand tag/logo embroidery on cuff, sharp fine detail, no blurry or garbled text`\n\n这条修正句可以直接追加到 flat-lay 的原 prompt 末尾重跑——这就是闭环。\n\n---\n\n## 1、能力边界\n\n| 输出 | 说明 |\n| --- | --- |\n| 风险等级 | `低风险` / `中风险` / `高风险` |\n| 风险项逐条判定 | 8 项，每项给出 `通过` / `命中` + 一句证据 |\n| 投放建议 | `建议投放` / `建议重跑` / `建议人工修图` |\n| 修正建议 | 可直接追加到生成 prompt 的英文修正句 |\n\n**8 项风险清单**\n\n| # | 风险项 | 看什么 |\n| --- | --- | --- |\n| 1 | 商品崩坏 | 款式、织法、印花、logo 位置是否失真 |\n| 2 | 人脸不自然 | 五官比例、皮肤质感、眼神 |\n| 3 | 手部异常 | 手指数量与形态 |\n| 4 | 肢体结构错误 | 肩线、四肢数量与朝向 |\n| 5 | 文字乱码 | 画面内任何文字 |\n| 6 | 光影矛盾 | 投影方向与光源是否一致 |\n| 7 | 边缘融合痕迹 | 抠图边、鬼影、糊块 |\n| 8 | 平台合规 | 是否含违规元素 |\n\n**不做**：不替代人工终审（模型判断有误报漏报）；不做法律与平台规则的最终裁定；不用于给明显违规的图背书。\n\n---\n\n## 2、报告要能直接驱动重跑\n\n检测的意义不是打分，而是**告诉生成环节要改什么**。所以报告的第 4 项必须是**可直接复制到 prompt 的英文句子**。\n\n典型映射：\n\n| 命中项 | 应追加到生成 prompt 的修正句 |\n| --- | --- |\n| 商品崩坏 | `Cross-check the garment against the reference: [关键特征] must match exactly.` |\n| 人脸不自然 | `Photorealistic human face: correct facial proportions, natural skin pores and subsurface scattering, natural gaze.` |\n| 手部异常 | `Hands anatomically correct — five distinct fingers per hand, natural knuckles, no fused or extra digits.` |\n| 肢体结构错误 | `Correct anatomy: symmetric shoulders, two arms and two legs, no extra or missing limbs, no impossible joint angles.` |\n| 文字乱码 | `No text anywhere in the image.` 或（需要文字时）`All text must be clear, correctly formed [语言] characters.` |\n| 光影矛盾 | `Single consistent light source from [方向]; all shadows must fall in the same direction.` |\n| 边缘融合痕迹 | `Blend all edges seamlessly; no cut-out halo, no ghosting, no blurred patches.` |\n| 平台合规 | 视具体问题调整构图或去除违规元素 |\n\n**闭环写法**：\n\n```\n生成 → detect-task → 命中项 → 取修正句 → 追加到原 prompt → 重跑 → 再检测\n```\n\n---\n\n## 3、批量抽检\n\n批量出图后不必全检（成本 3 credits/张，但人工看报告的时间是瓶颈）。建议：\n\n| 场景 | 抽检比例 |\n| --- | --- |\n| 新规范段的首批 | 100% |\n| 规范已验证的批次 | 10% ~ 20% 随机 |\n| 带人物的图 | 提高到 30%（手和脸最容易崩） |\n| 纯商品图无人物 | 5% 即可 |\n\n批量脚本见第五节 command examples。把 `高风险` 的 SKU 自动打回重跑队列。\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`claude-sonnet-5`**（具备图像理解能力的文本模型；本技能要的是**判断与结构化报告**而不是图片，需要能逐项审查画面并写出可执行的修正建议——单张约 3 credits）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task detect-task \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/detect-task-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy claude-sonnet-5 --prompt '...' --images ... --save output/detect-task.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[待检图]`（最多 10 张，可一次送多张同批图对比） | 单张检测最准；多张适合看整批一致性 |\n| `--prompt` | 固定的质检 prompt（见第五节模板） | **整个项目用同一份**，否则报告不可比 |\n| `--batch` | `1` | 检测不需要多样性 |\n| `--no-wait` | 批量抽检时开启 | 先提交后统一收结果 |\n\n**取结果**：文本模型的输出在 `result.data.texts[0]`（不是 `urls`）。\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images a.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n```\n\n> `dlazy --format text <tool>` 也可以把纯文本打到 stdout，注意 `--format` 是**全局**选项，必须写在子命令**之前**。\n\n### Command Examples\n\n```bash\n# basic call: 单张检测\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的商拍图能否直接投放，输出风险等级、8 项风险的逐条判定、投放建议，以及应追加到生成 prompt 的英文修正句。只输出报告。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n\n# complex call: 固定质检 prompt + 批量抽检 + 高风险自动打回\nQC='你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `claude-sonnet-5` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。'\n\nmkdir -p docs/detect-task/reports\n: > docs/detect-task/rerun-queue.txt\n\nfor f in docs/batch-image/out/*.jpg; do\n  SKU=$(basename \"$f\" .jpg)\n  dlazy claude-sonnet-5 --prompt \"$QC\" --images \"$f\" 2>/dev/null \\\n    | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n    > \"docs/detect-task/reports/${SKU}.md\"\n  if grep -q '高风险' \"docs/detect-task/reports/${SKU}.md\"; then\n    echo \"$SKU\" >> docs/detect-task/rerun-queue.txt\n  fi\ndone\n\necho \"需要重跑：$(wc -l < docs/detect-task/rerun-queue.txt) 个 SKU\"\n\n# 先估价不真跑\ndlazy claude-sonnet-5 --dry-run --prompt '...' --images a.jpg\n```\n\n### Error Handling\n\n| Code | Error Type                         | Example Message                                                                                                          |\n| ---- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| 401  | Unauthorized (No API Key)          | `ok: false, code: \"unauthorized\", message: \"API key is missing or invalid\"`                                              |\n| 501  | Missing required parameter         | `error: required option '--prompt <prompt>' not specified`                                                                |\n| 502  | Local file read error              | `Error: Image file/Video file not found: C:\\path\\to\\your\\file`                                                            |\n| 503  | API request failed (no balance)    | `ok: false, code: \"insufficient_balance\"`                                                                                |\n| 503  | API request failed (server error)  | `HTTP status code error (500 server crash)`                                                                              |\n| 504  | Asynchronous task execution failed | `=== Generation Failed ===` / `{Specific error reason returned by backend, for example \"Prompt violates safety policy\"}`  |\n\n> **AGENT CRITICAL INSTRUCTION**:\n> 1. If the execution result returns `code: \"insufficient_balance\"`, you MUST explicitly inform the user that their credits are insufficient and guide them to recharge: [https://dlazy.com/dashboard/organization/settings?tab=credits](https://dlazy.com/dashboard/organization/settings?tab=credits)\n> 2. If the execution result returns `code: \"unauthorized\"` or indicates missing API key, you MUST inform the user to get their API key from [https://dlazy.com/dashboard/organization/api-key](https://dlazy.com/dashboard/organization/api-key) and save it using `dlazy auth set <key>` and resume the task.\n\n---\n\n## 5、Prompt 模板\n\n**这份 prompt 应该在整个项目里固定不变**，否则不同批次的报告没法比较。\n\n```text\n你是电商投放前的图片质检员。审查这张 AI 生成的[品类]商拍图能否直接用于电商投放。\n全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。\n风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、\n文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；\n若建议投放，写「无需修正」。\n\n只输出报告，不要寒暄。\n```\n\n**可选的加强项**\n\n| 需求 | 追加到 prompt |\n| --- | --- |\n| 要和原商品图比对 | 多传一张原图，并写 `图1 是待检图，图2 是原始商品图，逐项比对商品保真度。` |\n| 要打分便于排序 | `在风险等级后追加一个 0-100 的可投放分数。` |\n| 要卡特定平台规则 | `额外检查以下平台规则：[规则清单]。` |\n| 要机器可读 | `以 JSON 输出，字段为 risk_level / items[] / recommendation / fixes[]。` |\n\n---\n\n## 6、执行流程\n\n1. **固定质检 prompt**（第五节模板），整个项目复用。\n2. **单张检测**：取 `result.data.texts[0]` 得到报告。\n3. **读第 3 项**：`建议投放` → 上架；`建议人工修图` → 转修图；`建议重跑` → 下一步。\n4. **取第 4 项的修正句**，追加到原生成 prompt 末尾，重跑。\n5. **再检测一次**——确认修正生效，别盲信一次重跑。\n6. **批量场景**：按第四节的比例抽检，`高风险` 自动进重跑队列。\n7. **人工终审**：模型有误报漏报，上架前仍需人眼扫一遍。\n\n---\n\n## 7、常见问题\n\n| 现象 | 原因 | 处理 |\n| --- | --- | --- |\n| 报告输出英文 | 未强制语言 | prompt 里写明「全部用中文作答」 |\n| 拿不到结果 | 取错了字段 | 文本模型的结果在 `data.texts[0]`，不是 `urls` |\n| `--format text` 报错 | 全局选项位置错 | `--format` 要写在子命令**之前** |\n| 不同批次报告没法比 | 质检 prompt 每次都改 | 固定一份 prompt 全项目复用 |\n| 明显崩坏没被检出 | 模型漏报 | 提高抽检比例；上架前人工终审 |\n| 正常图被判高风险 | 模型误报 | 看第 2 项的证据描述再决定，不要只看等级 |\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\": \"detect-task\",\n  \"version\": \"1.0.15\",\n  \"publishedAt\": 1790562928763\n}\n\nFile v1.0.15:references/model-flags.md\n\n# `claude-sonnet-5` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy claude-sonnet-5` command to get results.\r\n\r\n```bash\r\ndlazy claude-sonnet-5 -h\r\n\r\nOptions:\r\n  --prompt <prompt>     Prompt\r\n  --images [images...]  Images [image: url or local path] (max 10)\r\n  --videos [videos...]  Videos [video: url or local path] (max 8)\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 (default:\r\n                        \"1800\")\r\n  --input <jsonOrFile>  Inline JSON or @path/to/file.json — merged under flag\r\n                        values (flags win)\r\n  --save <path>         Download the result asset to this local path (mkdir +\r\n                        retry handled for you). A destination path — NOT a\r\n                        response format; for stdout shape use --format\r\n  --batch <n>           Fan-out N parallel runs (cloud tools only) (default:\r\n                        \"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/platform-specs.md\n\n<!-- 由 scripts/build-skills.mjs 从 shared/references/platform-specs.md 同步生成，不要直接改这里。 -->\r\n# 平台图片规格（可机检子集）\r\n\r\n`scripts/check_listing.py` 内置的规则来源与口径。**平台规则会变，以各平台最新官方文档为准**；\r\n需要覆盖时写一份 JSON 用 `--rules` 传入，结构与下表字段一一对应。\r\n\r\n---\r\n\r\n## 字段含义\r\n\r\n| 字段 | 含义 |\r\n| --- | --- |\r\n| `pure_white_bg` | 是否要求纯白 RGB(255,255,255) 背景 |\r\n| `bg_tolerance` | 判定「纯白」允许的单通道偏差 |\r\n| `bg_coverage` | 边缘一圈需要有多大比例落在容差内 |\r\n| `min_long_side` / `recommend_long_side` / `max_long_side` | 最长边像素 |\r\n| `min_occupancy` | 商品包围盒面积 ÷ 画面面积 的下限 |\r\n| `allow_alpha` | 是否允许透明通道 |\r\n| `allow_border` | 是否允许描边 / 外框 |\r\n| `formats` / `max_bytes` / `aspect` | 允许格式、体积上限、允许比例 |\r\n\r\n---\r\n\r\n## 内置规则\r\n\r\n| 平台 | 纯白底 | 最长边（下限 / 建议） | 主体占比 | 比例 | 体积上限 |\r\n| --- | --- | --- | --- | --- | --- |\r\n| `amazon` | 是 | 1000 / 1600 | ≥ 85% | 不限 | 10 MB |\r\n| `tiktok-shop` | 否 | 800 / 1600 | ≥ 60% | 1:1 或 3:4 | 5 MB |\r\n| `temu` | 是 | 800 / 1350 | ≥ 70% | 1:1 | 3 MB |\r\n| `shopee` | 否 | 500 / 1024 | ≥ 55% | 1:1 | 2 MB |\r\n| `shopify` | 否 | 1024 / 2048 | 不限 | 不限 | 20 MB |\r\n| `taobao` | 是 | 800 / 1200 | ≥ 70% | 1:1 | 3 MB |\r\n\r\n---\r\n\r\n## 几个容易踩的点\r\n\r\n- **透明 PNG**：Amazon 会把透明像素转成黑色。永远压平成白底 JPEG 再传。\r\n- **「白底」不等于「看起来是白的」**：棚拍的浅灰墙（约 RGB 208）肉眼像白，机检直接判不合格。\r\n- **主体占比**：留白过多是最常见的驳回原因之一，比分辨率不够更常见。\r\n- **文字 / 水印 / 拼图**：像素层测不了，交给 `detect-task` 的视觉模型或人工。\r\n- **自动修复的边界**：`--fix` 能压白底、按占比重构画布、补分辨率、压体积；\r\n  它**不会**修图，也不会去水印——那是 `item-repair` 和 `remove-watermark` 的活。\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\nReviews AI-generated e-commerce product images for visual defects and potential listing issues, then suggests corrections before publication.\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\nE-commerce teams review candidate AI-generated product images before listing, using an eight-point risk report and suggested prompt fixes to decide whether to publish, edit, or regenerate them.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Candidate product images are sent to cloud model providers for review.\n\nMitigation: Submit images only when cloud processing is acceptable for the content.\n\nRisk: The bundled multi-provider wrapper may route inspection images to generation or editing services rather than an analysis model.\n\nMitigation: Prefer the direct dLazy claude-sonnet-5 inspection command; constrain any alternative provider to image analysis.\n\nRisk: Image inspection can miss defects or incorrectly approve content for a platform.\n\nMitigation: Treat the report as advisory and require human review and current platform-rule checks before publication.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/dlazyai/skills/detect-task)\n- [Example inspection report](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)\n- [Model flags](references/model-flags.md)\n- [Provider CLI reference](references/provider-cli.md)\n- [Platform image specifications](references/platform-specs.md)\n\n## Skill Output:\n\n**Output Type(s):** [Analysis, Guidance]\n\n**Output Format:** [Markdown report with an eight-item assessment and prompt corrections]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Risk level, listing recommendation, and up to three English correction sentences; optional JSON output.]\n\n## Skill Version(s):\n\n1.0.15 (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.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: 14 files, 38227 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1617b), references/platform-specs.md (2180b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/check_listing.py (16313b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), scripts/run_loop.mjs (9938b), skill-card.md (2419b), SKILL.md (14484b), _meta.json (131b)\n\nFile v1.0.14:SKILL.md\n\n---\nname: detect-task\nversion: 1.0.14\ndescription: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。\n---\n\n# detect-task — 投放前 AI 图真实性检测\n\nAI 生图上架前的**最后一道关**。判断这张图能不能直接投，崩在哪里，怎么修。\n\n和其他技能的区别：本技能**不生成图片，输出的是判断**。它的价值在于把「生成 → 检测 → 重跑」闭起来——检测报告里直接给出该追加到 prompt 的修正句。\n\n---\n\n## 生成效果示例\n\n| 输入：待检图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/detect-task/candidate.jpg\" width=\"280\"> |\n| `candidate.jpg` — 由 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 生成的军绿毛衣模特上身图，1024×1536 |\n\n实际执行的命令：\n\n```bash\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n  > docs/detect-task/example-report.md\n```\n\n**输出**：完整报告见 [`docs/detect-task/example-report.md`](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)，3 credits。摘要：\n\n- **风险等级**：低风险\n- **8 项判定**：7 项通过；`文字乱码` 命中（轻微）——左侧袖口的织标图案模糊不可辨\n- **投放建议**：建议人工修图（仅需局部处理袖口小标签）\n- **修正建议**：`clear and legible brand tag/logo embroidery on cuff, sharp fine detail, no blurry or garbled text`\n\n这条修正句可以直接追加到 flat-lay 的原 prompt 末尾重跑——这就是闭环。\n\n---\n\n## 1、能力边界\n\n| 输出 | 说明 |\n| --- | --- |\n| 风险等级 | `低风险` / `中风险` / `高风险` |\n| 风险项逐条判定 | 8 项，每项给出 `通过` / `命中` + 一句证据 |\n| 投放建议 | `建议投放` / `建议重跑` / `建议人工修图` |\n| 修正建议 | 可直接追加到生成 prompt 的英文修正句 |\n\n**8 项风险清单**\n\n| # | 风险项 | 看什么 |\n| --- | --- | --- |\n| 1 | 商品崩坏 | 款式、织法、印花、logo 位置是否失真 |\n| 2 | 人脸不自然 | 五官比例、皮肤质感、眼神 |\n| 3 | 手部异常 | 手指数量与形态 |\n| 4 | 肢体结构错误 | 肩线、四肢数量与朝向 |\n| 5 | 文字乱码 | 画面内任何文字 |\n| 6 | 光影矛盾 | 投影方向与光源是否一致 |\n| 7 | 边缘融合痕迹 | 抠图边、鬼影、糊块 |\n| 8 | 平台合规 | 是否含违规元素 |\n\n**不做**：不替代人工终审（模型判断有误报漏报）；不做法律与平台规则的最终裁定；不用于给明显违规的图背书。\n\n---\n\n## 2、报告要能直接驱动重跑\n\n检测的意义不是打分，而是**告诉生成环节要改什么**。所以报告的第 4 项必须是**可直接复制到 prompt 的英文句子**。\n\n典型映射：\n\n| 命中项 | 应追加到生成 prompt 的修正句 |\n| --- | --- |\n| 商品崩坏 | `Cross-check the garment against the reference: [关键特征] must match exactly.` |\n| 人脸不自然 | `Photorealistic human face: correct facial proportions, natural skin pores and subsurface scattering, natural gaze.` |\n| 手部异常 | `Hands anatomically correct — five distinct fingers per hand, natural knuckles, no fused or extra digits.` |\n| 肢体结构错误 | `Correct anatomy: symmetric shoulders, two arms and two legs, no extra or missing limbs, no impossible joint angles.` |\n| 文字乱码 | `No text anywhere in the image.` 或（需要文字时）`All text must be clear, correctly formed [语言] characters.` |\n| 光影矛盾 | `Single consistent light source from [方向]; all shadows must fall in the same direction.` |\n| 边缘融合痕迹 | `Blend all edges seamlessly; no cut-out halo, no ghosting, no blurred patches.` |\n| 平台合规 | 视具体问题调整构图或去除违规元素 |\n\n**闭环写法**：\n\n```\n生成 → detect-task → 命中项 → 取修正句 → 追加到原 prompt → 重跑 → 再检测\n```\n\n---\n\n## 3、批量抽检\n\n批量出图后不必全检（成本 3 credits/张，但人工看报告的时间是瓶颈）。建议：\n\n| 场景 | 抽检比例 |\n| --- | --- |\n| 新规范段的首批 | 100% |\n| 规范已验证的批次 | 10% ~ 20% 随机 |\n| 带人物的图 | 提高到 30%（手和脸最容易崩） |\n| 纯商品图无人物 | 5% 即可 |\n\n批量脚本见第五节 command examples。把 `高风险` 的 SKU 自动打回重跑队列。\n\n---\n\n## 4、工具调用\n\n本技能使用 dLazy 的 **`claude-sonnet-5`**（具备图像理解能力的文本模型；本技能要的是**判断与结构化报告**而不是图片，需要能逐项审查画面并写出可执行的修正建议——单张约 3 credits）。\n\n### 调用方式\n\n两种等价写法，选一种。统一入口会自动选后端、失败重试、建目录落盘、估算成本：\n\n```bash\n# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task detect-task \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/detect-task-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy claude-sonnet-5 --prompt '...' --images ... --save output/detect-task.jpg\n```\n\n**参数约定（本技能固定用法）**\n\n| 参数 | 取值 | 理由 |\n| --- | --- | --- |\n| `--images` | `[待检图]`（最多 10 张，可一次送多张同批图对比） | 单张检测最准；多张适合看整批一致性 |\n| `--prompt` | 固定的质检 prompt（见第五节模板） | **整个项目用同一份**，否则报告不可比 |\n| `--batch` | `1` | 检测不需要多样性 |\n| `--no-wait` | 批量抽检时开启 | 先提交后统一收结果 |\n\n**取结果**：文本模型的输出在 `result.data.texts[0]`（不是 `urls`）。\n\n```bash\ndlazy claude-sonnet-5 --prompt '...' --images a.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"\n\nArchive v1.0.13: 14 files, 38318 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1617b), references/platform-specs.md (2180b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/check_listing.py (16313b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), scripts/run_loop.mjs (9938b), skill-card.md (2584b), SKILL.md (14484b), _meta.json (131b)\n\nArchive v1.0.12: 14 files, 38292 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1617b), references/platform-specs.md (2180b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/check_listing.py (16313b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), scripts/run_loop.mjs (9938b), skill-card.md (2610b), SKILL.md (14484b), _meta.json (131b)\n\nArchive v1.0.11: 14 files, 38362 bytes\n\nFiles: examples/brand.yaml (1655b), references/model-flags.md (1617b), references/platform-specs.md (2180b), references/provider-cli.md (4802b), scripts/brand.mjs (4516b), scripts/check_listing.py (16313b), scripts/gen.mjs (9733b), scripts/lib/miniyaml.mjs (2901b), scripts/lib/providers.mjs (12510b), scripts/lib/tasks.json (3234b), scripts/run_loop.mjs (9938b), skill-card.md (2746b), SKILL.md (14484b), _meta.json (131b)","readmeExcerpt":"Skill: 投前 AI 图检测 Detect Task Owner: dlazyai Summary: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。 Tags: latest:1.0.20 Version history: v1.0.20 | 2026-10-10T01:49:17.775Z | user 例行版本更新 2026-10-10 v1.0.19 | 2026-10-08T01:41:55.782Z | user 例行版本更新 2026-10-08 v1.0.18 | 2026-10-04T01:42:10.743Z | user 例行版本更新 2026-10-04 v1.0.17 | 2026-10-02T05:15:16.468Z | user","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"dlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n  > docs/detect-task/example-report.md"},{"language":"text","snippet":"生成 → detect-task → 命中项 → 取修正句 → 追加到原 prompt → 重跑 → 再检测"},{"language":"bash","snippet":"# A. 统一入口（推荐）：可切任意后端，加 --dry-run 不计费空跑\nnode scripts/gen.mjs --task detect-task \\\n  --prompt '<见下方 Prompt 模板>' \\\n  --images <按下表顺序> \\\n  --save output/detect-task-<sku>.jpg\n\n# B. 直接用 dLazy CLI（不想引入 Node 依赖时，效果等价）\ndlazy claude-sonnet-5 --prompt '...' --images ... --save output/detect-task.jpg"},{"language":"bash","snippet":"dlazy claude-sonnet-5 --prompt '...' --images a.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'"},{"language":"bash","snippet":"# basic call: 单张检测\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的商拍图能否直接投放，输出风险等级、8 项风险的逐条判定、投放建议，以及应追加到生成 prompt 的英文修正句。只输出报告。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])'\n\n# complex call: 固定质检 prompt + 批量抽检 + 高风险自动打回\nQC='你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n### 延伸阅读\n\n| 要查什么 | 去哪 |\n| --- | --- |\n| 认证、多后端配置、输出结构、错误码 | [`references/provider-cli.md`](references/provider-cli.md) |\n| `claude-sonnet-5` 的全部可用参数 | [`references/model-flags.md`](references/model-flags.md) |\n| 统一入口的全部选项 | `node scripts/gen.mjs --help` |\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。'\n\nmkdir -p docs/detect-task/reports\n: > docs/detect-task/rerun-queue.txt\n\nfor f in docs/batch-image/out/*.jpg; do\n  SKU=$(basename \"$f\" .jpg)\n  dlazy claude-sonnet-5 --prompt \"$QC\" --images \"$f\" 2>/dev/null \\\n    | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n    > \"docs/detect-task/reports/${SKU}.md\"\n  if grep -q '高风险' \"docs/detect-task/reports/${SKU}.md\"; then\n    echo \"$SKU\" >> docs/detect-task/rerun-queue.txt\n  fi\ndone\n\necho \"需要重跑：$(wc -l < docs/detect-task/rerun-queue.txt) 个 SKU\"\n\n# 先估价不真跑\ndlazy claude-sonnet-5 --dry-run --prompt '...' --images a.jpg"},{"language":"text","snippet":"你是电商投放前的图片质检员。审查这张 AI 生成的[品类]商拍图能否直接用于电商投放。\n全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。\n风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、\n文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；\n若建议投放，写「无需修正」。\n\n只输出报告，不要寒暄。"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: detect-task\nversion: 1.0.20\ndescription: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。\n---\n\n# detect-task — 投放前 AI 图真实性检测\n\nAI 生图上架前的**最后一道关**。判断这张图能不能直接投，崩在哪里，怎么修。\n\n和其他技能的区别：本技能**不生成图片，输出的是判断**。它的价值在于把「生成 → 检测 → 重跑」闭起来——检测报告里直接给出该追加到 prompt 的修正句。\n\n---\n\n## 生成效果示例\n\n| 输入：待检图 |\n| --- |\n| <img src=\"https://raw.githubusercontent.com/dlazy-ai/ecommerce-skills/main/docs/detect-task/candidate.jpg\" width=\"280\"> |\n| `candidate.jpg` — 由 [flat-lay](https://github.com/dlazy-ai/ecommerce-skills/blob/main/skills/flat-lay/skill.md) 生成的军绿毛衣模特上身图，1024×1536 |\n\n实际执行的命令：\n\n```bash\ndlazy claude-sonnet-5 \\\n  --prompt '你是电商投放前的图片质检员。审查这张 AI 生成的服装商拍图能否直接用于电商投放。全部用中文作答（第 4 项的 prompt 修正句除外）。严格按以下结构输出：\n## 1. 风险等级\n低风险 / 中风险 / 高风险（三选一）\n## 2. 风险项逐条判定\n用表格输出，三列：风险项 / 结论（通过 或 命中）/ 证据。风险项固定为这 8 条：商品崩坏、人脸不自然、手部异常、肢体结构错误、文字乱码、光影矛盾、边缘融合痕迹、平台合规。\n## 3. 投放建议\n建议投放 / 建议重跑 / 建议人工修图\n## 4. 修正建议\n若建议重跑或人工修图，给出应追加到生成 prompt 的英文修正句 1-3 条；若建议投放，写「无需修正」。\n只输出报告，不要寒暄。' \\\n  --images docs/detect-task/candidate.jpg \\\n  | python3 -c 'import sys,json;print(json.load(sys.stdin)[\"result\"][\"data\"][\"texts\"][0])' \\\n  > docs/detect-task/example-report.md\n```\n\n**输出**：完整报告见 [`docs/detect-task/example-report.md`](https://github.com/dlazy-ai/ecommerce-skills/blob/main/docs/detect-task/example-report.md)，3 credits。摘要：\n\n- **风险等级**：低风险\n- **8 项判定**：7 项通过；`文字乱码` 命中（轻微）——左侧袖口的织标图案模糊不可辨\n- **投放建议**：建议人工修图（仅需局部处理袖口小标签）\n- **修正建议**：`clear and legible brand tag/logo embroidery on cuff, sharp fine detail, no blurry or garbled text`\n\n这条修正句可以直接追加到 flat-lay 的原 prompt 末尾重跑——这就是闭环。\n\n---\n\n## 1、能力边界\n\n| 输出 | 说明 |\n| --- | --- |\n| 风险等级 | `低风险` / `中风险` / `高风险` |\n| 风险项逐条判定 | 8 项，每项给出 `通过` / `命中` + 一句证据 |\n| 投放建议 | `建议投放` / `建议重跑` / `建议人工修图` |\n| 修正建议 | 可直接追加到生成 prompt 的英文修正句 |\n\n**8 项风险清单**\n\n| # | 风险项 | 看什么 |\n| --- | --- | --- |\n| 1 | 商品崩坏 | 款式、织法、印花、logo 位置是否失真 |\n| 2 | 人脸不自然 | 五官比例、皮肤质感、眼神 |\n| 3 | 手部异常 | 手指数量与形态 |\n| 4 | 肢体结构错误 | 肩线、四肢数量与朝向 |\n| 5 | 文字乱码 | 画面内任何文字 |\n| 6 | 光影矛盾 | 投影方向与光源是否一致 |\n| 7 | 边缘融合痕迹 | 抠图边、鬼影、糊块 |\n| 8 | 平台合规 | 是否含违规元素 |\n\n**不做**：不替代人工终审（模型判断有误报漏报）；不做法律与平台规则的最终裁定；不用于给明显违规的图背书。\n\n---\n\n## 2、报告要能直接驱动重跑\n\n检测的意义不是打分，而是**告诉生成环节要改什么**。所以报告的第 4 项必须是**可直接复制到 prompt 的英文句子**。\n\n典型映射：\n\n| 命中项 | 应追加到生成 prompt 的修正句 |\n| --- | --- |\n| 商品崩坏 | `Cross-check the garment against the reference: [关键特征] must match exactly.` |\n| 人脸不自然 | `Photorealistic human face: correct facial proportions, natural skin pores and subsurface scattering, natural gaze.` |\n| 手部异常 | `Hands anatomically correct — five distinct fingers per hand, natural knuckles, no fused or extra digits.` |\n| 肢体结构错误 | `Correct anatomy: symmetric shoulders, two arms and two legs, no extra or missing limbs, no impossible joint angles.` |\n| 文字乱码 | `No text anywhere in the image.` 或（需要文字时）`All text must be clear, correctly formed [语言] characters.` |\n| 光影矛盾 | `Single consistent light source from [方向]; all shadows must fall in the same direction.` |\n| 边缘融合痕迹 | `Blend all edges seamlessly; no cut-out halo, no ghosting, no blur"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7c5wgeajfcfvdfb5ceemvdb984cjpd\",\n  \"slug\": \"detect-task\",\n  \"version\": \"1.0.20\",\n  \"publishedAt\": 1791596957775\n}"},{"path":"references/model-flags.md","content":"# `claude-sonnet-5` 参数清单\r\n\r\n本技能默认用的模型的完整参数。日常只需要「参数约定」里那几个，\r\n这份清单在需要用到非常规参数时再看。\r\n\r\n**CRITICAL INSTRUCTION FOR AGENT**:\r\nRun the `dlazy claude-sonnet-5` command to get results.\r\n\r\n```bash\r\ndlazy claude-sonnet-5 -h\r\n\r\nOptions:\r\n  --prompt <prompt>     Prompt\r\n  --images [images...]  Images [image: url or local path] (max 10)\r\n  --videos [videos...]  Videos [video: url or local path] (max 8)\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 (default:\r\n                        \"1800\")\r\n  --input <jsonOrFile>  Inline JSON or @path/to/file.json — merged under flag\r\n                        values (flags win)\r\n  --save <path>         Download the result asset to this local path (mkdir +\r\n                        retry handled for you). A destination path — NOT a\r\n                        response format; for stdout shape use --format\r\n  --batch <n>           Fan-out N parallel runs (cloud tools only) (default:\r\n                        \"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/platform-specs.md","content":"<!-- 由 scripts/build-skills.mjs 从 shared/references/platform-specs.md 同步生成，不要直接改这里。 -->\r\n# 平台图片规格（可机检子集）\r\n\r\n`scripts/check_listing.py` 内置的规则来源与口径。**平台规则会变，以各平台最新官方文档为准**；\r\n需要覆盖时写一份 JSON 用 `--rules` 传入，结构与下表字段一一对应。\r\n\r\n---\r\n\r\n## 字段含义\r\n\r\n| 字段 | 含义 |\r\n| --- | --- |\r\n| `pure_white_bg` | 是否要求纯白 RGB(255,255,255) 背景 |\r\n| `bg_tolerance` | 判定「纯白」允许的单通道偏差 |\r\n| `bg_coverage` | 边缘一圈需要有多大比例落在容差内 |\r\n| `min_long_side` / `recommend_long_side` / `max_long_side` | 最长边像素 |\r\n| `min_occupancy` | 商品包围盒面积 ÷ 画面面积 的下限 |\r\n| `allow_alpha` | 是否允许透明通道 |\r\n| `allow_border` | 是否允许描边 / 外框 |\r\n| `formats` / `max_bytes` / `aspect` | 允许格式、体积上限、允许比例 |\r\n\r\n---\r\n\r\n## 内置规则\r\n\r\n| 平台 | 纯白底 | 最长边（下限 / 建议） | 主体占比 | 比例 | 体积上限 |\r\n| --- | --- | --- | --- | --- | --- |\r\n| `amazon` | 是 | 1000 / 1600 | ≥ 85% | 不限 | 10 MB |\r\n| `tiktok-shop` | 否 | 800 / 1600 | ≥ 60% | 1:1 或 3:4 | 5 MB |\r\n| `temu` | 是 | 800 / 1350 | ≥ 70% | 1:1 | 3 MB |\r\n| `shopee` | 否 | 500 / 1024 | ≥ 55% | 1:1 | 2 MB |\r\n| `shopify` | 否 | 1024 / 2048 | 不限 | 不限 | 20 MB |\r\n| `taobao` | 是 | 800 / 1200 | ≥ 70% | 1:1 | 3 MB |\r\n\r\n---\r\n\r\n## 几个容易踩的点\r\n\r\n- **透明 PNG**：Amazon 会把透明像素转成黑色。永远压平成白底 JPEG 再传。\r\n- **「白底」不等于「看起来是白的」**：棚拍的浅灰墙（约 RGB 208）肉眼像白，机检直接判不合格。\r\n- **主体占比**：留白过多是最常见的驳回原因之一，比分辨率不够更常见。\r\n- **文字 / 水印 / 拼图**：像素层测不了，交给 `detect-task` 的视觉模型或人工。\r\n- **自动修复的边界**：`--fix` 能压白底、按占比重构画布、补分辨率、压体积；\r\n  它**不会**修图，也不会去水印——那是 `item-repair` 和 `remove-watermark` 的活。"},{"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"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。 Skill: 投前 AI 图检测 Detect Task Owner: dlazyai Summary: 投前 AI 图真实性质检。待检图 → 风险等级 + 8 项逐条判定 + 可直接追加到 prompt 的修正句，可自动重跑直到达标。当用户说「投前检测」「图片质检」「检查有没有崩」「上架前把关」「这图能不能用」时使用。 Tags: latest:1.0.20 Version history: v1.0.20 | 2026-10-10T01:49:17.775Z | user 例行版本更新 2026-10-10 v1.0.19 | 2026-10-08T01:41:55.782Z | user 例行版本更新 2026-10-08 v1.0.18 | 2026-10-04T01:42:10.743Z | user 例行版本更新 2026-10-04 v1.0.17 | 2026-10-02T05:15:16.468Z | user","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":890,"uniquenessScore":62,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T18:30:40.194Z","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-10T18:30:40.194Z","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-10T21:40:52.796Z","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"}]}}}