afv-library/samples/webapp-template-app-react-sample-b2e-experimental/.a4drules/skills/building-weather-widget/SKILL.md

66 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: building-weather-widget
description: Adds a weather widget to React pages using the free Open-Meteo API. Use when the user asks to add weather, show a forecast, display current conditions, add a weather card, or integrate weather data into the web application.
---
# Weather Widget
## When to Use
Use this skill when:
- Adding current weather conditions to a dashboard or sidebar
- Displaying an hourly or daily forecast
- Showing location-based weather for a property, event, or destination
---
## Step 1 — Determine widget scope
Identify what weather data the user needs:
- **Current conditions only** — temperature, description, wind, humidity
- **Current + hourly forecast** — conditions + next 612 hours
- **Current + daily forecast** — conditions + multi-day outlook
If unclear, ask:
> "Should the weather widget show just current conditions, or include an hourly/daily forecast too?"
---
## Step 2 — Determine location source
The widget needs a latitude/longitude. Identify where this comes from:
- **Fixed default** — hardcoded city (e.g. San Francisco: `37.7749, -122.4194`)
- **User's location** — browser Geolocation API
- **Address-based** — geocode an address to lat/lng (see the `building-interactive-map` skill for geocoding)
- **Prop-driven** — parent component passes lat/lng
---
## Step 3 — Implementation
Read the corresponding guides:
- **Weather data hook** — read `implementation/weather-hook.md` for the `useWeather` custom hook and Open-Meteo API integration.
- **Weather UI component** — read `implementation/weather-ui.md` for rendering weather data in a card.
---
## Verification
Before completing:
1. Widget shows real weather data (not mocked).
2. Loading and error states are handled gracefully.
3. Temperature displays in the correct unit (°F or °C).
4. Run from the web app directory:
```bash
cd force-app/main/default/webapplications/<appName> && npm run lint && npm run build
```
- **Lint:** MUST result in 0 errors.
- **Build:** MUST succeed.