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.
Review a finished Data2Story blog against the 5 quality rubric dimensions (visualdesign, narrativepacing, datamethodtransparency, claimdataalignment, insightvalue), score each 1-7 with on-page…
$ npx skills add QinghongLin/data2story-skill --skill critic -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install QinghongLin/data2story-skill critic --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "critic" agent skill from https://github.com/QinghongLin/data2story-skill/tree/main/skills/data2story-pro/critic into .claude/skills/critic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "critic", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/QinghongLin/data2story-skill/tree/main/skills/data2story-pro/criticType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add QinghongLin/data2story-skill --skill critic -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install QinghongLin/data2story-skill critic --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QinghongLin/data2story-skill.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/data2story-pro/critic .agents/skills/critic && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "critic" agent skill from https://github.com/QinghongLin/data2story-skill/tree/main/skills/data2story-pro/critic into .agents/skills/critic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "critic", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add QinghongLin/data2story-skill --skill critic -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install QinghongLin/data2story-skill critic --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QinghongLin/data2story-skill.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/data2story-pro/critic .cursor/skills/critic && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "critic" agent skill from https://github.com/QinghongLin/data2story-skill/tree/main/skills/data2story-pro/critic into .cursor/skills/critic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "critic", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/QinghongLin/data2story-skill.git --path skills/data2story-pro/critic--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add QinghongLin/data2story-skill --skill critic -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install QinghongLin/data2story-skill critic --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QinghongLin/data2story-skill.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/data2story-pro/critic .gemini/skills/critic && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "critic" agent skill from https://github.com/QinghongLin/data2story-skill/tree/main/skills/data2story-pro/critic into .gemini/skills/critic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "critic", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install QinghongLin/data2story-skill criticInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add QinghongLin/data2story-skill --skill critic -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/QinghongLin/data2story-skill.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/data2story-pro/critic .github/skills/critic && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "critic" agent skill from https://github.com/QinghongLin/data2story-skill/tree/main/skills/data2story-pro/critic into .github/skills/critic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "critic", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add QinghongLin/data2story-skill --skill critic -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install QinghongLin/data2story-skill critic --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/QinghongLin/data2story-skill.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/data2story-pro/critic .opencode/skills/critic && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "critic" agent skill from https://github.com/QinghongLin/data2story-skill/tree/main/skills/data2story-pro/critic into .opencode/skills/critic/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "critic", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
criticReview 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. 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.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 63a55c1. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(*)ReadWriteGrepFrom allowed-tools in the SKILL.md frontmatter.
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.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash(*), Read, Write, GrepAutomated 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.
The full file from QinghongLin/data2story-skill at commit 63a55c1, republished under its MIT licence (© QinghongLin). 2,305 words, ~4,662 tokens.
.claude/skills/critic/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.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.
PROJECT_DIR = first argument.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.)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.For each of the five dimensions (visual_design, narrative_pacing, data_method_transparency, claim_data_alignment, insight_value):
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.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.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.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.< pass_threshold (4).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.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.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.critic.jsonSingle file, this shape:
{
"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 == falseis a real failure, not a soft note. When the orchestrator's bounded revision loop reaches you on round 2 andoverall.passis still false, the run isINCOMPLETE — 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. Keepoverall.pass=falsehonest — never round a failing average up to a pass to let the loop end quietly — and leave the failing dimension(s) and theirsend_back_to/suggested_fixincritic.jsonso 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
<=2rounds. When the last round lands with every dimension>=4but none reaching5, the honest terminal ispass=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) incritic.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.
ethos in full)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).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.)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).../../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.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.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.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.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.Edit — you report and send back; the responsible roles do the surgical revision.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
SKILL.md and 1 other file (references) in skills/data2story-pro/critic of QinghongLin/data2story-skill.
Open the folder on GitHubat commit 63a55c1
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Critic this skillQinghongLin/data2story-skill | 155 | — | ~4.7k | Automated safety check: Notes | MIT | |
| DeepTutor CLIHKUDS/DeepTutor | 41k | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| AI Engineering Placement Quizrohitg00/ai-engineering-from-scratch | 66k | — | ~2k | Automated safety check: Pass | MIT | |
| Codebase to Coursezarazhangrui/codebase-to-course | 5.7k | — | ~4.4k | Automated safety check: Pass | None | |
| AI Engineering Phase Quizrohitg00/ai-engineering-from-scratch | 66k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Scholar EvaluationK-Dense-AI/claude-scientific-writer | 2.4k | 2 repos | ~2.9k | Automated safety check: Notes | MIT |
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.
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.
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.
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.
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.
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…
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…
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…
QinghongLin/data2story-skill
Research external context for a dataset — domain background, history, related studies, and why this data matters.
QinghongLin/data2story-skill
Run sentence-level traceability verification on a blog, then generate viewer.html with interactive evidence panel.
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).
QinghongLin/data2story-skill
Generate text embeddings via OpenRouter using Qwen3-Embedding-8B.
Categories
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.
Critic fits situations like: tasks that involve Quizzes and assessments; tasks that involve UI design.
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.
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.
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.
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.
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.
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.
Critic is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
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.
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.
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.