Install
$ agentstack add skill-hungv47-meta-skills-audit-marketing ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
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](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
- Detect ≠ fix (D-25).
auditNEVER edits the audited artifact.polishedits but landsdecision_state: pending— there is NO accept-tool on the agent channel; only the human approves on/forsvn:review. Never writedecision_state: approved; never append to.forsvn/learning/verdicts.tsv. - 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 ismkt-*ids +block | warn | nit— neverrule:copy-*/warning|advisory. - Noise-filter before report-write. Every finding passes [
noise-filter.md](references/noise-filter.md): Layer-1 real-vs-fake (drop FPs), then Layer-2 Accepted / Rejected / Deferred. Noise gate: ≥5 findings & 0block→ collapse nits to one Rejected line. - 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.
- 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/polishto 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 word | Flow | Loads | |---|---|---| | audit (or none) | one-shot, metricless scan → severity-grouped report. NEVER fixes. | [references/audit-flow.md](references/audit-flow.md) | | polish | audit → dispatch fixers (Route C) → re-verify gate → land decision_state: pending. Max 2 rounds. | [references/polish-flow.md](references/polish-flow.md) |
Category→fixer routing: [references/fix-routing.md](references/fix-routing.md). The re-verify exit gate: [references/reverify-gate.md](references/reverify-gate.md). Mode + shared protocols: [references/_shared/mode-resolver.md](references/shared/mode-resolver.md), [references/_shared/quality-feedback-protocol.md](references/shared/quality-feedback-protocol.md).
Before Starting
- Mode ([
references/_shared/mode-resolver.md](references/_shared/mode-resolver.md)): defaultstandard. A single named artifact →fastis fine; a whole-treepolish→ keepstandard(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 — reportNEEDS_CONTEXTnaming 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-.md(dated, immutable per-run) - Lifecycle:
snapshot— accumulates, never overwritten - Frontmatter + body: [
references/report-template.md](references/report-template.md) — carriesskill,id,type: record,keywords,stack: meta,review_surface,verb,rounds,score_before/score_after,verdict,provenance. Score/rounds live HERE, never inverdicts.tsv. Passesvalidate-artifacts --strict.
Anti-Patterns
- Auto-fixing on the agent channel, or writing
decision_state: approved/ averdicts.tsvrow — forbidden (human-owned review). - Treating a clean scan as proof of quality, or any single antipattern instance as auto-fail — only the explicit
blockrules + 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
- DONE —
audit: zero findings across all targets.polish: all Accepted findings fixed + verified. - DONEWITHCONCERNS —
audit: findings reported (the normal case — audit never fixes).polish: some findings rolled back to Deferred, or the 2-round cap hit. - BLOCKED —
polish: a denylist finding is unresolved after 2 rounds. (auditnever blocks a write — it reports.) - NEEDS_CONTEXT — the scanner (S1/S2) isn't present, or the named target can't be resolved.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: hungv47
- Source: hungv47/meta-skills
- License: MIT
- Homepage: https://skills.forsvn.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.