agentsclimarketplace

Audit marketing

Skill hungv47/meta-skills/skills/meta/audit-marketing

Metricless front door to the FORSVN slop detector — judge marketing copy before it ships. `audit` scans an artifact or the whole tree for AI-slop antipatterns → a severity-grouped 'reads like AI?' report with named rule IDs and a routed fix per finding. `polish` chains audit → fixers → a conservative re-verify gate that reverts any fix weakening a claim/number/CTA. Detect ≠ fix; human-owned. Not for code review (review-work), new copy (write-copy), or metrics/CRO (evaluate-*).From its SKILL.md

Install
npx -y skills add hungv47/meta-skills --skill audit-marketing

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.3 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it

Audit-Marketing — Is This Slop? (the pre-ship verdict)

The on-demand + whole-tree front door to the marketing-antipattern registry. Sits on the deterministic floor (forsvn-slop/scan.ts, S2) and the shared registry (registry/antipatterns.mjs, S1) and wires them into the two human-facing verbs /forsvn audit and /forsvn polish. Routing in routing.yaml.

Core: would a sharp marketer say this reads like AI — and which named tell proves it?

This is the deliberate path. The always-on annotate-only nudge on every save is the S3 hook (hooks/post-artifact-slop-scan.mjs), a separate seam.

Critical Gates — load first

  1. Detect ≠ fix (D-25). audit NEVER edits the audited artifact. polish edits but lands decision_state: pending — there is NO accept-tool on the agent channel; only the human approves on /forsvn:review. Never write decision_state: approved; never append to .forsvn/learning/verdicts.tsv.
  2. The scanner is the only detector. Every finding's id/severity/tier/fixSkill comes from scan.ts --json (which reads the S1 registry). Never invent a rule id; never hand-judge severity. Vocabulary is mkt-* ids + block | warn | nit — never rule:copy-* / warning|advisory.
  3. Noise-filter before report-write. Every finding passes noise-filter.md: Layer-1 real-vs-fake (drop FPs), then Layer-2 Accepted / Rejected / Deferred. Noise gate: ≥5 findings & 0 block → collapse nits to one Rejected line.
  4. The re-verify gate is conservative-by-construction (polish). A fix is accepted ONLY if the severity-weighted score strictly improves AND the firing rule is gone AND no new finding appears AND the Post-Humanize Regression Check passes (entities/URLs/numbers/prices/dates/claims/CTA unchanged). Any doubt → roll back the section, re-state Deferred. Authority is asymmetric: one confident wrong fix that weakens a claim costs far more than a missed tell. Max 2 rounds.
  5. Block-severity ≠ denylist. Ten rules are block (top of the report); only the tiny D-26 denylist — mkt-claim-fabricated-precision + the locked-brand-token/no-gradient analog — escalates /polish to BLOCKED. The other eight block rules are annotate-only.

Sub-commands

First word selects the flow (Impeccable sub-command model); no arg → audit the whole tree. Sub-commands don't re-invoke the parent.

First wordFlowLoads
audit (or none)one-shot, metricless scan → severity-grouped report. NEVER fixes.references/audit-flow.md
polishaudit → dispatch fixers (Route C) → re-verify gate → land decision_state: pending. Max 2 rounds.references/polish-flow.md

Category→fixer routing: references/fix-routing.md. The re-verify exit gate: references/reverify-gate.md. Mode + shared protocols: references/_shared/mode-resolver.md, references/_shared/quality-feedback-protocol.md.

Before Starting

  • Mode (references/_shared/mode-resolver.md): default standard. A single named artifact → fast is fine; a whole-tree polish → keep standard (the re-verify gate is non-negotiable regardless of mode).
  • Confirm the scanner exists: forsvn-slop/scan.ts. If absent, this skill cannot run a real scan — report NEEDS_CONTEXT naming S1/S2 as the missing dependency.
  • The advisory LLM-critic tier (S6) is optional. If its agent isn't present, deterministic-only is a complete, authoritative run — the report notes advisory tier not run.

Artifact Contract

  • Path: docs/forsvn/artifacts/meta/records/[YYYY-MM-DD]-audit-marketing-<slug>.md (dated, immutable per-run)
  • Lifecycle: snapshot — accumulates, never overwritten
  • Frontmatter + body: references/report-template.md — carries skill, id, type: record, keywords, stack: meta, review_surface, verb, rounds, score_before/score_after, verdict, provenance. Score/rounds live HERE, never in verdicts.tsv. Passes validate-artifacts --strict.

Anti-Patterns

  • Auto-fixing on the agent channel, or writing decision_state: approved / a verdicts.tsv row — forbidden (human-owned review).
  • Treating a clean scan as proof of quality, or any single antipattern instance as auto-fail — only the explicit block rules + the denylist are zero-tolerance; everything else is threshold-gated in the registry, not here.
  • Flagging a quoted testimonial, a regulated-industry legal disclaimer, or an intentional bad-example block — the FP guards exempt them; the report must not.
  • Confidently auto-fixing a cross-artifact rule (mkt-cta-bait-and-switch, mkt-persuasion-no-social-proof) when the paired artifact isn't in scope → route to a human-review note instead.
  • Looping past 2 rounds — a draft that won't clean in 2 is flagged for the operator as a possible structural problem, not looped.

Completion Status

  • DONEaudit: zero findings across all targets. polish: all Accepted findings fixed + verified.
  • DONE_WITH_CONCERNSaudit: findings reported (the normal case — audit never fixes). polish: some findings rolled back to Deferred, or the 2-round cap hit.
  • BLOCKEDpolish: a denylist finding is unresolved after 2 rounds. (audit never blocks a write — it reports.)
  • NEEDS_CONTEXT — the scanner (S1/S2) isn't present, or the named target can't be resolved.

What ships with it: 10 files

62.5 KB alongside SKILL.md, 1 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.