Install any skill in seconds. Free to start, no credit card required.
Get Started Free →okhp3/okhp3-celestial-data
OverKill Hill P³ offline celestial data engine.
Passed 17 of 19 test cases with the skill, and 3 of 19 without it.
and 25 more in the full report
16 fixed4 passed either way2 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 14 test cases the skill fixed. Same model, same prompt, with and without the skill.
We need to run a CLI smoke check against our local celestial engine for June 26, 2026, to verify lunar, seasonal, and Mercury status behavior before deployment. Outline the exact CLI command to run and state the expected Mercury status for that date.
| Checked | Without skill | With skill |
|---|---|---|
| Executes node .agents/skills/okhp3-celestial-data/scripts/check-date.cjs 2026-06-26. | Missed | Passed |
| Reports that 2026-06-26 is outside any Mercury retrograde window. | Passed | Passed |
The instructions your model reads when the skill loads.
OverKill Hill P³ · overkillhill.com · github.com/OKHP3
Use the skill as a small, deterministic display-data layer. It is intentionally offline and dependency-free: do not replace the calculations with a network request, an npm package, or observatory-grade claims.
| In scope | Out of scope |
|---|---|
getMoonPhase, getAstroSeason, getMercuryStatus, getNextLunarEvents | Observatory-grade precision; target display accuracy is about ±12 hours for lunar phase |
| TypeScript contracts and local UI integration | Planetary positions beyond Mercury retrograde |
| Bundled 2026–2031 Mercury date table | Eclipses, solstices, equinox timestamps, natal charts, or ephemeris beyond 2031 |
| Deterministic CLI checks and date-table validation | Server-side or API-backed celestial data |
Identify the required output and select the smallest public function set.
Inspect the destination types and existing imports before changing a caller.
Preserve these APIs and shapes:
getMoonPhase(date?: Date) → { name, emoji, illumination, daysUntilNext }, with illumination as a 0.0–1.0 fraction.getAstroSeason(date?: Date) → { sign, emoji, element, dates }, with a zodiac symbol rather than a generic star.getMercuryStatus(date?: Date) → { retrograde: boolean, endDate: string | null }.getNextLunarEvents(count = 3) → up to count * 2 { type, date, emoji } entries, alternating New Moon and Full Moon discoveries.Decide whether the caller needs a local calendar date or an ISO date. The
engine uses local month/day parts for moon and season display, while Mercury
status compares date.toISOString().split('T')[0] against ISO date strings.
references/celestial.ts only when implementing, porting, or debugging
the calculation. Copy the needed functions; do not recreate lookup tables
from memory.test cases passed, vs 3 / 19 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.