Documentation Index
Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt
Use this file to discover all available pages before exploring further.
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:
- Edit the relevant
src/platform/modules/module-registry/{core}.ts file.
- Re-run the inventory generator:
npx tsx scripts/dev/print-quick-action-catalog-seed.ts > /tmp/qa-rows.sql
- 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.
- Apply the migration.
- Update this doc (regenerate the tables below).
- Run tests:
npx vitest run tests/unit/platform-quick-action-catalog.test.ts tests/unit/platform/migrations/quick-action-catalog-seed.test.ts
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
- 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).
- Search for
quickActions: under src/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)
| Label | Route | Permission | Action key |
|---|
| New Lead | /ce/leads?action=add-lead | ce.leads.create | ce::ce:leads:action:add:lead |
| Onboard Partner | /ce/partners/onboard | ce.partners.create | ce::ce:partners:onboard |
| Recent Calls | /ce/analytics/calls | ce.calls.view | ce::ce:analytics:calls |
| Add Contact | /ce/contacts/new | ce.contacts.create | ce::ce:contacts:new |
| Lead Pipeline | /ce/leads | ce.leads.view | ce::ce:leads |
| New Partner | /ce/partners/new | ce.partners.create | ce::ce:partners:new |
| Campaigns | /ce/campaigns | ce.campaigns.view | ce::ce:campaigns |
| Contacts | /ce/contacts | ce.contacts.view | ce::ce:contacts |
| Activities | /ce/activities | ce.activities.view | ce::ce:activities |
| Pipeline Dashboard | /ce/analytics/pipeline | ce.pipeline.view | ce::ce:analytics:pipeline |
| SMS Consent | /ce/sms/consent | ce.sms.admin | ce::ce:sms:consent |
CL (8)
| Label | Route | Permission | Action key |
|---|
| Patient Charts | /cl/charts | cl.charts.view | cl::cl:charts |
| In-Basket | /cl/in-basket | cl.inbasket.view | cl::cl:in:basket |
| Co-Sign Queue | /cl/notes/cosign-queue | cl.progress_note.cosign | cl::cl:notes:cosign:queue |
| Treatment Plans | /cl/treatment-plans | cl.treatment_plan.view | cl::cl:treatment:plans |
| Group Sessions | /cl/group-sessions | cl.group_sessions.view | cl::cl:group:sessions |
| Care Gaps | /cl/population-health/care-gaps | cl.care-gaps.view | cl::cl:population:health:care:gaps |
| Compliance Dashboard | /cl/compliance-dashboard | cl.report_definitions.view | cl::cl:compliance:dashboard |
| Incidents | /cl/incidents | cl.incidents.view | cl::cl:incidents |
FA (8)
| Label | Route | Permission | Action key |
|---|
| New Bill | /fa/bills/new | fa.bills.create | fa::fa:bills:new |
| New Invoice | /fa/invoices/new | fa.invoices.create | fa::fa:invoices:new |
| New Journal Entry | /fa/journal-entries/new | fa.journal_entries.create | fa::fa:journal:entries:new |
| Submit Expense | /fa/expenses/new | _(any user)_ | fa::fa:expenses:new |
| My Expenses | /fa/expenses/me | _(any user)_ | fa::fa:expenses:me |
| My Approvals | /fa/approvals | _(any user)_ | fa::fa:approvals |
| Banking | /fa/banking | fa.banking.view | fa::fa:banking |
| Chart of Accounts | /fa/accounts | fa.accounts.view | fa::fa:accounts |
FM (8)
| Label | Route | Permission | Action key |
|---|
| New Work Order | /fm/work-orders/new | fm.work-orders.create | fm::fm:work:orders:new |
| Work Orders | /fm/work-orders | fm.work-orders.view | fm::fm:work:orders |
| Assets | /fm/assets | fm.assets.view | fm::fm:assets |
| Inventory | /fm/inventory | fm.inventory.view | fm::fm:inventory |
| Vendors | /fm/vendors | fm.vendors.view | fm::fm:vendors |
| PM Templates | /fm/pm-templates | fm.pm-templates.view | fm::fm:pm:templates |
| Inspections | /fm/inspections | fm.inspections.view | fm::fm:inspections |
| Fleet Overview | /fm/fleet/dashboard | fm.fleet.view | fm::fm:fleet:dashboard |
FW (8)
| Label | Route | Permission | Action key |
|---|
| Create Form | /fw/forms/new | fw.forms.create | fw::fw:forms:new |
| My Requests | /fw/my-requests | _(any user)_ | fw::fw:my:requests |
| Approval Inbox | /fw/approvals | fw.approvals.view | fw::fw:approvals |
| Automations | /fw/automations | fw.workflows.view | fw::fw:automations |
| Forms | /fw/forms | fw.forms.view | fw::fw:forms |
| Submissions | /fw/submissions | fw.submissions.view | fw::fw:submissions |
| Delegations | /fw/delegations | _(any user)_ | fw::fw:delegations |
| Analytics | /fw/analytics | fw.analytics.view | fw::fw:analytics |
GR (17)
| Label | Route | Permission | Action key |
|---|
| My Acknowledgments | /gr/my-acknowledgments | _(any user)_ | gr::gr:my:acknowledgments |
| My Training | /gr/my-training | _(any user)_ | gr::gr:my:training |
| Compliance | /gr/compliance | gr.compliance.view | gr::gr:compliance |
| Policy Library | /gr/policies | gr.policies.view | gr::gr:policies |
| Training Library | /gr/training | gr.training.view | gr::gr:training |
| Risk Register | /gr/risks | gr.risks.view | gr::gr:risks |
| Audits | /gr/audits | gr.audits.view | gr::gr:audits |
| Acknowledgment Tracker | /gr/acknowledgments | gr.policies.admin | gr::gr:acknowledgments |
| New Procedure | /gr/procedures/new | gr.procedures.create | gr::gr:procedures:new |
| Report Incident | /gr/incidents/report | gr.incidents.report | gr::gr:incidents:report |
| New Risk Assessment | /gr/risks/wizard | gr.risks.admin | gr::gr:risks:wizard |
| New Requirement | /gr/compliance/requirements/new | gr.compliance.admin | gr::gr:compliance:requirements:new |
| New Audit | /gr/audits/new | gr.audits.admin | gr::gr:audits:new |
| New QI Project | /gr/quality-improvement/new | gr.qi.admin | gr::gr:quality:improvement:new |
| New Contract | /gr/contracts/new | gr.contracts.create | gr::gr:contracts:new |
| Suggestions | /gr/ai/suggestions | _(any user)_ | gr::ai-compliance::gr:ai:suggestions |
| Gap Analysis | /gr/ai/gap-analysis | _(any user)_ | gr::ai-compliance::gr:ai:gap:analysis |
HR (24)
| Label | Route | Permission | Action key |
|---|
| New Employee | /hr/employees/new | hr.employees.create | hr::hr:employees:new |
| Employees | /hr/employees | hr.employees.view | hr::hr:employees |
| Submit Time | /hr/time-clock | _(any user)_ | hr::hr:time:clock |
| My Tasks | /hr/my-tasks | _(any user)_ | hr::hr:my:tasks |
| My Profile | /hr/me/profile | _(any user)_ | hr::hr:me:profile |
| HR Dashboard | /hr/dashboard | hr.dashboard.view | hr::hr:dashboard |
| Onboarding | /hr/onboarding | hr.onboarding.view | hr::hr:onboarding |
| Payroll Runs | /hr/payroll/runs | hr.payroll.admin | hr::hr:payroll:runs |
| New Credential | /hr/credentials/new | hr.credentials.create | hr::hr:credentials:new |
| New Contractor | /hr/contractors/new/wizard | hr.contractor.manage | hr::hr:contractors:new:wizard |
| Request Time Off | /hr/leave-request | _(any user)_ | hr::my-profile-self-service::hr:leave:request |
| View Pay Stubs | /hr/payroll | _(any user)_ | hr::my-profile-self-service::hr:payroll |
| View Benefits | /hr/my-benefits | _(any user)_ | hr::my-profile-self-service::hr:my:benefits |
| Job Postings | /hr/ats/job-postings | _(any user)_ | hr::talent-acquisition::hr:ats:job:postings |
| My Credentials | /hr/my-credentials | _(any user)_ | hr::credentialing-oversight::hr:my:credentials |
| Compliance Report | /hr/credentialing/report | _(any user)_ | hr::credentialing-oversight::hr:credentialing:report |
| Schedule | /hr/scheduling | _(any user)_ | hr::time-leave::hr:scheduling |
| Open Enrollment | /hr/benefits/open-enrollment | _(any user)_ | hr::benefits::hr:benefits:open:enrollment |
| Pay Rates | /hr/payroll/pay-rates | _(any user)_ | hr::payroll::hr:payroll:pay:rates |
| New Payroll Run | /hr/payroll/runs/new | _(any user)_ | hr::payroll::hr:payroll:runs:new |
| Report Incident | /hr/employee-relations/incidents/new | _(any user)_ | hr::employee-relations::hr:employee:relations:incidents:new |
| My Cases | /hr/employee-relations/my-cases | _(any user)_ | hr::employee-relations::hr:employee:relations:my:cases |
| Performance | /hr/performance | _(any user)_ | hr::performance-analytics::hr:performance |
| Analytics | /hr/analytics | _(any user)_ | hr::performance-analytics::hr:analytics |
IT (8)
| Label | Route | Permission | Action key |
|---|
| New Ticket | /it/tickets/new | it.tickets.create | it::it:tickets:new |
| My Tickets | /it/my-tickets | _(any user)_ | it::it:my:tickets |
| Knowledge Base | /it/knowledge-base | _(any user)_ | it::it:knowledge:base |
| Add Asset | /it/assets/new | it.assets.create | it::it:assets:new |
| My Assets | /it/my-assets | _(any user)_ | it::it:my:assets |
| All Tickets | /it/tickets | it.tickets.view | it::it:tickets |
| All Assets | /it/assets | it.assets.view | it::it:assets |
| Change Requests | /it/changes | it.changes.view | it::it:changes |
LO (8)
| Label | Route | Permission | Action key |
|---|
| Add To-Do | /lo/todos?action=new | lo.todos.create | lo::lo:todos:action:new |
| Report Issue | /lo/issues?action=new | lo.issues.create | lo::lo:issues:action:new |
| Schedule Meeting | /lo/meetings?action=new | lo.meetings.create | lo::lo:meetings:action:new |
| Create Goal | /lo/rocks | lo.goals.create | lo::lo:rocks |
| New Article | /lo/knowledge/articles/new | lo.knowledge.create | lo::lo:knowledge:articles:new |
| Scorecards | /lo/scorecards | lo.scorecard.view | lo::lo:scorecards |
| Meetings | /lo/meetings | lo.meetings.view | lo::lo:meetings |
| Knowledge Portal | /lo/knowledge | lo.knowledge.view | lo::lo:knowledge |
PM (8)
| Label | Route | Permission | Action key |
|---|
| Register Patient | /pm/patients?action=new | pm.patients.create | pm::pm:patients:action:new |
| Schedule Appointment | /pm/scheduling | pm.scheduling.view | pm::pm:scheduling |
| Charges | /pm/charges | pm.charges.view | pm::pm:charges |
| Claims | /pm/claims | pm.claims.view | pm::pm:claims |
| Patients | /pm/patients | pm.patients.view | pm::pm:patients |
| Revenue Dashboard | /pm/revenue | pm.rcm_dashboard.view | pm::pm:revenue |
| Prior Authorizations | /pm/authorizations | pm.prior_auth.view | pm::pm:authorizations |
| Payments | /pm/payments | pm.payments.view | pm::pm:payments |
RH (8)
| Label | Route | Permission | Action key |
|---|
| Bed Board | /rh/bed-board | rh.beds.view | rh::rh:bed:board |
| New Admission | /rh/admissions/new | rh.residents.create | rh::rh:admissions:new |
| Log Event | /rh/significant-events | rh.residents.view | rh::rh:significant:events |
| Curfew Check | /rh/curfew-checks | rh.residents.view | rh::rh:curfew:checks |
| Residences | /rh/residences | rh.residences.view | rh::rh:residences |
| Episodes | /rh/episodes | rh.residents.view | rh::rh:episodes |
| Attendance | /rh/attendance | rh.residents.view | rh::rh:attendance |
| Compliance | /rh/compliance | rh.compliance.view | rh::rh:compliance |
See also