Skip to main content
Last regenerated: 2026-04-18 (PF-99) Source of truth: MODULE_REGISTRY in src/platform/modules/module-registry/. DB-backed catalog: pf_quick_action_catalog (seeded from registry; see § Workflow). Total registered: 116 quick actions across 11 cores. This document is a snapshot of every quick action exposed by the runtime registry. Quick actions surface in the command palette (⌘K), header dropdown, dashboard QuickActionsCard, mobile dock, and per-page contextual hooks — see src/platform/navigation/ for consumers.

Stable keys

Action keys are computed by computeQuickActionKey(moduleId, navGroupId?, route) in src/platform/navigation/quick-action-catalog.ts. User and org JSON preferences (pf_org_quick_action_selections) store action_key, not labels — relabels are safe. Format:
  • Module-level: {moduleId}::{slugified-route} (e.g. gr::gr:incidents:report).
  • Nav-group level: {moduleId}::{navGroupId}::{slugified-route}.

Workflow: keeping the DB catalog in sync with the registry

The runtime MODULE_REGISTRY is the source of truth for rendering. The DB table pf_quick_action_catalog is a copy of that data used by org-admin tooling (pf_org_quick_action_selections references rows by action_key). When you add or change a registry quick action:
  1. Edit the relevant src/platform/modules/module-registry/{core}.ts file.
  2. Re-run the inventory generator:
  3. Add a follow-up migration supabase/migrations/<TIMESTAMP>_<name>_pf_quick_action_catalog_seed.sql that UPSERTs the changed rows on action_key. The latest seed migration template lives at supabase/migrations/20260418021116_pf99_pf_quick_action_catalog_seed.sql — copy its INSERT/ON CONFLICT structure.
  4. Apply the migration.
  5. Update this doc (regenerate the tables below).
  6. Run tests:
    The second test fails if any registry action_key is missing from the union of all *_pf_quick_action_catalog_seed.sql migrations.

How to audit quick actions in code

  1. Run npx vitest run tests/unit/platform-quick-action-catalog.test.ts — asserts unique action_key values, route-prefix correctness, and presence of the GR/HR wizard wave actions (PF-99).
  2. Search for quickActions: under src/platform/modules/module-registry/.
  3. SQL-side: SELECT module_id, count(*) FROM pf_quick_action_catalog GROUP BY module_id ORDER BY 1;

Inventory (snapshot)

Generated by scripts/dev/print-quick-action-catalog-seed.ts. Re-run and refresh after every registry change.

CE (11)

CL (8)

FA (8)

FM (8)

FW (8)

GR (17)

HR (24)

IT (8)

LO (8)

PM (8)

RH (8)


See also