content-audit
Skill6 starsChanged 8 months agoApache-2.0View on GitHub
Read-only content audit: detects content type, scores each axis 0-10, reports findings with evidence and rewrites. Use to diagnose a draft or post.
25 other projects use a version of this.
Adopted by
Most recently taken up by
- risukisu/marketing-skillstheir own version, first seen Nov 8, 2026
- striderZA/OpenCodeGameStudiostheir own version, first seen Nov 4, 2026
- robritacca-dotcom/rift-dstheir own version, first seen Nov 1, 2026
- brainbytes-dev/everything-claude-marketingtheir own version, first seen Nov 1, 2026
- robritacca-dotcom/design-systemtheir own version, first seen Oct 28, 2026
- microsoft/frontier-ghcp-rvastheir own version, first seen Oct 25, 2026
Used with
Projects with it also use asset-spec, create-control-manifest and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
lilangMaxSkillasset-spec
Generate per-asset visual specifications and AI generation prompts from GDDs, level docs, or character profiles. Produces structured spec files and updates the master asset manifest. Run after art bible and GDD/level design are approved, before production begins.
Also in 10 projects that use this
lilangMaxSkillcreate-control-manifest
After architecture is complete, produces a flat actionable rules sheet for programmers — what you must do, what you must never do, per system and per layer. Extracted from all Accepted ADRs, technical preferences, and engine reference docs. More immediately actionable than ADRs (which explain why).
Also in 10 projects that use this
- +10 more from lilangMax
Other versions25 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 25
- Donchitos/Claude-Code-Game-Studios★ 27ksame name
- Ootto-AI/claude-content-skills★ 417same name
- OffchainLabs/arbitrum-docs★ 252same name
- striderZA/OpenCodeGameStudios★ 118same name
- cenconq25/claude-code-app-studio★ 40same name
- dawn840705/codex-code-studios★ 17same name
- huifer/AdSense-Readiness-Benchmark★ 14same name
- brainbytes-dev/everything-claude-marketing★ 9same name
- robritacca-dotcom/rift-ds★ 9same name
- lilangMax/ClaudeCodeGameStudios★ 8same name
15 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository141 other files it gives its agents.
- AGENTS.mdAGENTS.md
- ad-bingSkill
- ad-frameworksSkill
- ad-googleSkill
- ad-linkedinSkill
- ad-metaSkill
- ad-redditSkill
- ad-tiktokSkill
- ad-xSkill
- ad-youtubeSkill
- ai-agent-designSkill
- ai-cost-finopsSkill
- ai-evals-designSkill
- ai-prompt-injection-defenseSkill
- ai-rag-patternsSkill
- analytical-reportSkill
- ats-optimizationSkill
- browser-backlink-submissionSkill
- browser-social-account-maintenanceSkill
- chef-budget-mealsSkill
- coaching-frameworksSkill
- code-review-lensesSkill
- code-reviewSkill
- content-formatsSkill
- content-geoSkill
- content-groundingSkill
- content-humanizeSkill
- content-locale-humanize-arSkill
- content-locale-humanize-deSkill
- content-locale-humanize-esSkill
- content-locale-humanize-frSkill
- content-locale-humanize-hiSkill
- content-locale-humanize-itSkill
- content-locale-humanize-jaSkill
- content-locale-humanize-koSkill
- content-locale-humanize-ptSkill
- content-locale-humanizeSkill
- content-locale-humanize-thSkill
- content-locale-humanize-zhSkill
- content-translateSkill
- content-voiceSkill
- cover-letterSkill
- device-computer-automationSkill
- device-mobile-automationSkill
- document-exportSkill
- geo-visibility-auditSkill
- git-workflowSkill
- issue-diagnosisSkill
- learning-scienceSkill
- marketing-social-gtmSkill
- markup-landing-pageSkill
- octomind-cliSkill
- octomind-configSkill
- octomind-runtimeSkill
- octomind-supervisorSkill
- octomind-workflowSkill
- os-alpineSkill
- os-debianSkill
- os-fedoraSkill
- os-linuxSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 9 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 24 edited versions we read keep these.
9
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 35
Read-only — the auditor renders the report and stops.
- Distinctive: line 41
Read the input. Match against these signatures.
- Distinctive: line 54
Don't guess between blog and article — confirm if borderline.
- Distinctive: line 66
Every audit returns the same axis set.
- Very specific: line 102
After scoring, map the X audit to one of four verdicts.
- Distinctive: line 121
When the severity is ambiguous, default UP — flag as Critical and let the user decide to defer.
- Distinctive: line 125
Every finding follows this shape so reports are diff-able and tools can parse them.
- Distinctive: line 136
No suggested rewrites for structural findings (those are scoping decisions for the editor agent).
- Distinctive: line 140
If a check cannot be completed, do not infer.
- Distinctive: line 147
Never grade an axis from a guess.
- Distinctive: line 248
Before returning a report:
“Common” is measured: kept by at least 6 in 10 of the 24 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Overview
The shared rubric for scoring any content the system writes. The audit agent renders read-only reports from it; the editor agent uses the same diagnosis to drive rewrites. The harness detects the content type, routes to the platform skill, and grades with per-axis scores plus a prioritized findings list. It never writes to the source file.
Mental model
An audit is intent-versus-execution: what does this content type need to win, what does this draft actually deliver, where is the gap, and how cheap is each fix.
Three constraints keep the harness useful instead of confusing:
- Platform skills own the rules; the harness owns the grading.
social-xknows what good X looks like; this skill knows how to count, weight, and report what it finds. Never restate platform rules here — read them from the activated skill. - One canonical report shape across every content type. Same headers, same severity tiers, same axis vocabulary. Only the weights on each axis change per content type. Skim-able regardless of input.
- Read-only — the auditor renders the report and stops. Suggested rewrites are proposals inside the report, never disk writes. To apply, hand off to
content:editor.
Instructions
Content-type detection
Read the input. Match against these signatures. If signal is ambiguous, ask the user once before scoring.
| Signature | Type | Routed skills |
| ≤ 280 chars, no thread markers, single block | X post | social-x + cross-cutting |
| 2+ blocks separated by blank lines or "—" / "Post N" markers, each ≤ 280 chars | X thread | social-x + cross-cutting |
| ≤ 3000 chars, conversational, no formal sections | LinkedIn post | social-linkedin + cross-cutting |
| Similar to X but with different platform context cue | Threads / Bluesky / Mastodon / Reddit / HN | matching social-<platform> + cross-cutting |
| 600–1500 words, opinionated, conversational | Blog post (content quality) | cross-cutting + content-geo + content-formats |
| 1500–3000+ words, sections, citations, formal voice | Article (content quality) | cross-cutting + content-geo + content-formats |
Cross-cutting skills always loaded: content-voice, content-humanize, content-grounding.
Don't guess between blog and article — confirm if borderline. Don't guess platform if no cue — ask which one.
This audit covers the writing itself: hook, dwell, slop, voice, specificity, structure, grounding, safety, topic fit, and answer-first structure for long-form.
Inputs the audit accepts
Required: the content (file path or pasted text).
Optional context that sharpens the score (ask for missing items on a thorough audit, otherwise mark the axis "Unscored"): target platform, niche, account stage, audience, primary keyword, anchor accounts, brand voice notes (check memory first), posting time.
Score axes
Every audit returns the same axis set. Weight per axis varies by content type — see the weight table below. Score each 0–10 (10 = nothing to fix, 0 = blocking issue). Missing context = "Unscored — needs {context}".
| Axis | What it measures |
| Hook | First sentence / first 280 chars / title — does it earn the next read? |
| Dwell risk | Visual density, paragraph length, scroll-friction. Low score = predicted scroll-past. |
| Slop risk | AI-template shape, recycled hook, motivational fluff, synonym rotation. An editorial judgment: never cite an AI-detector percentage as evidence (detectors are unreliable on edited text). |
| Voice | Match to documented brand voice; first-person claims owned by the speaker; register and rhythm that fit the venue (no contraction or sentence-length quotas). |
| Specificity | Real numbers, named tools, named people, dated events vs. abstractions. |
| Structure | Format fits the query's intent (content-formats table) with that format's must-haves; one idea per unit; transitions; conclusion landing. |
| Grounding | Fabrication risk on named entities, stats, quotes, versions, URLs. |
| Safety + brand-safety | PTOS category risk (X-specific); ad-adjacency risk (MediumRisk verdict). |
| Topic fit | Niche/embedding fit and audience-cluster match for the content's intended surface. |
| Answer-first / GEO | Each section leads with the answer in 1–2 sentences; extractable passages; sourced from content-geo. Blog and article only. |
Axis weights by content type
Normalise the per-axis 0–10 scores using these weights to get the 0–100 overall.
| Axis | X post/thread | Blog | Article | |
| Hook | 20 | 18 | 14 | 12 |
| Dwell risk | 18 | 14 | 10 | 8 |
| Slop risk | 15 | 14 | 12 | 10 |
| Voice | 10 | 10 | 14 | 12 |
| Specificity | 10 | 10 | 14 | 14 |
| Structure | 5 | 10 | 14 | 14 |
| Grounding | 10 | 10 | 12 | 14 |
| Safety + brand-safety | 7 | 6 | 4 | 4 |
| Topic fit | 5 | 8 | 4 | 4 |
| Answer-first / GEO | — | — | 2 | 8 |
Weights sum to 100. Any axis flagged "Unscored" is dropped and the remainder re-normalised; report the dropped weight as "{N} pts unscored" so the reader sees coverage.
Phoenix-style verdict (X surfaces only)
After scoring, map the X audit to one of four verdicts. This is the harness's predicted reach posture — not a real Phoenix prediction, but a structured projection based on the algorithm mechanisms encoded in social-x.
| Verdict | Trigger |
| Pass | Overall ≥ 75 AND no axis < 5 AND no PTOS / MediumRisk flag |
| Borderline | Overall 55–74, or one axis < 5 with no kill-switch flag |
| Likely-Suppressed | Overall < 55, or Dwell-risk ≤ 3, or Slop-risk ≤ 3, or MediumRisk brand-safety flag |
| Kill-Switch-Risk | Any PTOS category positive, or muted-keyword certainty, or Safety axis ≤ 2 |
For non-X content, omit the verdict and use the overall score band only: Strong (≥ 80) / Ship-ready (65–79) / Needs work (45–64) / Rewrite (< 45).
Severity matrix
Each finding gets a severity tier.
- Critical — blocks reach or ships a fabrication. Fix before publishing. (Kill-switch flag, fabricated stat, first-person experience with no author source, anonymous byline on YMYL, intent mismatch, information-gain-zero, missing hook.)
- Moderate — degrades performance noticeably. Fix when possible. (Slop-shape hook, dwell-risk wall of text, weak title/meta, missing answer-first block, voice drift.)
- Minor — polish. Optional. (One filler phrase, single data-free section, single passive sentence in an active piece.)
When the severity is ambiguous, default UP — flag as Critical and let the user decide to defer. Never silently downgrade safety findings.
Finding format
Every finding follows this shape so reports are diff-able and tools can parse them.
[SEVERITY] [AXIS] {one-line title}
Where: {file:line OR section name OR "hook" / "post 2" / "conclusion"}
Evidence: "{verbatim quote from the content, ≤ 25 words}"
Why it matters: {one sentence tying to a specific algorithm or quality mechanism}
Fix direction: {one sentence — what to change, not how to write it}
Suggested rewrite: {optional — only when the fix is local and short; otherwise omit}No suggested rewrites for structural findings (those are scoping decisions for the editor agent). No suggested rewrites for findings the auditor flagged as "needs verification" — preservation is the default.
Escalation rule
If a check cannot be completed, do not infer. Flag as "Unverified" with a precise reason:
- Missing input context (no niche given, no target keyword) → list as "Unscored axis — needs {context}; ask the user before re-scoring."
- Named entity the model has no training-data confidence on → "Unverified entity — would need {websearch / user source} before scoring grounding."
- Live signal needed (current SERP, current AIO presence) → "Unverified — needs live SERP fetch."
- Source content too short to evaluate an axis → "Unscored — not enough signal."
Never grade an axis from a guess. Unverified beats wrong.
Output report template
Save as in-conversation rendering by default. If user says "save it," write to content-audit-{slug}-{YYYY-MM-DD}.md in CWD. Never mutate the source file.
# Content Audit — {filename or "Pasted draft"}
Detected type: {X post / X thread / blog / article / ...}
Skills consulted: {social-x, content-voice, content-humanize, content-grounding, ...}
Context provided: {list}
Context missing (axes affected): {list, if any}
## Score
Overall: {N}/100 — {verdict band}
{Phoenix verdict line, X only}
| Axis | Score | Weight | Weighted |
|---|---|---|---|
| Hook | 7/10 | 20 | 14.0 |
| Dwell risk | 4/10 | 18 | 7.2 |
| ...
## Critical findings
[CRITICAL] [AXIS] {title}
Where: ...
Evidence: "..."
Why it matters: ...
Fix direction: ...
Suggested rewrite: ...
## Moderate findings
...
## Minor findings
...
## What's working
- {strength 1}
- {strength 2}
## Recommended next step
{One of:}
- Ready to publish — minor polish optional.
- Run `content:editor` to apply the {N} critical and {N} moderate fixes.
- Rewrite recommended — structural issues; restart from a new outline.
- Get the missing context first ({list}) then re-audit.Examples
Example — X single-post audit (abbreviated)
# Content Audit — pasted draft
Detected type: X post (single)
Skills consulted: social-x, content-voice, content-humanize, content-grounding
Context provided: niche=AI coding agents, account stage=mid (8k followers)
Context missing: none
## Score
Overall: 69/100 — Borderline
Phoenix verdict: Borderline — Dwell-risk axis at 4 is the choke point
| Axis | Score | Weight | Weighted |
|---|---|---|---|
| Hook | 8/10 | 20 | 16.0 |
| Dwell risk | 4/10 | 18 | 7.2 |
| Slop risk | 7/10 | 15 | 10.5 |
| Voice | 7/10 | 10 | 7.0 |
| Specificity | 6/10 | 10 | 6.0 |
| Structure | 5/10 | 5 | 2.5 |
| Grounding | 9/10 | 10 | 9.0 |
| Safety + brand-safety | 10/10 | 7 | 7.0 |
| Topic fit | 8/10 | 5 | 4.0 |
## Critical findings
[CRITICAL] [Dwell risk] Wall of text in first paragraph
Where: post body, opening 3 lines
Evidence: "Most teams don't realise that the actual problem with agents is not the model itself but rather..."
Why it matters: First-screen non-dwell is a negative-weighted Phoenix signal; long unbroken text predicts scroll-past.
Fix direction: Break the opening into 1-sentence-per-line; lead with the contrarian rule, not the setup.
## Moderate findings
...Example — blog post audit (abbreviated structure)
Same report shape; Answer-first / GEO axis populated; Phoenix verdict line omitted; band verdict from overall score.
Checklist
Before returning a report:
- Content type detected explicitly and confirmed (or asked if ambiguous)
- All applicable platform + cross-cutting skills consulted (named in report header)
- Every axis has a score or an explicit "Unscored — needs {context}"
- Overall score uses the weight table for the detected type; un-scored weight re-normalised
- Phoenix verdict present for X; band verdict for everything else
- Every finding has severity, axis, where, evidence quote, why-it-matters, fix-direction
- Suggested rewrites only on local short fixes — not on structural findings
- Recommended next step routes to the right surface (publish / editor / outline / get-context)
- Report rendered in conversation; no source file mutated
- If saved, file path is
content-audit-{slug}-{YYYY-MM-DD}.mdin CWD
Composition / References
Content-domain skills the harness composes with:
social-x,social-linkedin,social-threads,social-bluesky,social-mastodon,social-hackernews,social-reddit— platform rulebookscontent-voice— voice / AI-pattern checkcontent-humanize— 8-dimension humanization diagnostic (when Slop-risk score is low)content-grounding— fact-grounding triage for the Grounding axiscontent-geo— answer-first / extractable structure for the Answer-first / GEO axis
Used by agents:
content:audit— read-only orchestrator, produces report onlycontent:editor— uses the diagnosis to drive surgical edits
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

