cart-recovery — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cart-recovery (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You generate a complete multi-channel cart abandonment recovery flow. Industry benchmark: 20-35% of abandoned carts recoverable with a disciplined multi-channel sequence. SMS-led sequences convert 25-40% (98% open rate); email-only converts 5-15%.
============================================================ === PRE-FLIGHT === ============================================================
Verify:
Recovery:
============================================================ === PHASE 2: SEQUENCE TIMING === ============================================================
Default sequence (mid-tier $50-$150 cart):
| Step | Channel | Delay from abandon | Purpose |
|---|---|---|---|
| 1 | SMS | 15 min | Reminder, no incentive — intent still hot |
| 2 | Email 1 | 1 hour | Reminder + cart preview + reviews |
| 3 | Email 2 | 24 hours | Free shipping (if not already free) + urgency |
| 4 | Email 3 | 72 hours | Final touch, time-bound discount |
| (5) | Retargeting | hours 1-72 | Meta + Google dynamic product ads |
For low-value carts (< $50): drop SMS (cost > expected return), use Email 1 + Email 3 only, no discount.
For high-value carts (> $150): add Email 4 at 5 days, SMS 2 at 48 hr, free shipping in Email 1, full discount Email 4.
VALIDATION: Sequence config matches the user's AOV tier. Frequency cap honored (no double-send on same day).
============================================================ === PHASE 3: TEMPLATE COPY === ============================================================
Generate each touchpoint with platform-native dynamic tags.
SMS @ 15min (≤ 160 chars, single segment to control cost):
Hey {first_name}, your {top_item_name} is waiting. Grab it before it sells out: {short_url}
Reply STOP to opt out.Email 1 @ 1hr — subject: "You left something behind 👀"
Email 2 @ 24hr — subject: "Still thinking? Free shipping is on us"
Email 3 @ 72hr — subject: "Last chance: 10% off your cart"
VALIDATION: Every template uses dynamic tags compatible with the chosen ESP. No hardcoded product names. Unsubscribe + opt-out present.
============================================================ === PHASE 4: WEBHOOK HANDLERS === ============================================================
Generate checkout/abandoned.handler.{ts|py} that fires on:
checkouts/create + checkouts/update + orders/create (to suppress sequence on purchase).woocommerce_cart_updated action + woocommerce_thankyou.checkout.session.async_payment_succeeded, expired, completed.The handler MUST:
VALIDATION: Suppression test — if order placed during sequence, remaining steps don't fire. Test fixture covers this.
============================================================ === PHASE 5: DYNAMIC PRODUCT BLOCKS === ============================================================
Don't send "you left stuff behind" — show the actual items.
Generate a server-rendered (or ESP-templated) block per template that pulls:
VALIDATION: Email renders correctly in Litmus/Email-on-Acid for Gmail/Apple Mail/Outlook (desktop + mobile). Restore link tested.
============================================================ === PHASE 6: REVENUE ATTRIBUTION === ============================================================
Tag every recovery touchpoint with UTM + custom click ID so revenue attribution can roll up to the sequence step.
?utm_source=cart_recovery&utm_medium={sms|email}&utm_campaign=abandoned_v1&utm_content=step_{1|2|3}&cid={hashed_user_id}Output an attribution reporting view that joins:
VALIDATION: Reporting query runs against the platform's analytics DB or built-in ESP reports.
============================================================ === PHASE 7: COMPLIANCE & ANTI-DARK-PATTERNS === ============================================================
Generate compliance_checklist.md:
VALIDATION: Compliance checklist is checked off per generated sequence before publishing.
============================================================ === SELF-REVIEW === ============================================================
Score 1–5:
Most common gap: forgetting purchase suppression → sending step 3 to someone who completed at step 2. Verify the suppression test passes.
============================================================ === LEARNINGS CAPTURE === ============================================================
Append to ~/.claude/skills/cart-recovery/LEARNINGS.md:
============================================================ === STRICT RULES === ============================================================
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.