# Claim Safety Review Ad Creative

> Claim Safety Review

- Skill: `mardab96/claim-safety-review-ad-creative` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mardab96/claim-safety-review-ad-creative`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mardab96/claim-safety-review-ad-creative/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: mardab96 (https://skillmd.com/u/mardab96)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mardab96/claim-safety-review-ad-creative

---


# Claim Safety Review

Shared quality bar: `../references/output-standard.md`. All numbers cited here
live in `../references/thresholds.md`.
This is a pre-launch gate on wording. It flags exposure and routes restricted
categories to the platform, and it is not legal advice or a policy ruling.

## Use this skill when

Copy exists and has not launched. Run it on a batch handed over by an agency or
freelancer, on copy generated by a model, on lines lifted from a sales deck or a
case study, and on anything a client wants live today. Run it again whenever a
line is edited after this review, because an edited line is an unreviewed line.
It examines the ad text only and never opens the landing page; the destination
belongs to `ad-to-landing-page-match-ad-creative`.

## Required input

- Every line to be reviewed, exactly as it will run: headlines, descriptions,
  primary text, on-image or on-video text, and the call to action button.
- The platform each line runs on, since restricted-category rules differ.
- The country or countries targeted.
- Any source the user already holds for each factual line: a document, a
  dashboard, a dated study or a named customer.
- The advertiser's category and what the product actually does.

## Analysis workflow

1. Split the copy into individual claim units. One line can carry two claims and
   only one of them may be a problem, so review at the claim, not at the asset.
2. Classify each unit: factual claim, comparison, superlative, testimonial,
   guarantee, or non-claim. Non-claims pass without a row and are counted so the
   review shows its own scope.
3. For every factual claim, apply `claims.evidence_rule`. Ask for the named
   source. A source is a document, a dashboard or a named customer, and an
   internal assertion that a colleague said it is not one. Unsourced units are
   marked `[claim: needs source]`.
4. For every superlative, apply `claims.superlative_rule`. A qualified and cited
   superlative passes. A bare one is cut, and softening it into a vaguer boast
   does not fix it, since a vague unevidenced claim is the same defect with worse
   copy.
5. For every comparison against a competitor, check that the comparison is
   like for like, dated, and that the competitor's own current terms were checked
   on the date stated. An undated competitor comparison ages into a false claim
   without anybody editing it.
6. Screen every unit against `claims.restricted_topics`. Where a unit lands in
   one, do not issue a verdict. Route the reviewer to that platform's own policy
   page for the named category and country, and mark the unit as blocked pending
   that reading.
7. Check implied claims, not just stated ones: a testimonial that implies a
   typical result, an image of an outcome, an on-screen figure with no source, a
   guarantee implied by a phrase like risk free.
8. Return a per-line decision and a rewritten safe alternative wherever the idea
   survives without the unevidenced part. Never invent the missing evidence, and
   list every line you declined to rewrite.

## Decision rules

- Factual claim with a named source supplied: `ship`.
- Factual claim with no source: `rewrite` to remove the number, or
  `approval_needed` if the user says the source exists but has not produced it.
- Bare superlative: `cut` under `claims.superlative_rule`. Offer one qualified
  alternative only if the qualification is something the user has evidenced.
- Comparison with no date or no like-for-like basis: `rewrite`.
- Testimonial with no permission on file: `approval_needed` under
  `claims.testimonial_permission`.
- Any unit in `claims.restricted_topics`: `investigate`, pointing at the
  platform's policy page. This pack issues no compliance verdict, ever.
- Guarantee, refund or outcome promise: `approval_needed` from whoever can honour
  it commercially.

## Output format

Open with one line: is this batch launchable as written, yes or no.

| Line | Claim unit | Type | Source supplied | Issue | Evidence label | Decision |
|---|---|---|---|---|---|---|

Then the rewritten lines, then a short list of lines left unrewritten with the
reason, then `What this could not see`, `Missing data`, `Approval gates`.

This skill reads wording, not a test and not a time series, so it issues no
`high` confidence label and does not borrow the comparison family's conditions:
`test.min_runtime` and `test.volume_floor` describe a test, and no amount of
running time makes a claim sourced. What stands in its place is the evidence
label on each line, which is the whole judgement here: a claim whose source was
produced and read is `ship`, a claim whose source is asserted but not produced
is `approval_needed`, and a claim with no source is `needs_data` until one
arrives. A review of a batch is `high` in only one sense worth stating, and it
is stated in the output: every line was reviewed at the claim rather than at the
asset, and the count of non-claim units is given so the reader can see the
review's own scope.

## Practical example

Illustrative made-up copy, not a real advertiser. Six lines submitted. Line 2:
"Cut your reporting time by 73%." Line 4: "The fastest onboarding in the
category." Line 5: "Approved in 24 hours, whatever your credit score."

Reading: "No, not launchable as written." Line 2 carries a real number and no
source, so it is `[claim: needs source]` and marked `needs_data` until the user
names the dashboard or study behind the 73%. Line 4 is a bare superlative and is
cut under `claims.superlative_rule`; a rewrite is offered only because the user
supplied a dated onboarding time of 11 minutes against a documented alternative.
Line 5 touches credit, which sits in `claims.restricted_topics`, so this review
refuses to rule on it and routes the reviewer to the platform's own credit
policy page for the target country, so it is neither passed nor rewritten and
carries no verdict from this review.

All six lines are accounted for, one outcome each. Lines 1 and 3 are non-claims
and pass unchanged. Line 4 is rewritten, on the dated onboarding time the user
supplied. Line 2 is not rewritten and does not pass: it keeps
`[claim: needs source]` and waits for the dashboard behind the 73%, because
removing the number would leave a different claim rather than a safer version of
this one. Line 5 is routed to the platform's policy page under
`claims.restricted_topics` and is blocked pending that reading. Line 6 is left
unrewritten because removing the unevidenced part leaves no idea behind. Two
pass, one is rewritten, one waits on a source, one is routed out of this
review's scope, one is refused.

## Guardrails

- Never supply a source, a study, a statistic or a customer name the user did
  not provide.
- Never issue a compliance or legal verdict on a restricted category.
- Never soften an unevidenced claim into a vaguer one to get it past this gate.
- Do not upload or launch anything. This gate ends in a human approval.

