// This skill analyzes diagram, chart, or simulation specifications and returns a ranked list of the most suitable MicroSim generator skills to use. It compares the specification against capabilities of all available microsim generators (p5.js, ChartJS, Plotly, Mermaid, vis-network, timeline, map, Venn, bubble) and provides match scores (0-100) with detailed reasoning for each recommendation. Use this skill when a user has a diagram specification and needs guidance on which MicroSim generator skill to use.
| name | microsim-matcher |
| description | This skill analyzes diagram, chart, or simulation specifications and returns a ranked list of the most suitable MicroSim generator skills to use. It compares the specification against capabilities of all available microsim generators (p5.js, ChartJS, Plotly, Mermaid, vis-network, timeline, map, Venn, bubble) and provides match scores (0-100) with detailed reasoning for each recommendation. Use this skill when a user has a diagram specification and needs guidance on which MicroSim generator skill to use. |
This skill analyzes diagram, chart, or simulation specifications and recommends the most appropriate MicroSim generator skill(s) to use. It evaluates the specification against the capabilities of all 9 available MicroSim generators and returns a ranked list with match scores (0-100) and detailed reasoning.
When creating educational MicroSims, choosing the right generator is critical for success. This skill automates the matching process by:
This helps users quickly identify the best tool for their needs without manually comparing all generator options.
Invoke this skill when:
The skill evaluates matches against these 9 generators:
Detailed capabilities for each generator are documented in references/matching-criteria.md.
Follow these 7 steps to match a specification to the best MicroSim generator(s):
IMPORTANT: Before analyzing the specification, verify that the local matching-criteria.md file is up-to-date with the latest version on GitHub. An outdated reference file will lead to poor recommendations.
Version Check Process:
Get local file timestamp:
stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S" skills/microsim-matcher/references/matching-criteria.md
# On Linux: stat -c "%y" skills/microsim-matcher/references/matching-criteria.md
Check GitHub version using the GitHub API:
curl -s https://api.github.com/repos/dmccreary/claude-skills/commits?path=skills/microsim-matcher/references/matching-criteria.md&page=1&per_page=1 | grep -o '"date": "[^"]*"' | head -1
Compare timestamps:
Automated Check (Optional):
A Python script is available in skills/microsim-matcher/scripts/check-version.py to automate this check.
If Reference File is Outdated:
Display a prominent warning to the user:
⚠️ WARNING: Reference File May Be Outdated
Your local matching-criteria.md file was last modified on [LOCAL_DATE].
The GitHub repository has a newer version from [GITHUB_DATE].
This may result in:
- Missing information about new MicroSim generators
- Outdated scoring guidelines
- Incorrect recommendations
Recommended actions:
1. Update your local copy:
git pull origin main
2. Or download the latest version:
https://github.com/dmccreary/claude-skills/blob/main/skills/microsim-matcher/references/matching-criteria.md
3. Or continue with potentially outdated information (not recommended)
Continue anyway? [Proceed if user confirms]
When to Skip Version Check:
Version Check Frequency:
Read the specification file provided by the user. The specification may be in various formats:
Extract the following information:
Analyze the specification and identify:
Primary Characteristics:
Temporal: Does it involve dates, chronological events, or time-based sequences?
Geographic: Does it involve locations, coordinates, or maps?
Mathematical: Does it involve mathematical functions or equations?
Network/Graph: Does it involve nodes, edges, or network relationships?
Process/Flow: Does it show workflows, processes, or state transitions?
Set-based: Does it compare sets with overlaps and intersections?
Statistical/Data: Does it visualize numerical or categorical data as charts?
Priority/Matrix: Does it show 2D priority or decision matrix?
Custom/Unique: Does it require custom animations or unique visualizations?
Secondary Characteristics:
Read the matching criteria from references/matching-criteria.md. This file contains:
Load additional details if needed:
/docs/skill-descriptions/microsims/index.md for overview/docs/skill-descriptions/microsims/[generator-name].md/skills/[generator-name]/SKILL.mdFor each of the 9 generators, assign a match score from 0-100 using this scale:
Scoring Scale:
Scoring Methodology:
For each generator, evaluate:
Data Type Match (40 points max)
Interactivity Match (25 points max)
Visual Style Match (25 points max)
Trigger Word Bonus (10 points max)
Example Scoring:
Specification: "Timeline showing product development milestones from 2020-2025"
timeline-generator scoring:
chartjs-generator scoring:
Sort the 9 generators from highest to lowest score.
Ranking Guidelines:
If no generator scores above 70, this may indicate:
Present the results as a numbered list with the following format for each generator:
## MicroSim Generator Recommendations
[Brief summary of specification analysis]
### Ranked Results:
1. **[generator-name]** (Score: [0-100]/100)
**Reasoning:** [2-4 sentences explaining why this score was assigned. Include:
- What matches well (data type, interactivity, visual style)
- Specific features that align with requirements
- Any limitations or caveats
- Why this is better/worse than alternatives]
**Key Features:** [Bullet list of relevant features for this use case]
**Skill Location:** `skills/[generator-name]/SKILL.md`
2. **[generator-name]** (Score: [0-100]/100)
[Same format as above]
[Continue for top 3-5 generators]
Output Quality Requirements:
Example Output:
## MicroSim Generator Recommendations
Your specification describes a "network diagram showing prerequisite relationships between course concepts." This is clearly a network/graph visualization with nodes (concepts) and edges (prerequisites).
### Ranked Results:
1. **vis-network** (Score: 95/100)
**Reasoning:** This is the primary use case for vis-network. The specification describes nodes (concepts) and edges (prerequisite relationships), which is exactly what vis-network is designed for. The skill supports physics-based layouts that automatically position related concepts, interactive dragging to explore the network, and click events to show concept details. The only minor limitation is that very large networks (500+ concepts) may require performance optimization.
**Key Features:**
- Physics-based automatic layout
- Interactive drag, click, zoom, pan
- Group/cluster support for organizing concepts by topic
- Hover tooltips for concept definitions
- Learning graph JSON format support
**Skill Location:** `skills/vis-network/SKILL.md`
2. **mermaid-generator** (Score: 70/100)
**Reasoning:** Mermaid supports flowcharts and graphs that could represent prerequisite relationships. However, Mermaid diagrams are more static compared to vis-network and don't offer the same level of interactivity (no dragging, less dynamic layout). Mermaid would work well for smaller, simpler prerequisite chains but may become cluttered with many concepts. Use this if you prefer a more static, documentation-style diagram.
**Key Features:**
- Text-based diagram specification
- Clean, professional appearance
- Good for documentation
- Multiple diagram types available
**Skill Location:** `skills/mermaid-generator/SKILL.md`
3. **microsim-p5** (Score: 50/100)
**Reasoning:** While p5.js could create a custom network visualization, it would require significantly more development effort compared to using vis-network, which is specifically designed for this purpose. Only choose p5.js if you need custom animations, unique visual effects, or interactivity patterns not available in vis-network. For standard network diagrams, vis-network is the better choice.
**Key Features:**
- Complete customization flexibility
- Custom animations possible
- Unique interaction patterns
**Skill Location:** `skills/microsim-p5/SKILL.md`
4. **chartjs-generator** (Score: 25/100)
**Reasoning:** Not recommended. ChartJS is designed for statistical charts (bar, line, pie), not network diagrams. There's no way to represent nodes and edges in standard chart types. Use vis-network or mermaid-generator instead.
**Skill Location:** `skills/chartjs-generator/SKILL.md`
### Recommendation:
Use **vis-network** (Score: 95/100) for your prerequisite relationship diagram. It's specifically designed for this use case and will provide the best user experience with minimal development effort.
Quick reference for common specification types:
| Specification Type | Top Generator | Score | Alternative |
|---|---|---|---|
| Timeline with dates | timeline-generator | 90-100 | chartjs (30-40) |
| Geographic map | map-generator | 90-100 | - |
| Math function f(x) | math-function-plotter-plotly | 90-100 | microsim-p5 (50-60) |
| Network graph | vis-network | 90-100 | mermaid (60-70) |
| Flowchart/process | mermaid-generator | 90-100 | microsim-p5 (40-50) |
| Venn diagram | venn-diagram-generator | 90-100 | microsim-p5 (50) |
| Bar/pie/line chart | chartjs-generator | 90-100 | microsim-p5 (40) |
| Priority matrix | bubble-chart-generator | 90-100 | chartjs (60-70) |
| Custom animation | microsim-p5 | 90-100 | - |
Good reasoning:
"The specification describes plotting y = sin(x) over the domain [-2π, 2π], which is exactly what math-function-plotter-plotly is designed for. The skill provides interactive sliders to explore points on the curve, hover tooltips showing coordinates, and responsive design. Score: 98/100."
Poor reasoning:
"This looks like a math thing, so use the math plotter. Score: 90/100."
Good honesty:
"While chartjs-generator could show temporal data as a line chart (Score: 40/100), it lacks the specialized timeline features (zoom to date ranges, event details panels, category filtering) that make timeline-generator the better choice (Score: 95/100)."
Poor honesty:
"ChartJS can do anything with data, use it. Score: 85/100."
End with a clear recommendation:
Good:
"Recommendation: Use timeline-generator (95/100) for your product roadmap. It's specifically designed for temporal data and will give you the best results with minimal effort."
Less useful:
"These are your scores. Pick one."
If the specification requires multiple types of visualizations:
Your specification describes both a timeline of events AND a network graph of relationships. This requires two separate MicroSims:
1. **For the timeline portion:** timeline-generator (Score: 95/100)
2. **For the network portion:** vis-network (Score: 95/100)
Consider creating two separate MicroSims and linking between them in your textbook.
If you can't determine a clear match:
The specification is somewhat unclear about the desired visual format. Based on the available information:
**If the focus is on [interpretation A]:**
- Recommended: [generator A] (Score: 80/100)
**If the focus is on [interpretation B]:**
- Recommended: [generator B] (Score: 85/100)
Please clarify: [specific questions to ask]
If no generator scores above 70:
After analyzing your specification, none of the existing MicroSim generators are an ideal match. Here are your options:
1. **Modify requirements** to fit an existing generator:
- [suggestion] could work if [modification]
2. **Create custom MicroSim** with microsim-p5:
- Full flexibility but requires more development
- Estimated complexity: [assessment]
3. **Split into multiple MicroSims**:
- Use [generator 1] for [aspect 1]
- Use [generator 2] for [aspect 2]
Would you like help refining the specification or exploring custom development?
"Graph" can mean network graph OR chart. Clarify:
The term "graph" is ambiguous. Please clarify:
- **If you mean a network graph** (nodes and edges): Use vis-network (Score: 95/100)
- **If you mean a chart/plot** (data points): Use chartjs-generator (Score: 90/100) or math-function-plotter-plotly (Score: 90/100)
skills/microsim-matcher/references/matching-criteria.mdskills/microsim-matcher/scripts/check-version.py/docs/skill-descriptions/microsims/index.md/docs/skill-descriptions/microsims/[generator-name].md/skills/[generator-name]/SKILL.mdThe check-version.py script provides automated version checking:
Basic check (with output):
python skills/microsim-matcher/scripts/check-version.py
Quiet mode (exit code only):
python skills/microsim-matcher/scripts/check-version.py --quiet
echo $? # 0=up-to-date, 1=outdated, 2=error
Auto-update mode (downloads latest if outdated):
python skills/microsim-matcher/scripts/check-version.py --update
Exit codes:
0 - Local file is up-to-date1 - GitHub version is newer (outdated)2 - Error occurred (network, file not found, etc.)Integration with CI/CD:
# In a pre-commit hook or CI pipeline
if python skills/microsim-matcher/scripts/check-version.py --quiet; then
echo "✅ Reference file is up-to-date"
else
echo "⚠️ Reference file is outdated - consider updating"
fi
When new MicroSim generators are added to the repository:
Update references/matching-criteria.md with the new generator profile:
Update this SKILL.md file:
Test matching:
Commit changes:
When existing generators gain new features or capabilities:
references/matching-criteria.mdFor Repository Maintainers:
After making changes to matching-criteria.md:
# 1. Make your changes
vim skills/microsim-matcher/references/matching-criteria.md
# 2. Commit and push
git add skills/microsim-matcher/references/matching-criteria.md
git commit -m "Update matching criteria: [description of changes]"
git push origin main
# GitHub will automatically update the file timestamp
# Users will be notified via version check on next use
For Skill Users:
Check for updates regularly:
# Option 1: Run version check manually
python skills/microsim-matcher/scripts/check-version.py
# Option 2: Auto-update if outdated
python skills/microsim-matcher/scripts/check-version.py --update
# Option 3: Pull latest from GitHub
git pull origin main
Recommended Update Schedule:
To help users understand changes:
Document changes in commit messages:
git commit -m "Add support for new scatter-plot-generator (10th generator)"
Include change summary at the top of matching-criteria.md:
## Recent Updates
- 2025-11-17: Added math-function-plotter-plotly (9th generator)
- 2025-11-10: Updated vis-network scoring for large graphs
- 2025-11-01: Initial release with 8 generators
Tag major updates in GitHub:
git tag -a v1.1 -m "Added 10th generator, updated scoring"
git push origin v1.1