utm-governance-preflight-6d6f68 — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited utm-governance-preflight-6d6f68 (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
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.
Use this skill to catch UTM and campaign-naming drift before campaign links go live or before dirty attribution data reaches GA4, CRM, CDP, warehouse, or BI reports. The goal is to enforce a small canonical taxonomy and produce owner-ready fixes, not to invent a new attribution model.
Use for:
Do not use for:
Ask only for missing inputs that materially change the decision:
url or link; useful optional fields are link_id, owner, and channel.Record:
Read references/utm-risk-rules.md before classifying source/medium aliases, campaign format drift, and sensitive terms.
Use explicit relative or absolute paths:
python3 utm-governance-preflight/scripts/utm_governance_preflight.py \
--links /absolute/path/campaign_links.csv \
--policy /absolute/path/policy.jsonCSV and JSON inputs are supported. Preferred fields:
links: link_id, owner, channel, url
policy: required_parameters, allowed_sources, source_aliases, allowed_media,
medium_aliases, campaign_pattern, sensitive_termsUse one primary decision:
Block launch: required UTM missing, source/medium swapped, public UTM leaks sensitive/internal wording, or a launch-critical channel cannot be mapped.Fix before launch: aliases, mixed case, unsafe spaces, unknown values, or campaign format drift need owner correction but do not prove attribution will be unrecoverable.Pass: links meet the policy and no material governance finding appears.Do not silently normalize values without showing the owner which public link or report bucket changes.
Return:
## UTM Governance Decision
[Block launch / Fix before launch / Pass]
## Summary
[Links reviewed, block findings, review findings, source/medium health]
## Findings
| Severity | Risk | Row | Link | Owner | Evidence | Next step |
|---|---|---:|---|---|---|---|
## Launch Gate
[Owner-specific fixes and policy updates]Use templates/launch-gate-report.md when the user asks for a reusable artifact.
Positive example: "Use $utm-governance-preflight on this agency link spreadsheet before next week's paid social launch." The skill should flag missing UTMs, source aliases, source/medium swaps, mixed case, unsafe values, sensitive terms, and campaign format drift.
Positive cleanup example: "Audit these GA4 source/medium rows and tell me what policy changes we need." The skill should distinguish historical mapping from pre-launch link changes and avoid claiming exact attribution recovery.
Negative example: "Tell me which campaign truly caused the revenue." Do not claim causal attribution; ask for experiment/incrementality context and scope this skill to UTM hygiene.
Boundary example: "We have no policy." Use the reference policy as a draft, label it as provisional, and recommend marketing-ops approval before enforcement.
Smoke-test the bundled fixture:
python3 utm-governance-preflight/scripts/utm_governance_preflight.py \
--links utm-governance-preflight/scripts/fixtures/campaign_links.csv \
--policy utm-governance-preflight/scripts/fixtures/policy.jsonExpected result: exit code 2 and a Markdown report with UTM Governance Decision, Block launch, missing_required_utm, source_medium_swapped, sensitive_internal_term, and alias_to_canonical_source.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.