Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion SOURCE_DIGEST
Original file line number Diff line number Diff line change
@@ -1 +1 @@
03ba7c5041e88c5d038009c6479ed6918791c269068cb4e6f2203f428e441b74
7aab66928511bcdaed9ce5e4d2e8d8cc643b80a3c2255c5d2aa609b9095960aa
4 changes: 3 additions & 1 deletion skills/manage-a-campaign/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ Ground every recommendation and change in the current campaign, delivery, and cr
3. For delivery questions, call `get_delivery` with `report: "campaign_delivery"`, the narrowest useful campaign or media-buy filters, and an explicit inclusive UTC `range` no longer than 90 days. Choose only needed metrics and dimensions. Follow pagination with the unchanged query and returned cursor.
4. Report delivery evidence with its denomination, freshness, finality, missing values, and truncation. Distinguish observed facts from recommendations; do not turn missing measurement into zero performance.
5. Inspect related creatives or creative collections with `search` and `get` when readiness or delivery indicates a creative issue. Do not claim approval, attachment, or provider propagation unless returned evidence proves it.
- `save_creative` manages only creative-manifest metadata: name, message, and format kind. If the request means uploading or attaching a file, URL, or external asset, stop and explain that the current V3 tool cannot perform it.
- For a local JPEG, PNG, or eligible MP4, call `upload_creative_asset` with the exact buyer-owned `advertiserId`. When the upload is intended for a campaign, also pass `campaign_composition` with its exact `campaign_id` and matching `advertiser_id`; that context does not itself associate the upload. The Task app, not the model, handles the file bytes.
- After the Task finalizes a JPEG or PNG and returns its private source reference, use `save_creative` with that exact `sourceAssetRef` and either the intended `campaignId` or, for an advertiser-scoped Creative, `advertiserId` after confirmation. A finalized MP4 is upload-only on V3: do not call `save_creative`, claim a Creative or campaign attachment exists, claim delivery, or silently substitute a V2 write.
- A supplied URL or other external asset is not accepted by this Task. State that boundary and stop. Treat an already-existing provider-scoped V2 source as a separate Legacy request: stop and hand off to its matching V2 connection; never reinterpret V3 output as provider-bound.
6. Explain what needs attention and propose the smallest supported change. Before any write, show the exact target, current revision, requested fields, expected effect, and material risk.
7. After confirmation:
- Use `save_campaign` for supported campaign changes with the current `expectedRevision` and a stable idempotency key. Reuse that key only when retrying the exact same intent.
Expand Down
4 changes: 3 additions & 1 deletion skills/set-up-a-campaign/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ Build a grounded draft campaign from the user's brief and, when requested, stage
6. Prepare creatives when useful:
- Search for existing campaign creatives or collections first.
- Use `save_creative` or `save_creative_collection` only with user-provided metadata and exact returned IDs, after confirmation.
- `save_creative` creates or updates a creative manifest containing a name, message, and format kind; it does not upload or attach an asset. Stop and explain the boundary when the user supplies a file, URL, or external asset.
- For a local JPEG, PNG, or eligible MP4, call `upload_creative_asset` with the exact buyer-owned `advertiserId`. When the upload is intended for a campaign, also pass `campaign_composition` with its exact `campaign_id` and matching `advertiser_id`; that context does not itself associate the upload. The Task app, not the model, handles the file bytes.
- After the Task finalizes a JPEG or PNG and returns its private source reference, use `save_creative` with that exact `sourceAssetRef` and either the intended `campaignId` or, for an advertiser-scoped Creative, `advertiserId` after confirmation. A finalized MP4 is upload-only on V3: do not call `save_creative`, claim a Creative or campaign attachment exists, claim delivery, or silently substitute a V2 write.
- A supplied URL or other external asset is not accepted by this Task. State that boundary and stop. Treat an already-existing provider-scoped V2 source as a separate Legacy request: stop and hand off to its matching V2 connection; never reinterpret V3 output as provider-bound.
- Do not claim an asset was uploaded, attached, approved, or ready unless the tool result proves it.
7. Consider whether catalogs, event sources, or first-party audiences would materially improve the campaign. The current V3 buyer surface has no supported operations for adding them. Report that limitation and continue with supported preparation; never invent an operation or claim they were added.
8. When the user selects an offer, show the exact seller, products or proposal, pricing, formats, allocations, and budget and obtain confirmation immediately before staging:
Expand Down