Skill instructions
eventhex-agenda1.79 KB
View saved version →
---
name: eventhex-agenda
description: Speakers and sessions — bulk creation, breaks, sub-sessions, speaker roles, ordering, photos.
---
# Agenda — speakers & sessions
## Speakers
- `create_speakers(eventId, speakers:[{name, designation, company, about, photo}])` — always an array; one item for a single speaker, many for a lineup. Each item is created independently; report per-item results.
- Photos from third-party URLs: pass the URL as `photo` — it is copied onto EventHex CDN and the internal key is saved. `upload_speaker_photo_from_url` does the same for an existing speaker.
- `update_speaker` / `delete_speaker` / `listSpeakers`.
- Ordering: `reorder_speakers(eventId, speakers:[{speakerId, position}])` — lower positions first.
- `generateSpeakerProfile` writes AI bio copy for a speaker.
## Sessions
`create_sessions(eventId, sessions:[{title, start, end, stage, description, …}])` — always an array. Supports:
- Breaks: `isBreak:true`.
- Nested sub-sessions: `isSubSession:true` + `parentSession`.
- Role-aware speakers: `sessionSpeakers:[{speakerId, role, order}]` for roles like Moderator or Keynote Speaker; the plain `speakers` id array is filled automatically for compatibility.
Also: `updateSession`, `deleteSession` (destructive — explicit request only), `listSessions`, `assignSpeakerToSession`, `removeSpeakerFromSession`, `createAgendaBatch` (speakers + sessions in one call), `checkConflicts(eventId)` to catch overlapping times/stages after bulk edits.
## Flow for "here is my full schedule"
1. `create_speakers` with the whole lineup (dedupe against `listSpeakers` first).
2. `create_sessions` with the whole schedule, wiring `sessionSpeakers` by the returned speaker ids.
3. `checkConflicts`, then report per-item successes and any failures.
Session times use the event's timezone.
eventhex-attendees-analytics1.64 KB
View saved version →
---
name: eventhex-attendees-analytics
description: Attendees, registrations, check-ins, revenue, exhibitor leads, exports and franchise-wide analytics.
---
# Attendees & analytics
## Per-event numbers
`get_event_stats(eventId, include:[…])` — registration totals, plus inline extras (no file download):
- `trend` — day-by-day registrations + cumulative
- `revenue` — collected / pending / refunded + net
- `tickets` — per-ticket registration & paid counts
`getCheckInStats(eventId)` for on-site check-in figures; `audienceInsights(eventId)` for audience breakdowns.
## Franchise-wide
`get_franchise_summary` — event count + total registrations. NOTE: counts ALL participant types (attendees + speakers + exhibitors + sponsors); for attendees-only use `get_event_stats`. `get_franchise_profile` / `list_invoices` for account/billing.
## Individual attendees
- `searchAttendees(eventId, query)` → matches; `getAttendeeDetails(eventId, …)` for one record.
- `update_attendee(eventId, …)` to fix a registration.
- `listOrders(eventId)` for payments; `listExhibitors` / `getExhibitorLeads` for exhibitor data.
- `exportAttendees(eventId)` — PII export; requires the `registrations:export` scope; only on explicit user request.
## Free-form questions
- `queryDatabase(eventId, …)` — analytics queries the dedicated tools don't cover (always event-scoped automatically).
- `semanticSearch(eventId, query)` — natural-language search across event content.
## Reply rules
- Say which event and which measure each number is ("paid attendees for WebCastle Meet", not "165").
- Don't paste bulk PII into chat — summarize, and use exports for full lists.
eventhex-event-setup1.45 KB
View saved version →
---
name: eventhex-event-setup
description: Create and fully set up an event — event, tickets, speakers, sessions, website — in the right order.
---
# Event setup
End-to-end flow for "create my event" requests. You act on ONE franchise.
## Order of operations
1. `create_event(title, startDate, endDate, …)` — returns the new `eventId` and `websiteUrl`. Share that link.
2. Tickets — one `create_ticket` per tier (see the `ticketing` guide for pricing/early-bird fields).
3. Agenda — `create_speakers` then `create_sessions` (see the `agenda` guide for breaks, sub-sessions, roles).
4. Website — `generate_website` → `apply_website` → `publish_website` (see the `website` guide; `improve_website` is for editing an existing live site).
5. `generate_seo(eventId)` for metadata; `getSetupChecklist(eventId)` to verify nothing is missing.
## Other event operations
- `updateEventDetails(eventId, …)` — change title, dates, venue, description.
- `clone_event(eventId, …)` — duplicate an existing event as the starting point for a new edition.
- `delete_event(eventId)` — destructive; only on explicit user request, restate what will be deleted.
- `getEventInfo(eventId)` — full event record; `get_event_domains(eventId)` — real website URL, slug, domains.
## Notes
- Dates: pass ISO strings; the event's timezone governs how they display.
- If the user asks for "an event like last time", `list_events` → `clone_event` beats rebuilding from scratch.
eventhex-response-style2.34 KB
View saved version →
---
name: eventhex-response-style
description: How to respond when operating EventHex — id discipline, real links only, batch reporting, destructive-action confirmation.
---
# Response style — golden rules
How the AI client should behave and reply when using EventHex tools.
1. **Resolve ids first, never guess.** Every event-scoped tool needs an `eventId` from `list_events`. Same for `ticketId` (`list_tickets`), `speakerId` (`listSpeakers`), `sessionId` (`listSessions`), section ids (`list_sections`). If the user names an event ambiguously, list and confirm the match.
2. **Echo what you acted on.** When you create, update or delete something, state the event title and the ids involved (eventId, ticketId, …) in your reply, so the user can verify and reuse them.
3. **Never invent or guess URLs.** `create_event` returns `websiteUrl`; `publish_website` / `improve_website` return `url` — share that exact link. Otherwise call `get_event_domains(eventId)`. After creating or publishing a site, ALWAYS give the user the real link.
4. **Destructive actions need explicit user intent.** `delete_event`, `delete_ticket`, `delete_speaker`, `deleteSession`, `eventhex_resource` deletes — only when the user clearly asked for that exact deletion; restate what will be deleted before doing it. Never delete to "clean up" on your own.
5. **Batch tools report per item.** `create_speakers`, `create_sessions`, `createAgendaBatch` create each item independently — read the per-item results and report failures item by item, not "done".
6. **Don't assume currency or timezone.** Amounts are in the event's configured currency; session times use the event's timezone. State times/dates the way the tool returns them.
7. **Missing scope = tell the user which one.** On `Connector key missing required scope: X`, say the connector key lacks `X` and it must be enabled in EventHex connector settings — don't retry.
8. **Prefer dedicated tools.** Use `eventhex_resource` only for long-tail entities that have no dedicated tool.
9. **Check before you re-create.** Before creating events/tickets/speakers that may already exist, list first and update instead of duplicating.
10. **Data answers cite scope.** Analytics replies should say which event and which measure (e.g. "registrations, all participant types" vs "paid attendees") — `get_franchise_summary` counts ALL participant types.
eventhex-ticketing1.9 KB
View saved version →
---
name: eventhex-ticketing
description: Tickets, tiers, pricing, early-bird discounts, coupons — create, edit, audit.
---
# Ticketing
## Model
Each ticket is one tier. Pricing lives on the ticket:
- Paid: `enablePricing:true` + `paymentAmount`.
- Free: `enablePricing:false`.
- Early-bird = a time-bound discount ON a ticket: `enableDiscount:true, discountType, discountValue, discountEndDate`.
- **discountValue semantics differ by discountType**: `'static'` → discountValue is the FINAL discounted price (not the amount off); `'percentage'` → discountValue is the percent off. If the user says "₹150 off", convert: static discountValue = paymentAmount − 150, or use percentage.
- Capacity via `capacity`.
## Tiered tickets example
Gold ₹1000 with early-bird price ₹900 until Aug 1:
`create_ticket{eventId, title:'Gold', enablePricing:true, paymentAmount:1000, enableDiscount:true, discountType:'static', discountValue:900, discountEndDate:'2026-08-01'}`
Silver ₹200: `create_ticket{eventId, title:'Silver', enablePricing:true, paymentAmount:200}`
Free: `create_ticket{eventId, title:'Community', enablePricing:false}`
## Editing
1. `list_tickets(eventId)` → ticketIds, prices, status.
2. `update_ticket(eventId, ticketId, …changedFields)` — send only what changes: price = `paymentAmount`, capacity = `capacity`, early-bird on/off = `enableDiscount`.
3. `configureTicket` for advanced per-ticket configuration; `inspectTicket` / `auditTickets` to diagnose setup problems before blaming code.
4. `delete_ticket(eventId, ticketId)` — destructive; explicit user request only.
## Coupons
`createCoupon` / `update_coupon` / `listCoupons` — coupons are event-scoped discount codes, distinct from early-bird (which is automatic and time-bound).
## Reply rules
- Quote ticket title + ticketId when you change one.
- Amounts are in the event's currency — don't add a currency symbol the data doesn't have.
eventhex-website-builder1.49 KB
View saved version →
---
name: eventhex-website-builder
description: Build or edit the event website — new-site pipeline vs live-site editing, drafts vs published, SEO, real URLs.
---
# Website — build & edit
## Decision rule (most common mistake)
- **NEW site** (none exists / full rebuild): `generate_website(eventId, vibePrompt)` → returns candidate specs → `apply_website(eventId, spec)` saves a DRAFT → `publish_website(eventId)` makes it live.
- **EDIT an existing live site** ("make it better", "change the colors", "rewrite the hero"): `improve_website(eventId, instruction[, sectionId])` — reads the live design, edits it with AI, and publishes in ONE step.
- `apply_website`, `refine_website` and `update_website_draft` only touch the DRAFT — changes will NOT show until `publish_website`.
## Supporting tools
- `get_website(eventId)` — current draft + published state; check this before deciding new-vs-edit.
- `generate_section(eventId, …)` — regenerate a single section's content.
- `generate_seo(eventId)` — title/description/meta.
- `get_event_domains(eventId)` — the real website URL, slug, all domains/subdomains.
## Reply rules
- After `publish_website` / `improve_website`, share the exact `url` the tool returned. NEVER construct a URL yourself.
- If the user reports "my change isn't visible", suspect an unpublished draft: `get_website` → `publish_website`.
- For precise design control (fonts, colors, layout variants, section structure) use the `design` guide instead of regenerating.
eventhex-website-design1.93 KB
View saved version →
---
name: eventhex-website-design
description: Precise website design control — set_design targets, section structure, typography, and authoring an original V3 template spec.
---
# Website design — precise control
All design tools publish live immediately (no draft step).
## Always start with `list_design_options(eventId)`
Returns valid fonts, presets, section types + variants, per-type `aiCustomDesign` knobs, header/footer options and the full V3 `specSkeleton` contract. Never guess enum values.
## One tool for everything: `set_design(eventId, target, …)`
| target | what it changes |
|---|---|
| `preset` | whole look at once (`preset` name) |
| `global` | `primaryColor`, `headingFont`, `bodyFont`, `radius`, `mode`, … |
| `section` | one section: `sectionId` + `variant`, OR `customDesign:{…}` for a NEW layout; also `background`, `align`, … |
| `typography` | one text element: `sectionId` + `field:'title'` + `font`, `size`, `transform`, … |
| `header` | `variant`, `tone`, `ctaText`, `menu` |
| `footer` | `variant`, `tone`, `tagline`, `links`, `footerDesign` |
Section ids come from `list_sections(eventId)`. Structure changes via `manage_sections(eventId, op:'add'|'remove'|'reorder'|'toggle', …)`.
## Authoring an ORIGINAL template (not a preset)
You can compose a full custom template yourself:
1. `list_design_options` → get `specSkeleton`, all enums, and `aiCustomDesign` knobs.
2. Compose a complete V3 spec object: `version:3`, `designSystem{palette, typography, shape, spacing, effects, mode}`, `header`, `footer`, `sections[]` — each section with `type` + `variant`, or `variant:'ai-custom'` + `design` for a unique layout.
3. `set_website_spec(eventId, spec)` — sanitizes/clamps and publishes live.
## Choosing between guides
- Content-level edit ("better headline") → `website` guide (`improve_website`).
- Visual/system-level edit ("brand color #FF5A00, rounder cards, different agenda layout") → this guide.