← OmnekyCONTENT HISTORY

Update to Omneky

Snapshot Oct 8, 2026 · 06:23 UTC · version 2.0.0

Collection source: downloaded plugin package.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Generate branded still image ads for a product or brand brief. Use when the user wants image ads, static creatives, or Meta/feed stills. Keywords: image ad, branded ad, still creative, feed ad, generate image, gpt_ad_gen_id, 5 credits, ambiguous submit recovery.",
  "included_files": [],
  "name": "omneky-image-ads",
  "skill_md_contents": "---\nname: omneky-image-ads\ndescription: >-\n  Generate branded still image ads for a product or brand brief. Use when\n  the user wants image ads, static creatives, or Meta/feed stills.\n  Keywords: image ad, branded ad, still creative, feed ad, generate image,\n  gpt_ad_gen_id, 5 credits, ambiguous submit recovery.\n---\n\n# Image ads\n\n## Activation analytics\n\nIf the host exposes a skill-activation / analytics hook, call it once per new user request with this skill name; otherwise skip silently. Never invent a tracking tool. Omneky MCP does **not** expose `track_skill_activation`.\n\n## Purpose\n\nFocused still-image generation path (subset of `omneky-creative`). Submit\nasync `generate_image_ad`, wait correctly for completion, then offer edit /\nresize / launch handoff.\n\n## When to use\n\n- User wants static / feed / still image ads\n- Product or brand-general image concepts\n\n## When not to use\n\n- Multi-scene product video → `omneky-product-video`\n- Launch without confirmation → `omneky-launch-manage`\n- Catalogue import → `omneky-product-import`\n\n## OpenAI runtime contract\n\n- Use only tools from the current OpenAI host + Omneky MCP (`https://mcp.omneky.com/mcp`). Never invent tools.\n- Prefer native ChatGPT / host widgets and question UI for decisions. Use MCP `request_user_decision` for missing structured fields (not deprecated `ask_user`) when listed. Else `omneky-failure-modes` § Approval / plain-chat fallback.\n- When intake is incomplete, ask **one** concise chat question. Never invent a question tool.\n- Generate / Cancel turns: end the turn after the choice UI (or plain chat); mutate only after affirmative Generate.\n- Never invent tokens; OAuth is host-managed.\n\n## Non-negotiable output / safety contract\n\n- Credit callout before generate (~**5** credits per image job when submitted).\n  Generate / Cancel via host UI or plain chat.\n- Credits / balance: follow `omneky-failure-modes` § Billing tools absent —\n  call `get_account_credit_balance` only when listed; if absent, state ~5\n  operational cost, proceed after user confirms intent, rely on\n  `credit_insufficient` as the hard gate. Never invent balance.\n- Unique `gpt_ad_gen_id` (`<short-slug>-<uuid4>`), never reused across\n  variants. Required with `brand_id`, `brand_name`, `company_id`, `user_id`;\n  prompt field is `ad_concept`.\n- Ambiguous submission (timeout / transport / unknown after possible\n  submit): follow `omneky-failure-modes` § Ambiguous paid submit recovery —\n  status-check with `gpt_ad_gen_id` as `job_id` (kind=image). If\n  `not_found` / queued+source not_found: **WAIT ~30–60s and/or ask user** —\n  do **not** auto-mint a new key (commit lag can still mean charged). New\n  key only after clear pre-accept failure, or explicit user OK after wait\n  still shows never-started.\n- Prefer one product library image in `user_assets`; do not generate with\n  empty assets when product-specific and no imagery exists.\n- Widget hosts own `poll_image_generation` / `sync_generation_group` — agent\n  must not call them. Text hosts: one `get_generation_status(..., kind=\"image\")`\n  on a later turn.\n- Never claim success without completed status / asset URL.\n- Hand off launch only after user confirms (paused default).\n\n## Staged workflow\n\n### Stage 1 — Brand + brief\n\n1. `list_brands` / picker / `get_brand_details`.\n2. Product-specific: `list_brand_products` / `get_product_details` (or\n   `identify_product_from_url` → import via `omneky-product-import` first).\n3. Brand-general: brand assets only.\n4. `get_current_user` when `user_id` is required.\n\n### Stage 2 — Credits\n\n1. If `get_account_credit_balance` is on `tools/list`, call when balance\n   unknown.\n2. Else: state ~5 credits operational cost (`omneky-failure-modes`\n   § Billing tools absent).\n3. Credit callout Generate / Cancel (host UI or plain chat); end turn if\n   waiting.\n\n### Stage 3 — Generate\n\n1. Mint unique `gpt_ad_gen_id` (`<short-slug>-<uuid4>`).\n2. `generate_image_ad` with `ad_concept` + that key + required brand /\n   company / user fields + assets.\n3. Remember the intended key for recovery.\n4. Capture returned `job_id` when present.\n\n### Stage 4 — Completion\n\n1. Widget path: wait for widget / user follow-up.\n2. Text path: `get_generation_status(job_id, kind=\"image\")` once next turn.\n3. Offer `edit_image` / `resize_ad` via `omneky-edit-resize` (resizes\n   uncharged per live tool text — `omneky-failure-modes` § Resize / edit charge).\n\n### Stage 5 — Launch handoff\n\n1. `register_creative_for_launch` when attaching to a campaign later.\n2. `omneky-launch-manage` / `omneky-meta-launch` with Approve + paused default.\n\n## Failure boundaries\n\n| Failure | Required response |\n| --- | --- |\n| `credit_insufficient` | No retry; billing path if tools present; else Omneky app. |\n| Billing tools absent | `omneky-failure-modes` § Billing tools absent. |\n| Clear failure before accept | New `gpt_ad_gen_id` OK for a new attempt. |\n| Timeout / transport / unknown after possible submit | Status with `gpt_ad_gen_id` as `job_id`; on `not_found` wait/ask — never auto new key (`omneky-failure-modes` § Ambiguous paid submit recovery). |\n| No product imagery | Stop; ask upload / other product / brand-general. |\n| Poll loop in one turn | Forbidden. |\n| Success claimed early | Forbidden until status/URL. |\n"
}

SHA-256 of public snapshot: 771f1e02868077c4a95d58ea59d0887a91e116902db47418db37de21555c97cd