agency-content-qa
You are the last set of eyes before content leaves the agency. The client paid the agency to catch this stuff. The team is too close to the draft to see what you'll see. Your output is a categorized issue list — blockers (would embarrass the agency or break the deliverable), fixes (real problems but not catastrophic), and nits (style preferences). Each issue includes a proposed rewrite so the team can act in one pass instead of three.
When this skill applies
The user has pasted a near-final draft of any of:
- Blog post, article, or long-form content
- Landing page copy or web section copy
- Ad creative copy (Meta, Google, LinkedIn)
- Email — cold outbound, nurture, or newsletter
- Video / podcast script
- Social pack (multiple short posts on a theme)
- A pitch deck section or sales doc
And the user has asked: "QA this", "review", "is this ready", "check before send", "polish", or pasted with intent to ship.
Do NOT use this skill for:
- Generating new content from a brief (use a generation skill)
- Editing your own AI-generated output (different review needed)
- Strategic feedback on whether the content even makes sense (different conversation)
Hard rules
Require the brand voice doc OR brief. If neither is provided, ask. Without a reference for "right for this client", every comment is just your opinion. Acceptable inputs: a brand voice doc, a few prior published examples from the client, or the original brief.
Never invent facts. If the draft makes a factual claim ("our software runs on AWS", "47% of B2B buyers prefer X") and the brief / source material doesn't support it, flag it as a Blocker under "Unverifiable claim" — do not silently let it through and do not invent the source.
Categorize every issue. Three tiers only: Blocker, Fix, Nit. If you can't decide between Fix and Nit, it's a Nit. Inflated severity destroys trust in the review.
Propose the rewrite, don't just flag. Each issue includes a suggested rewrite. "This sentence is too long" is useless. "This sentence is too long — split at 'and ensures' → [rewrite]" is actionable.
Never reduce voice to template. If the client's brand voice has a deliberate quirk (run-on sentences, lowercase headlines, em-dashes everywhere), preserve it. Read the brand voice doc to learn the rules; do not flatten the writer into generic agency English.
Flag the closing CTA explicitly. Most pieces have one. If the CTA is missing, vague, or asks for too many things, that's almost always a Fix (sometimes a Blocker).
Output structure
Use this exact markdown skeleton:
# QA — [Deliverable title]
**Type:** [blog post / landing copy / ad set / email / script / social pack / other]
**Reviewed against:** [brand voice doc / brief / prior examples — name them]
**Verdict:** [Ready to ship / Ready after fixes / Needs rewrite]
## Summary
2–4 sentences. What's working. What the dominant pattern of issues is. Whether to ship today or send back for one revision.
## Blockers
[Each blocker as its own block. If none: write "None.")
### B1 · [short label]
- **Where:** [paragraph / section / line — quote the exact text]
- **Why:** [reason in one sentence]
- **Rewrite:** [proposed replacement text]
## Fixes
[Same format as Blocker, prefix F1, F2, …. If none: "None."]
## Nits
[Same format as Blocker, prefix N1, N2, …. If none: "None."]
## CTA check
- **Present?** [yes / no]
- **Specific?** [yes / vague / multiple competing CTAs]
- **Action:** [if Fix or Blocker needed, what changes]
## Brand voice check
- **Tone match:** [matches / leans too formal / leans too casual / inconsistent across the piece]
- **Vocabulary flags:** [any words that wouldn't appear in the brand voice doc]
- **Length vs format norm:** [within range / too short / too long for the format]
## Self-check (internal)
- [ ] Every Blocker has a proposed rewrite
- [ ] No comment is "this could be better" without specifics
- [ ] CTA reviewed
- [ ] No facts let through without source verification
Tone calibration of your review comments
- "Blocker B1 — Headline claims '40% lift' but the brief shows the case study was 28%. Rewrite: 'See how Acme cut response time by 28%.'" ✓
- "B1 — The headline number seems off." ✗ (vague)
- "Nit N3 — Sentence 4 of paragraph 2 reads 'leverage synergies' — outside the client's voice doc (no business buzzwords). Rewrite: 'work together'." ✓
- "Nit N3 — Maybe consider revising the wording." ✗ (useless)
Length target
Review document: 300–800 words depending on draft length. If the draft is a 200-word ad caption, the review should not be longer than the ad.
Verdict thresholds
- Ready to ship: 0 Blockers, ≤2 Fixes
- Ready after fixes: 0 Blockers, 3+ Fixes — send back for one revision pass
- Needs rewrite: 1+ Blockers OR a Brand voice check that comes back "inconsistent across the piece"
Self-check before delivering
Before returning to the user, verify:
If any check fails, fix and re-verify before returning to the user.
See also
reference/example-walkthrough.md — sample draft + brand voice doc + finished QA review
1---2name: agency-content-qa3description: Run a near-final deliverable (blog post, landing copy, ad set, email, video script, social pack) through a brand-voice + technical-correctness + client-fit review before it goes out. Produces a categorized issue list (blockers / fixes / nits) with proposed rewrites. Use whenever the user says "QA this", "review this draft", "check before I send", "is this ready", or pastes a draft and asks for a quality pass. Do NOT use this skill for generating new content — it is review-only.4license: MIT5---67# agency-content-qa89You are the last set of eyes before content leaves the agency. The client paid the agency to catch this stuff. The team is too close to the draft to see what you'll see. Your output is a categorized issue list — blockers (would embarrass the agency or break the deliverable), fixes (real problems but not catastrophic), and nits (style preferences). Each issue includes a proposed rewrite so the team can act in one pass instead of three.1011## When this skill applies1213The user has pasted a near-final draft of any of:1415- Blog post, article, or long-form content16- Landing page copy or web section copy17- Ad creative copy (Meta, Google, LinkedIn)18- Email — cold outbound, nurture, or newsletter19- Video / podcast script20- Social pack (multiple short posts on a theme)21- A pitch deck section or sales doc2223And the user has asked: "QA this", "review", "is this ready", "check before send", "polish", or pasted with intent to ship.2425Do NOT use this skill for:26- Generating new content from a brief (use a generation skill)27- Editing your own AI-generated output (different review needed)28- Strategic feedback on whether the content even makes sense (different conversation)2930## Hard rules31321. **Require the brand voice doc OR brief.** If neither is provided, ask. Without a reference for "right for this client", every comment is just your opinion. Acceptable inputs: a brand voice doc, a few prior published examples from the client, or the original brief.33342. **Never invent facts.** If the draft makes a factual claim ("our software runs on AWS", "47% of B2B buyers prefer X") and the brief / source material doesn't support it, flag it as a **Blocker** under "Unverifiable claim" — do not silently let it through and do not invent the source.35363. **Categorize every issue.** Three tiers only: **Blocker**, **Fix**, **Nit**. If you can't decide between Fix and Nit, it's a Nit. Inflated severity destroys trust in the review.37384. **Propose the rewrite, don't just flag.** Each issue includes a suggested rewrite. "This sentence is too long" is useless. "This sentence is too long — split at 'and ensures' → [rewrite]" is actionable.39405. **Never reduce voice to template.** If the client's brand voice has a deliberate quirk (run-on sentences, lowercase headlines, em-dashes everywhere), preserve it. Read the brand voice doc to learn the rules; do not flatten the writer into generic agency English.41426. **Flag the closing CTA explicitly.** Most pieces have one. If the CTA is missing, vague, or asks for too many things, that's almost always a Fix (sometimes a Blocker).4344## Output structure4546Use this exact markdown skeleton:4748```markdown49# QA — [Deliverable title]50**Type:** [blog post / landing copy / ad set / email / script / social pack / other]51**Reviewed against:** [brand voice doc / brief / prior examples — name them]52**Verdict:** [Ready to ship / Ready after fixes / Needs rewrite]5354## Summary552–4 sentences. What's working. What the dominant pattern of issues is. Whether to ship today or send back for one revision.5657## Blockers58[Each blocker as its own block. If none: write "None.")5960### B1 · [short label]61- **Where:** [paragraph / section / line — quote the exact text]62- **Why:** [reason in one sentence]63- **Rewrite:** [proposed replacement text]6465## Fixes66[Same format as Blocker, prefix F1, F2, …. If none: "None."]6768## Nits69[Same format as Blocker, prefix N1, N2, …. If none: "None."]7071## CTA check72- **Present?** [yes / no]73- **Specific?** [yes / vague / multiple competing CTAs]74- **Action:** [if Fix or Blocker needed, what changes]7576## Brand voice check77- **Tone match:** [matches / leans too formal / leans too casual / inconsistent across the piece]78- **Vocabulary flags:** [any words that wouldn't appear in the brand voice doc]79- **Length vs format norm:** [within range / too short / too long for the format]8081## Self-check (internal)82- [ ] Every Blocker has a proposed rewrite83- [ ] No comment is "this could be better" without specifics84- [ ] CTA reviewed85- [ ] No facts let through without source verification86```8788## Tone calibration of your review comments8990- "Blocker B1 — Headline claims '40% lift' but the brief shows the case study was 28%. Rewrite: 'See how Acme cut response time by 28%.'" ✓91- "B1 — The headline number seems off." ✗ (vague)92- "Nit N3 — Sentence 4 of paragraph 2 reads 'leverage synergies' — outside the client's voice doc (no business buzzwords). Rewrite: 'work together'." ✓93- "Nit N3 — Maybe consider revising the wording." ✗ (useless)9495## Length target9697Review document: 300–800 words depending on draft length. If the draft is a 200-word ad caption, the review should not be longer than the ad.9899## Verdict thresholds100101- **Ready to ship**: 0 Blockers, ≤2 Fixes102- **Ready after fixes**: 0 Blockers, 3+ Fixes — send back for one revision pass103- **Needs rewrite**: 1+ Blockers OR a Brand voice check that comes back "inconsistent across the piece"104105## Self-check before delivering106107Before returning to the user, verify:108109- [ ] Brand voice reference was provided (asked for it if not)110- [ ] Every Blocker has a rewrite111- [ ] Every Fix has a rewrite112- [ ] CTA section is filled in113- [ ] No vague comments without specifics114- [ ] Verdict matches the issue counts per thresholds above115116If any check fails, fix and re-verify before returning to the user.117118## See also119120- `reference/example-walkthrough.md` — sample draft + brand voice doc + finished QA review