Install
$ agentstack add skill-fourteenwm-ppc-ai-skills-mutation-safety ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Mutation Safety
Purpose: Enforce two-step approval for ALL mutations to Google Ads accounts AND destructive Google Sheets writes.
Type: Safety enforcement skill (MANDATORY — auto-invokes for all mutations)
Core Rules
Rule 1: No Mutations Without Two-Step Approval
Any operation that writes, updates, or deletes data in Google Ads or Google Sheets MUST follow this flow:
- Dry Run — Show exactly what will change, with current and proposed values
- User Approval — Wait for explicit user confirmation before executing
- Execute — Only after approval, run the mutation
Never skip the dry run. Never auto-approve.
Rule 2: Exact Match Required for All Identifiers
ALL mutations MUST use exact matching for identifiers to prevent accidental modifications.
Identifiers requiring exact match:
- Customer IDs (CIDs)
- Conversion action names
- Campaign names
- Ad group names
- Keyword text
- Shared set names
- Any other named entity
Implementation rules:
- Default to exact match for all mutations (no flag needed)
- Pattern matching requires an explicit opt-in flag
- GAQL queries for mutations MUST use
= 'value'instead ofLIKE '%value%' - Fuzzy/partial matching is ONLY allowed for read-only queries (reports, audits)
Why this matters:
- "FormSubmit" and "FormSubmit_BC" are different conversion actions
- CID
1234567890and1234567809are different accounts - One character difference can affect the wrong entity
Rule 3: Scope Verification Before Execution
Before executing any mutation:
- Confirm the target account is one the user actually manages
- If an account is not in the known accounts list, STOP and ask
- When asked to modify "this account," confirm which specific account is meant
- When asked to modify "all accounts," clarify the exact scope before proceeding
Rule 4: Show What Will Change
The dry-run preview MUST include:
- Target: Which account(s) and entities
- Current state: What the values are now
- Proposed state: What they will be after the mutation
- Count: How many entities are affected
- Reversibility: Whether this change can be undone (and how)
Rule 5: Never Generate Approval Codes
If your system uses approval codes or confirmation tokens:
- The USER must provide the approval code
- Claude/AI must NEVER generate, guess, or auto-fill approval codes
- The approval code exists so the human controls execution
What Counts as a Mutation
Google Ads API Mutations
- Creating campaigns, ad groups, keywords, or ads
- Updating budgets, bids, or bid strategies
- Pausing or enabling campaigns/ad groups/keywords
- Adding or removing negative keywords
- Modifying conversion action settings (values, attribution, counting)
- Updating ad copy (headlines, descriptions)
- Any
mutatecall to the Google Ads API
Google Sheets Destructive Writes
- Clearing a sheet tab
- Overwriting existing data
- Deleting rows or columns
- Replacing tab contents
NOT Mutations (No Approval Needed)
- Reading/querying Google Ads data (SELECT queries)
- Reading Google Sheets data
- Writing to a NEW (empty) sheet tab
- Appending rows to the end of existing data
- Local file operations
Dry-Run Output Format
When presenting the dry-run preview, use this structure:
MUTATION PREVIEW
================
Target: [Account Name] (CID: XXXXXXXXXX)
Operation: [What will change]
Entities affected: [Count]
Current → Proposed:
- [Entity 1]: [current value] → [new value]
- [Entity 2]: [current value] → [new value]
Reversibility: [Yes/No — how to undo if needed]
Type APPROVE to execute, or CANCEL to abort.
Revert Knowledge
If a mutation needs to be undone:
- Budget changes: Use
op.updatewith the original budget value - Paused entities: Use
op.updateto set status back to ENABLED - Renamed entities: Use
op.updatewith the original name - Added negative keywords: Use
op.removewith the keyword criterion resource name - Conversion action changes: Use
op.updatewith original values (name, default_value, lookback windows) - Deleted/removed conversion actions: Cannot be restored via API — these are permanent
Important: Some operations are irreversible. Always flag irreversible mutations in the dry-run preview.
Common Mistakes This Prevents
- Wrong account scope — Script meant for one account runs across the entire MCC
- Partial name match — LIKE query matches 3 conversion actions instead of 1
- Transposed CID — Digits swapped, mutation hits wrong account entirely
- Auto-approve in batch — Script processes 50 accounts without stopping for review
- Overwrite vs. append — Sheet write replaces existing data instead of adding to it
- Test vs. production — Mutation runs against live account instead of test account
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: fourteenwm
- Source: fourteenwm/ppc-ai-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.