[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-openai-ads-conversions-setup":3,"mdc--ch6i3e-key":34,"related-repo-openai-openai-ads-conversions-setup":1558,"related-org-openai-openai-ads-conversions-setup":1681},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"openai-ads-conversions-setup","instrument OpenAI Ads conversion tracking","Guide Codex through instrumenting or extending repositories with OpenAI Ads Measurement Pixel and optional Conversions API (CAPI). Use when adding Ads conversion tracking, browser pixel events, server-side conversion events, event_id deduplication, CAPI secret placeholders, incremental conversion coverage, or validating Ads conversion setup. Applies to local repositories and PR review contexts; prioritize safe, reviewable diffs and never place API keys or secrets in source code or client bundles.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Marketing","marketing","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Analytics","analytics",{"name":21,"slug":22,"type":15},"API Development","api-development",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-06-30T19:00:57.102",null,465,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fopenai-ads-conversions\u002Fskills\u002Fopenai-ads-conversions-setup","---\nname: openai-ads-conversions-setup\ndescription: Guide Codex through instrumenting or extending repositories with OpenAI Ads Measurement Pixel and optional Conversions API (CAPI). Use when adding Ads conversion tracking, browser pixel events, server-side conversion events, event_id deduplication, CAPI secret placeholders, incremental conversion coverage, or validating Ads conversion setup. Applies to local repositories and PR review contexts; prioritize safe, reviewable diffs and never place API keys or secrets in source code or client bundles.\n---\n\n# OpenAI Ads Conversions Setup\n\n## Overview\n\nUse this skill to add, extend, or review OpenAI Ads conversion instrumentation in an advertiser repository. It supports browser Pixel setup, server-side Conversions API setup, Pixel+CAPI deduplication, and incremental reruns after the app adds new pages or flows, while keeping diffs small and avoiding secret exposure.\n\nUse only public OpenAI Ads documentation and repository-local patterns for implementation choices. If the docs are unavailable or unclear, ask for clarification or leave a documented follow-up instead of relying on undocumented behavior.\n\n## Required Inputs\n\nBefore editing code, identify:\n\n- Setup mode: `pixel`, `capi`, or `pixel+capi`.\n- Frontend\u002Fruntime surface: browser JavaScript\u002FTypeScript, server-rendered web, backend-only, mobile\u002Fnative, or unknown.\n- Pixel ID, if Pixel is in scope.\n- CAPI authentication plan, if CAPI is in scope: existing secret\u002Fenv var name, secret manager path, or placeholder-only.\n- Conversion events to instrument and where they occur in the product flow.\n- Whether this is a first-time setup or an incremental rerun extending existing OpenAI Ads instrumentation.\n- Whether the desired behavior is `propose patch`, `apply local patch`, or `review existing integration`.\n\nTreat the linked OpenAI Ads docs as the source of truth for exact SDK syntax, endpoint shape, supported events, request fields, and validation rules. When browsing is available, check the current docs before writing concrete calls; if the docs conflict with this skill, follow the docs and mention the conflict in the setup report. When browsing is unavailable, use this skill's references as a fallback. Do not invent SDK functions, event names, request schemas, or endpoint paths.\n\nPrimary docs to prefer when available:\n\n- `https:\u002F\u002Fdevelopers.openai.com\u002Fads\u002Fmeasurement-pixel`\n- `https:\u002F\u002Fdevelopers.openai.com\u002Fads\u002Fconversions-api`\n- `https:\u002F\u002Fdevelopers.openai.com\u002Fads\u002Fsupported-events`\n\n## Workflow\n\n1. Inspect the repository shape.\n   - Detect framework, package manager, router, server runtime, frontend surface, env convention, test commands, and existing analytics integrations.\n   - Determine whether a browser JavaScript Pixel is supportable. If the customer-facing surface is mobile\u002Fnative, backend-only, or otherwise lacks a safe browser JS insertion point, use CAPI-only and report that Pixel was skipped.\n   - Search for existing OpenAI Ads instrumentation: Pixel initialization, CAPI clients, event helpers, config\u002Fenv vars, dedupe IDs, attribution context, tests, and setup docs.\n   - Search for existing pixels or server conversion APIs such as Meta Pixel\u002FCAPI, Google Ads\u002Fgtag, TikTok Events API, Pinterest, Snap, Segment, RudderStack, or custom analytics wrappers.\n   - Use other ad platform integrations as evidence for local conversion boundaries, consent gates, config\u002Fsecret patterns, non-blocking dispatch, dedupe IDs, and tests. Do not copy their event names, payload schemas, user matching fields, credential exposure patterns, or retry behavior.\n   - Prefer the repository's existing analytics abstraction over adding a parallel abstraction. If OpenAI Ads instrumentation already exists, treat its helper\u002Fclient\u002Fconfig pattern as canonical.\n   - Search for existing config and secret retrieval patterns before choosing env vars: framework settings, typed config objects, deployment env conventions, Vault, cloud secret managers, Kubernetes secrets, Doppler, 1Password, or similar.\n\n2. Confirm the setup plan.\n   - For Pixel, identify a single browser-only initialization point, event call sites, and any approved browser user-data path.\n   - For CAPI, identify a server-only execution point, secret retrieval pattern, and outbound HTTP\u002Fclient pattern.\n   - For Pixel+CAPI, define one logical Pixel ID and a stable `event_id` strategy so browser and server events can deduplicate.\n   - For CAPI web events, define an `oppref` strategy and a sanitized `source_url` strategy before editing. Prefer a server-readable raw `__oppref` cookie value; if unavailable, pass minimal optional conversion context from the browser to an existing server conversion request. For deduped Pixel+CAPI events, make CAPI `source_url` describe the same browser conversion context as the paired Pixel event when practical. If the browser fires the Pixel event before navigation and the server would otherwise derive a different URL, pass the browser's current `sourceUrl` to the server and validate it against a trusted request\u002Fconfigured origin before using it. If a configured canonical site origin exists, prefer it for fallback `source_url` construction while still allowing the request origin as trusted.\n   - For CAPI-only web setup, explicitly plan how the server event will include matching and attribution context that the Pixel would otherwise help provide: `oppref`, `source_url`, client `user_agent`, trusted client IP, and documented hashed user identifiers when safely available.\n   - If adding a CAPI validation toggle, keep checked-in defaults production-capable. `validate_only: true` is documented for local smoke tests, but committed env templates and runtime defaults should be blank or false unless the user explicitly asks for validation-only behavior.\n   - Select supported event names from current docs. Evaluate the primary supported events (`page_viewed`, `contents_viewed`, `items_added`, `checkout_started`, `order_created`, `lead_created`, `registration_completed`, `appointment_scheduled`, `subscription_created`, and `trial_started`) and report high-confidence events you will instrument plus supported events you intentionally skip.\n   - If Pixel is installed and `page_viewed` is not instrumented, explicitly say why: too noisy, SPA route semantics unclear, no meaningful landing pages, already covered by an existing helper, or intentionally deferred.\n   - Do not silently skip plausible events. For each skipped supported event, state why: not applicable, no confirmed success boundary found, ambiguous product semantics, unsupported surface, or safe follow-up available if the advertiser wants broader coverage.\n   - If the target flow is ambiguous, ask one concise question before editing.\n\n3. Implement the smallest useful patch.\n   - Add initialization once.\n   - Instrument only clearly identified conversion events.\n   - Favor a small high-confidence initial patch over speculative broad coverage. Put plausible but unconfirmed events in the setup report as optional follow-ups, not half-guessed instrumentation.\n   - Keep config names explicit. Public framework aliases such as `NEXT_PUBLIC_OPENAI_ADS_PIXEL_ID` or `VITE_OPENAI_ADS_PIXEL_ID` are allowed for browser Pixel code, but document that they must contain the same Pixel ID as the server-side Pixel ID when CAPI sends the same event.\n   - Never put CAPI keys in browser-visible env vars, frontend code, logs, comments, docs, test snapshots, or generated reports.\n   - Use documented OpenAI Ads event names and request field names only. Do not use legacy CAPI field names such as `event_name`, `event_time_epoch_ms`, `event_source_url`, or `event_data`.\n   - For commerce flows, ensure each instrumented event covers the actual success path. For `items_added`, cover all successful add-to-cart and quantity-increment paths you can confirm; if you only cover a subset, say that clearly in the setup report and offer the missing paths as follow-ups.\n   - If Pixel is installed and documented user matching data, such as hashed email or location fields, becomes available client-side after the initial Pixel init, add a second `oaiq(\"init\", { user })` call near that point. Do this for normal web checkout\u002Fsignup flows unless consent, opt-out, or repository policy prevents it; if skipped, explain why in the setup report. Do not include `pixelId` again after a successful first init, and do not put Pixel user data in `measure` calls.\n   - Conversion reporting must not fail, block, or materially slow the core business flow. Pixel helpers should catch\u002Fsuppress their own errors. The whole CAPI path, including event construction, source URL derivation, user-data hashing, timeout setup, and dispatch, must be inside a non-blocking\u002Fcatch boundary so checkout, signup, lead submission, and other success paths still complete if conversion reporting code throws.\n\n4. Verify locally.\n   - Run relevant typecheck, lint, unit tests, or framework-specific checks when available.\n   - Resolve the directory containing this installed skill before using helper scripts.\n   - Run this skill's static helpers when useful:\n     - `python3 \u003Cinstalled-skill-path>\u002Fscripts\u002Fverify_capi_secret_not_exposed.py \u003Crepo>`\n     - `python3 \u003Cinstalled-skill-path>\u002Fscripts\u002Fverify_ads_setup.py \u003Crepo> --pixel-id \u003Cid> --require pixel --require capi`\n     - For Pixel+CAPI web dedupe, add `--require dedupe --require shared-pixel-id --require oppref --require source-url`.\n   - These helpers run locally. By default, they report paths, line numbers, rules, and summaries without printing source-line context or transmitting repository contents.\n   - If verification cannot run, report the blocker and the residual risk.\n\n5. Produce a setup report.\n   - Include changed files, detected stack, setup mode, existing OpenAI Ads instrumentation found, events added or changed in this run, events already covered, supported events skipped with reasons, optional follow-up events the advertiser can add if desired, skipped surfaces\u002Fplatforms, Pixel ID\u002Fconfig reference, Pixel user-data strategy, Pixel opt-out behavior, CAPI secret reference, CAPI `oppref` strategy, CAPI `source_url` strategy, browser-provided `sourceUrl` trust boundary, CAPI user-data strategy, event deduplication strategy, checks run, manual follow-ups, and risks.\n   - Do not include raw secrets or sensitive advertiser source snippets.\n   - End with a clear deployment review warning: before deploying, the advertiser should review that the implementation satisfies their privacy, security, consent, and data handling requirements.\n\n## Incremental Reruns\n\nWhen rerunning this skill on a repository that may already have OpenAI Ads instrumentation:\n\n- Build an inventory first: Pixel init locations, CAPI clients, event helpers, analytics sinks, event call sites, Pixel ID\u002Fconfig sources, `event_id` generation, `oppref` and `source_url` handling, user-data handling, tests, and docs.\n- Treat existing OpenAI Ads integration surfaces as canonical. Extend the existing helper\u002Fclient\u002Fadapter instead of creating a second Pixel initializer, second CAPI client, second config convention, or scattered one-off call sites.\n- Compare current app flows against the existing event inventory. Add only missing coverage at confirmed success boundaries.\n- Check duplicate-risk before editing: a new page or flow may already publish through a shared cart service, checkout service, confirmation component, analytics wrapper, or server conversion helper.\n- Preserve existing dedupe, Pixel ID, attribution, user-data, failure-handling, test, and reporting patterns unless they are unsafe or incompatible with current docs.\n- If another ad platform already publishes from a new flow but OpenAI Ads does not, treat that as a strong signal of missing OpenAI Ads coverage. Still map it to documented OpenAI Ads event names and payload fields.\n- Keep rerun diffs focused. Do not churn env templates, setup docs, or shared helpers unless the extension requires it or they are stale.\n- In the final report, separate existing events found, new events added, events skipped because they are already covered, and optional follow-ups.\n\n## Pixel Rules\n\nUse `references\u002Fmeasurement-pixel.md` for browser Pixel details.\n\n- Initialize in a client-only location that runs once per page\u002Fapp load.\n- Use the documented browser SDK pattern: load `https:\u002F\u002Fbzrcdn.openai.com\u002Fsdk\u002Foaiq.min.js`, initialize with `oaiq(\"init\", { pixelId })`, and emit events with `oaiq(\"measure\", ...)`.\n- Use Pixel only for browser JavaScript\u002FTypeScript surfaces supported by current docs. For mobile\u002Fnative or unsupported frontends, skip Pixel and prefer CAPI-only when a server conversion boundary exists.\n- Avoid duplicate initialization across route transitions, hydration, tests, or nested layouts.\n- Instrument conversion events close to the confirmed success boundary, not merely on button click unless the click itself is the conversion.\n- Respect consent and privacy gating patterns already present in the repository.\n- Do not manually send Pixel `oppref`, `source_url`, timestamps, or batching metadata; the browser SDK handles those transport details. Add `debug: true` only for local\u002Ftest debugging, not as a committed production default.\n- If documented Pixel user data becomes available after initial page-load initialization, call `oaiq(\"init\", { user })` again with only documented, normalized fields. For checkout, signup, lead, subscription, or registration flows where the browser has email or location data before or after the confirmed conversion, add this second init unless consent, opt-out, or repository policy prevents it, and report any skip. Preserve the repository's existing consent gates for whether measurement and user-data collection are allowed. Put `opt_out` on the Pixel event options when measurement is allowed but the event should be opted out of future user-level personalization.\n- Use supported standard event names from current docs, such as `page_viewed`, `contents_viewed`, `items_added`, `checkout_started`, `order_created`, `lead_created`, `registration_completed`, `appointment_scheduled`, `subscription_created`, or `trial_started`. If uncertain, use the closest documented event or leave an explicit follow-up instead of inventing a name.\n- Custom events are a fallback when no standard event fits. Use `custom` only with a valid, documented `custom_event_name`.\n\n## CAPI Rules\n\nUse `references\u002Fconversions-api.md` for server-side setup details.\n\n- CAPI code must run server-side only.\n- Do not create, request, store, or print CAPI keys.\n- Prefer an existing secret manager\u002Fenv retrieval pattern; otherwise add a placeholder config reference and report that the user must provision the secret.\n- Use existing HTTP clients, retry conventions, telemetry, and privacy filters.\n- Do not add new queues, databases, background jobs, or broad infra unless the user explicitly asks.\n- If Pixel and CAPI both emit the same conversion, use the same Pixel ID, event name, and `event_id` in both paths.\n- For web CAPI events, include `action_source: \"web\"` and a sanitized HTTP(S) `source_url` containing only origin plus pathname. Strip query strings and fragments before sending; reject or replace non-HTTP(S) URL schemes with a trusted configured web app URL. For deduped Pixel+CAPI events, prefer a `source_url` from the same browser conversion context as the paired Pixel event. If accepting a browser-provided `sourceUrl`, require its origin to match the current request origin or a configured canonical site origin before using it; otherwise fall back to a server-derived URL. When a configured canonical site origin exists, use it as the preferred fallback origin and do not let request service\u002Fproxy origins override it. If the final CAPI `source_url` intentionally differs from the Pixel event's browser page, call that out in the setup report. For non-web server conversions, choose the documented `action_source` that matches the source (`mobile_app`, `offline`, `physical_store`, `phone_call`, `email`, or `other`) instead of forcing `web`.\n- Treat `oppref` as opaque attribution context. Prefer a server-readable `__oppref` cookie over client-supplied request context; pass the raw value unchanged and do not parse, URL-decode, cookie-decode, generate, transform, or log it.\n- Use CAPI `events[].user` only for documented fields already available through an approved repository pattern. Never send raw email or raw external IDs. For CAPI-only web conversions, make a best effort to include client `user_agent`, trusted client IP, and hashed email or external ID when available; these fields are especially important when there is no paired Pixel event.\n- Use current event timestamps in `timestamp_ms`; do not send stale backfills older than the documented window or future-dated events.\n- Preserve existing opt-out\u002Fconsent semantics and map them to documented `opt_out` fields when the repository has a relevant user-level personalization opt-out.\n- CAPI failure handling must not throw into checkout, signup, lead submission, or other core success paths. Wrap event construction, source URL derivation, user-data hashing, timeout setup, and dispatch in the same non-blocking failure boundary. Prefer existing background-task or queue patterns; if none exist, use a bounded fire-and-log implementation and document remaining latency risk.\n- For `contents` payloads, use top-level `data.amount` for the event total. For item-level `contents[].amount`, use the unit price when the repository exposes it; omit item-level amount if only line totals are available or the semantics are unclear.\n\n## Framework Hints\n\nUse `references\u002Fframework-patterns.md` for common locations and pitfalls in Next.js, React\u002FVite, Remix, Express, Rails, Django, Flask, and monorepos.\n\nTreat these as hints, not rules. The repository's existing conventions win.\n\n## Verification And Reporting\n\nUse `references\u002Fverification-checklist.md` for validation steps and `references\u002Freport-schema.md` for the final setup report format.\n\nHigh-priority failure cases:\n\n- CAPI secret or API key appears in client code, browser-visible env vars, logs, comments, generated docs, snapshots, or reports.\n- Pixel initialization can run multiple times in normal navigation.\n- CAPI code can run from a browser bundle.\n- Pixel and CAPI duplicate the same event without the same logical Pixel ID and shared dedupe key.\n- OpenAI Ads event names are invented or unsupported by current docs.\n- CAPI payload uses undocumented or legacy field names, mismatched event\u002Fdata types, or web events without a sanitized `source_url`.\n- Pixel user data is attached to `measure` instead of `init`, includes undocumented\u002Fraw identity fields, or bypasses the repository's existing consent gates.\n- CAPI `timestamp_ms` is stale, future-dated beyond the documented allowance, or not tied to the actual conversion time.\n- CAPI action source is forced to `web` for non-web\u002Fmobile\u002Foffline events instead of using an appropriate documented `action_source`.\n- CAPI custom event names are placed in the wrong field, or Pixel custom events omit the options-level `custom_event_name`.\n- CAPI web events ignore available `oppref` context or log `oppref` alongside raw identifiers.\n- CAPI `source_url` accepts non-HTTP(S) schemes or preserves query strings\u002Ffragments.\n- CAPI decodes or transforms `oppref` instead of passing the raw opaque value through unchanged.\n- CAPI uses a browser-provided `sourceUrl` with an untrusted origin instead of falling back to a server-derived URL.\n- CAPI lets request service\u002Fproxy origins override a configured canonical site origin when constructing fallback `source_url`.\n- Existing consent or user-level personalization opt-out behavior is bypassed or lost.\n- Pixel is installed but available checkout\u002Fsignup\u002Flead user matching data is neither sent through a second `init({ user })` call nor explicitly skipped with a consent\u002Fpolicy reason.\n- Deduped Pixel+CAPI events derive materially different browser context or `source_url` without explanation.\n- The setup report does not explain why plausible supported events were skipped.\n- The patch instruments likely pre-conversion intent instead of confirmed conversion success.\n- Any CAPI setup step, including event construction before dispatch, can fail or materially delay the core business flow.\n\n## When To Stop And Ask\n\nAsk before proceeding when:\n\n- The conversion event boundary is unclear.\n- CAPI is requested but no server runtime or secret pattern exists.\n- Exact OpenAI Ads SDK\u002FAPI syntax cannot be verified from docs or provided context.\n- Pixel is requested but the repository has no browser JavaScript\u002FTypeScript surface and no safe browser insertion point.\n- The only viable implementation would require new infrastructure, a deploy step, or changing authentication\u002Fcheckout behavior.\n- The user provides or asks you to embed a raw CAPI key in the repository.\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,47,54,60,65,71,76,162,167,172,202,208,713,719,724,788,794,807,995,1001,1013,1250,1256,1268,1273,1279,1299,1304,1514,1520,1525],{"type":40,"tag":41,"props":42,"children":43},"element","h1",{"id":4},[44],{"type":45,"value":46},"text","OpenAI Ads Conversions Setup",{"type":40,"tag":48,"props":49,"children":51},"h2",{"id":50},"overview",[52],{"type":45,"value":53},"Overview",{"type":40,"tag":55,"props":56,"children":57},"p",{},[58],{"type":45,"value":59},"Use this skill to add, extend, or review OpenAI Ads conversion instrumentation in an advertiser repository. It supports browser Pixel setup, server-side Conversions API setup, Pixel+CAPI deduplication, and incremental reruns after the app adds new pages or flows, while keeping diffs small and avoiding secret exposure.",{"type":40,"tag":55,"props":61,"children":62},{},[63],{"type":45,"value":64},"Use only public OpenAI Ads documentation and repository-local patterns for implementation choices. If the docs are unavailable or unclear, ask for clarification or leave a documented follow-up instead of relying on undocumented behavior.",{"type":40,"tag":48,"props":66,"children":68},{"id":67},"required-inputs",[69],{"type":45,"value":70},"Required Inputs",{"type":40,"tag":55,"props":72,"children":73},{},[74],{"type":45,"value":75},"Before editing code, identify:",{"type":40,"tag":77,"props":78,"children":79},"ul",{},[80,111,116,121,126,131,136],{"type":40,"tag":81,"props":82,"children":83},"li",{},[84,86,93,95,101,103,109],{"type":45,"value":85},"Setup mode: ",{"type":40,"tag":87,"props":88,"children":90},"code",{"className":89},[],[91],{"type":45,"value":92},"pixel",{"type":45,"value":94},", ",{"type":40,"tag":87,"props":96,"children":98},{"className":97},[],[99],{"type":45,"value":100},"capi",{"type":45,"value":102},", or ",{"type":40,"tag":87,"props":104,"children":106},{"className":105},[],[107],{"type":45,"value":108},"pixel+capi",{"type":45,"value":110},".",{"type":40,"tag":81,"props":112,"children":113},{},[114],{"type":45,"value":115},"Frontend\u002Fruntime surface: browser JavaScript\u002FTypeScript, server-rendered web, backend-only, mobile\u002Fnative, or unknown.",{"type":40,"tag":81,"props":117,"children":118},{},[119],{"type":45,"value":120},"Pixel ID, if Pixel is in scope.",{"type":40,"tag":81,"props":122,"children":123},{},[124],{"type":45,"value":125},"CAPI authentication plan, if CAPI is in scope: existing secret\u002Fenv var name, secret manager path, or placeholder-only.",{"type":40,"tag":81,"props":127,"children":128},{},[129],{"type":45,"value":130},"Conversion events to instrument and where they occur in the product flow.",{"type":40,"tag":81,"props":132,"children":133},{},[134],{"type":45,"value":135},"Whether this is a first-time setup or an incremental rerun extending existing OpenAI Ads instrumentation.",{"type":40,"tag":81,"props":137,"children":138},{},[139,141,147,148,154,155,161],{"type":45,"value":140},"Whether the desired behavior is ",{"type":40,"tag":87,"props":142,"children":144},{"className":143},[],[145],{"type":45,"value":146},"propose patch",{"type":45,"value":94},{"type":40,"tag":87,"props":149,"children":151},{"className":150},[],[152],{"type":45,"value":153},"apply local patch",{"type":45,"value":102},{"type":40,"tag":87,"props":156,"children":158},{"className":157},[],[159],{"type":45,"value":160},"review existing integration",{"type":45,"value":110},{"type":40,"tag":55,"props":163,"children":164},{},[165],{"type":45,"value":166},"Treat the linked OpenAI Ads docs as the source of truth for exact SDK syntax, endpoint shape, supported events, request fields, and validation rules. When browsing is available, check the current docs before writing concrete calls; if the docs conflict with this skill, follow the docs and mention the conflict in the setup report. When browsing is unavailable, use this skill's references as a fallback. Do not invent SDK functions, event names, request schemas, or endpoint paths.",{"type":40,"tag":55,"props":168,"children":169},{},[170],{"type":45,"value":171},"Primary docs to prefer when available:",{"type":40,"tag":77,"props":173,"children":174},{},[175,184,193],{"type":40,"tag":81,"props":176,"children":177},{},[178],{"type":40,"tag":87,"props":179,"children":181},{"className":180},[],[182],{"type":45,"value":183},"https:\u002F\u002Fdevelopers.openai.com\u002Fads\u002Fmeasurement-pixel",{"type":40,"tag":81,"props":185,"children":186},{},[187],{"type":40,"tag":87,"props":188,"children":190},{"className":189},[],[191],{"type":45,"value":192},"https:\u002F\u002Fdevelopers.openai.com\u002Fads\u002Fconversions-api",{"type":40,"tag":81,"props":194,"children":195},{},[196],{"type":40,"tag":87,"props":197,"children":199},{"className":198},[],[200],{"type":45,"value":201},"https:\u002F\u002Fdevelopers.openai.com\u002Fads\u002Fsupported-events",{"type":40,"tag":48,"props":203,"children":205},{"id":204},"workflow",[206],{"type":45,"value":207},"Workflow",{"type":40,"tag":209,"props":210,"children":211},"ol",{},[212,255,475,603,669],{"type":40,"tag":81,"props":213,"children":214},{},[215,217],{"type":45,"value":216},"Inspect the repository shape.",{"type":40,"tag":77,"props":218,"children":219},{},[220,225,230,235,240,245,250],{"type":40,"tag":81,"props":221,"children":222},{},[223],{"type":45,"value":224},"Detect framework, package manager, router, server runtime, frontend surface, env convention, test commands, and existing analytics integrations.",{"type":40,"tag":81,"props":226,"children":227},{},[228],{"type":45,"value":229},"Determine whether a browser JavaScript Pixel is supportable. If the customer-facing surface is mobile\u002Fnative, backend-only, or otherwise lacks a safe browser JS insertion point, use CAPI-only and report that Pixel was skipped.",{"type":40,"tag":81,"props":231,"children":232},{},[233],{"type":45,"value":234},"Search for existing OpenAI Ads instrumentation: Pixel initialization, CAPI clients, event helpers, config\u002Fenv vars, dedupe IDs, attribution context, tests, and setup docs.",{"type":40,"tag":81,"props":236,"children":237},{},[238],{"type":45,"value":239},"Search for existing pixels or server conversion APIs such as Meta Pixel\u002FCAPI, Google Ads\u002Fgtag, TikTok Events API, Pinterest, Snap, Segment, RudderStack, or custom analytics wrappers.",{"type":40,"tag":81,"props":241,"children":242},{},[243],{"type":45,"value":244},"Use other ad platform integrations as evidence for local conversion boundaries, consent gates, config\u002Fsecret patterns, non-blocking dispatch, dedupe IDs, and tests. Do not copy their event names, payload schemas, user matching fields, credential exposure patterns, or retry behavior.",{"type":40,"tag":81,"props":246,"children":247},{},[248],{"type":45,"value":249},"Prefer the repository's existing analytics abstraction over adding a parallel abstraction. If OpenAI Ads instrumentation already exists, treat its helper\u002Fclient\u002Fconfig pattern as canonical.",{"type":40,"tag":81,"props":251,"children":252},{},[253],{"type":45,"value":254},"Search for existing config and secret retrieval patterns before choosing env vars: framework settings, typed config objects, deployment env conventions, Vault, cloud secret managers, Kubernetes secrets, Doppler, 1Password, or similar.",{"type":40,"tag":81,"props":256,"children":257},{},[258,260],{"type":45,"value":259},"Confirm the setup plan.",{"type":40,"tag":77,"props":261,"children":262},{},[263,268,273,286,337,363,376,453,465,470],{"type":40,"tag":81,"props":264,"children":265},{},[266],{"type":45,"value":267},"For Pixel, identify a single browser-only initialization point, event call sites, and any approved browser user-data path.",{"type":40,"tag":81,"props":269,"children":270},{},[271],{"type":45,"value":272},"For CAPI, identify a server-only execution point, secret retrieval pattern, and outbound HTTP\u002Fclient pattern.",{"type":40,"tag":81,"props":274,"children":275},{},[276,278,284],{"type":45,"value":277},"For Pixel+CAPI, define one logical Pixel ID and a stable ",{"type":40,"tag":87,"props":279,"children":281},{"className":280},[],[282],{"type":45,"value":283},"event_id",{"type":45,"value":285}," strategy so browser and server events can deduplicate.",{"type":40,"tag":81,"props":287,"children":288},{},[289,291,297,299,305,307,313,315,320,322,328,330,335],{"type":45,"value":290},"For CAPI web events, define an ",{"type":40,"tag":87,"props":292,"children":294},{"className":293},[],[295],{"type":45,"value":296},"oppref",{"type":45,"value":298}," strategy and a sanitized ",{"type":40,"tag":87,"props":300,"children":302},{"className":301},[],[303],{"type":45,"value":304},"source_url",{"type":45,"value":306}," strategy before editing. Prefer a server-readable raw ",{"type":40,"tag":87,"props":308,"children":310},{"className":309},[],[311],{"type":45,"value":312},"__oppref",{"type":45,"value":314}," cookie value; if unavailable, pass minimal optional conversion context from the browser to an existing server conversion request. For deduped Pixel+CAPI events, make CAPI ",{"type":40,"tag":87,"props":316,"children":318},{"className":317},[],[319],{"type":45,"value":304},{"type":45,"value":321}," describe the same browser conversion context as the paired Pixel event when practical. If the browser fires the Pixel event before navigation and the server would otherwise derive a different URL, pass the browser's current ",{"type":40,"tag":87,"props":323,"children":325},{"className":324},[],[326],{"type":45,"value":327},"sourceUrl",{"type":45,"value":329}," to the server and validate it against a trusted request\u002Fconfigured origin before using it. If a configured canonical site origin exists, prefer it for fallback ",{"type":40,"tag":87,"props":331,"children":333},{"className":332},[],[334],{"type":45,"value":304},{"type":45,"value":336}," construction while still allowing the request origin as trusted.",{"type":40,"tag":81,"props":338,"children":339},{},[340,342,347,348,353,355,361],{"type":45,"value":341},"For CAPI-only web setup, explicitly plan how the server event will include matching and attribution context that the Pixel would otherwise help provide: ",{"type":40,"tag":87,"props":343,"children":345},{"className":344},[],[346],{"type":45,"value":296},{"type":45,"value":94},{"type":40,"tag":87,"props":349,"children":351},{"className":350},[],[352],{"type":45,"value":304},{"type":45,"value":354},", client ",{"type":40,"tag":87,"props":356,"children":358},{"className":357},[],[359],{"type":45,"value":360},"user_agent",{"type":45,"value":362},", trusted client IP, and documented hashed user identifiers when safely available.",{"type":40,"tag":81,"props":364,"children":365},{},[366,368,374],{"type":45,"value":367},"If adding a CAPI validation toggle, keep checked-in defaults production-capable. ",{"type":40,"tag":87,"props":369,"children":371},{"className":370},[],[372],{"type":45,"value":373},"validate_only: true",{"type":45,"value":375}," is documented for local smoke tests, but committed env templates and runtime defaults should be blank or false unless the user explicitly asks for validation-only behavior.",{"type":40,"tag":81,"props":377,"children":378},{},[379,381,387,388,394,395,401,402,408,409,415,416,422,423,429,430,436,437,443,445,451],{"type":45,"value":380},"Select supported event names from current docs. Evaluate the primary supported events (",{"type":40,"tag":87,"props":382,"children":384},{"className":383},[],[385],{"type":45,"value":386},"page_viewed",{"type":45,"value":94},{"type":40,"tag":87,"props":389,"children":391},{"className":390},[],[392],{"type":45,"value":393},"contents_viewed",{"type":45,"value":94},{"type":40,"tag":87,"props":396,"children":398},{"className":397},[],[399],{"type":45,"value":400},"items_added",{"type":45,"value":94},{"type":40,"tag":87,"props":403,"children":405},{"className":404},[],[406],{"type":45,"value":407},"checkout_started",{"type":45,"value":94},{"type":40,"tag":87,"props":410,"children":412},{"className":411},[],[413],{"type":45,"value":414},"order_created",{"type":45,"value":94},{"type":40,"tag":87,"props":417,"children":419},{"className":418},[],[420],{"type":45,"value":421},"lead_created",{"type":45,"value":94},{"type":40,"tag":87,"props":424,"children":426},{"className":425},[],[427],{"type":45,"value":428},"registration_completed",{"type":45,"value":94},{"type":40,"tag":87,"props":431,"children":433},{"className":432},[],[434],{"type":45,"value":435},"appointment_scheduled",{"type":45,"value":94},{"type":40,"tag":87,"props":438,"children":440},{"className":439},[],[441],{"type":45,"value":442},"subscription_created",{"type":45,"value":444},", and ",{"type":40,"tag":87,"props":446,"children":448},{"className":447},[],[449],{"type":45,"value":450},"trial_started",{"type":45,"value":452},") and report high-confidence events you will instrument plus supported events you intentionally skip.",{"type":40,"tag":81,"props":454,"children":455},{},[456,458,463],{"type":45,"value":457},"If Pixel is installed and ",{"type":40,"tag":87,"props":459,"children":461},{"className":460},[],[462],{"type":45,"value":386},{"type":45,"value":464}," is not instrumented, explicitly say why: too noisy, SPA route semantics unclear, no meaningful landing pages, already covered by an existing helper, or intentionally deferred.",{"type":40,"tag":81,"props":466,"children":467},{},[468],{"type":45,"value":469},"Do not silently skip plausible events. For each skipped supported event, state why: not applicable, no confirmed success boundary found, ambiguous product semantics, unsupported surface, or safe follow-up available if the advertiser wants broader coverage.",{"type":40,"tag":81,"props":471,"children":472},{},[473],{"type":45,"value":474},"If the target flow is ambiguous, ask one concise question before editing.",{"type":40,"tag":81,"props":476,"children":477},{},[478,480],{"type":45,"value":479},"Implement the smallest useful patch.",{"type":40,"tag":77,"props":481,"children":482},{},[483,488,493,498,519,524,557,569,598],{"type":40,"tag":81,"props":484,"children":485},{},[486],{"type":45,"value":487},"Add initialization once.",{"type":40,"tag":81,"props":489,"children":490},{},[491],{"type":45,"value":492},"Instrument only clearly identified conversion events.",{"type":40,"tag":81,"props":494,"children":495},{},[496],{"type":45,"value":497},"Favor a small high-confidence initial patch over speculative broad coverage. Put plausible but unconfirmed events in the setup report as optional follow-ups, not half-guessed instrumentation.",{"type":40,"tag":81,"props":499,"children":500},{},[501,503,509,511,517],{"type":45,"value":502},"Keep config names explicit. Public framework aliases such as ",{"type":40,"tag":87,"props":504,"children":506},{"className":505},[],[507],{"type":45,"value":508},"NEXT_PUBLIC_OPENAI_ADS_PIXEL_ID",{"type":45,"value":510}," or ",{"type":40,"tag":87,"props":512,"children":514},{"className":513},[],[515],{"type":45,"value":516},"VITE_OPENAI_ADS_PIXEL_ID",{"type":45,"value":518}," are allowed for browser Pixel code, but document that they must contain the same Pixel ID as the server-side Pixel ID when CAPI sends the same event.",{"type":40,"tag":81,"props":520,"children":521},{},[522],{"type":45,"value":523},"Never put CAPI keys in browser-visible env vars, frontend code, logs, comments, docs, test snapshots, or generated reports.",{"type":40,"tag":81,"props":525,"children":526},{},[527,529,535,536,542,543,549,550,556],{"type":45,"value":528},"Use documented OpenAI Ads event names and request field names only. Do not use legacy CAPI field names such as ",{"type":40,"tag":87,"props":530,"children":532},{"className":531},[],[533],{"type":45,"value":534},"event_name",{"type":45,"value":94},{"type":40,"tag":87,"props":537,"children":539},{"className":538},[],[540],{"type":45,"value":541},"event_time_epoch_ms",{"type":45,"value":94},{"type":40,"tag":87,"props":544,"children":546},{"className":545},[],[547],{"type":45,"value":548},"event_source_url",{"type":45,"value":102},{"type":40,"tag":87,"props":551,"children":553},{"className":552},[],[554],{"type":45,"value":555},"event_data",{"type":45,"value":110},{"type":40,"tag":81,"props":558,"children":559},{},[560,562,567],{"type":45,"value":561},"For commerce flows, ensure each instrumented event covers the actual success path. For ",{"type":40,"tag":87,"props":563,"children":565},{"className":564},[],[566],{"type":45,"value":400},{"type":45,"value":568},", cover all successful add-to-cart and quantity-increment paths you can confirm; if you only cover a subset, say that clearly in the setup report and offer the missing paths as follow-ups.",{"type":40,"tag":81,"props":570,"children":571},{},[572,574,580,582,588,590,596],{"type":45,"value":573},"If Pixel is installed and documented user matching data, such as hashed email or location fields, becomes available client-side after the initial Pixel init, add a second ",{"type":40,"tag":87,"props":575,"children":577},{"className":576},[],[578],{"type":45,"value":579},"oaiq(\"init\", { user })",{"type":45,"value":581}," call near that point. Do this for normal web checkout\u002Fsignup flows unless consent, opt-out, or repository policy prevents it; if skipped, explain why in the setup report. Do not include ",{"type":40,"tag":87,"props":583,"children":585},{"className":584},[],[586],{"type":45,"value":587},"pixelId",{"type":45,"value":589}," again after a successful first init, and do not put Pixel user data in ",{"type":40,"tag":87,"props":591,"children":593},{"className":592},[],[594],{"type":45,"value":595},"measure",{"type":45,"value":597}," calls.",{"type":40,"tag":81,"props":599,"children":600},{},[601],{"type":45,"value":602},"Conversion reporting must not fail, block, or materially slow the core business flow. Pixel helpers should catch\u002Fsuppress their own errors. The whole CAPI path, including event construction, source URL derivation, user-data hashing, timeout setup, and dispatch, must be inside a non-blocking\u002Fcatch boundary so checkout, signup, lead submission, and other success paths still complete if conversion reporting code throws.",{"type":40,"tag":81,"props":604,"children":605},{},[606,608],{"type":45,"value":607},"Verify locally.",{"type":40,"tag":77,"props":609,"children":610},{},[611,616,621,659,664],{"type":40,"tag":81,"props":612,"children":613},{},[614],{"type":45,"value":615},"Run relevant typecheck, lint, unit tests, or framework-specific checks when available.",{"type":40,"tag":81,"props":617,"children":618},{},[619],{"type":45,"value":620},"Resolve the directory containing this installed skill before using helper scripts.",{"type":40,"tag":81,"props":622,"children":623},{},[624,626],{"type":45,"value":625},"Run this skill's static helpers when useful:\n",{"type":40,"tag":77,"props":627,"children":628},{},[629,638,647],{"type":40,"tag":81,"props":630,"children":631},{},[632],{"type":40,"tag":87,"props":633,"children":635},{"className":634},[],[636],{"type":45,"value":637},"python3 \u003Cinstalled-skill-path>\u002Fscripts\u002Fverify_capi_secret_not_exposed.py \u003Crepo>",{"type":40,"tag":81,"props":639,"children":640},{},[641],{"type":40,"tag":87,"props":642,"children":644},{"className":643},[],[645],{"type":45,"value":646},"python3 \u003Cinstalled-skill-path>\u002Fscripts\u002Fverify_ads_setup.py \u003Crepo> --pixel-id \u003Cid> --require pixel --require capi",{"type":40,"tag":81,"props":648,"children":649},{},[650,652,658],{"type":45,"value":651},"For Pixel+CAPI web dedupe, add ",{"type":40,"tag":87,"props":653,"children":655},{"className":654},[],[656],{"type":45,"value":657},"--require dedupe --require shared-pixel-id --require oppref --require source-url",{"type":45,"value":110},{"type":40,"tag":81,"props":660,"children":661},{},[662],{"type":45,"value":663},"These helpers run locally. By default, they report paths, line numbers, rules, and summaries without printing source-line context or transmitting repository contents.",{"type":40,"tag":81,"props":665,"children":666},{},[667],{"type":45,"value":668},"If verification cannot run, report the blocker and the residual risk.",{"type":40,"tag":81,"props":670,"children":671},{},[672,674],{"type":45,"value":673},"Produce a setup report.",{"type":40,"tag":77,"props":675,"children":676},{},[677,703,708],{"type":40,"tag":81,"props":678,"children":679},{},[680,682,687,689,694,696,701],{"type":45,"value":681},"Include changed files, detected stack, setup mode, existing OpenAI Ads instrumentation found, events added or changed in this run, events already covered, supported events skipped with reasons, optional follow-up events the advertiser can add if desired, skipped surfaces\u002Fplatforms, Pixel ID\u002Fconfig reference, Pixel user-data strategy, Pixel opt-out behavior, CAPI secret reference, CAPI ",{"type":40,"tag":87,"props":683,"children":685},{"className":684},[],[686],{"type":45,"value":296},{"type":45,"value":688}," strategy, CAPI ",{"type":40,"tag":87,"props":690,"children":692},{"className":691},[],[693],{"type":45,"value":304},{"type":45,"value":695}," strategy, browser-provided ",{"type":40,"tag":87,"props":697,"children":699},{"className":698},[],[700],{"type":45,"value":327},{"type":45,"value":702}," trust boundary, CAPI user-data strategy, event deduplication strategy, checks run, manual follow-ups, and risks.",{"type":40,"tag":81,"props":704,"children":705},{},[706],{"type":45,"value":707},"Do not include raw secrets or sensitive advertiser source snippets.",{"type":40,"tag":81,"props":709,"children":710},{},[711],{"type":45,"value":712},"End with a clear deployment review warning: before deploying, the advertiser should review that the implementation satisfies their privacy, security, consent, and data handling requirements.",{"type":40,"tag":48,"props":714,"children":716},{"id":715},"incremental-reruns",[717],{"type":45,"value":718},"Incremental Reruns",{"type":40,"tag":55,"props":720,"children":721},{},[722],{"type":45,"value":723},"When rerunning this skill on a repository that may already have OpenAI Ads instrumentation:",{"type":40,"tag":77,"props":725,"children":726},{},[727,753,758,763,768,773,778,783],{"type":40,"tag":81,"props":728,"children":729},{},[730,732,737,739,744,746,751],{"type":45,"value":731},"Build an inventory first: Pixel init locations, CAPI clients, event helpers, analytics sinks, event call sites, Pixel ID\u002Fconfig sources, ",{"type":40,"tag":87,"props":733,"children":735},{"className":734},[],[736],{"type":45,"value":283},{"type":45,"value":738}," generation, ",{"type":40,"tag":87,"props":740,"children":742},{"className":741},[],[743],{"type":45,"value":296},{"type":45,"value":745}," and ",{"type":40,"tag":87,"props":747,"children":749},{"className":748},[],[750],{"type":45,"value":304},{"type":45,"value":752}," handling, user-data handling, tests, and docs.",{"type":40,"tag":81,"props":754,"children":755},{},[756],{"type":45,"value":757},"Treat existing OpenAI Ads integration surfaces as canonical. Extend the existing helper\u002Fclient\u002Fadapter instead of creating a second Pixel initializer, second CAPI client, second config convention, or scattered one-off call sites.",{"type":40,"tag":81,"props":759,"children":760},{},[761],{"type":45,"value":762},"Compare current app flows against the existing event inventory. Add only missing coverage at confirmed success boundaries.",{"type":40,"tag":81,"props":764,"children":765},{},[766],{"type":45,"value":767},"Check duplicate-risk before editing: a new page or flow may already publish through a shared cart service, checkout service, confirmation component, analytics wrapper, or server conversion helper.",{"type":40,"tag":81,"props":769,"children":770},{},[771],{"type":45,"value":772},"Preserve existing dedupe, Pixel ID, attribution, user-data, failure-handling, test, and reporting patterns unless they are unsafe or incompatible with current docs.",{"type":40,"tag":81,"props":774,"children":775},{},[776],{"type":45,"value":777},"If another ad platform already publishes from a new flow but OpenAI Ads does not, treat that as a strong signal of missing OpenAI Ads coverage. Still map it to documented OpenAI Ads event names and payload fields.",{"type":40,"tag":81,"props":779,"children":780},{},[781],{"type":45,"value":782},"Keep rerun diffs focused. Do not churn env templates, setup docs, or shared helpers unless the extension requires it or they are stale.",{"type":40,"tag":81,"props":784,"children":785},{},[786],{"type":45,"value":787},"In the final report, separate existing events found, new events added, events skipped because they are already covered, and optional follow-ups.",{"type":40,"tag":48,"props":789,"children":791},{"id":790},"pixel-rules",[792],{"type":45,"value":793},"Pixel Rules",{"type":40,"tag":55,"props":795,"children":796},{},[797,799,805],{"type":45,"value":798},"Use ",{"type":40,"tag":87,"props":800,"children":802},{"className":801},[],[803],{"type":45,"value":804},"references\u002Fmeasurement-pixel.md",{"type":45,"value":806}," for browser Pixel details.",{"type":40,"tag":77,"props":808,"children":809},{},[810,815,843,848,853,858,863,889,909,975],{"type":40,"tag":81,"props":811,"children":812},{},[813],{"type":45,"value":814},"Initialize in a client-only location that runs once per page\u002Fapp load.",{"type":40,"tag":81,"props":816,"children":817},{},[818,820,826,828,834,836,842],{"type":45,"value":819},"Use the documented browser SDK pattern: load ",{"type":40,"tag":87,"props":821,"children":823},{"className":822},[],[824],{"type":45,"value":825},"https:\u002F\u002Fbzrcdn.openai.com\u002Fsdk\u002Foaiq.min.js",{"type":45,"value":827},", initialize with ",{"type":40,"tag":87,"props":829,"children":831},{"className":830},[],[832],{"type":45,"value":833},"oaiq(\"init\", { pixelId })",{"type":45,"value":835},", and emit events with ",{"type":40,"tag":87,"props":837,"children":839},{"className":838},[],[840],{"type":45,"value":841},"oaiq(\"measure\", ...)",{"type":45,"value":110},{"type":40,"tag":81,"props":844,"children":845},{},[846],{"type":45,"value":847},"Use Pixel only for browser JavaScript\u002FTypeScript surfaces supported by current docs. For mobile\u002Fnative or unsupported frontends, skip Pixel and prefer CAPI-only when a server conversion boundary exists.",{"type":40,"tag":81,"props":849,"children":850},{},[851],{"type":45,"value":852},"Avoid duplicate initialization across route transitions, hydration, tests, or nested layouts.",{"type":40,"tag":81,"props":854,"children":855},{},[856],{"type":45,"value":857},"Instrument conversion events close to the confirmed success boundary, not merely on button click unless the click itself is the conversion.",{"type":40,"tag":81,"props":859,"children":860},{},[861],{"type":45,"value":862},"Respect consent and privacy gating patterns already present in the repository.",{"type":40,"tag":81,"props":864,"children":865},{},[866,868,873,874,879,881,887],{"type":45,"value":867},"Do not manually send Pixel ",{"type":40,"tag":87,"props":869,"children":871},{"className":870},[],[872],{"type":45,"value":296},{"type":45,"value":94},{"type":40,"tag":87,"props":875,"children":877},{"className":876},[],[878],{"type":45,"value":304},{"type":45,"value":880},", timestamps, or batching metadata; the browser SDK handles those transport details. Add ",{"type":40,"tag":87,"props":882,"children":884},{"className":883},[],[885],{"type":45,"value":886},"debug: true",{"type":45,"value":888}," only for local\u002Ftest debugging, not as a committed production default.",{"type":40,"tag":81,"props":890,"children":891},{},[892,894,899,901,907],{"type":45,"value":893},"If documented Pixel user data becomes available after initial page-load initialization, call ",{"type":40,"tag":87,"props":895,"children":897},{"className":896},[],[898],{"type":45,"value":579},{"type":45,"value":900}," again with only documented, normalized fields. For checkout, signup, lead, subscription, or registration flows where the browser has email or location data before or after the confirmed conversion, add this second init unless consent, opt-out, or repository policy prevents it, and report any skip. Preserve the repository's existing consent gates for whether measurement and user-data collection are allowed. Put ",{"type":40,"tag":87,"props":902,"children":904},{"className":903},[],[905],{"type":45,"value":906},"opt_out",{"type":45,"value":908}," on the Pixel event options when measurement is allowed but the event should be opted out of future user-level personalization.",{"type":40,"tag":81,"props":910,"children":911},{},[912,914,919,920,925,926,931,932,937,938,943,944,949,950,955,956,961,962,967,968,973],{"type":45,"value":913},"Use supported standard event names from current docs, such as ",{"type":40,"tag":87,"props":915,"children":917},{"className":916},[],[918],{"type":45,"value":386},{"type":45,"value":94},{"type":40,"tag":87,"props":921,"children":923},{"className":922},[],[924],{"type":45,"value":393},{"type":45,"value":94},{"type":40,"tag":87,"props":927,"children":929},{"className":928},[],[930],{"type":45,"value":400},{"type":45,"value":94},{"type":40,"tag":87,"props":933,"children":935},{"className":934},[],[936],{"type":45,"value":407},{"type":45,"value":94},{"type":40,"tag":87,"props":939,"children":941},{"className":940},[],[942],{"type":45,"value":414},{"type":45,"value":94},{"type":40,"tag":87,"props":945,"children":947},{"className":946},[],[948],{"type":45,"value":421},{"type":45,"value":94},{"type":40,"tag":87,"props":951,"children":953},{"className":952},[],[954],{"type":45,"value":428},{"type":45,"value":94},{"type":40,"tag":87,"props":957,"children":959},{"className":958},[],[960],{"type":45,"value":435},{"type":45,"value":94},{"type":40,"tag":87,"props":963,"children":965},{"className":964},[],[966],{"type":45,"value":442},{"type":45,"value":102},{"type":40,"tag":87,"props":969,"children":971},{"className":970},[],[972],{"type":45,"value":450},{"type":45,"value":974},". If uncertain, use the closest documented event or leave an explicit follow-up instead of inventing a name.",{"type":40,"tag":81,"props":976,"children":977},{},[978,980,986,988,994],{"type":45,"value":979},"Custom events are a fallback when no standard event fits. Use ",{"type":40,"tag":87,"props":981,"children":983},{"className":982},[],[984],{"type":45,"value":985},"custom",{"type":45,"value":987}," only with a valid, documented ",{"type":40,"tag":87,"props":989,"children":991},{"className":990},[],[992],{"type":45,"value":993},"custom_event_name",{"type":45,"value":110},{"type":40,"tag":48,"props":996,"children":998},{"id":997},"capi-rules",[999],{"type":45,"value":1000},"CAPI Rules",{"type":40,"tag":55,"props":1002,"children":1003},{},[1004,1005,1011],{"type":45,"value":798},{"type":40,"tag":87,"props":1006,"children":1008},{"className":1007},[],[1009],{"type":45,"value":1010},"references\u002Fconversions-api.md",{"type":45,"value":1012}," for server-side setup details.",{"type":40,"tag":77,"props":1014,"children":1015},{},[1016,1021,1026,1031,1036,1041,1053,1152,1171,1191,1204,1216,1221],{"type":40,"tag":81,"props":1017,"children":1018},{},[1019],{"type":45,"value":1020},"CAPI code must run server-side only.",{"type":40,"tag":81,"props":1022,"children":1023},{},[1024],{"type":45,"value":1025},"Do not create, request, store, or print CAPI keys.",{"type":40,"tag":81,"props":1027,"children":1028},{},[1029],{"type":45,"value":1030},"Prefer an existing secret manager\u002Fenv retrieval pattern; otherwise add a placeholder config reference and report that the user must provision the secret.",{"type":40,"tag":81,"props":1032,"children":1033},{},[1034],{"type":45,"value":1035},"Use existing HTTP clients, retry conventions, telemetry, and privacy filters.",{"type":40,"tag":81,"props":1037,"children":1038},{},[1039],{"type":45,"value":1040},"Do not add new queues, databases, background jobs, or broad infra unless the user explicitly asks.",{"type":40,"tag":81,"props":1042,"children":1043},{},[1044,1046,1051],{"type":45,"value":1045},"If Pixel and CAPI both emit the same conversion, use the same Pixel ID, event name, and ",{"type":40,"tag":87,"props":1047,"children":1049},{"className":1048},[],[1050],{"type":45,"value":283},{"type":45,"value":1052}," in both paths.",{"type":40,"tag":81,"props":1054,"children":1055},{},[1056,1058,1064,1066,1071,1073,1078,1080,1085,1087,1092,1094,1100,1102,1108,1109,1115,1116,1122,1123,1129,1130,1136,1137,1143,1145,1151],{"type":45,"value":1057},"For web CAPI events, include ",{"type":40,"tag":87,"props":1059,"children":1061},{"className":1060},[],[1062],{"type":45,"value":1063},"action_source: \"web\"",{"type":45,"value":1065}," and a sanitized HTTP(S) ",{"type":40,"tag":87,"props":1067,"children":1069},{"className":1068},[],[1070],{"type":45,"value":304},{"type":45,"value":1072}," containing only origin plus pathname. Strip query strings and fragments before sending; reject or replace non-HTTP(S) URL schemes with a trusted configured web app URL. For deduped Pixel+CAPI events, prefer a ",{"type":40,"tag":87,"props":1074,"children":1076},{"className":1075},[],[1077],{"type":45,"value":304},{"type":45,"value":1079}," from the same browser conversion context as the paired Pixel event. If accepting a browser-provided ",{"type":40,"tag":87,"props":1081,"children":1083},{"className":1082},[],[1084],{"type":45,"value":327},{"type":45,"value":1086},", require its origin to match the current request origin or a configured canonical site origin before using it; otherwise fall back to a server-derived URL. When a configured canonical site origin exists, use it as the preferred fallback origin and do not let request service\u002Fproxy origins override it. If the final CAPI ",{"type":40,"tag":87,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":45,"value":304},{"type":45,"value":1093}," intentionally differs from the Pixel event's browser page, call that out in the setup report. For non-web server conversions, choose the documented ",{"type":40,"tag":87,"props":1095,"children":1097},{"className":1096},[],[1098],{"type":45,"value":1099},"action_source",{"type":45,"value":1101}," that matches the source (",{"type":40,"tag":87,"props":1103,"children":1105},{"className":1104},[],[1106],{"type":45,"value":1107},"mobile_app",{"type":45,"value":94},{"type":40,"tag":87,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":45,"value":1114},"offline",{"type":45,"value":94},{"type":40,"tag":87,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":45,"value":1121},"physical_store",{"type":45,"value":94},{"type":40,"tag":87,"props":1124,"children":1126},{"className":1125},[],[1127],{"type":45,"value":1128},"phone_call",{"type":45,"value":94},{"type":40,"tag":87,"props":1131,"children":1133},{"className":1132},[],[1134],{"type":45,"value":1135},"email",{"type":45,"value":102},{"type":40,"tag":87,"props":1138,"children":1140},{"className":1139},[],[1141],{"type":45,"value":1142},"other",{"type":45,"value":1144},") instead of forcing ",{"type":40,"tag":87,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":45,"value":1150},"web",{"type":45,"value":110},{"type":40,"tag":81,"props":1153,"children":1154},{},[1155,1157,1162,1164,1169],{"type":45,"value":1156},"Treat ",{"type":40,"tag":87,"props":1158,"children":1160},{"className":1159},[],[1161],{"type":45,"value":296},{"type":45,"value":1163}," as opaque attribution context. Prefer a server-readable ",{"type":40,"tag":87,"props":1165,"children":1167},{"className":1166},[],[1168],{"type":45,"value":312},{"type":45,"value":1170}," cookie over client-supplied request context; pass the raw value unchanged and do not parse, URL-decode, cookie-decode, generate, transform, or log it.",{"type":40,"tag":81,"props":1172,"children":1173},{},[1174,1176,1182,1184,1189],{"type":45,"value":1175},"Use CAPI ",{"type":40,"tag":87,"props":1177,"children":1179},{"className":1178},[],[1180],{"type":45,"value":1181},"events[].user",{"type":45,"value":1183}," only for documented fields already available through an approved repository pattern. Never send raw email or raw external IDs. For CAPI-only web conversions, make a best effort to include client ",{"type":40,"tag":87,"props":1185,"children":1187},{"className":1186},[],[1188],{"type":45,"value":360},{"type":45,"value":1190},", trusted client IP, and hashed email or external ID when available; these fields are especially important when there is no paired Pixel event.",{"type":40,"tag":81,"props":1192,"children":1193},{},[1194,1196,1202],{"type":45,"value":1195},"Use current event timestamps in ",{"type":40,"tag":87,"props":1197,"children":1199},{"className":1198},[],[1200],{"type":45,"value":1201},"timestamp_ms",{"type":45,"value":1203},"; do not send stale backfills older than the documented window or future-dated events.",{"type":40,"tag":81,"props":1205,"children":1206},{},[1207,1209,1214],{"type":45,"value":1208},"Preserve existing opt-out\u002Fconsent semantics and map them to documented ",{"type":40,"tag":87,"props":1210,"children":1212},{"className":1211},[],[1213],{"type":45,"value":906},{"type":45,"value":1215}," fields when the repository has a relevant user-level personalization opt-out.",{"type":40,"tag":81,"props":1217,"children":1218},{},[1219],{"type":45,"value":1220},"CAPI failure handling must not throw into checkout, signup, lead submission, or other core success paths. Wrap event construction, source URL derivation, user-data hashing, timeout setup, and dispatch in the same non-blocking failure boundary. Prefer existing background-task or queue patterns; if none exist, use a bounded fire-and-log implementation and document remaining latency risk.",{"type":40,"tag":81,"props":1222,"children":1223},{},[1224,1226,1232,1234,1240,1242,1248],{"type":45,"value":1225},"For ",{"type":40,"tag":87,"props":1227,"children":1229},{"className":1228},[],[1230],{"type":45,"value":1231},"contents",{"type":45,"value":1233}," payloads, use top-level ",{"type":40,"tag":87,"props":1235,"children":1237},{"className":1236},[],[1238],{"type":45,"value":1239},"data.amount",{"type":45,"value":1241}," for the event total. For item-level ",{"type":40,"tag":87,"props":1243,"children":1245},{"className":1244},[],[1246],{"type":45,"value":1247},"contents[].amount",{"type":45,"value":1249},", use the unit price when the repository exposes it; omit item-level amount if only line totals are available or the semantics are unclear.",{"type":40,"tag":48,"props":1251,"children":1253},{"id":1252},"framework-hints",[1254],{"type":45,"value":1255},"Framework Hints",{"type":40,"tag":55,"props":1257,"children":1258},{},[1259,1260,1266],{"type":45,"value":798},{"type":40,"tag":87,"props":1261,"children":1263},{"className":1262},[],[1264],{"type":45,"value":1265},"references\u002Fframework-patterns.md",{"type":45,"value":1267}," for common locations and pitfalls in Next.js, React\u002FVite, Remix, Express, Rails, Django, Flask, and monorepos.",{"type":40,"tag":55,"props":1269,"children":1270},{},[1271],{"type":45,"value":1272},"Treat these as hints, not rules. The repository's existing conventions win.",{"type":40,"tag":48,"props":1274,"children":1276},{"id":1275},"verification-and-reporting",[1277],{"type":45,"value":1278},"Verification And Reporting",{"type":40,"tag":55,"props":1280,"children":1281},{},[1282,1283,1289,1291,1297],{"type":45,"value":798},{"type":40,"tag":87,"props":1284,"children":1286},{"className":1285},[],[1287],{"type":45,"value":1288},"references\u002Fverification-checklist.md",{"type":45,"value":1290}," for validation steps and ",{"type":40,"tag":87,"props":1292,"children":1294},{"className":1293},[],[1295],{"type":45,"value":1296},"references\u002Freport-schema.md",{"type":45,"value":1298}," for the final setup report format.",{"type":40,"tag":55,"props":1300,"children":1301},{},[1302],{"type":45,"value":1303},"High-priority failure cases:",{"type":40,"tag":77,"props":1305,"children":1306},{},[1307,1312,1317,1322,1327,1332,1343,1363,1375,1393,1404,1423,1434,1446,1458,1469,1474,1487,1499,1504,1509],{"type":40,"tag":81,"props":1308,"children":1309},{},[1310],{"type":45,"value":1311},"CAPI secret or API key appears in client code, browser-visible env vars, logs, comments, generated docs, snapshots, or reports.",{"type":40,"tag":81,"props":1313,"children":1314},{},[1315],{"type":45,"value":1316},"Pixel initialization can run multiple times in normal navigation.",{"type":40,"tag":81,"props":1318,"children":1319},{},[1320],{"type":45,"value":1321},"CAPI code can run from a browser bundle.",{"type":40,"tag":81,"props":1323,"children":1324},{},[1325],{"type":45,"value":1326},"Pixel and CAPI duplicate the same event without the same logical Pixel ID and shared dedupe key.",{"type":40,"tag":81,"props":1328,"children":1329},{},[1330],{"type":45,"value":1331},"OpenAI Ads event names are invented or unsupported by current docs.",{"type":40,"tag":81,"props":1333,"children":1334},{},[1335,1337,1342],{"type":45,"value":1336},"CAPI payload uses undocumented or legacy field names, mismatched event\u002Fdata types, or web events without a sanitized ",{"type":40,"tag":87,"props":1338,"children":1340},{"className":1339},[],[1341],{"type":45,"value":304},{"type":45,"value":110},{"type":40,"tag":81,"props":1344,"children":1345},{},[1346,1348,1353,1355,1361],{"type":45,"value":1347},"Pixel user data is attached to ",{"type":40,"tag":87,"props":1349,"children":1351},{"className":1350},[],[1352],{"type":45,"value":595},{"type":45,"value":1354}," instead of ",{"type":40,"tag":87,"props":1356,"children":1358},{"className":1357},[],[1359],{"type":45,"value":1360},"init",{"type":45,"value":1362},", includes undocumented\u002Fraw identity fields, or bypasses the repository's existing consent gates.",{"type":40,"tag":81,"props":1364,"children":1365},{},[1366,1368,1373],{"type":45,"value":1367},"CAPI ",{"type":40,"tag":87,"props":1369,"children":1371},{"className":1370},[],[1372],{"type":45,"value":1201},{"type":45,"value":1374}," is stale, future-dated beyond the documented allowance, or not tied to the actual conversion time.",{"type":40,"tag":81,"props":1376,"children":1377},{},[1378,1380,1385,1387,1392],{"type":45,"value":1379},"CAPI action source is forced to ",{"type":40,"tag":87,"props":1381,"children":1383},{"className":1382},[],[1384],{"type":45,"value":1150},{"type":45,"value":1386}," for non-web\u002Fmobile\u002Foffline events instead of using an appropriate documented ",{"type":40,"tag":87,"props":1388,"children":1390},{"className":1389},[],[1391],{"type":45,"value":1099},{"type":45,"value":110},{"type":40,"tag":81,"props":1394,"children":1395},{},[1396,1398,1403],{"type":45,"value":1397},"CAPI custom event names are placed in the wrong field, or Pixel custom events omit the options-level ",{"type":40,"tag":87,"props":1399,"children":1401},{"className":1400},[],[1402],{"type":45,"value":993},{"type":45,"value":110},{"type":40,"tag":81,"props":1405,"children":1406},{},[1407,1409,1414,1416,1421],{"type":45,"value":1408},"CAPI web events ignore available ",{"type":40,"tag":87,"props":1410,"children":1412},{"className":1411},[],[1413],{"type":45,"value":296},{"type":45,"value":1415}," context or log ",{"type":40,"tag":87,"props":1417,"children":1419},{"className":1418},[],[1420],{"type":45,"value":296},{"type":45,"value":1422}," alongside raw identifiers.",{"type":40,"tag":81,"props":1424,"children":1425},{},[1426,1427,1432],{"type":45,"value":1367},{"type":40,"tag":87,"props":1428,"children":1430},{"className":1429},[],[1431],{"type":45,"value":304},{"type":45,"value":1433}," accepts non-HTTP(S) schemes or preserves query strings\u002Ffragments.",{"type":40,"tag":81,"props":1435,"children":1436},{},[1437,1439,1444],{"type":45,"value":1438},"CAPI decodes or transforms ",{"type":40,"tag":87,"props":1440,"children":1442},{"className":1441},[],[1443],{"type":45,"value":296},{"type":45,"value":1445}," instead of passing the raw opaque value through unchanged.",{"type":40,"tag":81,"props":1447,"children":1448},{},[1449,1451,1456],{"type":45,"value":1450},"CAPI uses a browser-provided ",{"type":40,"tag":87,"props":1452,"children":1454},{"className":1453},[],[1455],{"type":45,"value":327},{"type":45,"value":1457}," with an untrusted origin instead of falling back to a server-derived URL.",{"type":40,"tag":81,"props":1459,"children":1460},{},[1461,1463,1468],{"type":45,"value":1462},"CAPI lets request service\u002Fproxy origins override a configured canonical site origin when constructing fallback ",{"type":40,"tag":87,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":45,"value":304},{"type":45,"value":110},{"type":40,"tag":81,"props":1470,"children":1471},{},[1472],{"type":45,"value":1473},"Existing consent or user-level personalization opt-out behavior is bypassed or lost.",{"type":40,"tag":81,"props":1475,"children":1476},{},[1477,1479,1485],{"type":45,"value":1478},"Pixel is installed but available checkout\u002Fsignup\u002Flead user matching data is neither sent through a second ",{"type":40,"tag":87,"props":1480,"children":1482},{"className":1481},[],[1483],{"type":45,"value":1484},"init({ user })",{"type":45,"value":1486}," call nor explicitly skipped with a consent\u002Fpolicy reason.",{"type":40,"tag":81,"props":1488,"children":1489},{},[1490,1492,1497],{"type":45,"value":1491},"Deduped Pixel+CAPI events derive materially different browser context or ",{"type":40,"tag":87,"props":1493,"children":1495},{"className":1494},[],[1496],{"type":45,"value":304},{"type":45,"value":1498}," without explanation.",{"type":40,"tag":81,"props":1500,"children":1501},{},[1502],{"type":45,"value":1503},"The setup report does not explain why plausible supported events were skipped.",{"type":40,"tag":81,"props":1505,"children":1506},{},[1507],{"type":45,"value":1508},"The patch instruments likely pre-conversion intent instead of confirmed conversion success.",{"type":40,"tag":81,"props":1510,"children":1511},{},[1512],{"type":45,"value":1513},"Any CAPI setup step, including event construction before dispatch, can fail or materially delay the core business flow.",{"type":40,"tag":48,"props":1515,"children":1517},{"id":1516},"when-to-stop-and-ask",[1518],{"type":45,"value":1519},"When To Stop And Ask",{"type":40,"tag":55,"props":1521,"children":1522},{},[1523],{"type":45,"value":1524},"Ask before proceeding when:",{"type":40,"tag":77,"props":1526,"children":1527},{},[1528,1533,1538,1543,1548,1553],{"type":40,"tag":81,"props":1529,"children":1530},{},[1531],{"type":45,"value":1532},"The conversion event boundary is unclear.",{"type":40,"tag":81,"props":1534,"children":1535},{},[1536],{"type":45,"value":1537},"CAPI is requested but no server runtime or secret pattern exists.",{"type":40,"tag":81,"props":1539,"children":1540},{},[1541],{"type":45,"value":1542},"Exact OpenAI Ads SDK\u002FAPI syntax cannot be verified from docs or provided context.",{"type":40,"tag":81,"props":1544,"children":1545},{},[1546],{"type":45,"value":1547},"Pixel is requested but the repository has no browser JavaScript\u002FTypeScript surface and no safe browser insertion point.",{"type":40,"tag":81,"props":1549,"children":1550},{},[1551],{"type":45,"value":1552},"The only viable implementation would require new infrastructure, a deploy step, or changing authentication\u002Fcheckout behavior.",{"type":40,"tag":81,"props":1554,"children":1555},{},[1556],{"type":45,"value":1557},"The user provides or asks you to embed a raw CAPI key in the repository.",{"items":1559,"total":1680},[1560,1578,1594,1606,1626,1648,1668],{"slug":1561,"name":1561,"fn":1562,"description":1563,"org":1564,"tags":1565,"stars":23,"repoUrl":24,"updatedAt":25},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1566,1569,1572,1575],{"name":1567,"slug":1568,"type":15},"Accessibility","accessibility",{"name":1570,"slug":1571,"type":15},"Charts","charts",{"name":1573,"slug":1574,"type":15},"Data Visualization","data-visualization",{"name":1576,"slug":1577,"type":15},"Design","design",{"slug":1579,"name":1579,"fn":1580,"description":1581,"org":1582,"tags":1583,"stars":23,"repoUrl":24,"updatedAt":1593},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1584,1587,1590],{"name":1585,"slug":1586,"type":15},"Agents","agents",{"name":1588,"slug":1589,"type":15},"Browser Automation","browser-automation",{"name":1591,"slug":1592,"type":15},"Testing","testing","2026-04-06T18:41:03.44016",{"slug":1595,"name":1595,"fn":1596,"description":1597,"org":1598,"tags":1599,"stars":23,"repoUrl":24,"updatedAt":1605},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1600,1601,1604],{"name":1588,"slug":1589,"type":15},{"name":1602,"slug":1603,"type":15},"Local Development","local-development",{"name":1591,"slug":1592,"type":15},"2026-04-06T18:41:17.526867",{"slug":1607,"name":1607,"fn":1608,"description":1609,"org":1610,"tags":1611,"stars":23,"repoUrl":24,"updatedAt":1625},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1612,1613,1616,1619,1622],{"name":1585,"slug":1586,"type":15},{"name":1614,"slug":1615,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":1617,"slug":1618,"type":15},"SDK","sdk",{"name":1620,"slug":1621,"type":15},"Serverless","serverless",{"name":1623,"slug":1624,"type":15},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":1627,"name":1627,"fn":1628,"description":1629,"org":1630,"tags":1631,"stars":23,"repoUrl":24,"updatedAt":1647},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1632,1635,1638,1641,1644],{"name":1633,"slug":1634,"type":15},"Frontend","frontend",{"name":1636,"slug":1637,"type":15},"React","react",{"name":1639,"slug":1640,"type":15},"shadcn\u002Fui","shadcn-ui",{"name":1642,"slug":1643,"type":15},"UI Components","ui-components",{"name":1645,"slug":1646,"type":15},"Vercel","vercel","2026-04-06T18:40:59.619419",{"slug":1649,"name":1649,"fn":1650,"description":1651,"org":1652,"tags":1653,"stars":23,"repoUrl":24,"updatedAt":1667},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1654,1657,1660,1663,1666],{"name":1655,"slug":1656,"type":15},"AI Infrastructure","ai-infrastructure",{"name":1658,"slug":1659,"type":15},"Cost Optimization","cost-optimization",{"name":1661,"slug":1662,"type":15},"LLM","llm",{"name":1664,"slug":1665,"type":15},"Performance","performance",{"name":1645,"slug":1646,"type":15},"2026-04-06T18:40:44.377464",{"slug":1669,"name":1669,"fn":1670,"description":1671,"org":1672,"tags":1673,"stars":23,"repoUrl":24,"updatedAt":1679},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1674,1675,1678],{"name":1658,"slug":1659,"type":15},{"name":1676,"slug":1677,"type":15},"Database","database",{"name":1661,"slug":1662,"type":15},"2026-04-06T18:41:08.513425",600,{"items":1682,"total":1877},[1683,1704,1727,1744,1758,1775,1794,1806,1820,1834,1846,1861],{"slug":1684,"name":1684,"fn":1685,"description":1686,"org":1687,"tags":1688,"stars":1701,"repoUrl":1702,"updatedAt":1703},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1689,1692,1695,1698],{"name":1690,"slug":1691,"type":15},"Documents","documents",{"name":1693,"slug":1694,"type":15},"Healthcare","healthcare",{"name":1696,"slug":1697,"type":15},"Insurance","insurance",{"name":1699,"slug":1700,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":1705,"name":1705,"fn":1706,"description":1707,"org":1708,"tags":1709,"stars":1724,"repoUrl":1725,"updatedAt":1726},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1710,1713,1715,1718,1721],{"name":1711,"slug":1712,"type":15},".NET","dotnet",{"name":1714,"slug":1705,"type":15},"ASP.NET Core",{"name":1716,"slug":1717,"type":15},"Blazor","blazor",{"name":1719,"slug":1720,"type":15},"C#","csharp",{"name":1722,"slug":1723,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":1728,"name":1728,"fn":1729,"description":1730,"org":1731,"tags":1732,"stars":1724,"repoUrl":1725,"updatedAt":1743},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1733,1736,1739,1742],{"name":1734,"slug":1735,"type":15},"Apps SDK","apps-sdk",{"name":1737,"slug":1738,"type":15},"ChatGPT","chatgpt",{"name":1740,"slug":1741,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":1745,"name":1745,"fn":1746,"description":1747,"org":1748,"tags":1749,"stars":1724,"repoUrl":1725,"updatedAt":1757},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1750,1751,1754],{"name":21,"slug":22,"type":15},{"name":1752,"slug":1753,"type":15},"CLI","cli",{"name":1755,"slug":1756,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":1759,"name":1759,"fn":1760,"description":1761,"org":1762,"tags":1763,"stars":1724,"repoUrl":1725,"updatedAt":1774},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1764,1767,1770,1771],{"name":1765,"slug":1766,"type":15},"Cloudflare","cloudflare",{"name":1768,"slug":1769,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":1614,"slug":1615,"type":15},{"name":1772,"slug":1773,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":1776,"name":1776,"fn":1777,"description":1778,"org":1779,"tags":1780,"stars":1724,"repoUrl":1725,"updatedAt":1793},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1781,1784,1787,1790],{"name":1782,"slug":1783,"type":15},"Productivity","productivity",{"name":1785,"slug":1786,"type":15},"Project Management","project-management",{"name":1788,"slug":1789,"type":15},"Strategy","strategy",{"name":1791,"slug":1792,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":1795,"name":1795,"fn":1796,"description":1797,"org":1798,"tags":1799,"stars":1724,"repoUrl":1725,"updatedAt":1805},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1800,1801,1803,1804],{"name":1576,"slug":1577,"type":15},{"name":1802,"slug":1795,"type":15},"Figma",{"name":1633,"slug":1634,"type":15},{"name":1740,"slug":1741,"type":15},"2026-04-12T05:06:47.939943",{"slug":1807,"name":1807,"fn":1808,"description":1809,"org":1810,"tags":1811,"stars":1724,"repoUrl":1725,"updatedAt":1819},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1812,1813,1816,1817,1818],{"name":1576,"slug":1577,"type":15},{"name":1814,"slug":1815,"type":15},"Design System","design-system",{"name":1802,"slug":1795,"type":15},{"name":1633,"slug":1634,"type":15},{"name":1642,"slug":1643,"type":15},"2026-05-10T05:59:52.971881",{"slug":1821,"name":1821,"fn":1822,"description":1823,"org":1824,"tags":1825,"stars":1724,"repoUrl":1725,"updatedAt":1833},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1826,1827,1828,1831,1832],{"name":1576,"slug":1577,"type":15},{"name":1814,"slug":1815,"type":15},{"name":1829,"slug":1830,"type":15},"Documentation","documentation",{"name":1802,"slug":1795,"type":15},{"name":1633,"slug":1634,"type":15},"2026-05-16T06:07:47.821474",{"slug":1835,"name":1835,"fn":1836,"description":1837,"org":1838,"tags":1839,"stars":1724,"repoUrl":1725,"updatedAt":1845},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1840,1841,1842,1843,1844],{"name":1576,"slug":1577,"type":15},{"name":1802,"slug":1795,"type":15},{"name":1633,"slug":1634,"type":15},{"name":1642,"slug":1643,"type":15},{"name":1722,"slug":1723,"type":15},"2026-05-16T06:07:40.583615",{"slug":1847,"name":1847,"fn":1848,"description":1849,"org":1850,"tags":1851,"stars":1724,"repoUrl":1725,"updatedAt":1860},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1852,1855,1856,1859],{"name":1853,"slug":1854,"type":15},"Animation","animation",{"name":1755,"slug":1756,"type":15},{"name":1857,"slug":1858,"type":15},"Creative","creative",{"name":1576,"slug":1577,"type":15},"2026-05-02T05:31:48.48485",{"slug":1862,"name":1862,"fn":1863,"description":1864,"org":1865,"tags":1866,"stars":1724,"repoUrl":1725,"updatedAt":1876},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1867,1868,1869,1872,1875],{"name":1857,"slug":1858,"type":15},{"name":1576,"slug":1577,"type":15},{"name":1870,"slug":1871,"type":15},"Image Generation","image-generation",{"name":1873,"slug":1874,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675]