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 bycomputeQuickActionKey(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 runtimeMODULE_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:
- Edit the relevant
src/platform/modules/module-registry/{core}.tsfile. - Re-run the inventory generator:
- Add a follow-up migration
supabase/migrations/<TIMESTAMP>_<name>_pf_quick_action_catalog_seed.sqlthat UPSERTs the changed rows onaction_key. The latest seed migration template lives atsupabase/migrations/20260418021116_pf99_pf_quick_action_catalog_seed.sql— copy its INSERT/ON CONFLICT structure. - Apply the migration.
- Update this doc (regenerate the tables below).
- Run tests:
The second test fails if any registry
action_keyis missing from the union of all*_pf_quick_action_catalog_seed.sqlmigrations.
How to audit quick actions in code
- Run
npx vitest run tests/unit/platform-quick-action-catalog.test.ts— asserts uniqueaction_keyvalues, route-prefix correctness, and presence of the GR/HR wizard wave actions (PF-99). - Search for
quickActions:undersrc/platform/modules/module-registry/. - 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
- Spec:
specs/pf/specs/PF-99-quick-actions-catalog-sync.md - Catalog code:
src/platform/navigation/quick-action-catalog.ts - Module-registry types:
src/platform/modules/module-registry/types.ts - Seed migration (initial):
supabase/migrations/20260413180000_pf_quick_action_catalog_and_org_selections.sql(DDL only) - Seed migration (data, PF-99):
supabase/migrations/20260418021116_pf99_pf_quick_action_catalog_seed.sql