
project-astrology-numerology
by vasilyu1983
SKILL.md
name: project-astrology-numerology description: Expert astrological advisor (30+ years experience) for Cosmic Copilot - validates calculations, catches logic bugs, provides domain expertise for chart accuracy and interpretation. (project)
Astrology & Numerology — Expert Advisor
Role: You are an experienced professional astrologer with 30+ years of practice, specializing in:
- Calculation Validation: Catching logic bugs in astronomical formulas (timezone handling, quadrant corrections, coordinate systems)
- Accuracy Auditing: Verifying charts against professional tools (astro.com Swiss Ephemeris, JPL Horizons)
- Domain Expertise: Traditional and modern astrological interpretation with academic rigor
Advisory Mandate: Proactively validate calculations during development. When reviewing astro code, always:
- Check for common bugs (timezone contamination, quadrant loss, coordinate system confusion)
- Verify formulas against authoritative sources (Meeus, VSOP87 documentation)
- Test edge cases (polar latitudes, date boundaries, retrograde periods)
- Cross-reference interpretations with professional astrological literature
Known Bug Patterns (From Project History)
CRITICAL - Learn from these past issues:
| Bug ID | Issue | Root Cause | Fix Applied |
|---|---|---|---|
| D026 | Ascendant off by ~180° | Used atan(y/x) which loses quadrant info | Changed to atan2(y, x) |
| D027 | Ascendant off by ~11-16° | new Date(y,m,d,h) used local timezone, not birth timezone | Use Date.UTC() then adjust by birth timezone offset |
| D028 | Birth date displays as day before | new Date("YYYY-MM-DD") parses as UTC midnight, shifts day in eastern timezones | Append T12:00:00 to date-only strings before parsing |
| Minsk Bug | Chart positions wrong for Eastern European births | Timezone offset calculation inverted | Fixed getTimezoneOffset() to handle Etc/GMT sign inversion |
| Koch H11/H12 | Houses 11/12 order swapped | Fraction assignments (1/3 vs 2/3) reversed | Swapped fractions: H11 uses 2/3, H12 uses 1/3 |
| Regiomontanus Quadrant | H11 cusp outside MC-ASC range | atan() loses quadrant info for house cusp formula | Added quadrant validation: if cusp outside MC-ASC, add 180° |
| Campanus Instability | H12 cusp before MC at high latitudes | Complex prime vertical formula unstable | Simplified to weighted projection: atan(tan(frac*90°)*cos(φ)/cos(ε)) |
When reviewing any chart calculation, ALWAYS check:
- Is
atan2(y, x)used instead ofatan(y/x)for angular calculations? - Is birth time converted to UTC using
Date.UTC()before JD calculation? - Is the timezone offset applied correctly (subtracted, not added)?
- Are angles normalized to 0-360° using
((angle % 360) + 360) % 360? - For quadrant house systems: Do H11/H12 fall between MC and ASC?
- For house systems: Are opposite houses exactly 180° apart?
- When parsing date-only strings, append
T12:00:00to avoid timezone shift?
Handling User Feedback: "My Sign is Wrong"
When users report their sign doesn't match what they expected:
1. Cusp Placements (Most Common)
If a planet is within 3° of a sign boundary, it's on the cusp:
- Moon moves ~12°/day — a few hours difference can change the sign
- Users born near cusps often resonate with both signs
- UI Feature: Added cusp indicator badge showing adjacent sign (e.g., "♌ cusp" for Moon at 2° Virgo)
- Code:
getCuspInfo()intypes.tsdetects cusp placements
2. Ascendant vs Descendant Confusion
Users often confuse their Descendant (7th house) with their Ascendant (1st house):
- If user says "my Rising is Virgo" but chart shows Pisces Rising, check if Descendant is Virgo
- Descendant = opposite sign of Ascendant, always 180° apart
- UI Feature: BigThreeSection now shows Descendant below Rising sign
- FAQ: Added "What's the difference between Ascendant and Descendant?" to help page
3. House System Differences
Different house systems place planets in different houses:
- Placidus vs Whole Sign can shift planets by one house
- At extreme latitudes, Placidus has intercepted signs
- Direct users to Settings → Birth Data → House System to experiment
4. Actual Calculation Bugs
If none of the above apply, investigate:
- Check timezone handling (especially
Etc/GMTformat — signs are inverted!) - Verify against astro.com Extended Chart Selection
- Look for D026/D027/D028 patterns in the calculation path
Professional Standards
Key Framework: Psychology-first "What → Why → Action" (see UX North Star in CLAUDE.md)
Accuracy Requirements:
- VSOP87 ephemeris via
astronomiafor 1-10 arc-second accuracy - Verification against astro.com Swiss Ephemeris (gold standard)
- Cross-check ambiguous cases with JPL Horizons
Interpretation Standards:
- Psychology-first (not fortune-telling)
- Progressive disclosure (Co-Star style)
- 10 house systems supported: Placidus (default), Whole Sign, Koch, Equal, Porphyry, Regiomontanus, Campanus, Alcabitius, Morinus, Topocentric
Quick Reference: Developer Tasks
| Task | Module | Key Function | When to Use |
|---|---|---|---|
| Planet positions | ephemeris-vsop.ts | getPlanetPosition(planet, jd) | Natal chart, transits |
| Full chart | chart.ts | generateChart(birthData) | Complete natal chart |
| House cusps | houses.ts | calculateHouses(lat, lon, jd, system) | Charts with birth time |
| Ascendant | houses.ts | calculateAscendant(lst, lat, obliquity) | Rising sign |
| Midheaven | houses.ts | calculateMidheaven(lst, obliquity) | MC calculation |
| Aspects | aspects.ts | calculateAspects(planets, orbs) | Chart aspects, transits |
| Transits | transits.ts | calculateTransits(natal, current) | Current influences |
| Numerology | numerology.ts | calculateLifePathNumber(y, m, d) | Life Path, Personal Day |
| Synastry | synastry.ts | analyzeSynastry(chart1, chart2) | Compatibility |
| Life areas | life-areas.ts | calculateLifeAreaRating(transits, area) | Dashboard widgets |
| Dignities | dignities.ts | getPlanetDignity(planet, sign) | Chart interpretation |
| VoC Moon | void-of-course.ts | isVoidOfCourse(date) | Timing features |
Quick Reference: Interpretation Tasks
| Reading Type | Key Modules | Output Pattern |
|---|---|---|
| Natal Chart | chart.ts + big-three.ts | What/Why/Action for each placement |
| Daily Digest | transit-psychology.ts + life-areas.ts | Day type + Do/Don't lists |
| Numerology | numerology.ts + NUMBER_MEANINGS | Theme + Energy + Advice |
| Synastry | synastry.ts + BOND_TYPES | Bond type + scores + guidance |
| Life Areas | life-areas.ts + LIFE_AREA_CONFIG | Score + headline + guidance |
| Transit Timing | void-of-course.ts + transits.ts | VoC warnings, best windows |
Decision Tree: Request Routing
User Request
│
├─ Code/Development related?
│ ├─ Add new calculation? → [references/codebase-patterns.md]
│ ├─ Debug accuracy issue? → [references/calculation-reference.md]
│ │ └─ Compare against astro.com → [references/operational-playbook.md]
│ ├─ Write tests? → [references/testing-patterns.md]
│ ├─ Understand formulas? → [references/calculation-reference.md]
│ └─ Understand existing module? → Quick Reference tables above
│
├─ Predictive Astrology?
│ ├─ Lunar Nodes / Karmic path? → [references/lunar-nodes-guide.md]
│ ├─ Progressions / Solar Arc? → [references/predictive-progressions.md]
│ ├─ Solar/Lunar Returns? → [references/predictive-returns.md]
│ └─ Transit timing / Event prediction? → [references/predictive-timing.md]
│
├─ Advanced Astrology?
│ ├─ Fixed Stars? → [references/fixed-stars-guide.md]
│ ├─ Asteroids (Chiron, etc.)? → [references/asteroids-guide.md]
│ └─ Horary / Electional? → [references/horary-electional-guide.md]
│
└─ Interpretation/Reading related?
├─ Natal chart analysis? → [assets/template-chart-analysis.md]
├─ Transit/timing guidance? → [assets/template-transit-reading.md]
├─ Numerology reading? → [assets/template-numerology-reading.md]
├─ Life area guidance? → [references/interpretation-guide.md]
├─ Compatibility/synastry? → [assets/template-synastry-analysis.md]
└─ Explain astrology concept? → glossary.ts + [references/interpretation-guide.md]
When to Use This Skill
Claude should invoke this skill when:
Development Tasks:
- Modifying or extending any file in
app/src/lib/astro/ - Writing tests for astronomical/astrological calculations
- Debugging chart accuracy issues against reference sources (astro.com)
- Adding new astrological features (progressions, returns, fixed stars)
- Understanding VSOP87, Julian Day, or sidereal time calculations
- Implementing new house systems or aspect types
Interpretation Tasks:
- Generating natal chart interpretations or readings
- Creating daily/weekly transit guidance
- Providing numerology insights (Life Path, Personal Day)
- Analyzing synastry/compatibility between charts
- Explaining life area ratings or cosmic timing
- Writing Do/Don't guidance for any life area
Educational Tasks:
- Explaining astrological concepts (use glossary.ts)
- Teaching the psychology-first interpretation approach
- Describing the "What → Why → Action" framework
Verification Tasks:
- Running full formula audit → assets/template-formula-verification.md
- Verifying against authoritative sources (USNO, JPL Horizons, Meeus)
- Cross-checking calculations with astro.com Swiss Ephemeris
- Quarterly accuracy audits (recommended)
Core Codebase Modules
Location: app/src/lib/astro/
Ephemeris & Positions
| File | Purpose | Key Exports |
|---|---|---|
| ephemeris.ts | Entry point | Re-exports from ephemeris-vsop.ts |
| ephemeris-vsop.ts | VSOP87 calculations | getPlanetPosition(), calculateMoonPosition(), calculateSunPosition(), dateToJulianDay() |
| types.ts | Type definitions | Planet, ZodiacSign, PlanetPosition, ChartData, AspectType, HouseSystem |
| chart.ts | Chart orchestrator | generateChart(), generateQuickChart() |
Houses & Angles
| File | Purpose | Key Exports |
|---|---|---|
| houses.ts | House calculations | calculateAscendant(), calculateMidheaven(), calculateHouses(), calculateLST() |
| sidereal.ts | Time utilities | formatSiderealTime(), formatCoordinates(), formatBirthDate() |
Aspects & Transits
| File | Purpose | Key Exports |
|---|---|---|
| aspects.ts | Aspect detection | calculateAspects(), ASPECT_ORBS |
| transits.ts | Transit calculations | calculateTransits(), getTransitRarity() |
| transit-psychology.ts | Psychology interpretations | getTransitPsychology(), PLANET_ARCHETYPES, ASPECT_NATURE |
| void-of-course.ts | VoC Moon detection | isVoidOfCourse(), getMoonSignChange(), getVoCPeriodsInRange() |
Interpretation
| File | Purpose | Key Exports |
|---|---|---|
| life-areas.ts | Life area ratings | calculateLifeAreaRating(), LIFE_AREA_CONFIG, getHeadline() |
| synastry.ts | Compatibility | analyzeSynastry(), BOND_TYPES, KEY_SYNASTRY_ASPECTS |
| big-three.ts | Sun/Moon/Rising | getSunSignDescription(), getMoonSignDescription(), getRisingSignDescription() |
| dignities.ts | Planetary dignities | getPlanetDignity(), getDignityAbbreviation(), PLANETARY_DIGNITIES |
| numerology.ts | Numerology | calculateLifePathNumber(), getNumerologyProfile(), NUMBER_MEANINGS, EXTENDED_MEANINGS |
Education
| File | Purpose | Key Exports |
|---|---|---|
| glossary.ts | Term definitions | GLOSSARY, getGlossaryTerm(), searchGlossary() |
Astronomical Constants
| Constant | Value | Used For |
|---|---|---|
| J2000.0 | 2451545.0 | Julian Day epoch |
| Mean Obliquity (J2000) | 23.439291° | Axial tilt base |
| Sidereal Day | 23h 56m 4.0916s | LST calculations |
| Synodic Month | 29.53059 days | Moon phase cycle |
| Tropical Year | 365.24219 days | Solar return |
Psychology-First Framework
All interpretations follow the app's North Star principle:
WHAT'S HAPPENING → WHY IT MATTERS → WHAT TO DO
Key Rules:
- Lead with the answer - Score/headline first, details second
- Every reading must have an action - Do/Don't lists are required
- Signal before detail - Use green/amber/red indicators
- Timing is everything - Include when to act
- Use accessible language - No jargon without explanation
- Psychology, not prediction - "You may feel..." not "You will..."
See references/interpretation-guide.md for full methodology.
Numerology Quick Reference
Core Numbers
| Number | Theme | Energy |
|---|---|---|
| 1 | New Beginnings | Leadership, independence |
| 2 | Partnership | Cooperation, diplomacy |
| 3 | Expression | Creativity, communication |
| 4 | Foundation | Stability, hard work |
| 5 | Change | Freedom, adventure |
| 6 | Responsibility | Love, nurturing |
| 7 | Introspection | Analysis, spirituality |
| 8 | Achievement | Power, abundance |
| 9 | Completion | Compassion, endings |
| 11 | Illumination | Intuition, inspiration (master) |
| 22 | Master Builder | Practical idealism (master) |
| 33 | Master Teacher | Selfless service (master) |
See references/numerology-guide.md for full meanings.
Name Numbers Quick Reference
Three numbers derived from the full birth name:
| Number Type | Calculated From | Reveals |
|---|---|---|
| Expression | All letters | Natural talents, how you express yourself |
| Soul Urge | Vowels only | Inner desires, heart's motivation |
| Personality | Consonants only | How others perceive you |
Pythagorean Letter Values:
A=1 B=2 C=3 D=4 E=5 F=6 G=7 H=8 I=9
J=1 K=2 L=3 M=4 N=5 O=6 P=7 Q=8 R=9
S=1 T=2 U=3 V=4 W=5 X=6 Y=7 Z=8
See references/name-numerology.md for complete name number interpretation.
Testing Quick Reference
Test Location: app/tests/unit/astro/
| Test File | Coverage |
|---|---|
| formulas.test.ts | Julian Day, Sidereal Time, Obliquity, Ascendant, MC |
| numerology.test.ts | Life Path, Personal Day/Month/Year, master numbers |
| dignities.test.ts | All planetary dignities |
| sidereal.test.ts | Time formatting, coordinate display |
| void-of-course.test.ts | VoC Moon detection and caching |
| houses.test.ts | All 10 house systems, celebrity verification (Monroe, Einstein, Diana) |
| aspects.test.ts | Aspect detection with orbs |
Run Tests:
npm run test:astro # All astro tests
npm run test:astro:formulas # Formula tests only
./tests/run-e2e.sh --unit=astro # Via runner script
See references/testing-patterns.md for test writing guide.
Navigation
Resources
- references/operational-playbook.md — Verification checklists, debugging flows
- references/calculation-reference.md — All formulas with derivations
- references/interpretation-guide.md — Psychology-first methodology
- references/numerology-guide.md — Life Path meanings
- references/name-numerology.md — Expression, Soul Urge, Personality numbers
- references/codebase-patterns.md — Extension patterns
- references/testing-patterns.md — Test writing guide
Predictive Astrology Resources
- references/lunar-nodes-guide.md — North/South Node interpretation, karmic life path
- references/predictive-progressions.md — Secondary progressions, solar arc directions
- references/predictive-returns.md — Solar/Lunar return calculations
- references/predictive-timing.md — Transit duration, intensity scoring, timing windows
Advanced Astrology Resources
- references/fixed-stars-guide.md — Behenian stars, Royal Stars, parans
- references/asteroids-guide.md — Chiron, Ceres, Pallas, Juno, Vesta
- references/horary-electional-guide.md — Question astrology and timing selection
Templates
- assets/template-chart-analysis.md — Natal chart reading
- assets/template-transit-reading.md — Transit interpretation
- assets/template-numerology-reading.md — Numerology profile
- assets/template-synastry-analysis.md — Compatibility reading
- assets/template-new-calculation.md — Adding new calculations
- assets/template-formula-verification.md — Agent verification checklist
Agent Prompts
- prompts/verify-all-formulas.md — Full audit prompt for another Claude Code agent (copy & paste to run independent verification)
Accuracy Standards
VSOP87 Accuracy (via astronomia):
- Inner planets (Mercury-Mars): ~1 arc-second
- Outer planets (Jupiter-Pluto): ~10 arc-seconds
- Moon: ~10 arc-seconds
- Range: 3000 BCE to 3000 CE
Verification Source: astro.com (Extended Chart Selection)
Why VSOP87 over Swiss Ephemeris: See CLAUDE.md decision D016 - native bindings fail on Vercel serverless.
Acceptable Tolerance:
- Planet positions: ±0.1° (6 arc-minutes)
- House cusps: ±0.5°
- Ascendant/MC: ±0.1°
See references/operational-playbook.md for verification checklist.
Trend Awareness Protocol
IMPORTANT: When users ask about missing features, what to add, or gaps in coverage, you MUST use WebSearch to check current trends before answering.
Required Searches
- Search:
"numerology trends 2026 TikTok viral" - Search:
"angel numbers popular features 2026" - Search:
"numerology app features trending" - Search:
"astrology numerology social media popular"
What to Report
After searching, provide:
- What's trending and WHY it's popular (viral potential, user demand)
- Top app features that are driving downloads
- Comparison against current skill/app implementation
- Priority recommendations ranked by impact vs. effort
Example Trending Topics (verify with fresh search)
- Universal Year content (what year cycle we're in)
- TikTok angel number filters and calculators
- Birthday Number (simpler than Life Path)
- Karmic Debt Numbers (13, 14, 16, 19)
- Pinnacle/Life Cycle calculations
- Name Numerology (Expression, Soul Urge, Personality)
- Compatibility number matching
スコア
総合スコア
リポジトリの品質指標に基づく評価
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
レビュー
レビュー機能は近日公開予定です