Review a finished Data2Story blog against the 5 quality rubric dimensions (visualdesign, narrativepacing, datamethodtransparency, claimdataalignment, insightvalue), score each 1-7 with on-page…

MITAuto-check: notesEducation

Install Critic

skills CLI
$ npx skills add QinghongLin/data2story-skill --skill critic -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install QinghongLin/data2story-skill critic --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/QinghongLin/data2story-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/data2story-pro/critic .claude/skills/critic && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
critic
GitHub stars
155
Token cost
~4.7k tokens
SKILL.md length
2,305 words
Files
2 (incl. references)
Skills in repo
31
Repo updated
First seen
Licence
MIT

At a glance

Review a finished Data2Story blog against the 5 quality rubric dimensions (visualdesign, narrativepacing, datamethodtransparency, claimdataalignment, insightvalue), score each 1-7 with on-page…

  • Works in 3 steps: Score each dimension (evidence-checked) → Decide pass/fail + write targeted… → Write critic.json
  • Tasks that involve Quizzes and assessments
  • SKILL.md covers Setup, Step 1: Score each dimension…, Step 2: Decide pass/fail +… and Step 3: Write critic.json, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Critic is an agent skill from QinghongLin/data2story-skill. Review a finished Data2Story blog against the 5 quality rubric dimensions (visualdesign, narrativepacing, datamethodtransparency, claimdataalignment, insightvalue), 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…

Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/rubric.json`).

It sits in Education, covering Quizzes and assessments and UI design. The repository describes itself as: Data Journalist Agent: Transforming Data into Verifiable Multimodal Story. The licence is MIT.

When your agent uses it

  • Tasks that involve Quizzes and assessments
  • Tasks that involve UI design

Example prompts

  • “/critic”

Requirements

  • Pre-approved tools (allowed-tools): Bash(*), Read, Write, Grep

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Score each dimension (evidence-checked)
  2. Decide pass/fail + write targeted send-backs
  3. Write critic.json

What it can do on your machine

Read from SKILL.md and the folder at commit 63a55c1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(*)
    • Read
    • Write
    • Grep

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Critic loads about 4.7k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 185 tokens; SKILL.md has 2,305 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~185
When it runs · the whole SKILL.md, loaded when a task matches
~4.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~11k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash(*), Read, Write, Grep

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from QinghongLin/data2story-skill at commit 63a55c1, republished under its MIT licence (© QinghongLin). 2,305 words, ~4,662 tokens.

Download SKILL.mdSave it as .claude/skills/critic/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
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.
allowed-tools
Bash(*), Read, Write, Grep
argument-hint
PROJECT_DIR

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 — 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. 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 headline + takeaway-title captions on a real device (narrative_pacing, when the body arc is sound but the titling is the weak link); Designer → signature annotated chart (visual_design); Analyst/Programmer → surface the runnable-verify on the headline (data_method_transparency); Interaction → personal_input (insight_value). Pick a move the topic already supports; never propose forcing a decorative asset.
  • For every failing dimension, write a surgical send-back: the send_back_to role (from rubric.json), the exact section / finding / asset to change, the minimal change, and why (which rule/gate it missed). Never write "make it better" — name the specific fix.
  • Prioritise: the lowest-scoring, highest-leverage dimension first (usually narrative/insight/claim, which the Editor owns).

Step 3: Write critic.json

Single file, this shape:

json
{
  "overall": { "average_score": 4.4, "pass": false, "flagship": false, "tier": "competent", "signature_dimension": null, "round": 1 },
  "dimensions": [
    { "dimension": "narrative_pacing", "score": 3, "severity": "high",
      "issues": ["thesis is pre-spoiled in the standfirst; opening leads with background not the surprise"],
      "evidence": ["section edt_01 restates the headline finding before any data"],
      "send_back_to": "editor",
      "suggested_fix": "Re-open edt_01 on the single most counter-intuitive number (ana_24, the 8.97% spike); move the context paragraph below it." },
    { "dimension": "visual_design", "score": 5, "severity": "none", "issues": [], "evidence": ["..."], "send_back_to": null, "suggested_fix": null }
  ]
}

The overall object follows C-FLAGSHIP:

  • pass (bool) is true only if every dimension >=4 AND at least ONE dimension >=5 (a signature move — its five_plus_requires met).
  • flagship (bool) equals pass.
  • tier ∈ {"flagship","competent","sub_competent"}: "flagship" if pass; else "competent" if every dim >=4 but none >=5; else "sub_competent" (some dim <4).
  • signature_dimension (string|null) = the name of a dimension that reached >=5, else null.

Always include all five dimensions every time.

Quality-gate loudness. overall.pass == false is a real failure, not a soft note. When the orchestrator's bounded revision loop reaches you on round 2 and overall.pass is still false, the run is INCOMPLETE — quality gate not cleared: the build is not hard-blocked (Stage 7 still runs) but the run must NOT be reported as a silent "done" or called flagship. Keep overall.pass=false honest — never round a failing average up to a pass to let the loop end quietly — and leave the failing dimension(s) and their send_back_to/suggested_fix in critic.json so the orchestrator can surface exactly what still falls short in the closing summary.

Not your call to adjudicate a detected defect. A hard playtest/auditor send-back left open (unresolved, no recorded blocker) is a contract-gate failure (validate.py Section 15), not a Critic call — the Critic scores quality; it does not adjudicate or excuse an unresolved detected defect.

Bounded-loop terminal (raised bar, R9). The loop is bounded at <=2 rounds. When the last round lands with every dimension >=4 but none reaching 5, the honest terminal is pass=false, tier="competent", flagship=false: record 'competent, NOT flagship-verified' plus the flagship-lift send-back (the one dimension to lift and its honest-axis move) in critic.json. Never bump a 4 to a 5, and never round the average up, to manufacture a pass — a competent page that reached no signature move is reported as competent, not silently promoted to flagship.

Show full SKILL.md (1,229 more words)Show less

Rules (the ethos — read rubric.json ethos in full)

  • Reward genuine quality (clarity, a real angle, well-bounded accurate claims, traceable evidence, distinctive design) — never length, extra charts, flourish, or marketing tone.
  • Penalise forbidden marketing words (novel / state-of-the-art / unprecedented / groundbreaking / first-to) and PaperDoctor tics, and visual/media sameness or decorative media.
  • Media must earn a purpose: each asset should declare INFORM (data/info the prose can't carry) or IMMERSE (mood that aids reading); an asset with no purpose, an undelivered purpose, or one added only to fill a channel is decoration — it caps visual_design at 3 no matter how polished.
  • Richness floor (the INVERSE cap — corroborate, don't own the gate): the purpose gate above punishes purposeless EXCESS; the richness floor punishes IMPOVERISHMENT on a rich topic. On a topic where topic_profile.is_visual==true, CAP both visual_design and insight_value at 3 if the page took the impoverished path — ONE image + cinematic fell back to a thin generative/data_driven spine despite available supply (cinematic is mandatory and never fully "off") + a flat static hero (not a dynamic/animated cover) + a generic, topically-unrelated CC0 loop for BGM (rung 2 not climbed where a real best-fit anthem fits). A visual topic that under-delivers on every richness lever is not a competent visual product, and it robs the reader of the immersive update the topic affords — no matter how clean each individual piece is. You corroborate this floor; you do not own the gate: the orchestrator richness gate + validate.py richness_* checks (and the auditor cinematic_supply_floor / dynamic_hero_on_visual / topic_asset_floor) are the enforcement; your cap is the LLM-side net. The floor never forces a fabricated or decorative asset to fill the channel — that itself caps visual_design at 3. Mirrors the curated 错题本 PIT-45 (the impoverished path passing every gate) / PIT-46 (cinematic dropped for under-supply) / PIT-47 (a generic loop where a real anthem was the best fit).
  • Animated-likeness taste advisory (light, NON-BLOCKING): animating a real person's fetched, identity-verified photo into a subtle cinemagraph (with proportionate disclosure) is sanctioned — do not penalize it, and do not ask for it to be removed; there is no hard gate on animating a likeness, so optimize for quality regardless of context. The one thing to add is a light taste note for genuinely sensitive subjects (deceased persons, minors, criminal allegations): if the cover animates such a likeness, surface a one-line advisory — "is animating this likeness tasteful here?" — in notes (or as a severity:"low" item) that the user can ignore. This never blocks the build, never fails a dimension, and never sends back. (The existing no-AI-faked-real-subject check is separate and still holds — the pitfalls walk + the Auditor's per-image subject viewing: a generated/faked face passing as a real photo, or an AI-generated person where no usable photo exists, remains a real defect; animating a real fetched photo is not.)
  • Visual_design scoring: score the 7 groups in the checklist (../../frontend-design-pro/references/quality_rubric.json, pointed to from the visual_design dimension in rubric.json). Any severity:hard fail caps visual_design at 3 (consistent with the "decorative media caps at 3" rule above); a 5+ requires the existing gate (≥3 evidence items AND a handled category-typical failure mode) and zero hard fails. Point the chart-quality judgment at ../../dataviz-craft/references/chart_chooser.json (right chart type for the data) + ../../dataviz-craft/references/annotation_layers.json (does the chart annotate its point).
  • A recurring known pitfall on the page is a hard fail. Check the finished article against ../../frontend-design-pro/references/pitfalls.json (the curated 错题本): if any entry marked severity:hard is visibly present (e.g. an invisible/0-width chart, a breakout overflowing the page, a chart SVG bleeding past its card, autoplay-with-sound, or a load-bearing number lifted from a proprietary/un-auditable source), treat it as a hard fail — cap the affected dimension at 3 and send back to the role named in that pitfall's detect. These are mistakes the pipeline already learned once; shipping one again is not a soft deduction.
  • Interaction-as-argument: does the piece make the reader PRODUCE the central finding (an explorable they run, a guess-then-reveal, a personal input) rather than just read it? Is there exactly ONE earned HERO centerpiece, and does it land at/before the reveal (not bolted on after the answer)? A model/derived headline the reader cannot run or verify, or an interaction placed after the answer is already given, caps insight_value at 3.
  • Supporting interactives must each earn their place (R8 — abundance is gated, not rewarded): a blog MAY carry any number of supporting playgrounds beyond the hero, but EACH must declare an INFORM/IMMERSE purpose bound to a DISTINCT finding the reader produces AND pass playtesting (the Auditor's audit/playtest_report.json). A supporting playground that is purposeless, re-teaches a finding already made, or lets the reader produce nothing is decoration — it caps visual_design at 3 (route to the Editor's curation); a widget-pile with no clear hero centerpiece caps insight_value at 3 (PIT-34). Score the EARNED subset, never the count — never average a dimension UP because there are "many interactives." A supporting playground the Auditor/Playtester already hard-flagged as dropped/inert/recompute-disagreeing is the Programmer's correctness send-back; dedup with it so an int_NN is routed once, not thrashed across both loops.
  • Material caveats must survive onto the page: a headline whose known material limitation (one that could move its direction or magnitude) is dropped, cut to a clause, or buried in a footnote caps data_method_transparency and claim_data_alignment at 3 — provenance in the JSONs does not redeem a caveat the reader never sees. Watch too for a validation that confirms a different level than the headline claims (per-event vs aggregate/tournament) being presented as if it validated the headline.
  • Titles + captions carry the hook (the titling_caption_cap under narrative_pacing): the masthead headline, the section titles, and the figure/photo/table captions are the most-read lines on the page, so a templated/AI-tell titling layer is a narrative failure, not cosmetics. CAP narrative_pacing at 3 if the H1/heading is generic or an AT1 two-beat ("Flat statement. Flat counter-statement." / "not X, it's Y" — e.g. "Argentina is the favourite. No bookmaker agrees."), an "An Analysis of …"/"Exploring …" topic label, or an empty (data-unbacked) superlative; OR the standfirst pre-spoils the reveal number the interactive hero exists to make the reader produce; OR a caption only labels the axes / opens "This chart shows" instead of stating the finding; OR any h1/h2/figcaption carries a marketing word. Send the fix to the copywriter (re-title the masthead / sections / captions in copywriter.json), not the Editor's body. You corroborate this; the advisory enforcement is the Auditor's check_15_titling_caption_quality grep + the 错题本 PIT-56/57/58 (intentionally not a hard validate.py gate yet). REWARD the positive case: a headline that states the conclusion on a real device + a standfirst that primes without spoiling + takeaway-title captions is a narrative signal that lifts toward 5.
  • Reward the runnable coding verifier: the strongest form of data_method_transparency is provenance the reader can re-execute, not just read — the in-page Inspector panel's "run it yourself" (a computation that re-runs in-browser and grades against the published output, stochastic ones "≈ within noise") plus a reproducible notebook that re-runs the headline numbers from raw data and asserts they match. Credit a piece where load-bearing numbers are both traceable (verifier.json) AND independently re-runnable; traceable-but-not-runnable provenance is weaker and should not score as high on that dimension.
  • Score only what is on the page + its evidence chain. No credit for intent or assumed tooling.
  • You do not have Edit — you report and send back; the responsible roles do the surgical revision.

Output

PROJECT_DIR/critic.json.

Done when all five dimensions are scored with concrete evidence, every sub-threshold dimension has a specific send_back_to + suggested_fix, and overall.pass reflects whether the article clears the bar.

© QinghongLin, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/data2story-pro/critic of QinghongLin/data2story-skill.

  • SKILL.md
  • references/rubric.json

Open the folder on GitHubat commit 63a55c1

Compare with similar skills

Critic next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Critic compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Critic this skillQinghongLin/data2story-skill155—~4.7kAutomated safety check: NotesMIT
DeepTutor CLIHKUDS/DeepTutor41k—~2.8kAutomated safety check: PassApache-2.0
AI Engineering Placement Quizrohitg00/ai-engineering-from-scratch66k—~2kAutomated safety check: PassMIT
Codebase to Coursezarazhangrui/codebase-to-course5.7k—~4.4kAutomated safety check: PassNone
AI Engineering Phase Quizrohitg00/ai-engineering-from-scratch66k—~2.1kAutomated safety check: PassMIT
Scholar EvaluationK-Dense-AI/claude-scientific-writer2.4k2 repos~2.9kAutomated safety check: NotesMIT

Similar skills

  • DeepTutor CLI

    HKUDS/DeepTutor

    Teaches the agent to set up and run DeepTutor from the command line: chat and capabilities, knowledge bases, partners, memory, sessions, notebooks and the server or Web app.

    41k GitHub stars~2.8k tokensUpdated 2 days ago
    EducationAuto-check passed
  • AI Engineering Placement Quiz

    rohitg00/ai-engineering-from-scratch

    Runs a 10-question quiz across five areas to place a learner in the AI Engineering from Scratch curriculum, so they skip what they already know.

    66k GitHub stars~2k tokensUpdated today
    EducationAuto-check passed
  • Codebase to Course

    zarazhangrui/codebase-to-course

    Turns a codebase into an interactive single-page HTML course for non-technical learners, with scroll modules, animated diagrams, quizzes and plain-English code translations.

    5.7k GitHub stars~4.4k tokensUpdated 6 mo ago
    EducationAuto-check passed
  • AI Engineering Phase Quiz

    rohitg00/ai-engineering-from-scratch

    Quizzes you on a completed phase of the AI Engineering from Scratch course, taking a phase number or name and mapping it to that phase's directory.

    66k GitHub stars~2.1k tokensUpdated today
    EducationAuto-check passed
  • Scholar Evaluation

    K-Dense-AI/claude-scientific-writer

    Provide qualitative-first, evidence-traceable developmental review of scholarly works and audit low-stakes research-assessment rubrics with optional local quality controls.

    2.4k GitHub starsUsed in 2 repos~2.9k tokens
    EducationAuto-check: notes
  • Evaluation

    guanyang/open-agent-hub

    This skill should be used when building agent evaluation systems: deterministic checks, regression suites, multi-dimensional rubrics, quality gates, production monitoring, baseline comparison, and…

    977 GitHub starsUsed in 2 repos~4.2k tokens
    EducationAuto-check passed

More from QinghongLin/data2story-skill

All 31 skills in this repo
  • Inspector

    QinghongLin/data2story-skill

    Run sentence-level traceability verification on a Data2Story blog (verify.py - verifier.json), then emit the in-page Inspector panel (the reader-facing runnable verifier) + the verify/ artifacts…

    155 GitHub stars~3.1k tokensUpdated 3 mo ago
    Auto-check: notes
  • Auditor

    QinghongLin/data2story-skill

    Audit a generated Data2Story blog for build correctness across ALL modalities by ACTUALLY RENDERING it in a real headless browser (when available) — catching blank/0-width charts, broken/oversized…

    155 GitHub stars~6.4k tokensUpdated 3 mo ago
    Auto-check: notes
  • Detective

    QinghongLin/data2story-skill

    Research external context for a dataset — domain background, history, related studies, and why this data matters.

    155 GitHub stars~2.4k tokensUpdated 3 mo ago
    Auto-check: notes
  • Inspector

    QinghongLin/data2story-skill

    Run sentence-level traceability verification on a blog, then generate viewer.html with interactive evidence panel.

    155 GitHub stars~697 tokensUpdated 3 mo ago
    Auto-check: notes
  • Data2story Pro

    QinghongLin/data2story-skill

    A skill your agent uses to turn a dataset into a verifiable multimedia blog (a data story / data-driven article / interactive dashboard from a dataset).

    155 GitHub stars~14k tokensUpdated 3 mo ago
    Auto-check: notes
  • Openrouter Embeddings

    QinghongLin/data2story-skill

    Generate text embeddings via OpenRouter using Qwen3-Embedding-8B.

    155 GitHub stars~499 tokensUpdated 3 mo ago
    Auto-check passed

Categories

Questions about Critic

What does Critic do?

Review a finished Data2Story blog against the 5 quality rubric dimensions (visualdesign, narrativepacing, datamethodtransparency, claimdataalignment, insightvalue), score each 1-7 with on-page…. Critic is an agent skill from QinghongLin/data2story-skill.json with pass/fail + targeted, surgical send-back instructions.

When should I use Critic?

Critic fits situations like: tasks that involve Quizzes and assessments; tasks that involve UI design.

How do I install Critic in Claude Code?

Run `npx skills add QinghongLin/data2story-skill --skill critic -a claude-code`. Or copy the skill folder (skills/data2story-pro/critic in QinghongLin/data2story-skill) into .claude/skills/critic in your project. Claude Code loads it when a task matches its description.

How do I install Critic in Codex?

Run `npx skills add QinghongLin/data2story-skill --skill critic -a codex`. Or copy the skill folder (skills/data2story-pro/critic in QinghongLin/data2story-skill) into .agents/skills/critic in your project. Codex loads it when a task matches its description.

Can I use Critic in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add QinghongLin/data2story-skill --skill critic -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/critic, .gemini/skills/critic, .github/skills/critic and .opencode/skills/critic in your project.

What does Critic need to run?

SKILL.md names no scripts, command-line tools or credentials: Critic is instructions for the agent only. Its frontmatter pre-approves these tools: Bash(*), Read, Write, Grep.

Does Critic access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Critic safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Critic use?

Critic is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Critic use?

About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.1k tokens, read only when the agent opens those files.

What are the alternatives to Critic?

Skills that share tags, products or a category with Critic: DeepTutor CLI (HKUDS/DeepTutor, 41k stars), AI Engineering Placement Quiz (rohitg00/ai-engineering-from-scratch, 66k stars), Codebase to Course (zarazhangrui/codebase-to-course, 5.7k stars) and AI Engineering Phase Quiz (rohitg00/ai-engineering-from-scratch, 66k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Critic?

QinghongLin (a GitHub user) maintains it in QinghongLin/data2story-skill, which has 155 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on July 5, 2026.

Source: QinghongLin/data2story-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.