--- name: hd-prism-tenant-api description: Use Alex's shared HD Prism API to calculate Human Design bodygraphs for Astral Hermes tenants. Required whenever a tenant/user asks for a Human Design chart/bodygraph from birth data. version: 0.2.0 author: Hermes Agent + Alex license: MIT metadata: hermes: tags: [human-design, bodygraph, hd-prism, astral-hermes, chart-calculation] related_skills: [astral-chart-api] --- # HD Prism Tenant API Use this skill whenever a user asks for any of these: - Human Design chart - bodygraph - HD type / strategy / authority / profile / definition - gates / channels / centers - variables, determination, environment, motivation, view - "calculate my Human Design" ## Hard rule Do **not** calculate Human Design inside the tenant with local Python/JS modules, Swiss Ephemeris, timezonefinder, pytz, or hand-derived gates. Astral Hermes tenants should call Alex's shared HD Prism service: ```text https://hdprism.apps.poofc.com/api/tenant/bodygraph ``` This mirrors the Astral chart-service pattern: the app/service owns calculation; the tenant owns conversation and interpretation. ## Endpoint ```text GET https://hdprism.apps.poofc.com/api/tenant/health POST https://hdprism.apps.poofc.com/api/tenant/bodygraph POST https://hdprism.apps.poofc.com/api/tenant/bodygraph.svg ``` Request JSON: ```json { "name": "Example Person", "birthDate": "1985-09-26", "birthTime": "07:14", "location": "London, England" } ``` Optional alternatives: ```json { "timeZone": "Europe/London" } { "utc": "1985-09-26T06:14:00Z" } ``` - If `timeZone` is supplied, it is used directly as an IANA zone. - If only `location` is supplied, HD Prism resolves local civil time to UTC through the Transit List Demo time resolver. - If `utc` / `utcIso` / `birthDateTimeUTC` is supplied, it is used directly. ## Curl example ```bash curl -sS -X POST 'https://hdprism.apps.poofc.com/api/tenant/bodygraph' \ -H 'Content-Type: application/json' \ -d '{"name":"Example Person","birthDate":"1985-09-26","birthTime":"07:14","location":"London, England"}' ``` Response shape: ```json { "ok": true, "service": "hd-prism-tenant-api", "resolved": { "timezone": "Europe/London", "utcIso": "1985-09-26T06:14:00.000Z", "source": "transit-list-demo.api.time.resolve" }, "summary": { "type": "Projector", "authority": "Emotional", "profile": "6/2", "definition": "Split Definition", "environment": { "label": "Blending Caves" }, "channels": ["10-57"], "gates": ["46"] }, "bodygraph": { "...full HD Prism bodygraph...": true } } ``` ## SVG chart route Use this when a tenant needs a displayable bodygraph image/SVG in addition to JSON chart data. ```text POST https://hdprism.apps.poofc.com/api/tenant/bodygraph.svg ``` Request JSON uses the same birth-data fields as `/bodygraph`, plus optional render options: ```json { "name": "Example Person", "birthDate": "1985-09-26", "birthTime": "07:14", "location": "London, England", "theme": "light", "width": 900 } ``` Response: - `Content-Type: image/svg+xml; charset=utf-8` - Standalone `` bodygraph with HD Prism metadata (`data-service="hd-prism-tenant-api"`, chart type, active gates/channels/centers). - Supports `theme: "light" | "dark"`, `width` clamped server-side, and `includeMetadata: false` if metadata should be omitted. Safe terminal pattern — save the SVG to a file; do **not** pipe remote `curl` output into Python/Node/shell interpreters: ```bash curl -fsS -o bodygraph.svg \ -H 'Content-Type: application/json' \ --data-binary @payload.json \ 'https://hdprism.apps.poofc.com/api/tenant/bodygraph.svg' ``` To “pull a chart” for both interpretation and display: 1. Call `/api/tenant/bodygraph` for JSON calculation and summary. 2. Call `/api/tenant/bodygraph.svg` with the same birth data when the app/UI needs a bodygraph visual. 3. Treat SVG as presentation only; use JSON `summary`/`bodygraph` for interpretation. ## Required workflow 1. Extract name, birth date, local birth time, and location/timezone from the user. 2. If any required field is missing, ask only for the missing field(s). 3. Call `POST /api/tenant/bodygraph` before interpreting. 4. Use `summary` for compact answers and `bodygraph.activations` for detailed line/color/tone/base work. 5. Mention the resolved timezone/UTC if relevant. 6. Interpret from the returned API data. Never invent type/profile/authority/gates. ## Failure behavior If the API returns `ok:false` or the HTTP call fails: - State that the shared HD Prism chart service failed. - Give the exact missing/failed piece if known. - Ask for a timezone if location resolution failed, or ask permission to retry. - Do not make up chart details. Bad: ```text I can infer you're probably a Generator... ``` Good: ```text I need the HD Prism service to calculate the actual bodygraph. The service could not resolve the birth location; can you give me the IANA timezone, e.g. America/Los_Angeles? ``` ## Interpretation notes Default compact output: - Type - Strategy if available / implied by type - Authority - Profile - Definition - Environment - Key channels - Key gates or activation highlights For deeper analysis, use the full `bodygraph.activations` object; Environment is derived from **Design South Node**, already included in `summary.environment` and `bodygraph.environment`.