EA

earth-view-globe

Tooling for development and debugging of the Earth View globe components.

Install

mkdir -p .claude/skills/earth-view-globe && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12503" && unzip -o skill.zip -d .claude/skills/earth-view-globe && rm skill.zip

Installs to .claude/skills/earth-view-globe

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Work on Earth View's globe experience. Use when editing or debugging the Three.js globe, NASA GIBS globe textures, camera controls, max-zoom 2D overlay, globe layer hotkeys, GIBS overlay stack, city/boundary labels, event overlays, or globe-to-modal point selection flow.
271 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Advanced

Key capabilities

  • Debug Three.js globe components
  • Adjust NASA GIBS globe textures
  • Tune camera controls and behavior
  • Manage max-zoom 2D overlay
  • Implement globe layer hotkeys

How it works

This skill provides direct access and guidance for modifying Earth View's globe architecture, including Three.js components, GIBS overlays, and camera controls.

Inputs & outputs

You give it
A request to edit or debug a specific globe component or behavior
You get back
Modified globe behavior, updated textures, or adjusted camera controls

When to use earth-view-globe

  • Debug globe
  • Adjust overlays
  • Work on map labels

About this skill

Earth View Globe

Use this skill to move quickly through the globe-side architecture without rediscovering the whole app.

Start Here

Read these files first, in this order:

  1. src/App.tsx for composition of Globe, MaxZoomImagery, CameraHotkeys, and ImageryModal.
  2. src/components/Globe/Globe.tsx for the canvas, camera reporting, global GIBS texture selection, overlays, and selection handoff.
  3. src/components/Globe/MaxZoomImagery.tsx for the 2D detailed overlay shown at max zoom.
  4. src/components/Globe/CameraHotkeys.tsx for the floating imagery panel, number keys, overlay stack UI, overlay loading state, and activity toggles.
  5. src/store/useAppStore.ts for shared state and globe-to-modal transitions.

Mental Model

Treat the globe view as the broad exploration surface. It renders a Three.js sphere with global NASA GIBS WMS textures, optional transparent GIBS overlays, boundary/city/event context, and camera-derived viewport state.

The globe does not render Sentinel as a true sphere texture. If the active provider has no layerId, Globe.tsx falls back to viirs-noaa20 for the global texture. Sentinel imagery belongs to max-zoom/regional/modal flows.

Core Files

  • src/components/Globe/Globe.tsx: canvas, lights, starfield, Earth texture URLs, overlay textures/load status, activity overlays, AdaptiveControls.
  • src/components/Globe/Earth.tsx: texture loading/caching, sphere mesh, shift-click and right-click selection handlers.
  • src/components/Globe/MaxZoomImagery.tsx: flat detailed imagery overlay, viewport bbox math, drag-to-pan, shift/right-click selection from image coordinates.
  • src/components/Globe/CameraHotkeys.tsx: imagery panel, number-key layer switching, visibility toggle, overlay add/reorder/remove, overlay load icons, activity toggles.
  • src/components/Globe/BoundaryLines.tsx: Natural Earth boundaries and graticule geometry.
  • src/components/Globe/CityLabels.tsx: tiered globe labels hidden when modal or max-zoom overlay is active, with low HTML z-index so app panels stay above labels.
  • src/components/Globe/EventOverlays/*: USGS/EONET fetches, marker details, hover popups, and markers/tracks.
  • src/lib/geo.ts: lat/lon vector math, bbox math, zoom conversions, coordinate formatting.

State Flow

useAppStore is the contract between the globe and the rest of the app.

  • globeView: current center lat/lon, spans, camera distance, and atMaxZoom.
  • layerId: active imagery provider.
  • overlayLayerIds: ordered GIBS overlay stack.
  • overlayLoadStatuses: per-overlay loading/loaded status keyed by provider id and texture URL.
  • activityOverlays: earthquakes, volcanoes, and storms.
  • imageryVisible: base imagery visibility toggle.
  • selectPoint(lat, lon, zoom?): opens the modal and sets selected point.
  • focusGlobeAt(lat, lon, options?): recenters the camera, used by max-zoom panning and modal-related flows.

When changing globe behavior, preserve this state contract unless the user explicitly wants a larger state redesign.

Max-Zoom Overlay

AdaptiveControls marks atMaxZoom when camera distance is <= 1.085. MaxZoomImagery then:

  • Builds a bbox from the reported globe center and viewport spans.
  • Requests provider.fetchImage({ bbox, date, width, height }).
  • Shows a full-screen 2D image over the canvas.
  • Lets drag gestures update the globe center with focusGlobeAt.
  • Converts image click coordinates back to lat/lon and passes an imageryView into selectPoint, so the modal can open at a matching regional scale.
  • Suppresses itself on scroll-out and returns when max-zoom state is re-entered.

Do not treat max zoom as only visual decoration; it is part of the modal handoff.

Camera And Drag Tuning

AdaptiveControls dynamically adjusts OrbitControls speeds from camera distance:

  • zoomSpeed eases from MIN_ZOOM_SPEED near the surface to MAX_ZOOM_SPEED at wide globe distance.
  • rotateSpeed and panSpeed use the same distance-aware idea so dragging close to max zoom feels less jumpy.
  • When changing these constants, test both almost-max zoom before the detailed overlay loads and full max-zoom overlay drag.

Overlays And Activity Markers

GIBS analytic overlays are registered with overlayOnly: true. CameraHotkeys.tsx should keep the overlay add menu filtered to provider.overlayOnly && provider.layerId, so base imagery options do not appear as overlays. Globe.tsx marks overlay textures as loading when their URL changes, and Earth.tsx reports loaded textures back through onOverlayReady.

Activity overlays are browser-fetched and intentionally resilient:

  • EarthquakeMarkers.tsx uses USGS all-day GeoJSON, filters to magnitude 2.5+, colors markers by magnitude, and keeps title/place/time/depth/status/link metadata for hover details.
  • VolcanoMarkers.tsx uses NASA EONET open volcano events. EONET geometry dates are observation/report dates, not verified last-eruption dates. Volcano markers use the volcano X-shape variant so they are visually distinct from earthquake crosshairs.
  • StormTracks.tsx uses NASA EONET open severe-storm events, renders point history as line segments, and keeps latest/peak intensity, dates, and source links when available.
  • ActivityCrosshair.tsx renders dark-stroked marker shapes plus invisible square hit targets. If several hit targets overlap, it chooses the marker whose center is closest to the pointer.
  • ActivityHoverPopup.tsx, activityHoverStore.ts, and eventDetails.ts own the shared hover popup state and date/recency formatting.

Common Tasks

For a globe control or hotkey change, start in CameraHotkeys.tsx and confirm modal-open guards remain intact.

For camera or zoom behavior, start in AdaptiveControls inside Globe.tsx, then inspect MaxZoomImagery.tsx if the change affects the detailed overlay.

For selection behavior, check both Earth.tsx and MaxZoomImagery.tsx; the sphere and flat overlay have separate coordinate conversion paths.

For activity overlays, keep browser fetches resilient. Failed feeds should render no markers rather than breaking the globe.

For labels/boundaries, keep modalOpen and atMaxZoom visibility behavior in mind. City labels intentionally disappear when the modal or max-zoom overlay is active, and should stay behind app UI panels when visible.

Validation

Run at least:

npm run lint

For visual/camera changes, also run the dev server and inspect:

  • regular globe at initial zoom
  • max-zoom overlay
  • shift-click/right-click modal opening from both sphere and overlay
  • imagery panel while modal is closed
  • overlay loading indicators and overlay candidate hover summaries
  • activity marker hover details, especially overlapping marker selection
  • absence of imagery panel/hotkeys while modal is open

When not to use it

  • When the task requires Sentinel imagery as a true sphere texture
  • When working on Sentinel imagery for max-zoom/regional/modal flows
  • When the change affects state contract without explicit redesign

Limitations

  • Does not render Sentinel as a true sphere texture
  • Assumes `useAppStore` contract unless redesign is explicit
  • Requires testing both almost-max zoom and full max-zoom overlay drag for camera changes

How it compares

This workflow offers a structured approach to modifying specific globe components, unlike navigating the entire application codebase without guidance.

Compared to similar skills

earth-view-globe side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
earth-view-globe (this skill)02moReviewAdvanced
d3-visualization74moNo flagsAdvanced
antv-l721moNo flagsIntermediate
infographic-structure-creator15moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

d3-visualization

lyndonkl

Use when creating custom, interactive data visualizations with D3.js—building bar/line/scatter charts from scratch, creating network diagrams or geographic maps, binding changing data to visual elements, adding zoom/pan/brush interactions, animating chart transitions, or when chart libraries (Highcharts, Chart.js) don't support your specific visualization design and you need low-level control over data-driven DOM manipulation, scales, shapes, and layouts.

7107

antv-l7

antvis

Comprehensive guide for AntV L7 geospatial visualization library. Use when users need to: (1) Create interactive maps with WebGL rendering (2) Visualize geographic data (points, lines, polygons, heatmaps) (3) Build location-based data dashboards (4) Add map layers, interactions, or animations (5) Process and display GeoJSON, CSV, or other spatial data (6) Integrate maps with AMap (GaodeMap), Mapbox, Maplibre, or standalone L7 Map (7) Optimize performance for large-scale geographic datasets

29

infographic-structure-creator

antvis

Generate or update infographic Structure components for this repo (TypeScript/TSX in src/designs/structures). Use when asked to design, implement, or modify structure layouts (list/compare/sequence/hierarchy/relation/geo/chart), including layout logic, component composition, and registration.

110

infographic-item-creator

antvis

Generate or update infographic Item components for this repo (TypeScript/TSX in src/designs/items). Use when asked to design, implement, or modify data item visuals, layout logic, or registerItem composites.

16

nextjs-developer

zenobi-us

Expert Next.js developer mastering Next.js 14+ with App Router and full-stack features. Specializes in server components, server actions, performance optimization, and production deployment with focus on building fast, SEO-friendly applications.

328531

zustand

lobehub

Zustand state management guide. Use when working with store code (src/store/**), implementing actions, managing state, or creating slices. Triggers on Zustand store development, state management questions, or action implementation.

113434

Search skills

Search the agent skills registry