Public Holidays Skill
"Is Monday a holiday in Germany?" is a five-second question that decides deploy schedules, invoice due dates, and vacation math — and Nager.Date answers it for 100+ countries over keyless HTTPS. This skill fetches, answers the actual question (a date, a plan, a long weekend), and respects the two traps: regional holidays that don't apply nationwide, and the countries whose holiday culture the API's global flag quietly encodes.
What This Skill Produces
- The answer — is/isn't a holiday, the next one coming, or the year's list — whichever was asked
- Local names alongside English — 元日 reads differently than "New Year's Day," and the local name is what colleagues will say
- Long-weekend candidates — holidays adjacent to weekends, the planning gold
- The command — exact curl, rerunnable
Required Inputs
Ask for these if not provided:
- Country (or countries) — ISO two-letter codes resolved from names; multi-country questions are batched, one call each
- Year — default the current year; "next 12 months" spans two calls
- The real question — a specific date, planning a trip, scheduling around a team, or hunting long weekends — the output shapes to it
Framework: The Calls and the Traps
- The year list:
curl -s "https://date.nager.at/api/v3/PublicHolidays/2026/JP" → JSON array with date, localName, name, global, counties, types. Next holidays: .../api/v3/NextPublicHolidays/DE. Specific-date check: fetch the year, match the date. Long weekends, precomputed: .../api/v3/LongWeekend/2026/DE — the API does the adjacency math itself.
- The
global flag is the regional trap: global: false + a counties array means the holiday applies only in listed regions (Bavaria's extra days, Scotland vs England). Answering "Germany has a holiday" for a Bavaria-only day is the classic wrong answer — quote the regions.
types matters at the edges: most entries are Public, but some countries include Bank, School, Optional, Observance — an Observance is not a day off; filter or label by type when the question is "is the office closed."
- Cross-country scheduling: fetch each country, then intersect/union per the question ("when are BOTH teams off" vs "when is ANYONE off"); present as a small table with local names.
- Coverage honesty: ~110 countries; religious holidays following lunar calendars are included where official but company/regional observances (Diwali bonus days, US company holidays like day-after-Thanksgiving) may not be — say when a workplace calendar could differ from the public list.
Output Format
Holidays: [country/countries, year]
[The direct answer to the actual question first.]
| Date |
Holiday (local · English) |
Scope |
| [Filtered to the question — the date, the range, the intersection; regional entries labeled with their regions] |
|
|
[Long-weekend section when planning was the intent]
Source: Nager.Date · rerun: [exact curl]
[Coverage caveat when workplace/regional nuance is in play]
Quality Checks
Anti-Patterns
1---2name: public-holidays3description: Look up public holidays for any country and year with zero API keys — the Nager.Date API via curl, with long-weekend detection and cross-country planning. Use when asked what are the holidays in a country, is date X a holiday somewhere, find long weekends this year, or which days is the team in Japan and Germany both off. Produces the holiday list with local names, the specific-date answer, long-weekend candidates, and the rerunnable command.4---5
6# Public Holidays Skill
7
8"Is Monday a holiday in Germany?" is a five-second question that decides deploy schedules, invoice due dates, and vacation math — and Nager.Date answers it for 100+ countries over keyless HTTPS. This skill fetches, answers the actual question (a date, a plan, a long weekend), and respects the two traps: regional holidays that don't apply nationwide, and the countries whose holiday culture the API's `global` flag quietly encodes.
9
10## What This Skill Produces
11
12- **The answer** — is/isn't a holiday, the next one coming, or the year's list — whichever was asked
13- **Local names alongside English** — 元日 reads differently than "New Year's Day," and the local name is what colleagues will say
14- **Long-weekend candidates** — holidays adjacent to weekends, the planning gold
15- **The command** — exact curl, rerunnable
16
17## Required Inputs
18
19Ask for these if not provided:
20- **Country (or countries)** — ISO two-letter codes resolved from names; multi-country questions are batched, one call each
21- **Year** — default the current year; "next 12 months" spans two calls
22- **The real question** — a specific date, planning a trip, scheduling around a team, or hunting long weekends — the output shapes to it
23
24## Framework: The Calls and the Traps
25
261. **The year list:** `curl -s "https://date.nager.at/api/v3/PublicHolidays/2026/JP"` → JSON array with `date`, `localName`, `name`, `global`, `counties`, `types`. **Next holidays:** `.../api/v3/NextPublicHolidays/DE`. **Specific-date check:** fetch the year, match the date. **Long weekends, precomputed:** `.../api/v3/LongWeekend/2026/DE` — the API does the adjacency math itself.
272. **The `global` flag is the regional trap:** `global: false` + a `counties` array means the holiday applies only in listed regions (Bavaria's extra days, Scotland vs England). Answering "Germany has a holiday" for a Bavaria-only day is the classic wrong answer — quote the regions.
283. **`types` matters at the edges:** most entries are `Public`, but some countries include `Bank`, `School`, `Optional`, `Observance` — an Observance is not a day off; filter or label by type when the question is "is the office closed."
294. **Cross-country scheduling:** fetch each country, then intersect/union per the question ("when are BOTH teams off" vs "when is ANYONE off"); present as a small table with local names.
305. **Coverage honesty:** ~110 countries; religious holidays following lunar calendars are included where official but company/regional observances (Diwali bonus days, US company holidays like day-after-Thanksgiving) may not be — say when a workplace calendar could differ from the public list.
31
32## Output Format
33
34# Holidays: [country/countries, year]
35
36**[The direct answer to the actual question first.]**
37
38| Date | Holiday (local · English) | Scope |
39|---|---|---|
40[Filtered to the question — the date, the range, the intersection; regional entries labeled with their regions]
41
42[Long-weekend section when planning was the intent]
43
44Source: Nager.Date · rerun: `[exact curl]`
45[Coverage caveat when workplace/regional nuance is in play]
46
47## Quality Checks
48
49- [ ] The specific question is answered before any list appears
50- [ ] Regional (`global: false`) holidays are labeled with their regions, never presented as national
51- [ ] Non-public `types` are filtered or labeled when "day off" is the question
52- [ ] Local names appear alongside English
53- [ ] Multi-country answers show the intersection/union the question implied
54
55## Anti-Patterns
56
57- [ ] Do not answer from memory — holiday rules change and lunar dates move; fetch or hand over the command
58- [ ] Do not present a regional holiday as nationwide — the `global` flag exists to be read
59- [ ] Do not count observances as days off
60- [ ] Do not dump 15 holidays when the question was one date
61- [ ] Do not promise a workplace is closed — public holidays and company calendars are cousins, not twins