[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7D1D7BCNBD4F0VASB9DA7WS":3,"skill-same:01M7D1D7BCNBD4F0VASB9DA7WS":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":13,"repositoryHtmlUrl":42,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":45,"install":46,"resources":59},"01M7D1D7BCNBD4F0VASB9DA7WS","image-poster",null,"Single-image generation skill for posters, key art, and editorial\nillustrations. Defaults to gpt-image-2 but is provider-agnostic — the\nsame workflow drives Flux, Imagen, or Midjourney via the active\nupstream tooling. Output is one or more PNG\u002FJPEG files saved to the\nproject folder.","qelvora1\u002Fopen-design","qelvora1","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F294549645?v=4","01M7CYQMFVAA6E5YHKCNNCBXJS","01M7CYQMGFRBPABV2BSD9VB71Z",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Fplugins\u002F_official\u002Fexamples\u002Fimage-poster\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: image-poster\ndescription: |\n  Single-image generation skill for posters, key art, and editorial\n  illustrations. Defaults to gpt-image-2 but is provider-agnostic — the\n  same workflow drives Flux, Imagen, or Midjourney via the active\n  upstream tooling. Output is one or more PNG\u002FJPEG files saved to the\n  project folder.\ntriggers:\n  - \"poster\"\n  - \"key art\"\n  - \"illustration\"\n  - \"image\"\n  - \"cover art\"\n  - \"海报\"\n  - \"插画\"\nod:\n  mode: image\n  surface: image\n  scenario: design\n  preview:\n    type: html\n    entry: example.html\n  design_system:\n    requires: false\n  example_prompt: |\n    Editorial poster for an indie film festival — one bold abstract\n    silhouette over a warm, slightly grainy paper background; hand-set\n    sans serif title at the top, festival dates and venue at the bottom\n    in monospace. Muted ochre + ink palette.\n---\n\n# Image Poster Skill\n\nProduce **one** finished image asset per turn unless the user asks for\nvariations. Image generation rewards a tight, structured prompt — your\njob is to assemble that prompt from the user's brief, then dispatch.\n\n## Resource map\n\n```\nimage-poster\u002F\n├── SKILL.md         ← you're reading this\n└── example.html     ← what the resulting card looks like in Examples\n```\n\n## Workflow\n\n### Step 0 — Read the project metadata\n\nThe active project carries `imageModel`, `imageAspect`, and (optional)\n`imageStyle` notes. Use them as the upstream model + canvas + style\nanchor. When a value is not provided, infer a safe default from the brief and\nmedia contract. Ask only when the choice would materially change the requested\nresult and no safe default can be inferred.\n\n### Step 1 — Compose the prompt\n\nPlan in this exact order before calling any tool:\n\n1. **Subject + composition** — what is in the frame, where, at what\n   scale; eye-line and crop.\n2. **Lighting + mood** — natural \u002F studio \u002F moody; warm \u002F cool; key\n   plus rim plus fill; time of day if outdoor.\n3. **Palette + textures** — hex anchors when the user gave a brand\n   palette; otherwise a 3-word mood tag (e.g. \"muted ochre + ink\").\n4. **Camera \u002F lens** — only if the user wants photographic realism\n   (\"85mm portrait, shallow DOF\") or a specific film stock.\n5. **What to avoid** — common AI-slop patterns (\"no extra fingers, no\n   warped text, no logo placeholders\").\n\n### Step 2 — Dispatch via the media contract\n\nUse the unified dispatcher — do **not** call upstream provider APIs by\nhand. Run from your shell tool:\n\n```bash\n\"$OD_NODE_BIN\" \"$OD_BIN\" media generate \\\n  --project \"$OD_PROJECT_ID\" \\\n  --surface image \\\n  --model \"\u003CimageModel from metadata>\" \\\n  --aspect \"\u003CimageAspect from metadata>\" \\\n  --output \"\u003Cshort-descriptive-name>.png\" \\\n  --prompt \"\u003Cthe full assembled prompt from Step 1>\"\n```\n\nThe command prints one line of JSON: `{\"file\": {\"name\": \"...\", ...}}`.\nThe daemon writes the bytes into the project folder; the FileViewer\npicks it up automatically.\n\n### Step 3 — Hand off\n\nReply with a one-paragraph summary of the prompt you used and the\nfilename returned by the dispatcher (e.g. *I generated `hero-poster.png`\nwith `gpt-image-2` at 1:1.*). Do **not** emit an `\u003Cartifact>` tag.\n\n## Hard rules\n\n- One image per turn unless asked for variations.\n- Honor `imageAspect` exactly — the upstream cost is the same; matching\n  the aspect avoids a re-render.\n- No filler typography in the image itself unless the user asked for\n  in-frame text. Real copy beats lorem.\n- Save every render — never describe an image without producing the\n  file. The user expects something to open in the file viewer.\n","# Image Poster Skill\n\nProduce **one** finished image asset per turn unless the user asks for\nvariations. Image generation rewards a tight, structured prompt — your\njob is to assemble that prompt from the user's brief, then dispatch.\n\n## Resource map\n\n```\nimage-poster\u002F\n├── SKILL.md         ← you're reading this\n└── example.html     ← what the resulting card looks like in Examples\n```\n\n## Workflow\n\n### Step 0 — Read the project metadata\n\nThe active project carries `imageModel`, `imageAspect`, and (optional)\n`imageStyle` notes. Use them as the upstream model + canvas + style\nanchor. When a value is not provided, infer a safe default from the brief and\nmedia contract. Ask only when the choice would materially change the requested\nresult and no safe default can be inferred.\n\n### Step 1 — Compose the prompt\n\nPlan in this exact order before calling any tool:\n\n1. **Subject + composition** — what is in the frame, where, at what\n   scale; eye-line and crop.\n2. **Lighting + mood** — natural \u002F studio \u002F moody; warm \u002F cool; key\n   plus rim plus fill; time of day if outdoor.\n3. **Palette + textures** — hex anchors when the user gave a brand\n   palette; otherwise a 3-word mood tag (e.g. \"muted ochre + ink\").\n4. **Camera \u002F lens** — only if the user wants photographic realism\n   (\"85mm portrait, shallow DOF\") or a specific film stock.\n5. **What to avoid** — common AI-slop patterns (\"no extra fingers, no\n   warped text, no logo placeholders\").\n\n### Step 2 — Dispatch via the media contract\n\nUse the unified dispatcher — do **not** call upstream provider APIs by\nhand. Run from your shell tool:\n\n```bash\n\"$OD_NODE_BIN\" \"$OD_BIN\" media generate \\\n  --project \"$OD_PROJECT_ID\" \\\n  --surface image \\\n  --model \"\u003CimageModel from metadata>\" \\\n  --aspect \"\u003CimageAspect from metadata>\" \\\n  --output \"\u003Cshort-descriptive-name>.png\" \\\n  --prompt \"\u003Cthe full assembled prompt from Step 1>\"\n```\n\nThe command prints one line of JSON: `{\"file\": {\"name\": \"...\", ...}}`.\nThe daemon writes the bytes into the project folder; the FileViewer\npicks it up automatically.\n\n### Step 3 — Hand off\n\nReply with a one-paragraph summary of the prompt you used and the\nfilename returned by the dispatcher (e.g. *I generated `hero-poster.png`\nwith `gpt-image-2` at 1:1.*). Do **not** emit an `\u003Cartifact>` tag.\n\n## Hard rules\n\n- One image per turn unless asked for variations.\n- Honor `imageAspect` exactly — the upstream cost is the same; matching\n  the aspect avoids a re-render.\n- No filler typography in the image itself unless the user asked for\n  in-frame text. Real copy beats lorem.\n- Save every render — never describe an image without producing the\n  file. The user expects something to open in the file viewer.\n",{"od":23,"name":5,"triggers":31,"description":38},{"mode":24,"preview":25,"surface":24,"scenario":28,"design_system":29,"example_prompt":30},"image",{"type":26,"entry":27},"html","example.html","design",{"requires":19},"Editorial poster for an indie film festival — one bold abstract\nsilhouette over a warm, slightly grainy paper background; hand-set\nsans serif title at the top, festival dates and venue at the bottom\nin monospace. Muted ochre + ink palette.",[32,33,34,24,35,36,37],"poster","key art","illustration","cover art","海报","插画","Single-image generation skill for posters, key art, and editorial\nillustrations. Defaults to gpt-image-2 but is provider-agnostic — the\nsame workflow drives Flux, Imagen, or Midjourney via the active\nupstream tooling. Output is one or more PNG\u002FJPEG files saved to the\nproject folder.\n","main","29240bc3ff7b5db56f8a41965213220446fcb96d","plugins\u002F_official\u002Fexamples\u002Fimage-poster","https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design","https:\u002F\u002Fopen-design.ai","https:\u002F\u002Fgithub.com\u002Fqelvora1","2026-10-01 22:47:24",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add qelvora1\u002Fopen-design --skill image-poster",{"tool":52,"command":53},"bunx","bunx skills add qelvora1\u002Fopen-design --skill image-poster",{"tool":55,"command":56},"pnpm","pnpm dlx skills add qelvora1\u002Fopen-design --skill image-poster","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Fplugins\u002F_official\u002Fexamples\u002Fimage-poster\u002FSKILL.md",true,[60,65],{"path":27,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"REFERENCE","参考文档",3651,"https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Fplugins\u002F_official\u002Fexamples\u002Fimage-poster\u002Fexample.html",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"open-design.json",8142,"https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Fplugins\u002F_official\u002Fexamples\u002Fimage-poster\u002Fopen-design.json",[70,77,84,91,98,107],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":18},"01M7D3A2Y3ZTSPJJSCEHTWDN2P","Beta Skill","Instruction-only fixture skill.","https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Ftools\u002Frelease\u002Ftests\u002Ffixtures\u002Fcatalog\u002Fskills\u002Fbeta\u002FSKILL.md",[],[],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":18},"01M7D3A1MHKESXV45VYXKPCDRN","Alpha Skill","First fixture skill with a runnable demo.","https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Ftools\u002Frelease\u002Ftests\u002Ffixtures\u002Fcatalog\u002Fskills\u002Falpha\u002FSKILL.md",[],[],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":18},"01M7D3A0HSH085FTGATVBG43YG","Deck One","A small deck template fixture.","https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Ftools\u002Frelease\u002Ftests\u002Ffixtures\u002Fcatalog\u002Fdesign-templates\u002Fdeck-one\u002FSKILL.md",[],[],{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":18},"01M7D39Y0372ZQ6GTWFAJ7DEVJ","youtube-clipper","YouTube clip generation and editing with automated workflows — pull source video, slice highlights, add captions, and export.","https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-clipper\u002FSKILL.md",[],[],{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":102,"licenseFileUrl":103,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":18},"01M7D39SMB0RHRGGQY24YVD8N5","writing-guidelines","Review docs\u002Fprose for Writing Guidelines compliance. Use when asked to \"review my docs\", \"check writing style\", \"audit prose\", \"review docs voice and tone\", or \"check this page against the writing handbook\".","MIT","https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Fskills\u002Fwriting-guidelines\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Fskills\u002Fwriting-guidelines\u002FSKILL.md",[],[],{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":18},"01M7D39NNKF0JDA1J6ZJJQVVCV","wpds","WordPress Design System. Apply WordPress's official design tokens, typography, and component patterns to themes and sites.","https:\u002F\u002Fgithub.com\u002Fqelvora1\u002Fopen-design\u002Fblob\u002Fmain\u002Fskills\u002Fwpds\u002FSKILL.md",[],[]]