Skill catalogue

22 ready skills cover the day-to-day operator workflow — bookings, customers, cash, fleet, auto-repair. Each maps one user intent to the right tool subset with explicit confirmation gates before any write.

Every skill is fetchable as a portable SKILL.md from /api/skills/<name> and listed in /api/skills/manifest. The same set is also injected directly into the in-app backoffice assistant via applySkillsToMode — chat and MCP never drift.

Reservations (5)

  • quote-rental — confirm vehicle + dates, return total with breakdown. No writes.
  • book-reservation — full booking flow: quote → identify/onboard customer → explicit confirmation → create_reservation.
  • modify-reservation — change dates / extras / notes on an existing booking. Re-prices and surfaces the delta before writing.
  • cancel-reservation — set status=cancelled with explicit confirmation; surfaces deposit-refund implications (refund itself is a separate flow).
  • swap-vehicle — replace the vehicle on an existing reservation keeping dates+customer, re-quote against the new vehicle.

Customers (3)

  • customer-onboarding — lookup-first to avoid duplicates → ai_fill_customer from text or ID photo → confirm → create_customer.
  • customer-search — find by email, phone, or partial name; surfaces open reservations summary.
  • deposit-return — return a deposit after rental close/cancel; books an expense with a deposit_return description tag.

Finance (4)

  • record-income — book a payment with explicit cash register + category. Refuses to guess currency.
  • record-expense — book a vehicle-specific or admin expense; binds to vehicle when applicable.
  • cash-summary — read-only daily/weekly summary per register with net + category breakdown.
  • investor-payout — book an investor payout; uses the description tag Investor payout: so the CashTransaction router maps it to the investor_payout system category.

Fleet (3)

  • fleet-add-vehicleai_fill_vehicle from short description → confirm → add_vehicle. Never skips the AI-fill step.
  • maintenance-log — record an oil change / tires / repair / inspection event; surfaces recent maintenance for context to avoid double-logging.
  • investor-share-update — change an investor's ownership share in a vehicle; surfaces existing shares first so the per-category total stays 100%.

Cross-cutting (7)

  • yolo — universal auto-repair pipeline. pnpm yolo scans all enabled verticals (types/lint/format/unit/i18n/migration/security/incident) and applies deterministic fixes.
  • auth-client-provisioning — register / inspect / rotate OAuth clients on the INITE identity provider.
  • auth-incident-response — investigate and respond to auth incidents (compromised account, lost device, leaked password).
  • auth-debug-token — mint a debug service token via client_credentials.
  • auth-profile — view and edit your INITE profile.
  • auth-sessions — list and revoke active refresh tokens.
  • auth-passkeys — register and manage passkeys for passwordless sign-in.

Architecture promise

Skills are defined once with defineSkill({...}) in @inite/incidents, @inite/auth-admin, or src/lib/domain/assistant/skills/. The same Skill object reaches three surfaces:

  1. pnpm skills:export writes a SKILL.md file per skill to .claude/skills/ for local Claude Code use.
  2. In-app backoffice assistant loads active skills via applySkillsToMode based on the user's turn (on-mention patterns).
  3. MCP prompts/list exposes every registered skill to external clients (Claude Desktop, Cursor, Goose, …) via the lazy skills: () => getRegisteredSkills() callback in createMcpRoute.

Tools are similarly single-sourced via registerToolModule and reach both surfaces through getToolsForMode + bridgeTools. There is no path that lets a skill or tool drift between the embedded assistant and external MCP clients.