Skip to main content
ClaudeWave
Skill458 estrellas del repoactualizado 2mo ago

compliance-checker

The compliance-checker skill audits affiliate marketing content for FTC compliance, platform-specific rules, and legal requirements by scanning for undisclosed affiliate links, checking disclosure placement and clarity, verifying prohibited claims, and validating endorsement guidelines. Use this skill before publishing any affiliate content, when uncertain about disclosure requirements, before posting to platforms with strict ad policies like Facebook or Google Ads, or to audit existing published content for compliance violations.

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/Affitor/affiliate-skills /tmp/compliance-checker && cp -r /tmp/compliance-checker/skills/meta/compliance-checker ~/.claude/skills/compliance-checker
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# Compliance Checker

Audit affiliate content for FTC compliance, platform-specific rules, and legal requirements. Checks disclosure placement, prohibited claims, endorsement guidelines, and platform policies. Output is a compliance scorecard with issues, severity, and fix suggestions.

## Stage

S8: Meta — The FTC has fined affiliates $4.2M+ for undisclosed endorsements. One missing disclosure can result in legal action, platform bans, or program termination. This skill is the safety net — run it on any content before publishing to catch compliance issues before they become problems.

## When to Use

- User wants to check content before publishing
- User asks about FTC rules or affiliate disclosure requirements
- User is unsure if their content is compliant
- User says "is this legal?", "do I need a disclosure?", "check my post"
- User is preparing content for a platform with strict ad policies (Facebook, Google)
- Chaining: run after any S2-S5 or S7 content-producing skill before publishing
- User wants to audit existing published content

## Input Schema

```yaml
content: string                # REQUIRED — the content to check (text, markdown, or HTML)

content_type: string           # REQUIRED — "social_post" | "blog" | "landing_page"
                               # | "email" | "ad" | "video_script"

platform: string               # OPTIONAL — "linkedin" | "twitter" | "reddit" | "facebook"
                               # | "tiktok" | "youtube" | "google_ads" | "pinterest"
                               # Platform-specific rules applied if provided

claims:                        # OPTIONAL — specific claims to verify
  - string                     # e.g., ["earn $10K/month", "guaranteed results"]
```

**Chaining context**: If content was produced by S2-S5 or S7 in the same conversation, pull it directly. The user should not have to paste content that was just generated.

## Workflow

### Step 1: Detect Affiliate Links

Scan content for:
- URLs with affiliate parameters (`ref=`, `aff=`, `partner=`, UTM tags)
- Shortened URLs (bit.ly, etc.) that may hide affiliate links
- Product mentions that imply a commercial relationship

### Step 2: Check FTC Disclosure

Read `shared/references/ftc-compliance.md` for rules. Check:
- **Presence**: Is there a disclosure? (required if any affiliate link exists)
- **Placement**: Is the disclosure before or near the affiliate link? (not buried at the bottom)
- **Clarity**: Is it clear to a reasonable consumer? ("affiliate link" is clear; "partner" alone is not)
- **Format by content type**:
  - Social post: `#ad` or `Affiliate link` visible without expanding
  - Blog: Disclosure in the opening paragraph, above the fold
  - Landing page: Medium disclosure above the fold
  - Email: Disclosure near the affiliate link
  - Ad: Platform-specific requirements

### Step 3: Check Prohibited Claims

Scan for:
- **Income claims**: "earn $X", "make money fast", "passive income guaranteed"
- **False urgency**: "only 3 left" (if not verifiable), "offer expires" (if no real deadline)
- **Health/medical claims**: unsubstantiated health benefits
- **Guaranteed results**: "guaranteed to work", "100% success rate"
- **Fake scarcity**: "limited spots" (if not actually limited)
- **Fake testimonials**: results that aren't typical without disclaimer

### Step 4: Check Platform Rules

If `platform` is provided, apply platform-specific rules:
- **Reddit**: Self-promotion rules (10:1 ratio), must disclose in post
- **Facebook/Instagram**: Branded Content tool, "Paid Partnership" label for ads
- **Google Ads**: Clear commercial intent, no misleading claims, landing page requirements
- **TikTok**: #ad or Paid Partnership toggle, no medical/financial advice claims
- **YouTube**: Verbal + written disclosure in first 30 seconds, "Includes paid promotion" checkbox

### Step 5: Score and Report

Rate compliance on three levels:
- **PASS**: No issues found
- **WARN**: Minor issues that should be fixed (e.g., disclosure placement could be better)
- **FAIL**: Critical issues that must be fixed before publishing (e.g., no disclosure at all)

### Step 6: Generate Fixes

For each issue, provide:
- What's wrong (specific quote from content)
- Why it matters (rule reference)
- How to fix it (specific replacement text)

### Step 7: Self-Validation

Before presenting output, verify:

- [ ] All affiliate links in the content are detected and flagged
- [ ] Disclosure placement check matches platform-specific rules
- [ ] Prohibited claims identified with exact quotes from content
- [ ] Fix suggestions are copy-paste ready and preserve original tone
- [ ] Corrected content would pass a re-scan by this same skill

If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes.

## Output Schema

```yaml
output_schema_version: "1.0.0"  # Semver — bump major on breaking changes
compliance:
  overall_score: string        # "PASS" | "WARN" | "FAIL"
  disclosure_present: boolean
  disclosure_placement: string # "correct" | "needs_improvement" | "missing"
  prohibited_claims: number    # count of issues found
  platform_issues: number      # count of platform-specific issues

issues:
  - severity: string          # "critical" | "warning" | "info"
    category: string          # "disclosure" | "claims" | "platform" | "formatting"
    description: string       # what's wrong
    quote: string             # the problematic text
    fix: string               # suggested replacement

corrected_content: string      # full content with all fixes applied
```

## Output Format

1. **Compliance Scorecard** — overall score, disclosure status, issue counts
2. **Issues Found** — table with severity, category, description, and fix
3. **Corrected Content** — the full content with all issues fixed (copy-paste ready)
4. **Platform Notes** — any platform-specific requirements not yet addressed

## Error Handling

- **No content provided**: "Paste the content