Skip to content
Content
Skill

/critic

Review a finished Data2Story blog against the 5 quality rubric dimensions (visual_design, narrative_pacing, data_method_transparency, claim_data_alignment, insight_value), score each 1-7 with on-page evidence, and emit critic.json with pass/fail + targeted, surgical send-back

BOOST
From plugin
data2story-skill
15827 skills
Install
$ npx -y skills add QinghongLin/data2story-skill --skill critic --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/critic

Context preview

The summary Claude sees to decide when to auto-load this skill.

Review a finished Data2Story blog against the 5 quality rubric dimensions (visual_design, narrative_pacing, data_method_transparency, claim_data_alignment, insight_value), score each 1-7 with on-page evidence, and emit critic.json with pass/fail + targeted, surgical send-back

SKILL.md

critic.SKILL.md
name: critic
description: "Review a finished Data2Story blog against the 5 quality rubric dimensions (visual_design, narrative_pacing, data_method_transparency, claim_data_alignment, insight_value), score each 1-7 with on-page evidence, and emit critic.json with pass/fail + targeted, surgical send-back instructions. Verifies every load-bearing claim/asset against its traceability chain before scoring; applies the caveat-survival, honest-accuracy, and third-party-attribution caps. Does NOT rewrite content — scores and sends back. Use at Stage 6.5 after the Auditor and after verify.py has produced verifier.json; re-runs each revision round. Triggers: a built index.html plus verifier.json exist, or you need to judge whether the article is actually good."
argument-hint: [PROJECT_DIR]
allowed-tools: Bash(*), Read, Write, Grep

Critic

Your job is **quality review**, like a demanding editor-in-chief. You read the finished article, score it against five fixed rubric dimensions, and hand back **specific, minimal fixes** for whatever falls short. You do **not** rewrite content yourself — you score and you send back.

This role exists because the pipeline otherwise has no quality gate: the Auditor only fixes layout, the Inspector only checks traceability. You are the only step that judges whether the article is actually *good*.

Setup

  • `PROJECT_DIR` = first argument.
  • Read **`index.html`** (the finished article — read the prose, not just tags), plus `verifier.json`, `analyst.json`, `editor.json`, `designer.json`, `detective.json`. (`verifier.json` is produced by `verify.py` at **Stage 6.4**, before the Critic, so the traceability index is available when you score.)
  • The rubric is **[`references/rubric.json`](references/rubric.json)** — the 5 dimensions, the 1-7 scale anchored at 3, the score-gates, the global anti-leniency rules R1-R7, the per-dimension `send_back_to` role, and the ethos. Read it fully before scoring.

Step 1: Score each dimension (evidence-checked)

For each of the five dimensions (`visual_design`, `narrative_pacing`, `data_method_transparency`, `claim_data_alignment`, `insight_value`):

1. Read what the article actually does for that dimension. 2. **Verify before scoring transparency & claim-data alignment**: for each load-bearing claim/number, follow its `data-*` lineage in `verifier.json` to the code line / `data_table` / source URL and confirm it actually backs the claim (mirror how the project's judge works). A claim with no resolvable evidence cannot score above 3 on those two dimensions.

  • **Reward the runnable coding verifier (transparency)**: beyond tracing provenance, check whether the reader can actually *re-execute* the statement. The in-page Inspector panel should let the reader open a load-bearing number and "run it yourself" — a computation snippet that re-executes in-browser and grades against the published output (stochastic ones graded "≈ within noise") — and a reproducible notebook should re-run the headline numbers from raw data and assert they match. A headline that is both traceable (`verifier.json`) AND independently re-runnable clears the `five_plus_requires` bar for `data_method_transparency`; provenance that is traceable-but-not-runnable (no working in-page run, no reproducible notebook) is weaker and should not score as high on that dimension.
  • **Caveat-survival gate**: the Auditor only checks that the page builds; you are the only step that checks whether material caveats reached the reader. Identify any MATERIAL limitation of the lead — one that could change the lead finding's direction or magnitude (a model assumption that biases the headline's own subject, an Analyst-flagged assumption, or a Detective `controversy`/limitation bearing on the lead) — and confirm it survived into the VISIBLE prose, not just the JSONs. If such a caveat is present in `analyst.json`/`detective.json`/`editor.json` but is dropped from `index.html`, cut to a stray clause, or buried in a footnote, apply the `material_caveat_survival_cap` (cap `data_method_transparency` and `claim_data_alignment` at 3) and send back to the Editor. Likewise, if a validation confirms a different granularity than the headline sells (e.g. per-event skill vs an aggregate/tournament figure) and the prose doesn't name that level gap, treat it as a claim_data_alignment failure.

3. Assign an INTEGER 1-7 per the scale + `score_gates` + rules R1-R7. **Anchor at 3.** Going to 5+ requires clearing the gate (≥3 concrete on-page evidence items AND a handled category-typical failure mode). Cite the concrete evidence you saw.

Step 2: Decide pass/fail + write targeted send-backs

  • A dimension **fails** if its score `< pass_threshold` (4).
  • **Run-level pass bar (raised — R9 / `pass_requires_signature_move`)**: `overall.pass` is true ONLY if every dimension is `>=4` AND at least ONE dimension reaches `>=5` (a genuine signature move = that dimension's `five_plus_requires` met). A uniformly-4 page is **competent, not flagship** → `pass=false`, `flagship=false`, `tier="competent"`. The signature move is satisfiable on the **honest axis** for any topic — a reframe hook (narrative), the runnable-verify / in-page Inspector layer (data_method_transparency — favors computational topics), a personal-position interactive (insight_value), or a signature annotated chart + tasteful data_driven cinematic spine (visual_design); see **[`../../frontend-design-pro/references/abstract_excellence.json`](../../frontend-design-pro/references/abstract_excellence.json)**. **Never** send back asking for decorative media to "reach 5" — a forced decorative/tonally-wrong asset trips the existing decorative/richness cap and floors that dimension at 3.
  • **Flagship-lift send-back (when every dim >=4 but none reaches 5)**: write ONE targeted send-back naming the single highest-leverage dimension to lift to 5 and the specific honest-axis move — Editor → `reframe_hook` (narrative); Copywriter → a sharper masthead he
Read more
Ships withdata2story-skill

A data-journalist agent skill that turns any dataset into a verifiable, evidence-grounded multimodal story — a self-contained HTML article where every sentence traces back to the data or source that justifies it.

Get the whole plugin
Stats
158
Stars
23
Forks
Maintained
Maintenance
Python
Language
MIT
License
3mo ago
Last commit
5mo ago
Created
6d ago
Added

Repo: QinghongLin/data2story-skill

Other skills on data2story-skill.