$npx -y skills add himself65/finance-skills --skill hormuz-straitCheck the current status of the Strait of Hormuz — shipping transit data, oil price impact, stranded vessels, insurance risk levels, diplomatic developments, and global trade impact. Use this skill whenever the user asks about the Strait of Hormuz, Hormuz chokepoint, Persian Gulf
| 1 | # Hormuz Strait Monitor Skill |
| 2 | |
| 3 | Fetches real-time status of the Strait of Hormuz from the [Hormuz Strait Monitor](https://hormuzstraitmonitor.com) dashboard API. Covers shipping transits, oil prices, stranded vessels, insurance risk, diplomatic status, global trade impact, and crisis timeline. |
| 4 | |
| 5 | **This skill is read-only.** It fetches public dashboard data — no authentication required. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Step 1: Fetch Dashboard Data |
| 10 | |
| 11 | Use `curl` to fetch the dashboard API: |
| 12 | |
| 13 | ```bash |
| 14 | curl -s https://hormuzstraitmonitor.com/api/dashboard |
| 15 | ``` |
| 16 | |
| 17 | Parse the JSON response. The API returns `{ "success": true, "data": { ... }, "timestamp": "..." }`. |
| 18 | |
| 19 | If `success` is `false` or the request fails, inform the user the monitor is temporarily unavailable and suggest checking https://hormuzstraitmonitor.com directly. |
| 20 | |
| 21 | --- |
| 22 | |
| 23 | ## Step 2: Identify What the User Needs |
| 24 | |
| 25 | Match the user's request to the relevant data sections. If the user asks for a general status update, present all sections. If they ask about something specific, focus on the relevant section(s). |
| 26 | |
| 27 | | User Request | Data Section | Key Fields | |
| 28 | |---|---|---| |
| 29 | | General status / "is Hormuz open?" | `straitStatus` | `status`, `since`, `description` | |
| 30 | | Ship traffic / transit count | `shipCount` | `currentTransits`, `last24h`, `normalDaily`, `percentOfNormal` | |
| 31 | | Oil price impact | `oilPrice` | `brentPrice`, `change24h`, `changePercent24h`, `sparkline` | |
| 32 | | Stranded / stuck vessels | `strandedVessels` | `total`, `tankers`, `bulk`, `other`, `changeToday` | |
| 33 | | Insurance / war risk | `insurance` | `level`, `warRiskPercent`, `normalPercent`, `multiplier` | |
| 34 | | Cargo throughput | `throughput` | `todayDWT`, `averageDWT`, `percentOfNormal`, `last7Days` | |
| 35 | | Diplomatic situation | `diplomacy` | `status`, `headline`, `parties`, `summary` | |
| 36 | | Global trade impact | `globalTradeImpact` | `percentOfWorldOilAtRisk`, `estimatedDailyCostBillions`, `affectedRegions`, `lngImpact`, `alternativeRoutes`, `supplyChainImpact` | |
| 37 | | Crisis timeline / events | `crisisTimeline` | `events[]` with `date`, `type`, `title`, `description` | |
| 38 | | Tanker freight rates / VLCC rates | `tankerRates` | `currentRate`, `preCrisisRate`, `changePercent`, `route`, `vesselType`, `trend`, `unit` | |
| 39 | | Latest news | `news` | `title`, `source`, `url`, `publishedAt`, `description` | |
| 40 | |
| 41 | --- |
| 42 | |
| 43 | ## Step 3: Present the Data |
| 44 | |
| 45 | Format the results clearly for financial research. Adapt the presentation based on what the user asked for. |
| 46 | |
| 47 | ### General status briefing (default) |
| 48 | |
| 49 | When the user asks for a general update, present a concise briefing covering all key sections: |
| 50 | |
| 51 | 1. **Strait Status** — lead with the current status (e.g., "OPEN", "RESTRICTED", "CLOSED"), how long it's been in that state, and the description |
| 52 | 2. **Ship Traffic** — current transits, last 24h count, and percent of normal |
| 53 | 3. **Oil Price** — Brent price with 24h change |
| 54 | 4. **Stranded Vessels** — total count broken down by type, with today's change |
| 55 | 5. **Insurance Risk** — risk level, war risk premium percentage, and multiplier vs. normal |
| 56 | 6. **Cargo Throughput** — today's DWT vs. average, percent of normal |
| 57 | 7. **Diplomatic Status** — current status, headline, and brief summary |
| 58 | 8. **Global Trade Impact** — percent of world oil at risk, estimated daily cost, and top affected regions |
| 59 | 9. **Tanker Freight Rates** — current VLCC rate on the benchmark route vs. pre-crisis baseline, with trend direction |
| 60 | |
| 61 | ### Formatting guidelines |
| 62 | |
| 63 | - Use tables for structured data (vessel counts, affected regions, alternative routes) |
| 64 | - Highlight abnormal values — if `percentOfNormal` is below 80% or above 120%, call it out |
| 65 | - For `oilPrice.sparkline`, describe the trend (rising, falling, stable) rather than listing raw numbers |
| 66 | - For `throughput.last7Days`, describe the trend direction |
| 67 | - Show `lastUpdated` timestamp so the user knows data freshness |
| 68 | - For news items, include the source and link |
| 69 | - For crisis timeline events, present chronologically with event type labels |
| 70 | |
| 71 | ### Risk assessment |
| 72 | |
| 73 | Based on the data, provide a brief risk assessment: |
| 74 | |
| 75 | Values are returned uppercase. |
| 76 | |
| 77 | | Insurance Level | Interpretation | |
| 78 | |---|---| |
| 79 | | `NORMAL` | No eleva |