[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-geospatial-and-cartographic-visualization":3,"mdc--q3khgq-key":33,"related-org-openai-geospatial-and-cartographic-visualization":720,"related-repo-openai-geospatial-and-cartographic-visualization":925},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"geospatial-and-cartographic-visualization","design geospatial and cartographic visualizations","Design geospatial and cartographic visualizations. Use when the user needs help deciding whether to use a map, choosing projections or basemaps, building choropleths or symbol maps, or implementing thematic maps, slippy maps, or geospatial interactions with D3 geo, Leaflet, MapLibre, Mapbox GL JS, Google Maps, OpenLayers, deck.gl, ArcGIS Maps SDK, Azure Maps, HERE Maps, CesiumJS, or related tools.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19],{"name":13,"slug":14,"type":15},"Data Visualization","data-visualization","tag",{"name":17,"slug":18,"type":15},"Maps","maps",{"name":20,"slug":21,"type":15},"Design","design",3992,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins","2026-06-30T19:00:57.102",null,465,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"OpenAI Plugins","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fplugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fbuild-web-data-visualization\u002Fskills\u002Fgeospatial-and-cartographic-visualization","---\nname: geospatial-and-cartographic-visualization\ndescription: Design geospatial and cartographic visualizations. Use when the user needs help deciding whether to use a map, choosing projections or basemaps, building choropleths or symbol maps, or implementing thematic maps, slippy maps, or geospatial interactions with D3 geo, Leaflet, MapLibre, Mapbox GL JS, Google Maps, OpenLayers, deck.gl, ArcGIS Maps SDK, Azure Maps, HERE Maps, CesiumJS, or related tools.\n---\n\n# Geospatial and Cartographic Visualization\n\n## Overview\n\nUse this skill when place, projection, movement, or spatial adjacency matter analytically, or when the product surface genuinely needs a map interaction model. Do not use maps by reflex just because there is a latitude, longitude, or region name in the dataset.\n\nDefault assumption: use a map only when geography is part of the reasoning or when the product truly needs a map surface. If the task is comparison, ranking, or distribution across regions, a non-map view may be clearer. Distinguish analytical cartography from product-map UX early.\n\nMobile map users are common and often primary. Use `..\u002F..\u002Freferences\u002Ffoundations\u002Fmobile-first-responsive-visualization.md` when choosing marker density, label strategy, portrait\u002Flandscape behavior, touch gestures, geolocation\u002Fcamera\u002FAR capability use, and spotty tile or data connections.\n\n## Working Pattern\n\n1. Decide whether the question is spatial or merely grouped by place.\n2. Infer the user's map purpose before asking questions. Recommend a likely substrate and state assumptions, then ask only the missing high-impact questions that would change the map design.\n3. Decide which map experience is needed:\n   - thematic analytical map\n   - slippy map for exploration or layered context\n   - route, places, or product-map experience\n   - terrain, imagery, or operational situational-awareness map\n4. Choose the basemap or substrate intentionally:\n   - road and city map for driving, routing, traffic, delivery, road safety, or weather-for-driving\n   - topographic or terrain map for hiking, wildfire, flood, landslide, environmental risk, outdoor planning, or field work\n   - neutral administrative boundary map for regional comparison when geography matters\n   - imagery or raster substrate for satellite, remote sensing, damage, land use, agriculture, construction, or visual evidence\n   - quiet neutral basemap for dense points or events unless roads, terrain, or boundaries are part of the reasoning\n   - globe or 3D terrain only when depth, terrain, occlusion, or globe context changes the analysis\n5. Choose the map family:\n   - choropleth\n   - symbol map\n   - clustered symbol map\n   - flow map\n   - hex or tile summary\n   - raster or density field\n   - animated route or trip layer\n   - terrain, risk, or damage texture fused to a physical substrate\n6. If points overlap, choose the overlap strategy intentionally:\n   - clustered summary symbols when dense points need a count or summary preview that can dissolve on zoom\n   - displacement or spiderfying when the count is low and each individual point needs immediate visibility\n   - exact-location anchor dots when large proportional, halo-style, or concentric point symbols must preserve the true coordinate at detailed zoom levels\n7. Choose multiscale zoom behavior intentionally:\n   - map-space geometry when the shape, area, or path itself is the thing being inspected\n   - screen-stable symbols, labels, and callouts when they act as locators, badges, or UI-like annotations\n   - screen-stable strokes for borders, outlines, and graticules unless changing thickness is itself meaningful\n   - zoom-stepped sizing only when legibility or hierarchy genuinely improves by changing symbol or label size across scales\n8. If dense visible points need one-at-a-time inspection, consider step-through selection with keyboard arrows or previous\u002Fnext controls within the current extent or current layer.\n9. For mobile maps, define the portrait and optional landscape experience before implementation:\n   - fewer markers and shorter labels at narrow widths\n   - mobile-only marker or label variants when needed\n   - a key or detail sheet for labels that cannot fit\n   - tap, step-through, search, and reset paths for dense points\n   - two-finger zoom or explicit zoom controls when one-finger pan should preserve page scroll\n   - stale tile\u002Fdata, offline, low-bandwidth, and reconnect states\n10. For scientific, live, disaster, terrain, climate, seismic, ocean, or other source-sensitive spatial work, create a source and method ledger before visual design or implementation. Include source URL\u002FAPI, license or attribution, update cadence, units, coordinate reference, coverage gaps, rate limits, cache\u002Ffallback policy, and which layers are measured, inferred, schematic, or decorative.\n11. Choose a projection, basemap style, and normalization strategy intentionally.\n12. For globes or custom projections, audit coordinate alignment across basemap\u002Ftexture, event markers, labels, hit testing, camera focus, and fallback geometry before coding. Record longitude origin, wrap policy, and at least a few known-place spot checks.\n13. Choose the implementation stack:\n   - D3 geo for custom projections, thematic cartography, and annotation-rich analytical maps\n   - Leaflet for lightweight slippy maps, markers, layer controls, GeoJSON overlays, and familiar pan or zoom controls\n   - MapLibre GL JS or Mapbox GL JS for vector-tile styling, data-driven styling, label-aware layer ordering, hillshade, heatmaps, tilt or rotation, and modern slippy-map experiences\n   - Google Maps when managed road basemaps, routing, Places, geocoding, traffic context, or Google Maps Platform capabilities drive the product need\n   - OpenLayers for GIS-heavy web maps, projections, WMS\u002FWMTS\u002FOGC services, vector and raster layers, and advanced layer control\n   - deck.gl for high-volume layers, aggregation, trips, arcs, paths, particle-like flows, point clouds, hex or grid layers, and GPU-heavy geospatial interaction on top of MapLibre, Google Maps, Mapbox, or ArcGIS\n   - ArcGIS Maps SDK for hosted GIS services, FeatureLayer workflows, renderers, clustering, binning, heatmaps, editing, and operational maps\n   - Azure Maps or HERE Maps for enterprise routing, traffic, fleet, logistics, geocoding, provider data, and vendor-specific location services\n   - CesiumJS for 3D globe, terrain, imagery layering, temporal scenes, and 3D Tiles\n14. Keep legends, labels, uncertainty, and comparison needs explicit.\n15. For editorial map stories, decide whether the map is a quiet stage for evidence, a moving flow field, a particle-guided route story, a risk surface, or a scrollytelling sequence.\n16. For conflict, occupation, displacement, disaster, or humanitarian maps, use `..\u002F..\u002Freferences\u002Ffoundations\u002Fsensitive-geopolitical-and-humanitarian-stories.md`. Require dated states, source and method notes, attribution, and visible distinctions between measured, estimated, and schematic geometry.\n17. If the map owns wheel zoom or gesture panning, also own the browser behavior: prevent page scrolling or scroll chaining, keep reset and button controls visible, and verify the interaction with mouse wheel, trackpad, touch pan, and pinch.\n18. Use AR, camera, geolocation, or motion only when they materially improve spatial reasoning or data collection, and always provide manual\u002Fnon-permission fallbacks.\n\n## Output Expectations\n\n- Explain why a map is or is not justified.\n- State the recommended basemap or substrate, required contextual layers, thematic data layers, and any unresolved questions before choosing the implementation stack.\n- Call out projection, area, and normalization tradeoffs.\n- For live\u002Fscientific spatial work, include the source and method ledger plus missing-data\u002Ffallback policy.\n- For globes\u002Fcustom projections, include coordinate-frame alignment checks and shortest-path focus behavior when selection moves the camera or globe.\n- If large or overlapping point symbols are involved, call out whether the map needs clustered summaries, spiderfying or displacement, exact-location anchor dots, or a combination across zoom levels.\n- For interactive maps, state which layers should zoom in map space and which should remain screen-stable.\n- For mobile maps, state the portrait layout, whether landscape is justified, marker\u002Flabel reduction rules, touch gesture ownership, geolocation\u002Fcamera\u002FAR usage if any, and stale\u002Foffline tile or data behavior.\n- If users may inspect many nearby points in sequence, call out whether the map needs step-through selection controls in addition to direct clicking.\n- Choose the stack based on interaction model, data scale, basemap needs, and annotation requirements.\n- For editorial map stories, state the visual substrate, flow or risk layer, annotation plan, motion purpose, and static fallback.\n- For animated flow or particle maps, state what each moving mark represents, whether emission rate encodes volume or only direction, and how the same claim appears in reduced-motion and static exports.\n- For sensitive geopolitical or humanitarian maps, state the date or update cadence for each map state, the source hierarchy, the evidence status of each layer, and the ethical framing constraints.\n- Call out any meaningful dependency on tile providers, commercial map platforms, or style infrastructure.\n\n## References\n\n- Shared theory:\n  - `..\u002F..\u002Freferences\u002Ffoundations\u002Ftask-abstraction-and-chart-selection.md`\n  - `..\u002F..\u002Freferences\u002Ffoundations\u002Fperception-color-and-encoding.md`\n  - `..\u002F..\u002Freferences\u002Ffoundations\u002Fmobile-first-responsive-visualization.md`\n  - `..\u002F..\u002Freferences\u002Ffoundations\u002Fart-directed-interactive-visual-stories.md`\n  - `..\u002F..\u002Freferences\u002Ffoundations\u002Fsensitive-geopolitical-and-humanitarian-stories.md`\n- Skill references:\n  - `.\u002Freferences\u002Fmap-or-not.md`\n  - `.\u002Freferences\u002Fadaptive-basemaps-and-layer-stacks.md`\n  - `.\u002Freferences\u002Fprojections-and-normalization.md`\n  - `.\u002Freferences\u002Fsource-method-and-coordinate-ledger.md`\n  - `.\u002Freferences\u002Fchoropleths-symbols-and-flows.md`\n  - `.\u002Freferences\u002Fpoint-overlap-strategies.md`\n  - `.\u002Freferences\u002Fmultiscale-symbols-and-zoom-behavior.md`\n  - `.\u002Freferences\u002Fdeckgl-d3-geo-stack-selection.md`\n  - `.\u002Freferences\u002Fslippy-map-and-product-stack-selection.md`\n\n## Representative Prompts\n\n- \"Should this be a map at all?\"\n- \"What basemap and contextual layers should this map use?\"\n- \"Choose the right geospatial visualization for this dataset.\"\n- \"Map weather conditions for driving.\"\n- \"Visualize wildfire risk near hiking trails.\"\n- \"Show flood exposure with terrain and rivers.\"\n- \"Help me build a choropleth without misleading normalization.\"\n- \"Should this map cluster nearby points, spiderfy them, or show exact-location anchor dots?\"\n- \"How do I keep exact coordinates visible inside large proportional symbols?\"\n- \"What should zoom with the map and what should stay the same size on screen?\"\n- \"When should I use deck.gl instead of D3 geo?\"\n- \"Should this product map use Leaflet, MapLibre, or Google Maps?\"\n- \"Should this use Leaflet, MapLibre, Google Maps, OpenLayers, ArcGIS, deck.gl, or CesiumJS?\"\n- \"Critique this map for cartographic and analytical mistakes.\"\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,46,53,59,64,78,84,328,376,413,419,492,498,641,647],{"type":39,"tag":40,"props":41,"children":42},"element","h1",{"id":4},[43],{"type":44,"value":45},"text","Geospatial and Cartographic Visualization",{"type":39,"tag":47,"props":48,"children":50},"h2",{"id":49},"overview",[51],{"type":44,"value":52},"Overview",{"type":39,"tag":54,"props":55,"children":56},"p",{},[57],{"type":44,"value":58},"Use this skill when place, projection, movement, or spatial adjacency matter analytically, or when the product surface genuinely needs a map interaction model. Do not use maps by reflex just because there is a latitude, longitude, or region name in the dataset.",{"type":39,"tag":54,"props":60,"children":61},{},[62],{"type":44,"value":63},"Default assumption: use a map only when geography is part of the reasoning or when the product truly needs a map surface. If the task is comparison, ranking, or distribution across regions, a non-map view may be clearer. Distinguish analytical cartography from product-map UX early.",{"type":39,"tag":54,"props":65,"children":66},{},[67,69,76],{"type":44,"value":68},"Mobile map users are common and often primary. Use ",{"type":39,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":44,"value":75},"..\u002F..\u002Freferences\u002Ffoundations\u002Fmobile-first-responsive-visualization.md",{"type":44,"value":77}," when choosing marker density, label strategy, portrait\u002Flandscape behavior, touch gestures, geolocation\u002Fcamera\u002FAR capability use, and spotty tile or data connections.",{"type":39,"tag":47,"props":79,"children":81},{"id":80},"working-pattern",[82],{"type":44,"value":83},"Working Pattern",{"type":39,"tag":85,"props":86,"children":87},"ol",{},[88,94,99,128,166,214,237,265,270,308,313,318,323],{"type":39,"tag":89,"props":90,"children":91},"li",{},[92],{"type":44,"value":93},"Decide whether the question is spatial or merely grouped by place.",{"type":39,"tag":89,"props":95,"children":96},{},[97],{"type":44,"value":98},"Infer the user's map purpose before asking questions. Recommend a likely substrate and state assumptions, then ask only the missing high-impact questions that would change the map design.",{"type":39,"tag":89,"props":100,"children":101},{},[102,104],{"type":44,"value":103},"Decide which map experience is needed:\n",{"type":39,"tag":105,"props":106,"children":107},"ul",{},[108,113,118,123],{"type":39,"tag":89,"props":109,"children":110},{},[111],{"type":44,"value":112},"thematic analytical map",{"type":39,"tag":89,"props":114,"children":115},{},[116],{"type":44,"value":117},"slippy map for exploration or layered context",{"type":39,"tag":89,"props":119,"children":120},{},[121],{"type":44,"value":122},"route, places, or product-map experience",{"type":39,"tag":89,"props":124,"children":125},{},[126],{"type":44,"value":127},"terrain, imagery, or operational situational-awareness map",{"type":39,"tag":89,"props":129,"children":130},{},[131,133],{"type":44,"value":132},"Choose the basemap or substrate intentionally:\n",{"type":39,"tag":105,"props":134,"children":135},{},[136,141,146,151,156,161],{"type":39,"tag":89,"props":137,"children":138},{},[139],{"type":44,"value":140},"road and city map for driving, routing, traffic, delivery, road safety, or weather-for-driving",{"type":39,"tag":89,"props":142,"children":143},{},[144],{"type":44,"value":145},"topographic or terrain map for hiking, wildfire, flood, landslide, environmental risk, outdoor planning, or field work",{"type":39,"tag":89,"props":147,"children":148},{},[149],{"type":44,"value":150},"neutral administrative boundary map for regional comparison when geography matters",{"type":39,"tag":89,"props":152,"children":153},{},[154],{"type":44,"value":155},"imagery or raster substrate for satellite, remote sensing, damage, land use, agriculture, construction, or visual evidence",{"type":39,"tag":89,"props":157,"children":158},{},[159],{"type":44,"value":160},"quiet neutral basemap for dense points or events unless roads, terrain, or boundaries are part of the reasoning",{"type":39,"tag":89,"props":162,"children":163},{},[164],{"type":44,"value":165},"globe or 3D terrain only when depth, terrain, occlusion, or globe context changes the analysis",{"type":39,"tag":89,"props":167,"children":168},{},[169,171],{"type":44,"value":170},"Choose the map family:\n",{"type":39,"tag":105,"props":172,"children":173},{},[174,179,184,189,194,199,204,209],{"type":39,"tag":89,"props":175,"children":176},{},[177],{"type":44,"value":178},"choropleth",{"type":39,"tag":89,"props":180,"children":181},{},[182],{"type":44,"value":183},"symbol map",{"type":39,"tag":89,"props":185,"children":186},{},[187],{"type":44,"value":188},"clustered symbol map",{"type":39,"tag":89,"props":190,"children":191},{},[192],{"type":44,"value":193},"flow map",{"type":39,"tag":89,"props":195,"children":196},{},[197],{"type":44,"value":198},"hex or tile summary",{"type":39,"tag":89,"props":200,"children":201},{},[202],{"type":44,"value":203},"raster or density field",{"type":39,"tag":89,"props":205,"children":206},{},[207],{"type":44,"value":208},"animated route or trip layer",{"type":39,"tag":89,"props":210,"children":211},{},[212],{"type":44,"value":213},"terrain, risk, or damage texture fused to a physical substrate",{"type":39,"tag":89,"props":215,"children":216},{},[217,219],{"type":44,"value":218},"If points overlap, choose the overlap strategy intentionally:\n",{"type":39,"tag":105,"props":220,"children":221},{},[222,227,232],{"type":39,"tag":89,"props":223,"children":224},{},[225],{"type":44,"value":226},"clustered summary symbols when dense points need a count or summary preview that can dissolve on zoom",{"type":39,"tag":89,"props":228,"children":229},{},[230],{"type":44,"value":231},"displacement or spiderfying when the count is low and each individual point needs immediate visibility",{"type":39,"tag":89,"props":233,"children":234},{},[235],{"type":44,"value":236},"exact-location anchor dots when large proportional, halo-style, or concentric point symbols must preserve the true coordinate at detailed zoom levels",{"type":39,"tag":89,"props":238,"children":239},{},[240,242],{"type":44,"value":241},"Choose multiscale zoom behavior intentionally:\n",{"type":39,"tag":105,"props":243,"children":244},{},[245,250,255,260],{"type":39,"tag":89,"props":246,"children":247},{},[248],{"type":44,"value":249},"map-space geometry when the shape, area, or path itself is the thing being inspected",{"type":39,"tag":89,"props":251,"children":252},{},[253],{"type":44,"value":254},"screen-stable symbols, labels, and callouts when they act as locators, badges, or UI-like annotations",{"type":39,"tag":89,"props":256,"children":257},{},[258],{"type":44,"value":259},"screen-stable strokes for borders, outlines, and graticules unless changing thickness is itself meaningful",{"type":39,"tag":89,"props":261,"children":262},{},[263],{"type":44,"value":264},"zoom-stepped sizing only when legibility or hierarchy genuinely improves by changing symbol or label size across scales",{"type":39,"tag":89,"props":266,"children":267},{},[268],{"type":44,"value":269},"If dense visible points need one-at-a-time inspection, consider step-through selection with keyboard arrows or previous\u002Fnext controls within the current extent or current layer.",{"type":39,"tag":89,"props":271,"children":272},{},[273,275],{"type":44,"value":274},"For mobile maps, define the portrait and optional landscape experience before implementation:\n",{"type":39,"tag":105,"props":276,"children":277},{},[278,283,288,293,298,303],{"type":39,"tag":89,"props":279,"children":280},{},[281],{"type":44,"value":282},"fewer markers and shorter labels at narrow widths",{"type":39,"tag":89,"props":284,"children":285},{},[286],{"type":44,"value":287},"mobile-only marker or label variants when needed",{"type":39,"tag":89,"props":289,"children":290},{},[291],{"type":44,"value":292},"a key or detail sheet for labels that cannot fit",{"type":39,"tag":89,"props":294,"children":295},{},[296],{"type":44,"value":297},"tap, step-through, search, and reset paths for dense points",{"type":39,"tag":89,"props":299,"children":300},{},[301],{"type":44,"value":302},"two-finger zoom or explicit zoom controls when one-finger pan should preserve page scroll",{"type":39,"tag":89,"props":304,"children":305},{},[306],{"type":44,"value":307},"stale tile\u002Fdata, offline, low-bandwidth, and reconnect states",{"type":39,"tag":89,"props":309,"children":310},{},[311],{"type":44,"value":312},"For scientific, live, disaster, terrain, climate, seismic, ocean, or other source-sensitive spatial work, create a source and method ledger before visual design or implementation. Include source URL\u002FAPI, license or attribution, update cadence, units, coordinate reference, coverage gaps, rate limits, cache\u002Ffallback policy, and which layers are measured, inferred, schematic, or decorative.",{"type":39,"tag":89,"props":314,"children":315},{},[316],{"type":44,"value":317},"Choose a projection, basemap style, and normalization strategy intentionally.",{"type":39,"tag":89,"props":319,"children":320},{},[321],{"type":44,"value":322},"For globes or custom projections, audit coordinate alignment across basemap\u002Ftexture, event markers, labels, hit testing, camera focus, and fallback geometry before coding. Record longitude origin, wrap policy, and at least a few known-place spot checks.",{"type":39,"tag":89,"props":324,"children":325},{},[326],{"type":44,"value":327},"Choose the implementation stack:",{"type":39,"tag":105,"props":329,"children":330},{},[331,336,341,346,351,356,361,366,371],{"type":39,"tag":89,"props":332,"children":333},{},[334],{"type":44,"value":335},"D3 geo for custom projections, thematic cartography, and annotation-rich analytical maps",{"type":39,"tag":89,"props":337,"children":338},{},[339],{"type":44,"value":340},"Leaflet for lightweight slippy maps, markers, layer controls, GeoJSON overlays, and familiar pan or zoom controls",{"type":39,"tag":89,"props":342,"children":343},{},[344],{"type":44,"value":345},"MapLibre GL JS or Mapbox GL JS for vector-tile styling, data-driven styling, label-aware layer ordering, hillshade, heatmaps, tilt or rotation, and modern slippy-map experiences",{"type":39,"tag":89,"props":347,"children":348},{},[349],{"type":44,"value":350},"Google Maps when managed road basemaps, routing, Places, geocoding, traffic context, or Google Maps Platform capabilities drive the product need",{"type":39,"tag":89,"props":352,"children":353},{},[354],{"type":44,"value":355},"OpenLayers for GIS-heavy web maps, projections, WMS\u002FWMTS\u002FOGC services, vector and raster layers, and advanced layer control",{"type":39,"tag":89,"props":357,"children":358},{},[359],{"type":44,"value":360},"deck.gl for high-volume layers, aggregation, trips, arcs, paths, particle-like flows, point clouds, hex or grid layers, and GPU-heavy geospatial interaction on top of MapLibre, Google Maps, Mapbox, or ArcGIS",{"type":39,"tag":89,"props":362,"children":363},{},[364],{"type":44,"value":365},"ArcGIS Maps SDK for hosted GIS services, FeatureLayer workflows, renderers, clustering, binning, heatmaps, editing, and operational maps",{"type":39,"tag":89,"props":367,"children":368},{},[369],{"type":44,"value":370},"Azure Maps or HERE Maps for enterprise routing, traffic, fleet, logistics, geocoding, provider data, and vendor-specific location services",{"type":39,"tag":89,"props":372,"children":373},{},[374],{"type":44,"value":375},"CesiumJS for 3D globe, terrain, imagery layering, temporal scenes, and 3D Tiles",{"type":39,"tag":85,"props":377,"children":379},{"start":378},14,[380,385,390,403,408],{"type":39,"tag":89,"props":381,"children":382},{},[383],{"type":44,"value":384},"Keep legends, labels, uncertainty, and comparison needs explicit.",{"type":39,"tag":89,"props":386,"children":387},{},[388],{"type":44,"value":389},"For editorial map stories, decide whether the map is a quiet stage for evidence, a moving flow field, a particle-guided route story, a risk surface, or a scrollytelling sequence.",{"type":39,"tag":89,"props":391,"children":392},{},[393,395,401],{"type":44,"value":394},"For conflict, occupation, displacement, disaster, or humanitarian maps, use ",{"type":39,"tag":70,"props":396,"children":398},{"className":397},[],[399],{"type":44,"value":400},"..\u002F..\u002Freferences\u002Ffoundations\u002Fsensitive-geopolitical-and-humanitarian-stories.md",{"type":44,"value":402},". Require dated states, source and method notes, attribution, and visible distinctions between measured, estimated, and schematic geometry.",{"type":39,"tag":89,"props":404,"children":405},{},[406],{"type":44,"value":407},"If the map owns wheel zoom or gesture panning, also own the browser behavior: prevent page scrolling or scroll chaining, keep reset and button controls visible, and verify the interaction with mouse wheel, trackpad, touch pan, and pinch.",{"type":39,"tag":89,"props":409,"children":410},{},[411],{"type":44,"value":412},"Use AR, camera, geolocation, or motion only when they materially improve spatial reasoning or data collection, and always provide manual\u002Fnon-permission fallbacks.",{"type":39,"tag":47,"props":414,"children":416},{"id":415},"output-expectations",[417],{"type":44,"value":418},"Output Expectations",{"type":39,"tag":105,"props":420,"children":421},{},[422,427,432,437,442,447,452,457,462,467,472,477,482,487],{"type":39,"tag":89,"props":423,"children":424},{},[425],{"type":44,"value":426},"Explain why a map is or is not justified.",{"type":39,"tag":89,"props":428,"children":429},{},[430],{"type":44,"value":431},"State the recommended basemap or substrate, required contextual layers, thematic data layers, and any unresolved questions before choosing the implementation stack.",{"type":39,"tag":89,"props":433,"children":434},{},[435],{"type":44,"value":436},"Call out projection, area, and normalization tradeoffs.",{"type":39,"tag":89,"props":438,"children":439},{},[440],{"type":44,"value":441},"For live\u002Fscientific spatial work, include the source and method ledger plus missing-data\u002Ffallback policy.",{"type":39,"tag":89,"props":443,"children":444},{},[445],{"type":44,"value":446},"For globes\u002Fcustom projections, include coordinate-frame alignment checks and shortest-path focus behavior when selection moves the camera or globe.",{"type":39,"tag":89,"props":448,"children":449},{},[450],{"type":44,"value":451},"If large or overlapping point symbols are involved, call out whether the map needs clustered summaries, spiderfying or displacement, exact-location anchor dots, or a combination across zoom levels.",{"type":39,"tag":89,"props":453,"children":454},{},[455],{"type":44,"value":456},"For interactive maps, state which layers should zoom in map space and which should remain screen-stable.",{"type":39,"tag":89,"props":458,"children":459},{},[460],{"type":44,"value":461},"For mobile maps, state the portrait layout, whether landscape is justified, marker\u002Flabel reduction rules, touch gesture ownership, geolocation\u002Fcamera\u002FAR usage if any, and stale\u002Foffline tile or data behavior.",{"type":39,"tag":89,"props":463,"children":464},{},[465],{"type":44,"value":466},"If users may inspect many nearby points in sequence, call out whether the map needs step-through selection controls in addition to direct clicking.",{"type":39,"tag":89,"props":468,"children":469},{},[470],{"type":44,"value":471},"Choose the stack based on interaction model, data scale, basemap needs, and annotation requirements.",{"type":39,"tag":89,"props":473,"children":474},{},[475],{"type":44,"value":476},"For editorial map stories, state the visual substrate, flow or risk layer, annotation plan, motion purpose, and static fallback.",{"type":39,"tag":89,"props":478,"children":479},{},[480],{"type":44,"value":481},"For animated flow or particle maps, state what each moving mark represents, whether emission rate encodes volume or only direction, and how the same claim appears in reduced-motion and static exports.",{"type":39,"tag":89,"props":483,"children":484},{},[485],{"type":44,"value":486},"For sensitive geopolitical or humanitarian maps, state the date or update cadence for each map state, the source hierarchy, the evidence status of each layer, and the ethical framing constraints.",{"type":39,"tag":89,"props":488,"children":489},{},[490],{"type":44,"value":491},"Call out any meaningful dependency on tile providers, commercial map platforms, or style infrastructure.",{"type":39,"tag":47,"props":493,"children":495},{"id":494},"references",[496],{"type":44,"value":497},"References",{"type":39,"tag":105,"props":499,"children":500},{},[501,552],{"type":39,"tag":89,"props":502,"children":503},{},[504,506],{"type":44,"value":505},"Shared theory:\n",{"type":39,"tag":105,"props":507,"children":508},{},[509,518,527,535,544],{"type":39,"tag":89,"props":510,"children":511},{},[512],{"type":39,"tag":70,"props":513,"children":515},{"className":514},[],[516],{"type":44,"value":517},"..\u002F..\u002Freferences\u002Ffoundations\u002Ftask-abstraction-and-chart-selection.md",{"type":39,"tag":89,"props":519,"children":520},{},[521],{"type":39,"tag":70,"props":522,"children":524},{"className":523},[],[525],{"type":44,"value":526},"..\u002F..\u002Freferences\u002Ffoundations\u002Fperception-color-and-encoding.md",{"type":39,"tag":89,"props":528,"children":529},{},[530],{"type":39,"tag":70,"props":531,"children":533},{"className":532},[],[534],{"type":44,"value":75},{"type":39,"tag":89,"props":536,"children":537},{},[538],{"type":39,"tag":70,"props":539,"children":541},{"className":540},[],[542],{"type":44,"value":543},"..\u002F..\u002Freferences\u002Ffoundations\u002Fart-directed-interactive-visual-stories.md",{"type":39,"tag":89,"props":545,"children":546},{},[547],{"type":39,"tag":70,"props":548,"children":550},{"className":549},[],[551],{"type":44,"value":400},{"type":39,"tag":89,"props":553,"children":554},{},[555,557],{"type":44,"value":556},"Skill references:\n",{"type":39,"tag":105,"props":558,"children":559},{},[560,569,578,587,596,605,614,623,632],{"type":39,"tag":89,"props":561,"children":562},{},[563],{"type":39,"tag":70,"props":564,"children":566},{"className":565},[],[567],{"type":44,"value":568},".\u002Freferences\u002Fmap-or-not.md",{"type":39,"tag":89,"props":570,"children":571},{},[572],{"type":39,"tag":70,"props":573,"children":575},{"className":574},[],[576],{"type":44,"value":577},".\u002Freferences\u002Fadaptive-basemaps-and-layer-stacks.md",{"type":39,"tag":89,"props":579,"children":580},{},[581],{"type":39,"tag":70,"props":582,"children":584},{"className":583},[],[585],{"type":44,"value":586},".\u002Freferences\u002Fprojections-and-normalization.md",{"type":39,"tag":89,"props":588,"children":589},{},[590],{"type":39,"tag":70,"props":591,"children":593},{"className":592},[],[594],{"type":44,"value":595},".\u002Freferences\u002Fsource-method-and-coordinate-ledger.md",{"type":39,"tag":89,"props":597,"children":598},{},[599],{"type":39,"tag":70,"props":600,"children":602},{"className":601},[],[603],{"type":44,"value":604},".\u002Freferences\u002Fchoropleths-symbols-and-flows.md",{"type":39,"tag":89,"props":606,"children":607},{},[608],{"type":39,"tag":70,"props":609,"children":611},{"className":610},[],[612],{"type":44,"value":613},".\u002Freferences\u002Fpoint-overlap-strategies.md",{"type":39,"tag":89,"props":615,"children":616},{},[617],{"type":39,"tag":70,"props":618,"children":620},{"className":619},[],[621],{"type":44,"value":622},".\u002Freferences\u002Fmultiscale-symbols-and-zoom-behavior.md",{"type":39,"tag":89,"props":624,"children":625},{},[626],{"type":39,"tag":70,"props":627,"children":629},{"className":628},[],[630],{"type":44,"value":631},".\u002Freferences\u002Fdeckgl-d3-geo-stack-selection.md",{"type":39,"tag":89,"props":633,"children":634},{},[635],{"type":39,"tag":70,"props":636,"children":638},{"className":637},[],[639],{"type":44,"value":640},".\u002Freferences\u002Fslippy-map-and-product-stack-selection.md",{"type":39,"tag":47,"props":642,"children":644},{"id":643},"representative-prompts",[645],{"type":44,"value":646},"Representative Prompts",{"type":39,"tag":105,"props":648,"children":649},{},[650,655,660,665,670,675,680,685,690,695,700,705,710,715],{"type":39,"tag":89,"props":651,"children":652},{},[653],{"type":44,"value":654},"\"Should this be a map at all?\"",{"type":39,"tag":89,"props":656,"children":657},{},[658],{"type":44,"value":659},"\"What basemap and contextual layers should this map use?\"",{"type":39,"tag":89,"props":661,"children":662},{},[663],{"type":44,"value":664},"\"Choose the right geospatial visualization for this dataset.\"",{"type":39,"tag":89,"props":666,"children":667},{},[668],{"type":44,"value":669},"\"Map weather conditions for driving.\"",{"type":39,"tag":89,"props":671,"children":672},{},[673],{"type":44,"value":674},"\"Visualize wildfire risk near hiking trails.\"",{"type":39,"tag":89,"props":676,"children":677},{},[678],{"type":44,"value":679},"\"Show flood exposure with terrain and rivers.\"",{"type":39,"tag":89,"props":681,"children":682},{},[683],{"type":44,"value":684},"\"Help me build a choropleth without misleading normalization.\"",{"type":39,"tag":89,"props":686,"children":687},{},[688],{"type":44,"value":689},"\"Should this map cluster nearby points, spiderfy them, or show exact-location anchor dots?\"",{"type":39,"tag":89,"props":691,"children":692},{},[693],{"type":44,"value":694},"\"How do I keep exact coordinates visible inside large proportional symbols?\"",{"type":39,"tag":89,"props":696,"children":697},{},[698],{"type":44,"value":699},"\"What should zoom with the map and what should stay the same size on screen?\"",{"type":39,"tag":89,"props":701,"children":702},{},[703],{"type":44,"value":704},"\"When should I use deck.gl instead of D3 geo?\"",{"type":39,"tag":89,"props":706,"children":707},{},[708],{"type":44,"value":709},"\"Should this product map use Leaflet, MapLibre, or Google Maps?\"",{"type":39,"tag":89,"props":711,"children":712},{},[713],{"type":44,"value":714},"\"Should this use Leaflet, MapLibre, Google Maps, OpenLayers, ArcGIS, deck.gl, or CesiumJS?\"",{"type":39,"tag":89,"props":716,"children":717},{},[718],{"type":44,"value":719},"\"Critique this map for cartographic and analytical mistakes.\"",{"items":721,"total":924},[722,743,766,783,799,818,837,851,867,881,893,908],{"slug":723,"name":723,"fn":724,"description":725,"org":726,"tags":727,"stars":740,"repoUrl":741,"updatedAt":742},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[728,731,734,737],{"name":729,"slug":730,"type":15},"Documents","documents",{"name":732,"slug":733,"type":15},"Healthcare","healthcare",{"name":735,"slug":736,"type":15},"Insurance","insurance",{"name":738,"slug":739,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":744,"name":744,"fn":745,"description":746,"org":747,"tags":748,"stars":763,"repoUrl":764,"updatedAt":765},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[749,752,754,757,760],{"name":750,"slug":751,"type":15},".NET","dotnet",{"name":753,"slug":744,"type":15},"ASP.NET Core",{"name":755,"slug":756,"type":15},"Blazor","blazor",{"name":758,"slug":759,"type":15},"C#","csharp",{"name":761,"slug":762,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":767,"name":767,"fn":768,"description":769,"org":770,"tags":771,"stars":763,"repoUrl":764,"updatedAt":782},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[772,775,778,781],{"name":773,"slug":774,"type":15},"Apps SDK","apps-sdk",{"name":776,"slug":777,"type":15},"ChatGPT","chatgpt",{"name":779,"slug":780,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":784,"name":784,"fn":785,"description":786,"org":787,"tags":788,"stars":763,"repoUrl":764,"updatedAt":798},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[789,792,795],{"name":790,"slug":791,"type":15},"API Development","api-development",{"name":793,"slug":794,"type":15},"CLI","cli",{"name":796,"slug":797,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":800,"name":800,"fn":801,"description":802,"org":803,"tags":804,"stars":763,"repoUrl":764,"updatedAt":817},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[805,808,811,814],{"name":806,"slug":807,"type":15},"Cloudflare","cloudflare",{"name":809,"slug":810,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":812,"slug":813,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":815,"slug":816,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":819,"name":819,"fn":820,"description":821,"org":822,"tags":823,"stars":763,"repoUrl":764,"updatedAt":836},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[824,827,830,833],{"name":825,"slug":826,"type":15},"Productivity","productivity",{"name":828,"slug":829,"type":15},"Project Management","project-management",{"name":831,"slug":832,"type":15},"Strategy","strategy",{"name":834,"slug":835,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":838,"name":838,"fn":839,"description":840,"org":841,"tags":842,"stars":763,"repoUrl":764,"updatedAt":850},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[843,844,846,849],{"name":20,"slug":21,"type":15},{"name":845,"slug":838,"type":15},"Figma",{"name":847,"slug":848,"type":15},"Frontend","frontend",{"name":779,"slug":780,"type":15},"2026-04-12T05:06:47.939943",{"slug":852,"name":852,"fn":853,"description":854,"org":855,"tags":856,"stars":763,"repoUrl":764,"updatedAt":866},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[857,858,861,862,863],{"name":20,"slug":21,"type":15},{"name":859,"slug":860,"type":15},"Design System","design-system",{"name":845,"slug":838,"type":15},{"name":847,"slug":848,"type":15},{"name":864,"slug":865,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":868,"name":868,"fn":869,"description":870,"org":871,"tags":872,"stars":763,"repoUrl":764,"updatedAt":880},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[873,874,875,878,879],{"name":20,"slug":21,"type":15},{"name":859,"slug":860,"type":15},{"name":876,"slug":877,"type":15},"Documentation","documentation",{"name":845,"slug":838,"type":15},{"name":847,"slug":848,"type":15},"2026-05-16T06:07:47.821474",{"slug":882,"name":882,"fn":883,"description":884,"org":885,"tags":886,"stars":763,"repoUrl":764,"updatedAt":892},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[887,888,889,890,891],{"name":20,"slug":21,"type":15},{"name":845,"slug":838,"type":15},{"name":847,"slug":848,"type":15},{"name":864,"slug":865,"type":15},{"name":761,"slug":762,"type":15},"2026-05-16T06:07:40.583615",{"slug":894,"name":894,"fn":895,"description":896,"org":897,"tags":898,"stars":763,"repoUrl":764,"updatedAt":907},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[899,902,903,906],{"name":900,"slug":901,"type":15},"Animation","animation",{"name":796,"slug":797,"type":15},{"name":904,"slug":905,"type":15},"Creative","creative",{"name":20,"slug":21,"type":15},"2026-05-02T05:31:48.48485",{"slug":909,"name":909,"fn":910,"description":911,"org":912,"tags":913,"stars":763,"repoUrl":764,"updatedAt":923},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[914,915,916,919,922],{"name":904,"slug":905,"type":15},{"name":20,"slug":21,"type":15},{"name":917,"slug":918,"type":15},"Image Generation","image-generation",{"name":920,"slug":921,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675,{"items":926,"total":1037},[927,941,957,969,987,1005,1025],{"slug":928,"name":928,"fn":929,"description":930,"org":931,"tags":932,"stars":22,"repoUrl":23,"updatedAt":24},"accessibility-and-inclusive-visualization","make data visualizations accessible","Make data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[933,936,939,940],{"name":934,"slug":935,"type":15},"Accessibility","accessibility",{"name":937,"slug":938,"type":15},"Charts","charts",{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"slug":942,"name":942,"fn":943,"description":944,"org":945,"tags":946,"stars":22,"repoUrl":23,"updatedAt":956},"agent-browser","automate browser interactions for agents","Browser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[947,950,953],{"name":948,"slug":949,"type":15},"Agents","agents",{"name":951,"slug":952,"type":15},"Browser Automation","browser-automation",{"name":954,"slug":955,"type":15},"Testing","testing","2026-04-06T18:41:03.44016",{"slug":958,"name":958,"fn":959,"description":960,"org":961,"tags":962,"stars":22,"repoUrl":23,"updatedAt":968},"agent-browser-verify","verify dev server output with automated browser","Automated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass\u002Ffail before continuing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[963,964,967],{"name":951,"slug":952,"type":15},{"name":965,"slug":966,"type":15},"Local Development","local-development",{"name":954,"slug":955,"type":15},"2026-04-06T18:41:17.526867",{"slug":970,"name":970,"fn":971,"description":972,"org":973,"tags":974,"stars":22,"repoUrl":23,"updatedAt":986},"agents-sdk","build AI agents on Cloudflare Workers","Build AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[975,976,977,980,983],{"name":948,"slug":949,"type":15},{"name":812,"slug":813,"type":15},{"name":978,"slug":979,"type":15},"SDK","sdk",{"name":981,"slug":982,"type":15},"Serverless","serverless",{"name":984,"slug":985,"type":15},"WebSockets","websockets","2026-04-06T18:39:51.717063",{"slug":988,"name":988,"fn":989,"description":990,"org":991,"tags":992,"stars":22,"repoUrl":23,"updatedAt":1004},"ai-elements","build chat UIs with AI Elements","AI Elements component library guidance — pre-built React components for AI interfaces built on shadcn\u002Fui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[993,994,997,1000,1001],{"name":847,"slug":848,"type":15},{"name":995,"slug":996,"type":15},"React","react",{"name":998,"slug":999,"type":15},"shadcn\u002Fui","shadcn-ui",{"name":864,"slug":865,"type":15},{"name":1002,"slug":1003,"type":15},"Vercel","vercel","2026-04-06T18:40:59.619419",{"slug":1006,"name":1006,"fn":1007,"description":1008,"org":1009,"tags":1010,"stars":22,"repoUrl":23,"updatedAt":1024},"ai-gateway","configure Vercel AI Gateway","Vercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1011,1014,1017,1020,1023],{"name":1012,"slug":1013,"type":15},"AI Infrastructure","ai-infrastructure",{"name":1015,"slug":1016,"type":15},"Cost Optimization","cost-optimization",{"name":1018,"slug":1019,"type":15},"LLM","llm",{"name":1021,"slug":1022,"type":15},"Performance","performance",{"name":1002,"slug":1003,"type":15},"2026-04-06T18:40:44.377464",{"slug":1026,"name":1026,"fn":1027,"description":1028,"org":1029,"tags":1030,"stars":22,"repoUrl":23,"updatedAt":1036},"ai-generation-persistence","implement persistence patterns for AI generations","AI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1031,1032,1035],{"name":1015,"slug":1016,"type":15},{"name":1033,"slug":1034,"type":15},"Database","database",{"name":1018,"slug":1019,"type":15},"2026-04-06T18:41:08.513425",600]