1{2 "skill_name": "mapbox-style-quality",3 "evals": [4 {5 "id": 1,6 "prompt": "I'm shipping a major Mapbox style update to production next week. I added 5 new GeoJSON sources from third-party APIs, wrote about a dozen custom filter and data-driven paint expressions, and added several text label layers to the map. What quality checks should I run and in what order before deploying?",7 "expectations": [8 "Validates GeoJSON sources with validate_geojson_tool before adding them as sources (catches invalid coordinates, unclosed rings, wrong coordinate order)",9 "Validates all expressions with validate_expression_tool during development — not at runtime — to catch type mismatches and syntax errors early",
10 "Checks color contrast for text label layers against WCAG AA standard (4.5:1 ratio for normal text, 3:1 for large text)",
11 "Compares with the previous production style using compare_styles_tool to identify unintended changes",
12 "Optimizes the style with optimize_style_tool before deploying — recommends removing unused sources first, then duplicate layers, then simplifying expressions, then empty layers"
13 ]
14 },
15 {
16 "id": 2,
17 "prompt": "My Mapbox style started at 80KB and has grown to 380KB over 6 months. I've deleted many layers but their source data is still referenced in the style. I also copy-pasted layers a lot, so there are duplicates with identical paint properties. What's the right approach to clean this up?",
18 "expectations": [
19 "Recommends running optimize_style_tool to handle this automatically",
20 "Explains to remove unused sources first — they are the main bloat after deleting layers",
21 "Then remove duplicate layers (layers with identical properties)",
22 "Then simplify redundant boolean expressions",
23 "Then remove empty layers as a final cleanup step",
24 "Recommends reviewing the optimization report (percentReduction, changes list) and testing before deploying"
25 ]
26 },
27 {
28 "id": 3,
29 "prompt": "I have a layer filter that should show only cities with a population over 1 million, but I'm getting runtime expression errors. My filter is: `['==', ['get', 'population'], 'large']`. The population field in my data is stored as a number. What's wrong and how do I prevent this kind of error in the future?",
30 "expectations": [
31 "Identifies the type mismatch: population is a number but the filter compares it to the string 'large'",
32 "Provides the correct expression using a numeric comparison: ['>', ['get', 'population'], 1000000]",
33 "Recommends using validate_expression_tool during development to catch type mismatches before they cause runtime errors",
34 "Suggests adding expression validation to pre-commit hooks or CI/CD pipeline as a preventive measure"