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 agentmods add skills/learningmatter-mit/atomisticskills/general-plot-digitizernpx skills add learningmatter-mit/AtomisticSkills --skill general-plot-digitizergit clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkillsWhat 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 | $0.00044 | $0.02965 |
| Opus 5 | $0.00022 | $0.01483 |
| Sonnet 5 | $0.00009 | $0.00593 |
| Haiku 4.5 | $0.00004 | $0.00297 |
Grade A, and why
general-plot-digitizer 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 2d 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 — 199 lines — stays where its author put it; the contents beside it link to each section on GitHub.
General Plot Digitizer
Goal
Extract calibrated numeric X-Y data from images of experimental spectra (Raman, XRD, UV-Vis, IR, NMR, etc.) using a deterministic "Agent-in-the-Loop" workflow.
The labor is divided between two models:
- Vision-Language Model (Visual Sensor): Reads the image and returns a rich, unstructured narrative description of axes, colors, and visual obstacles. It does not produce JSON.
- Coding Agent (Translator & Executor): Translates the VLM narrative into a precise
metadata.json, runs the CV pipeline, inspects the overlay, and iterates until the curve is correctly isolated.
Instructions
Phase 1: Visual Inspection (VLM)
Do not attempt to generate JSON with the VLM. It acts only as a visual sensor.
- Generate grid overlay:
# Env: base-agent
python .agents/skills/general-plot-digitizer/scripts/plot_utils.py plot.png --draw-grid
This produces plot_grid.png with a labeled pixel grid for precise coordinate reading.
-
Prompt the VLM to analyze
plot_grid.png(not the raw image). Use the built-in vision capabilities or thenotify_userVLM inspection tool. Provide the prompt guidelines from scripts/vlm_prompt_template.txt. -
Expected VLM output — a natural-language report covering:
- Axis labels, numeric ranges, and directions (is X reversed?).
- Bounding box of the data region in pixels (read from the grid).
- Color and style of each target curve (hex guess from the pixels on the line itself).
- Pixel bounding boxes of all visual obstacles (legends, text annotations, gridlines, tick marks) that overlap the data curves.
- Trace quality hints: thin/needle-like, thick/noisy, anti-aliased, JPEG artifacts.
Phase 2: Metadata Construction (Coding Agent)
Read the VLM narrative and construct metadata.json. Schema: resources/metadata_schema.json.
Required fields:
{
"plot_title": "",
"x_axis_label": "Wavelength (nm)",
"y_axis_label": "Absorbance",
"x_tick_min": 400, "x_tick_max": 800,
"y_tick_min": 0, "y_tick_max": 1,
"x_calibration_points": [
{ "pixel": 70, "value": 400 },
{ "pixel": 450, "value": 800 }
],
"x_scale": "linear", "y_scale": "linear",
"bounding_box": {"x_min": 72, "y_min": 28, "x_max": 452, "y_max": 318},
"x_reversed": false, "y_reversed": false,
"spectrum_type": "UV-Vis",
"curves": [{"label": "sample", "color_hint": "#1f77b4"}],
"text_regions": [{"x_min": 300, "y_min": 50, "x_max": 400, "y_max": 80, "label": "legend"}]
}
What ships with it
54 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.
- examples/01-single-curve/metadata.json 502 B
- examples/01-single-curve/README.md 1.4 KB
- examples/01-single-curve/source_digitized.csv 10 KB
- examples/01-single-curve/source_digitized.md 339 B
- examples/01-single-curve/source_digitized.overlay.png 170 KB
- examples/01-single-curve/source_digitized.xy 10 KB
- examples/01-single-curve/source.png 161 KB
- examples/02-multi-curve-color/metadata.json 837 B
- examples/02-multi-curve-color/README.md 1.9 KB
- examples/02-multi-curve-color/source_citric_acid_aqueous_solution_digitized.csv 15 KB
- examples/02-multi-curve-color/source_citric_acid_aqueous_solution_digitized.md 331 B
- examples/02-multi-curve-color/source_citric_acid_aqueous_solution_digitized.overlay.png 362 KB
- examples/02-multi-curve-color/source_citric_acid_aqueous_solution_digitized.xy 15 KB
- examples/02-multi-curve-color/source_citric_acid_solid_digitized.csv 15 KB
- examples/02-multi-curve-color/source_citric_acid_solid_digitized.md 320 B
- examples/02-multi-curve-color/source_citric_acid_solid_digitized.overlay.png 350 KB
- examples/02-multi-curve-color/source_citric_acid_solid_digitized.xy 15 KB
- examples/02-multi-curve-color/source.png 66 KB
- examples/03-black-curve-text-mask/metadata.json 1.2 KB
- examples/03-black-curve-text-mask/README.md 2.4 KB
- examples/03-black-curve-text-mask/source_citric_acid_aqueous_solution_digitized.csv 17 KB
- examples/03-black-curve-text-mask/source_citric_acid_aqueous_solution_digitized.md 335 B
- examples/03-black-curve-text-mask/source_citric_acid_aqueous_solution_digitized.overlay.png 354 KB
- examples/03-black-curve-text-mask/source_citric_acid_aqueous_solution_digitized.xy 17 KB
- examples/03-black-curve-text-mask/source_citric_acid_solid_digitized.csv 16 KB
- examples/03-black-curve-text-mask/source_citric_acid_solid_digitized.md 324 B
- examples/03-black-curve-text-mask/source_citric_acid_solid_digitized.overlay.png 352 KB
- examples/03-black-curve-text-mask/source_citric_acid_solid_digitized.xy 16 KB
- examples/03-black-curve-text-mask/source.png 66 KB
- examples/04-stacked-spectra/metadata.json 937 B
- examples/04-stacked-spectra/README.md 2.2 KB
- examples/04-stacked-spectra/source_nylon_6_6_digitized.csv 22 KB
- examples/04-stacked-spectra/source_nylon_6_6_digitized.md 297 B
- examples/04-stacked-spectra/source_nylon_6_6_digitized.overlay.png 102 KB
- examples/04-stacked-spectra/source_nylon_6_6_digitized.xy 22 KB
- examples/04-stacked-spectra/source_polyethylene_digitized.csv 22 KB
- examples/04-stacked-spectra/source_polyethylene_digitized.md 300 B
- examples/04-stacked-spectra/source_polyethylene_digitized.overlay.png 102 KB
- examples/04-stacked-spectra/source_polyethylene_digitized.xy 22 KB
- examples/04-stacked-spectra/source_polystyrene_digitized.csv 22 KB
- examples/04-stacked-spectra/source_polystyrene_digitized.md 299 B
- examples/04-stacked-spectra/source_polystyrene_digitized.overlay.png 104 KB
- examples/04-stacked-spectra/source_polystyrene_digitized.xy 22 KB
- examples/04-stacked-spectra/source.png 89 KB
- resources/metadata_schema.json 8.6 KB
- scripts/digitize_pipeline.py 32 KB runs code
- scripts/extract_metadata.py 12 KB runs code
- scripts/isolate_curves.py 26 KB runs code
- scripts/pixel_to_data.py 8.8 KB runs code
- scripts/plot_utils.py 6.2 KB runs code
- scripts/suggest_colors.py 5.0 KB runs code
- scripts/upscale_image.py 2.8 KB runs code
- scripts/vlm_metadata_json_prompt.txt 3.6 KB
- scripts/vlm_prompt_template.txt 2.4 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.
- 2d ago First seen · 199 lines · 44 tokens per session scan A 2e003e741419
general-plot-digitizer is a skill published in the GitHub repository learningmatter-mit/AtomisticSkills (154 stars, last pushed 7d ago), licensed MIT. It adds 44 tokens to every session and 2,965 once invoked, about $0.0002 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
fixing-streamlit-ci
Analyze and fix failed GitHub Actions CI jobs for the current branch/PR. Use when CI checks fail, PR checks show failures, or you need to diagnose lint/type/test errors and verify fixes locally.
gradio-themes
Build and customise Gradio themes. Use when creating, editing, or publishing Python-based Gradio themes that control colours, typography, spacing, shadows, and dark mode.
hugging-face-paper-publisher
Publish and manage research papers on Hugging Face Hub. Supports creating paper pages, linking papers to models/datasets, claiming authorship, and generating professional markdown-based research articles.
hugging-face-datasets
Create and manage datasets on Hugging Face Hub. Supports initializing repos, defining configs/system prompts, streaming row updates, and SQL-based dataset querying/transformation. Designed to work alongside HF MCP server for comprehensive dataset workflows.
hf-gradio
Use Gradio applications via API. Use when the user asks for to generate a prediction from a Gradio app on Hugging Face spaces or public URL. For example, "Generate an image using black-forest-labs/FLUX.2-dev".
reviewing-readability
Evaluates comments, docstrings, and naming in code for readability by a developer new to the codebase — is the documentation clear and concise, and is non-obvious logic documented? Produces findings with concrete proposed rewrites (or additions where documentation is missing); the caller decides whether to apply them…