muvon/octomind-tap/content-audit
Claude Code and agent skill by muvon/octomind-tap
- community
Checking that the SKILL.md file is still in the repository.
Read-only audit harness for content quality: detects the content type (X post / X thread / LinkedIn / Threads / Bluesky / Mastodon / Hacker News / Reddit post, or blog / article), routes to the matching social-* skill plus the cross-cutting voice/humanize/grounding/geo checks, scores per-axis 0-10 + overall 0-100, and emits a canonical findings report with severity tiers, evidence, and suggested rewrites. For X surfaces also emits a Phoenix-style verdict (Pass / Borderline / Likely-Suppressed /…
Install
npx vskill@latest install muvon/octomind-tap/content-auditSKILL.md
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.
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.
Examples
Example — X single-post audit (abbreviated)
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
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/content-audit/SKILL.md
Popularity
- Repository stars
- 5
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/muvon/octomind-tap/content-audit)