# zedkit docs > GENERATED from docs/catalog/catalog.json — do not edit. - [Getting started](/docs/getting-started) — choose a package and reach a first result - [Set up your coding agents](/docs/set-up-your-coding-agents) — zedkit-ai init and validate - [zedkit and shadcn/ui](/docs/zedkit-and-shadcn) — wraps, registry install, when to use plain shadcn - [Add SEO to a Next.js app](/docs/add-seo-to-nextjs) — robots, sitemap, metadata, JSON-LD ## @zedtech/zedkit-ai - [Set up AI agent instructions, skills, subagents and commands in a repo](/docs/ai/set-up-ai-agent-instructions-skills-subagents-and-commands-in-a-repo) — Install one agent-agnostic setup (instructions, skills, subagents, commands) with a single CLI call. - [Check that skills, subagents, commands and provider copies are valid](/docs/ai/check-that-skills-subagents-commands-and-provider-copies-are-valid) — Validate installed skills, subagents and commands, and report drift between providers. ## @zedtech/zedkit-core - [Model success or failure without throwing](/docs/core/model-success-or-failure-without-throwing) — Return `ok`/`err` Results so failures are values the compiler forces you to handle. - [Handle errors without try/catch](/docs/core/handle-errors-without-try-catch) — Turn any throwing call into a typed Result without a try/catch block. - [Generate prefixed unique IDs](/docs/core/generate-prefixed-unique-ids) — Generate ULID-based IDs with a type prefix (`order_...`) plus a prefix check. ## @zedtech/zedkit-nest - [Bootstrap a Nest app](/docs/nest/bootstrap-a-nest-app) — Boot a hardened Nest app (validation, logging, docs, throttling, errors, shutdown) from one factory call. - [Ship request logs without leaking credentials](/docs/nest/ship-request-logs-without-leaking-credentials) — Request logging with auth headers and cookies redacted by default. - [Return uniform error bodies](/docs/nest/return-uniform-error-bodies) — A global exception filter that returns the same error body for all failures. - [Start a safe NestJS API](/docs/nest/start-a-safe-nestjs-api) — End-to-end tutorial: boot with `createNestApp`, validate DTOs, return prefixed ids, and exercise the documented error shape with `curl`. ## @zedtech/zedkit-payload-seo - [Add a localized SEO tab to a Payload collection](/docs/payload-seo/add-a-localized-seo-tab-to-a-payload-collection) — A drop-in SEO group field (meta, OG, robots, JSON-LD) with localization and length validation. - [Validate editor-entered title/description lengths](/docs/payload-seo/validate-editor-entered-title-description-lengths) — Friendly max-length validators and constants for SEO titles and descriptions. ## @zedtech/zedkit-seo - [Serve robots.txt content](/docs/seo/serve-robots-txt-content) — Build robots.txt content (allows, disallows, sitemap links) from typed options. - [List localized pages in a sitemap](/docs/seo/list-localized-pages-in-a-sitemap) — Build sitemap entries with hreflang alternates from a page list. - [Serve a Google video sitemap](/docs/seo/serve-a-google-video-sitemap) — Build a Google video sitemap (page, thumbnail, title, description) from typed entries. - [Emit typed JSON-LD structured data](/docs/seo/emit-typed-json-ld-structured-data) — Typed builders for Organization, WebPage, Breadcrumb and Article JSON-LD. - [Build localized page metadata](/docs/seo/build-localized-page-metadata) — Build complete localized page metadata (title, description, canonical, OG) from site + page data. - [Serve llms.txt for AI agents](/docs/seo/serve-llms-txt-for-ai-agents) — Serve a valid llms.txt (full or scoped) from stored settings. - [Derive descriptions, slugs, and localized fields](/docs/seo/derive-descriptions-slugs-and-localized-fields) — Resolve descriptions with fallback, normalize slugs, and pick localized field values. ## @zedtech/zedkit-server - [Rate-limit calls per key](/docs/server/rate-limit-calls-per-key) — In-process per-key rate limiting with a two-line check. - [Redact secrets before logging](/docs/server/redact-secrets-before-logging) — Deep-redact secrets and PII from any value before it reaches the logs. - [Retry with exponential backoff](/docs/server/retry-with-exponential-backoff) — Compute exponential-backoff delays with jitter from the attempt number. - [Sign and verify webhook deliveries](/docs/server/sign-and-verify-webhook-deliveries) — Sign outgoing and verify incoming webhook payloads (HMAC + timestamp window). - [Tell a Postgres conflict from a bug](/docs/server/tell-a-postgres-conflict-from-a-bug) — Extract the Postgres error code so unique violations map to 409, not 500. ## @zedtech/zedkit-ui - [Theme an admin app (dark/light included)](/docs/ui/theme-an-admin-app-dark-light-included) — One CSS import plus a source line gives the full token set and theme switching. - [Merge class names without conflicts](/docs/ui/merge-class-names-without-conflicts) — Merge class lists so conflicting utilities resolve to the last one. - [Trigger actions with buttons](/docs/ui/trigger-actions-with-buttons) — Accessible buttons with variants (primary, destructive, outline, ghost) and sizes. - [Show a status or count badge](/docs/ui/show-a-status-or-count-badge) — Small status/count pills with semantic variants. - [Collect text input with a label](/docs/ui/collect-text-input-with-a-label) — Labelled text input with consistent styling and focus states. - [Separate content horizontally or vertically](/docs/ui/separate-content-horizontally-or-vertically) — Accessible horizontal/vertical divider lines. - [Show loading placeholder blocks](/docs/ui/show-loading-placeholder-blocks) — Animated placeholder blocks that hold layout while data loads. - [Indicate status with a dot](/docs/ui/indicate-status-with-a-dot) — A small status dot with semantic tones (active, idle, success, warning, danger). - [Show determinate progress](/docs/ui/show-determinate-progress) — An accessible progressbar with clamped value and label. - [Celebrate completion with a checkmark](/docs/ui/celebrate-completion-with-a-checkmark) — An animated checkmark that draws once (static under reduced motion). - [Load each zone with a faithful skeleton](/docs/ui/load-each-zone-with-a-faithful-skeleton) — One faithful loading skeleton per kit component shape, each a named live zone. - [Name an operation in progress](/docs/ui/name-an-operation-in-progress) — A named live-region label for the current operation state (loading, saved, error…). - [Stamp data with its age](/docs/ui/stamp-data-with-its-age) — A relative "Updated N minutes ago" stamp via `Intl.RelativeTimeFormat`, no date library. - [Open modal dialogs](/docs/ui/open-modal-dialogs) — Accessible modal dialogs (trigger, content, title, footer) with focus trap and Escape. - [Confirm destructive actions](/docs/ui/confirm-destructive-actions) — A one-call destructive confirmation (trigger, title, description, onConfirm). - [Slide in a drawer panel](/docs/ui/slide-in-a-drawer-panel) — Slide-in panels (right-side detail on desktop, bottom sheet on mobile). - [Render a route as a modal over the list](/docs/ui/render-a-route-as-a-modal-over-the-list) — A route-driven modal (right drawer or centered dialog) that plays its exit before navigating back, with a list fallback. - [Show toast notifications](/docs/ui/show-toast-notifications) — A root toaster plus toast() calls for transient notifications. - [Display a shown-once secret with copy](/docs/ui/display-a-shown-once-secret-with-copy) — A masked secret field with reveal and copy controls. - [Show a sortable, filterable, paginated data table](/docs/ui/show-a-sortable-filterable-paginated-data-table) — Tables with sorting, filtering, pagination plus loading/error/empty states. - [Lay out an admin page (sidebar + topbar + header)](/docs/ui/lay-out-an-admin-page-sidebar-topbar-header) — Sidebar + topbar shell with page header (title, description, actions). - [Guide a multi-step flow with selectable option cards](/docs/ui/guide-a-multi-step-flow-with-selectable-option-cards) — Step indicator plus selectable option cards with state. - [Show key-value details and a live indicator](/docs/ui/show-key-value-details-and-a-live-indicator) — Key-value detail lists plus an optional live pulse. - [Build validated forms with labels, errors, and pending state](/docs/ui/build-validated-forms-with-labels-errors-and-pending-state) — Validated forms (schema, field errors, pending submit) on react-hook-form + zod. - [Lay out fieldsets, fields, and error lists](/docs/ui/lay-out-fieldsets-fields-and-error-lists) — Fieldsets, field rows, labels, descriptions and error lists. - [Group content in a card section](/docs/ui/group-content-in-a-card-section) — Cards with header/title/description/content/footer slots. - [Stack content and group titled sections](/docs/ui/stack-content-and-group-titled-sections) — Gap-based vertical/horizontal stacks plus titled sections. - [Render headings and body text without raw tags](/docs/ui/render-headings-and-body-text-without-raw-tags) — Heading levels and Text variants with theme-aware styles. - [Call out a notice or an error state](/docs/ui/call-out-a-notice-or-an-error-state) — Notice/error callouts with title and description. - [Pick one option from a dropdown](/docs/ui/pick-one-option-from-a-dropdown) — Accessible dropdown select with trigger, value and items; empty lists render a disabled message item. - [Collect multi-line text input](/docs/ui/collect-multi-line-text-input) — Labelled multi-line textarea with consistent styling. - [Toggle a checkbox or a switch](/docs/ui/toggle-a-checkbox-or-a-switch) — Accessible checkbox and switch toggles. - [Switch between tabbed panels](/docs/ui/switch-between-tabbed-panels) — Accessible tabs (list, triggers, content panels).