Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add QinghongLin/data2story-skill --skill data2storygit clone --depth 1 https://github.com/QinghongLin/data2story-skillWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/qinghonglin/data2story-skill/data2story)<a href="https://agentmods.dev/skills/qinghonglin/data2story-skill/data2story"><img src="https://agentmods.dev/badge/skills/qinghonglin/data2story-skill/data2story/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/qinghonglin/data2story-skill/data2story"><img src="https://agentmods.dev/badge/skills/qinghonglin/data2story-skill/data2story.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Excessive Agency · line 16 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00050 | $0.01886 |
| Opus 5 | $0.00025 | $0.00943 |
| Sonnet 5 | $0.00010 | $0.00377 |
| Haiku 4.5 | $0.00005 | $0.00189 |
Grade A, and why
data2story scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 116 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Data Journalist Agent (Data2Story)
Turn $ARGUMENTS into a blog. Orchestrates the roles below in sequence.
Setup
Resolve paths before doing anything:
- Never hard-code machine-local paths and never ask the user to export path variables.
- Resolve
SKILL_DIR= the directory containing thisSKILL.md(.../skills/data2story) - Resolve
ARCHIVE_DIR= the ancestor directory that containsskills/(two levels up fromSKILL_DIR, i.e.SKILL_DIR/../..) - Resolve
DATA2STORY_ROOT= parent ofARCHIVE_DIR - Commands below use symbolic placeholders such as
ARCHIVE_DIR; replace them with resolved, quoted paths before running Bash. DATA_NAME= the dataset folder name (e.g.pick_a_card)DATA_DIR= if$ARGUMENTSis an existing path, use that path; otherwise useDATA2STORY_ROOT/data/{DATA_NAME}TIMESTAMP= current time formatted asMMDD_HHMM(e.g.0401_1618):date +%m%d_%H%M(run in bash)PROJECT_DIR=DATA2STORY_ROOT/project/{DATA_NAME}/blog_{MODEL}_{TIMESTAMP}- Create
PROJECT_DIR/,PROJECT_DIR/assets/,PROJECT_DIR/code/
Archival
Immediately after creating PROJECT_DIR, snapshot the current skills:
mkdir -p PROJECT_DIR/archival
cp -r ARCHIVE_DIR/skills PROJECT_DIR/archival/skills
This preserves the exact skill versions used for this run.
Tools available
All media tools route through OpenRouter. Set OPENROUTER_API_KEY before any generation call.
Media generation is the Designer's job, so the media tools (text2image, text2video, image2video, text2music, embeddings) live under SKILL_DIR/designer/scripts/openrouter-*/. The full list — default models and exact python3 ... invocations — is in designer/references/tools.json; full per-tool docs are each tool's own SKILL.md under SKILL_DIR/designer/scripts/openrouter-*/.
Pipeline Overview
The pipeline is a single linear sequence that produces a traceable HTML blog from raw data:
DATA → Detective → Analyst → Editor → Designer → Programmer → Auditor → Inspector → final index.html + viewer.html
What ships with it
59 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- analyst/references/data_table_rules.json 1.6 KB
- analyst/references/field_rules.json 1.7 KB
- analyst/references/paper_mode.json 2.6 KB
- analyst/references/schema.json 1.6 KB
- analyst/SKILL.md 4.7 KB
- auditor/references/checks.json 1.4 KB
- auditor/references/fix_patterns.json 2.5 KB
- auditor/references/report_types.json 936 B
- auditor/SKILL.md 3.6 KB
- designer/references/audio_rules.json 3.8 KB
- designer/references/diversity_rules.json 4.9 KB
- designer/references/field_rules.json 3.8 KB
- designer/references/schema.json 9.1 KB
- designer/references/tools.json 1.5 KB
- designer/references/visual_modes.json 6.6 KB
- designer/scripts/openrouter-embeddings/config.json 176 B
- designer/scripts/openrouter-embeddings/scripts/embed.py 3.6 KB runs code
- designer/scripts/openrouter-embeddings/SKILL.md 2.0 KB
- designer/scripts/openrouter-image2video/config.json 319 B
- designer/scripts/openrouter-image2video/scripts/generate_video_from_image.py 5.4 KB runs code
- designer/scripts/openrouter-image2video/SKILL.md 3.4 KB
- designer/scripts/openrouter-text2image/config.json 181 B
- designer/scripts/openrouter-text2image/scripts/generate_image.py 3.3 KB runs code
- designer/scripts/openrouter-text2image/SKILL.md 1.4 KB
- designer/scripts/openrouter-text2music/config.json 272 B
- designer/scripts/openrouter-text2music/scripts/generate_music.py 4.1 KB runs code
- designer/scripts/openrouter-text2music/SKILL.md 1.6 KB
- designer/scripts/openrouter-text2video/config.json 321 B
- designer/scripts/openrouter-text2video/scripts/generate_video.py 4.0 KB runs code
- designer/scripts/openrouter-text2video/SKILL.md 1.9 KB
- designer/SKILL.md 7.7 KB
- detective/references/categories.json 676 B
- detective/references/field_rules.json 2.8 KB
- detective/references/instance_verification.json 2.7 KB
- detective/references/paper_mode.json 5.0 KB
- detective/references/schema.json 1.7 KB
- detective/scripts/fetch_flags.py 6.1 KB runs code
- detective/scripts/fetch_hle_images.py 6.2 KB runs code
- detective/scripts/fetch_images.py 8.9 KB runs code
- detective/scripts/fetch_logos.py 6.9 KB runs code
- detective/scripts/fetch_venue_weather.py 6.9 KB runs code
- detective/SKILL.md 9.2 KB
- editor/references/editor_md_template.json 1.5 KB
- editor/references/field_rules.json 1.1 KB
- editor/references/media_hints.json 3.0 KB
- editor/references/narrative_angles.json 2.4 KB
- editor/references/schema.json 1021 B
- editor/SKILL.md 5.4 KB
- inspector/references/error_logging.json 2.1 KB
- inspector/references/inspector_schema.json 787 B
- inspector/references/viewer_internals.json 2.4 KB
- inspector/scripts/generate_viewer.py 16 KB runs code
- inspector/scripts/verify.py 23 KB runs code
- inspector/SKILL.md 2.7 KB
- programmer/references/component_implementations.json 11 KB
- programmer/references/data_resolution.json 1.3 KB
- programmer/references/layout_rules.json 3.0 KB
- programmer/references/traceability.json 2.4 KB
- programmer/SKILL.md 5.6 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 116 lines · 50 tokens per session scan A 0ebc8c0c6e99
data2story is a skill published in the GitHub repository QinghongLin/data2story-skill (155 stars, last pushed 2mo ago), licensed MIT. It adds 50 tokens to every session and 1,886 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
chdb-sql
Use when the user wants to run SQL — especially analytical SQL — on local files (parquet/csv/json), URLs, S3 paths, or remote databases (Postgres, MySQL, MongoDB, ClickHouse Cloud, Iceberg, Delta Lake) without setting up a server. Provides chDB — embedded ClickHouse SQL in Python with 1000+ functions, Session for…
wax
Swift framework guidance for Wax on-device memory/RAG. Use when writing Swift code with the public Memory facade, experimental PhotoMemory / VideoMemory, BuiltInMultimodalEmbeddings, embedding providers, retrieval modes, or hybrid search. For agent operators using the Wax MCP server tools, use the separate wax-mcp…
wax-memory-maintenance
Maintain the Wax memory store used by the Hermes wax-memory provider.
alterlab-paper-writer
Drafts and revises academic papers through a 12-agent pipeline with hardened LaTeX output (apa7 document class, justified text, table column-width formula, centered bilingual abstracts, standardized font stack, PDF compiled from LaTeX), supporting IMRaD, literature review, theoretical, case study, policy brief, and…
alterlab-molecular-dynamics
Runs and analyzes molecular dynamics simulations with OpenMM and MDAnalysis — setting up protein and small-molecule systems, assigning force fields, running energy minimization and production MD, and analyzing trajectories (RMSD, RMSF, contact maps, free energy surfaces). Use when simulating protein or ligand…
alterlab-timesfm
Zero-shot univariate time-series forecasting with Google's TimesFM foundation model, producing point forecasts and prediction intervals from CSV/DataFrame/array inputs, with a preflight system checker for RAM/GPU. Use to forecast any univariate series (sales, sensors, energy, vitals, weather) without training a custom…