Individual skill
run-paid-campaigns-apply-and-log
Step of the run-paid-campaigns playbook: stages the week's approval items, applies only what the marketer approves and keeps the change log. Run run-paid-campaigns instead; not for direct use.
skills/marketing/run-paid-campaigns-apply-and-log/SKILL.md
Source commit df8298140d434a6363de0c265eb6af2e571d97a5
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Local scripts
- Last checked
- Nov 11, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 1,315
- Repository last updated
- Nov 6, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- claude Repository topic
- claude-skills Repository topic
- claudecode Repository topic
- claudecode-skills Repository topic
- codex Repository topic
- cursor Repository topic
- gtm Repository topic
- skills Repository topic
- engineering Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 4,751 bytesskill.meta.jsonasset · 230 bytes
Read excerpt
# Stage, apply and log (atom)
**Load:** `../run-paid-campaigns/references/meta-levers.md`, `../run-paid-campaigns/references/proposal-and-log.md` (exact grammar). **Steps by each move's lever** (the playbook's Before you start 3): GooseWorks levers — 1–8; connector levers — 1, 2, 4, then 9–11; written instructions — 1, 2, 4 (no tool call), then 7 on the marketer's "done". **Local mode** has only the last two and calls no `gooseworks:` tool; its files live under `gooseworks-local/<brand-slug>/` (host file tools).
## Stage (step 7)
1. Re-read `ads/campaigns/<slug>/state.md`. If it doesn't exist, create it with the frontmatter (`campaign`, `stage`, `goose_campaign_id`, `meta_push_ids: []`, `meta_campaign_id`, `updated_at`, `updated_by`; local mode: no ids), the header lines, `## Open recommendations` and `## Meta objects`.
2. Write each open move as one line `- R<n> (YYYY-MM-DD): <move> — evidence <…> — awaiting` under `## Open recommendations` (next free number; never reuse one), and its follow-up as `- R<n> check YYYY-MM-DD: <rule> · trip-wire <…>` under `## Checks due` (the server deletes bullets on close; checks must survive).
3. **GooseWorks levers only.** For each Meta budget change, swap or launch without an id yet: `gooseworks:propose_meta_budget_change` / `gooseworks:propose_meta_creative_replacement` (with `reason`, `evidence` as `report:<YYYY-MM-DD>` or `user request`, `recommendation_ref`), or `gooseworks:prepare_meta_ad_push` (with `goose_campaign_id`) then push status until it awaits approval. Put each returned change id in its bullet; **add each push id to `meta_push_ids` immediately** — the server finds this folder only through that list or `goose_campaign_id`. Never re-propose an item that already has an id.
4. Write the proposal in `proposal-and-log.md`'s one template (numbered moves, no ids) with the real approval links, the pause sentence and the cards; deliver it by its § Delivery, scheduled or not. Stop.
## Apply (step 8)
5. Pauses: `gooseworks:pause_meta_ad_push` only on the marketer's own words in this turn naming the ads (`user_instruction`), with `push_id` and `meta_ad_ids` from `## Meta objects`, and `recommendation_ref`. A bare "yes" → ask for the sentence. Report each ad's state after; anything not confirmed is named.
6. Links: read change or push status → approved / declined / waiting. Budget changes, swaps and pauses made with `recommendation_ref`: the server writes the `decisions.md` block and removes the bullet — never duplicate it. **Launches / graduations** (no `recommendation_ref` on `prepare_meta_ad_push`): when push status shows approved or declined, remove the bullet yourself and append a block with `Evidence: push:<id>` if none exists. Never say "done" early. A refused budget change (budget moved in Ads Manager): relay, re-read, never retry blind.
7. Instructions (cards), holds the marketer chose, declines given in chat, and check results (with the verdict word — worked / didn't work / too early / can't tell — in the Outcome line): re-read `decisions.md` immediately before writing, append a `### YYYY-MM-DD — <title>` block (Recommended / Evidence / Decided / Outcome, one line each, date never earlier than the newest block), then delete that recommendation's bullet from `state.md` (write `None.` if the section empties).