Install any skill in seconds. Free to start, no credit card required.
Get Started Free →OverKill Hill P³ offline celestial data engine. Use when implementing or reviewing moon-phase, zodiac-season, Mercury-retrograde, or upcoming lunar-event features in JavaScript or TypeScript. Also activate when a UI needs display-grade night-sky data without a network request. Preserve the repo's exact functions and return shapes, use the bundled deterministic implementation, and validate date data with the supplied scripts.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 3212% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 1803% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 1% | 0% |
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 |
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.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 debuggingthe calculation. Copy the needed functions; do not recreate lookup tables from memory.
text node .agents/skills/okhp3-celestial-data/scripts/check-date.cjs 2026-06-26
Confirm the output contains all three domains and that 2026-06-26 is not inside a Mercury window; the next bundled window begins 2026-07-17.
text node .agents/skills/okhp3-celestial-data/scripts/validate-mercury-dates.cjs
Require exit code 0. Treat warnings about gaps as review signals, not proof that the ephemeris is correct.
Date twice. Verifythat no implementation path calls fetch, reads a secret, or adds a dependency. Report the actual validation commands and results.
src/lib/celestial.tswhen working in Kieran's LifeTrkr; do not add a second celestial module.
references/celestial.ts as the source oftruth and adapt only import paths and local type names.
illumination * 100 to a percentage at the UI boundary, and render endDate: null as “not currently retrograde.”
scripts/ files as executable validation tools. Use afixed ISO date for reproducible bug reports instead of relying only on the current clock.
367 * y conversion pattern, aknown 2000 new-moon reference, and the average synodic month. It is suitable for display and wellness UX, not scientific observation.
ASTRO_SEASONS lookup keyed by startMD andendMD (month * 100 + day). Capricorn wraps across December and January.
2029-12-22 to 2030-01-11 entry intentionally crosses a year boundary; ISO lexicographic comparison handles it.
⭐ for a zodiac emoji, rename daysUntilNext, changeillumination to an integer percentage, or silently change date semantics.
getNextLunarEvents advances from the current day and is therefore clockdependent. Use the other functions with explicit dates for deterministic tests; do not promise exact event timestamps.
table update and run the validator; do not invent dates.
All calculations run locally with no API key, network call, telemetry, or user data. If a request asks for an astrology API, server endpoint, or sensitive birth-chart service, state that it is outside this skill's boundary and do not silently expand the implementation.
references/celestial.ts — complete TypeScript implementation and contracts.Read it on demand for code, porting, or debugging.
scripts/check-date.cjs — deterministic CLI inspection for a supplied date.scripts/validate-mercury-dates.cjs — ordering, overlap, ISO-format, and gapchecks for the Mercury table.
Return the selected API, the files changed, the validation commands and results, the accuracy boundary, and any unresolved ephemeris or timezone concern. Do not claim astronomical precision or live-source verification when none was done.
Built by Jamie Hill · OverKill Hill P³ Published at github.com/OKHP3 Part of the OKHP3/skillz Agent Skill library. MIT License -- free to use, fork, and adapt. A nod to the source is appreciated.
Other measured skills in the registry, with their headline benchmark lift.