Low-level plotting library for full customization. Use when you need fine-grained control over every plot element, creating novel plot types, or integrating with specific scientific workflows. Export to PNG/PDF/SVG for publication. For quick statistical plots use seaborn; for interactive plots use plotly; for publication-ready multi-panel figures with journal styling, use scientific-visualization.
78
70%
Does it follow best practices?
Impact
94%
1.06xAverage score across 3 eval scenarios
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./scientific-skills/matplotlib/SKILL.mdQuality
Discovery
89%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
This is a strong skill description that excels at completeness and distinctiveness by clearly stating what it does, when to use it, and importantly when NOT to use it by referencing alternative skills. The main weakness is that the specific capabilities could be more concrete — listing actual plot types or customization actions rather than abstract phrases like 'fine-grained control over every plot element'. The negative routing to related skills is a best-practice pattern that significantly reduces conflict risk.
Suggestions
Add more concrete action verbs and specific capabilities, e.g., 'Create custom scatter plots, bar charts, heatmaps; annotate axes, customize legends, configure colormaps' instead of the abstract 'fine-grained control over every plot element'.
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | It names the domain (plotting) and some actions (full customization, creating novel plot types, exporting to PNG/PDF/SVG), but doesn't list multiple concrete specific actions like 'create bar charts, scatter plots, heatmaps, annotate axes, customize legends'. | 2 / 3 |
Completeness | Clearly answers both 'what' (low-level plotting library for full customization, export to PNG/PDF/SVG) and 'when' (need fine-grained control, novel plot types, scientific workflows). Also explicitly states when NOT to use it, directing to seaborn, plotly, or scientific-visualization for other cases. | 3 / 3 |
Trigger Term Quality | Includes strong natural keywords users would say: 'plotting', 'plot', 'customization', 'PNG', 'PDF', 'SVG', 'publication', 'scientific workflows', 'multi-panel figures'. Also references competing tools (seaborn, plotly) which helps with routing. Users asking for fine-grained plot control would naturally use these terms. | 3 / 3 |
Distinctiveness Conflict Risk | Excellent distinctiveness — explicitly differentiates itself from seaborn (quick statistical plots), plotly (interactive plots), and scientific-visualization (publication-ready multi-panel figures with journal styling). This clear boundary-setting makes it very unlikely to conflict with related skills. | 3 / 3 |
Total | 11 / 12 Passed |
Implementation
50%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This skill is comprehensive and highly actionable with excellent executable code examples, but it is far too verbose for a skill targeting Claude. It explains fundamental concepts Claude already knows (matplotlib hierarchy, what different plot types are for, basic interface differences) and includes extensive inline content that should either be trimmed or moved to reference files. The skill would benefit greatly from being cut to ~30% of its current size, focusing only on project-specific conventions, non-obvious patterns, and pointers to reference docs.
Suggestions
Remove the 'Core Concepts' section explaining matplotlib's hierarchy and two interfaces — Claude already knows this. Instead, just state the project preference: 'Always use the OO interface (fig, ax = plt.subplots())'.
Remove the 'When to Use This Skill' section entirely — the frontmatter description already covers this, and listing obvious use cases wastes tokens.
Move the detailed plot type examples, styling options, and 3D plotting sections into the referenced files (references/plot_types.md, references/styling_guide.md) and keep only a brief quick-start example in the main skill.
Cut the 'Integration with Other Tools' and 'Additional Resources' sections — Claude already knows about these integrations and can access official docs.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The skill is extremely verbose, explaining concepts Claude already knows well (the matplotlib hierarchy, what a Figure/Axes/Artist is, what line plots vs scatter plots are, two interfaces). The 'When to Use This Skill' section lists obvious use cases. The 'Core Concepts' section explains basic matplotlib architecture that Claude has extensive training on. The 'Integration with Other Tools' and 'Additional Resources' sections add little value. | 1 / 3 |
Actionability | The skill provides fully executable, copy-paste ready code examples throughout — from basic plots to subplots, 3D plots, saving figures, and styling. Code snippets are complete with imports and realistic parameters. | 3 / 3 |
Workflow Clarity | The workflows are presented as numbered sections with clear code, but there are no validation checkpoints or feedback loops. For a plotting library this is less critical than for destructive operations, but the skill doesn't include any verification steps (e.g., checking output file exists, validating figure dimensions). The sequence of steps within each workflow is clear but implicit rather than explicitly numbered. | 2 / 3 |
Progressive Disclosure | The skill references external files (references/plot_types.md, references/styling_guide.md, etc.) which is good progressive disclosure, but the main file itself is a monolithic wall of content (~300 lines) with extensive inline material that could be split out. The detailed plot type catalog, styling options, and 3D plotting sections could all be in reference files, keeping the main skill leaner. | 2 / 3 |
Total | 8 / 12 Passed |
Validation
90%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 10 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
metadata_version | 'metadata.version' is missing | Warning |
Total | 10 / 11 Passed | |
25e1c0f
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.