Evaluate content
Score a published organic post (text / image / carousel) from real metrics inside an existing eval loop — one primary platform per cycle, verdict + engagement-quality diagnosis. Not for short-form video (use evaluate-shortform), paid-ad performance (use evaluate-ad), writing next-cycle copy (use write-social), or scaffolding the loop (use run-pipeline).From its SKILL.md
npx -y skills add hungv47/meta-skills --skill evaluate-contentAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things 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.
- runs commandsInstructs the agent to run 4 commands, including `bun scripts/query-performance.ts <platform> --json` and 3 more.
SKILL.md
10.4 KB, ~2.3k tokens by cl100k_base, as published. Nobody here has run it
Content Eval — Orchestrator
<!-- BUDGET_EXCEPTION: Eval skills carry artifact-schema-as-contract (8 body sections + 8-col results row + cross-stack consumer contract) that is load-bearing and cannot move to references/. Content-eval also surfaces primary-platform scoping + engagement-quality discrimination rules (which are the point of an organic-content eval). Cycle ledger discipline requires the schema be visible in the SKILL.md body. ~800 tokens over the standard cap is the legitimate cost (matches evaluate-campaign sibling). -->Evaluation skill. Converts published organic-content evidence into a cycle snapshot + ledger row + narrowly-scoped next action inside an existing eval loop. One primary platform per cycle; secondary platforms are context only.
Core Question: "Did this content cycle, on its primary platform, create measurable signal strong enough to keep / discard / watch / block — and what should the next strategy/execution skill know?"
Why, methodology, history:
references/playbook.md[PLAYBOOK]. Capability metadata (route triggers, prerequisites, load map):routing.yaml.
Critical Gates
- Existing eval loop required.
program.md+context.mdabsent →NEEDS_CONTEXT, recommend/run-pipeline. This skill does not create loops. - Organic non-video content only. Text / image / carousel posts. Short-form video →
evaluate-shortform; paid-ad →evaluate-ad. Otherwise →NEEDS_CONTEXT, route to sibling. - Measurement evidence + primary metric decides the row. Need ≥1 metric source, window, and current value for the loop's primary metric (engagement rate · save rate · CTR · conversion rate — operator-pick via
program.md). Secondary metrics explain diagnosis; they don't override unlessprogram.mddefines a guardrail failure. - One primary platform per cycle. Secondary platforms live in
Cross-Platform Contextsubsection — they inform diagnosis but DO NOT drive the verdict. A 9-platform campaign = 9 separate cycles, one primary platform each. - No fabricated analytics. Unknown values stay unknown. Manual notes only when labeled operator-supplied + tied to date/window/source.
- Attribution confidence must be explicit. Every verdict includes sample size (impressions/reach + window), baseline comparability (same platform, same content type, comparable window), confounders (algorithm change, posting-time shift, follower-count change, cross-post cannibalization), and confidence:
high | medium | low | blocked. - Evaluation does not generate content. Recommend changes; route copy authorship to
write-social, distribution topublish-social, visual assets toproduce-asset.
Responsibility Split
/run-pipeline owns loop setup + program.md / context.md / results.tsv schema + durable learnings. This skill owns post-publish organic-content evidence snapshots scored against one primary platform. /write-social owns next-cycle copy. /evaluate-shortform + /evaluate-ad own their lanes.
Channel store — single write direction. This skill's metric-ingest agent is the sole writer of the cross-initiative channel store (fully-keyed Metric Packets → .forsvn/performance/<platform>.tsv + ledger advance; see the agent's Channel Store Append step). Diagnosis may read it for trend context — bun scripts/query-performance.ts <platform> --json (references/_shared/performance-data.md) — but never opens a second append path.
Inputs
Required: loop slug/path · primary-platform tag (linkedin · instagram · x · facebook · threads) · source write-social artifact (docs/forsvn/artifacts/marketing/copy/[platform]-[date]-[slug].md) · measurement window · primary metric value + source · reach/impressions (sample-size floor).
Recommended: baseline/prior-cycle row · engagement breakdown (likes/saves/shares/comments split — drives Engagement-Quality dim) · click-through + conversion · qualitative evidence (comment sentiment, replies, DMs — honest, not fabricated) · secondary-platform headline metrics (Cross-Platform Context) · guardrails from program.md.
Outputs
.forsvn/loops/[slug]/evals/YYYY-MM-DD-cycle-N.md + append one row to results.tsv via bun scripts/append-loop-result.ts (8-col helper) + update learnings.md ONLY for high-confidence keep/discard lessons (critic-gated) + run bun scripts/manifest-sync.ts.
Agent Manifest + Dispatch
4 sub-agents: Layer 1 parallel (Metric Ingest + Diagnosis) → Layer 2 (Recommendation) → Layer 3 (Critic). Critic FAIL → revise once; still FAIL → no ledger row + BLOCKED. Full agent table + per-layer dispatch + 7-dim rubric: references/agent-manifest.md. Domain rubric: references/rubric.md. Shared frame: _shared/evaluation-loop-rubric.md.
Pre-Dispatch
Canonical: _shared/pre-dispatch-protocol.md + _shared/eval-loop-spec.md. Hard-blocks (BEFORE Cold Start): missing program.md/context.md → NEEDS_CONTEXT + /run-pipeline; content is short-form video → route to evaluate-shortform; no measurement evidence OR missing primary-platform tag → BLOCKED; custom 10+ col results.tsv → warn + hand-edit. Cold Start: 6 bundled questions (loop · primary platform · source write-social artifact path · window · primary metric value/baseline · reach). Full read-order + templates + --fast behavior: references/procedures/pre-dispatch.md [PROCEDURE].
Session execution profile (single-vs-multi): inherit per references/_shared/execution-policy.md.
Artifact Contract
- Path:
.forsvn/loops/[slug]/evals/YYYY-MM-DD-cycle-N.md. Lifecycle:evaluation. - Frontmatter (10 fields):
skill/version/date/status/summary/purpose/lifecycle/use_when/do_not_use_when/upstream/downstream+ provenance (input_artifacts= source write-social +brand/BRAND.md+research/icp-research.md;output_eval: null). - Body sections (8): Title · Verdict · Evidence (6-col table) · What Changed This Cycle · Diagnosis (Likely Drivers + Engagement-Quality Signals + Cross-Platform Context + Confounders) · Next Cycle Recommendation · Results Row (8-col TSV) · Learning Promotion. Verdict block must name the primary platform explicitly (Gate 4); Evidence table scopes metrics to that platform.
- Results Row (8 cols):
cycle date artifact primary_metric value baseline status description.status∈keep|discard|watch|blocked(Critic Hard Fail otherwise); description includes the primary-platform tag. - Cross-stack contract: consumed by future content-eval cycles (trend analysis) +
write-social --rev=N+1(hypothesis seeding) + human reviewers. Schema changes require atomic update across_shared/eval-loop-spec.md+ downstream callers.
Full template + Evidence/Engagement-Quality/Results/Learning formats + helper invocation: references/format-conventions.md [PROCEDURE].
Results Row Helper
bun scripts/append-loop-result.ts "<loop slug>" \
--artifact evals/YYYY-MM-DD-cycle-N.md \
--metric "<primary metric>" --value "<current>" --baseline "<baseline>" \
--status "<keep|discard|watch|blocked>" --description "<one sentence — include primary-platform>"
Do not append on Critic FAIL — return BLOCKED instead.
Critic Override Protocol
Operator ships despite critic FAIL (or accepts pass-with-concerns) — log BEFORE writing artifact or ledger row: bun scripts/log-critic-override.ts --skill evaluate-content …. Three overrides → rubric-revision escalation. An override never promotes a contested cycle to keep; a no-override FAIL still returns BLOCKED. Full protocol: references/_shared/critic-override-protocol.md [PROCEDURE].
Anti-Patterns
references/anti-patterns.md [ANTI-PATTERN] — content-eval rows + 4 cross-cutting marketing-stack rows. Most common: vanity-metric inflation (Gate 3 + Critic "Engagement-Quality Discrimination"), cross-platform contamination of the verdict (Gate 4 + Critic "Platform-Fit"), scope drift to write-social (Gate 7 + Critic "Decision Discipline"), missing source write-social artifact (Critic Hard Fail).
Worked Example
Organic content cycle (engagement-quality vs vanity, algorithm-spike → watch, critic PASS): references/examples/content-eval-cycle-walkthrough.md.
Durable Rules (protected)
<!-- SLOW_UPDATE_START --> <!-- No pinned rules yet. Populate via the slow-update workflow (see references/slow-update-fence.md). Each pinned rule must (a) be procedural not instance-specific, (b) be earned from a regression or critic-flagged failure, (c) cite the artifact / decision record that justified pinning. --> <!-- SLOW_UPDATE_END -->Completion Status
- DONE — eval artifact written, ledger row appended, critic PASS.
- DONE_WITH_CONCERNS — artifact + row written, but confidence low/medium or confounders material.
- NEEDS_CONTEXT — missing loop, source write-social artifact, primary-platform tag, or required metric evidence; OR content is short-form video / paid ad (route to right sibling).
- BLOCKED — contradictory data, no measurement evidence, filesystem failure, or critic failed after revision.
References
references/{playbook, agent-manifest, rubric, format-conventions, anti-patterns}.md+procedures/{pre-dispatch, dispatch-mechanics}.md_shared/{eval-loop-spec, evaluation-loop-rubric, pre-dispatch-protocol, critic-override-protocol, quality-dashboard-spec}.md- Siblings:
write-social(downstream),run-pipeline(loop scaffolding),evaluate-{ad, shortform, landing-page, campaign}(sibling lanes)
What ships with it: 52 files
643.1 KB alongside SKILL.md, 9 of them executable
agents/
- critic-agent.md5.0 KB
- diagnosis-agent.md4.6 KB
- metric-ingest-agent.md6.1 KB
- recommendation-agent.md4.9 KB
references/
- agent-manifest.md3.0 KB
- anti-patterns.md7.4 KB
- examples/content-eval-cycle-walkthrough.md14.4 KB
- format-conventions.md13.6 KB
- playbook.md8.2 KB
- procedures/dispatch-mechanics.md11.4 KB
- procedures/pre-dispatch.md8.1 KB
- rubric.md11.8 KB
- _shared/artifact-contract-template.md28.8 KB
- _shared/critic-override-protocol.md2.7 KB
- _shared/eval-loop-spec.md12.2 KB
- _shared/evaluation-loop-rubric.md6.2 KB
- _shared/execution-policy.md7.0 KB
- _shared/hook-archetypes.md6.1 KB
- _shared/manifest-spec.md29.2 KB
- _shared/meter-instrumentation.md5.0 KB
- _shared/performance-data.md15.8 KB
- _shared/platform-intelligence/CONTRACT.md6.0 KB
- _shared/platform-intelligence/facebook.md9.8 KB
- _shared/platform-intelligence/founder-demo.md6.2 KB
- _shared/platform-intelligence/.generated-support151 B
- _shared/platform-intelligence/linkedin-launch.md15.5 KB
- _shared/platform-intelligence/linkedin.md31.0 KB
- _shared/platform-intelligence/motion-background.md6.7 KB
- _shared/platform-intelligence/newsletter.md12.8 KB
- _shared/platform-intelligence/producthunt.md17.2 KB
- _shared/platform-intelligence/reddit.md11.2 KB
- _shared/platform-intelligence/reels.md29.4 KB
- _shared/platform-intelligence/shorts.md26.0 KB
- _shared/platform-intelligence/showhn.md17.9 KB
- _shared/platform-intelligence/_template.md11.5 KB
- _shared/platform-intelligence/tiktok.md29.4 KB
- _shared/platform-intelligence/ugc.md6.3 KB
- _shared/platform-intelligence/x-launch.md15.2 KB
- _shared/platform-intelligence/x.md29.6 KB
- _shared/platform-intelligence/youtube.md28.4 KB
12 more files not listed here. See all 52 in the repository.