tadforce 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/.claude-plugin/marketplace.json +20 -0
  2. package/.claude-plugin/plugin.json +13 -0
  3. package/LICENSE +202 -0
  4. package/NOTICE +11 -0
  5. package/README.fr.md +125 -0
  6. package/README.md +256 -2
  7. package/assets/logo-mark.svg +24 -0
  8. package/assets/logo.svg +31 -0
  9. package/bin/tadforce.js +4 -0
  10. package/commands/tadforce-review.md +8 -0
  11. package/commands/tadforce-update.md +6 -0
  12. package/commands/tadforce.md +10 -0
  13. package/package.json +60 -4
  14. package/skills/tadforce/SKILL.md +73 -0
  15. package/skills/tadforce/references/axes-rules.md +29 -0
  16. package/skills/tadforce/references/evidence-rules.md +40 -0
  17. package/skills/tadforce/references/exclusion-heuristics.md +40 -0
  18. package/skills/tadforce/references/figure-rules.md +42 -0
  19. package/skills/tadforce/references/markdown-conventions.md +67 -0
  20. package/skills/tadforce/references/modules/agentforce-ai.md +24 -0
  21. package/skills/tadforce/references/modules/analytics.md +19 -0
  22. package/skills/tadforce/references/modules/commerce.md +25 -0
  23. package/skills/tadforce/references/modules/data-cloud.md +23 -0
  24. package/skills/tadforce/references/modules/experience-cloud.md +24 -0
  25. package/skills/tadforce/references/modules/field-service.md +25 -0
  26. package/skills/tadforce/references/modules/industries.md +21 -0
  27. package/skills/tadforce/references/modules/integration-platforms.md +19 -0
  28. package/skills/tadforce/references/modules/marketing.md +24 -0
  29. package/skills/tadforce/references/modules/omnistudio.md +24 -0
  30. package/skills/tadforce/references/modules/platform-events.md +19 -0
  31. package/skills/tadforce/references/modules/revenue-cpq.md +25 -0
  32. package/skills/tadforce/references/modules/sales-cloud.md +26 -0
  33. package/skills/tadforce/references/modules/security-shield.md +18 -0
  34. package/skills/tadforce/references/modules/service-cloud.md +27 -0
  35. package/skills/tadforce/references/naming-external-systems.md +32 -0
  36. package/skills/tadforce/references/questions.md +59 -0
  37. package/skills/tadforce/references/salesforce-skills.md +27 -0
  38. package/skills/tadforce/references/workflow.md +85 -0
  39. package/skills/tadforce/references/writing-rules.md +47 -0
  40. package/skills/tadforce-review/SKILL.md +53 -0
  41. package/skills/tadforce-update/SKILL.md +48 -0
  42. package/src/build/brand.js +107 -0
  43. package/src/build/browser.js +70 -0
  44. package/src/build/directives.js +293 -0
  45. package/src/build/export.js +60 -0
  46. package/src/build/figures.js +119 -0
  47. package/src/build/mermaid.js +107 -0
  48. package/src/build/render.js +299 -0
  49. package/src/build/serve.js +59 -0
  50. package/src/cli.js +68 -0
  51. package/src/commands/docs.js +191 -0
  52. package/src/commands/doctor.js +366 -0
  53. package/src/commands/init.js +132 -0
  54. package/src/commands/org.js +151 -0
  55. package/src/commands/review.js +35 -0
  56. package/src/commands/spec.js +91 -0
  57. package/src/commands/update.js +153 -0
  58. package/src/facts/extractors/apex.js +111 -0
  59. package/src/facts/extractors/automation.js +85 -0
  60. package/src/facts/extractors/data.js +94 -0
  61. package/src/facts/extractors/integration.js +76 -0
  62. package/src/facts/extractors/misc.js +100 -0
  63. package/src/facts/extractors/security.js +92 -0
  64. package/src/facts/extractors/ui.js +120 -0
  65. package/src/facts/fingerprints.js +32 -0
  66. package/src/facts/heuristics/exclusions.js +143 -0
  67. package/src/facts/heuristics/modules.js +85 -0
  68. package/src/facts/heuristics/naming.js +31 -0
  69. package/src/facts/heuristics/signals.js +76 -0
  70. package/src/facts/index.js +197 -0
  71. package/src/facts/org.js +87 -0
  72. package/src/facts/xml.js +85 -0
  73. package/src/sf/sf.js +120 -0
  74. package/src/util/args.js +21 -0
  75. package/src/util/config.js +104 -0
  76. package/src/util/fsx.js +58 -0
  77. package/src/util/i18n.js +33 -0
  78. package/src/util/log.js +31 -0
  79. package/src/util/paths.js +11 -0
  80. package/src/validate/index.js +126 -0
  81. package/templates/axes/en/00-document-control.md +3 -0
  82. package/templates/axes/en/01-summary.md +7 -0
  83. package/templates/axes/en/02-method.md +9 -0
  84. package/templates/axes/en/03-findings.md +19 -0
  85. package/templates/axes/en/04-register.md +3 -0
  86. package/templates/axes/en/05-roadmap.md +3 -0
  87. package/templates/axes/en/99-appendix.md +5 -0
  88. package/templates/axes/fr/00-document-control.md +3 -0
  89. package/templates/axes/fr/01-summary.md +7 -0
  90. package/templates/axes/fr/02-method.md +9 -0
  91. package/templates/axes/fr/03-findings.md +19 -0
  92. package/templates/axes/fr/04-register.md +3 -0
  93. package/templates/axes/fr/05-roadmap.md +3 -0
  94. package/templates/axes/fr/99-appendix.md +5 -0
  95. package/templates/html/cover.html +12 -0
  96. package/templates/html/editor.js +502 -0
  97. package/templates/html/style.css +255 -0
  98. package/templates/html/template.html +88 -0
  99. package/templates/i18n/en.json +366 -0
  100. package/templates/i18n/fr.json +366 -0
  101. package/templates/manifest/package-tad.xml +543 -0
  102. package/templates/specs/sections.yml +494 -0
  103. package/templates/tad/en/00-document-control.md +7 -0
  104. package/templates/tad/en/01-summary.md +17 -0
  105. package/templates/tad/en/02-purpose.md +35 -0
  106. package/templates/tad/en/03-context.md +17 -0
  107. package/templates/tad/en/04-general.md +29 -0
  108. package/templates/tad/en/05-functional.md +7 -0
  109. package/templates/tad/en/06-data.md +71 -0
  110. package/templates/tad/en/07-application.md +49 -0
  111. package/templates/tad/en/08-ui.md +41 -0
  112. package/templates/tad/en/09-integrations.md +53 -0
  113. package/templates/tad/en/10-security.md +59 -0
  114. package/templates/tad/en/11-reporting.md +13 -0
  115. package/templates/tad/en/12-operations.md +25 -0
  116. package/templates/tad/en/13-nfr.md +9 -0
  117. package/templates/tad/en/14-decisions.md +3 -0
  118. package/templates/tad/en/15-outlook.md +3 -0
  119. package/templates/tad/en/99-appendices.md +119 -0
  120. package/templates/tad/fr/00-document-control.md +7 -0
  121. package/templates/tad/fr/01-summary.md +17 -0
  122. package/templates/tad/fr/02-purpose.md +35 -0
  123. package/templates/tad/fr/03-context.md +17 -0
  124. package/templates/tad/fr/04-general.md +29 -0
  125. package/templates/tad/fr/05-functional.md +7 -0
  126. package/templates/tad/fr/06-data.md +71 -0
  127. package/templates/tad/fr/07-application.md +49 -0
  128. package/templates/tad/fr/08-ui.md +41 -0
  129. package/templates/tad/fr/09-integrations.md +53 -0
  130. package/templates/tad/fr/10-security.md +59 -0
  131. package/templates/tad/fr/11-reporting.md +13 -0
  132. package/templates/tad/fr/12-operations.md +25 -0
  133. package/templates/tad/fr/13-nfr.md +9 -0
  134. package/templates/tad/fr/14-decisions.md +3 -0
  135. package/templates/tad/fr/15-outlook.md +3 -0
  136. package/templates/tad/fr/99-appendices.md +119 -0
  137. package/templates/vendor/LICENSE-html-docx-js.txt +21 -0
  138. package/templates/vendor/LICENSE-html2canvas.txt +22 -0
  139. package/templates/vendor/LICENSE-mermaid.txt +21 -0
  140. package/templates/vendor/html-docx.js +13216 -0
  141. package/templates/vendor/html2canvas.min.js +20 -0
  142. package/templates/vendor/mermaid.min.js +2314 -0
@@ -0,0 +1,366 @@
1
+ {
2
+ "meta": {
3
+ "htmlLang": "en",
4
+ "docName": "Technical Architecture Document",
5
+ "axesName": "Improvement Axes"
6
+ },
7
+ "ui": {
8
+ "toc": "Contents",
9
+ "tocFilter": "Filter contents…",
10
+ "figures": "Table of figures",
11
+ "edit": "✎ Edit",
12
+ "editTitle": "Edit the document text in place",
13
+ "comment": "💬 Comment",
14
+ "commentTitle": "Comment the selected passage",
15
+ "comments": "🗂 Comments",
16
+ "commentsTitle": "Show comments",
17
+ "save": "💾 Save",
18
+ "saveTitle": "Save the document (Ctrl+S)",
19
+ "print": "⎙ Print / export ▾",
20
+ "printTitle": "Print or export",
21
+ "pdf": "PDF — print or save as PDF",
22
+ "docx": "Word — download as .docx",
23
+ "burger": "Open contents",
24
+ "commentBar": "💬 <b>Comment mode</b> — select the text to comment, the input opens automatically.",
25
+ "capture": "+ Capture an area",
26
+ "captureTitle": "Comment an area (figure, table…) without selecting text",
27
+ "cancelEsc": "Cancel (Esc)",
28
+ "captureHint": "Draw a rectangle around the area to comment · Esc to cancel",
29
+ "lightbox": "Close",
30
+ "editBanner": "Edit mode — click in the text to change it · <b>Ctrl+S</b> to save · <b>Esc</b> to finish",
31
+ "panelTitle": "Comments",
32
+ "close": "Close",
33
+ "panelHelp": "Click « 💬 Comment », then select a passage or use « + Capture an area ». Then save the document: comments and captures are kept inside the file and can be processed by your AI agent with /tadforce-review.",
34
+ "copyList": "📋 Copy the list for your agent",
35
+ "newComment": "New comment",
36
+ "commentPlaceholder": "Your comment or the expected correction…",
37
+ "attachCapture": "+ Attach a capture",
38
+ "cancel": "Cancel",
39
+ "add": "Add (Ctrl+Enter)",
40
+ "kpiMore": "See details →",
41
+ "pending": "Section to be written"
42
+ },
43
+ "editor": {
44
+ "cover": "Cover",
45
+ "docStart": "Start of document",
46
+ "done": "✔ Finish",
47
+ "edit": "✎ Edit",
48
+ "editToast": "Edit mode: click in the text to change it. Ctrl+S to save, Esc to finish.",
49
+ "zoneCaptured": "Captured area — {section}",
50
+ "zoneTooSmall": "Area too small: draw a larger rectangle.",
51
+ "captureFailed": "Capture failed: {error}",
52
+ "captureWait": "Capturing the area…",
53
+ "redoCapture": "↺ Redo the capture",
54
+ "attachCapture": "+ Attach a capture",
55
+ "noCaptureLib": "capture library missing",
56
+ "pinTitle": "Comment on an area",
57
+ "captureAlt": "Capture",
58
+ "enlarge": "Enlarge",
59
+ "added": "Comment added. Remember to save.",
60
+ "edited": "{n} block(s) edited directly in the text.",
61
+ "empty": "No comments yet. Click « 💬 Comment », then select a passage or capture an area.",
62
+ "view": "Show",
63
+ "delete": "Delete",
64
+ "reopen": "Reopen",
65
+ "resolve": "Resolve",
66
+ "confirmDelete": "Delete this comment?",
67
+ "handled": "✔ Handled — {response}",
68
+ "status_open": "open",
69
+ "status_resolved": "resolved",
70
+ "listTitle": "Comments to process — {title} ({n})",
71
+ "capturedZone": "(captured area)",
72
+ "captureInFile": " [capture attached in the file]",
73
+ "copied": "List copied to the clipboard.",
74
+ "copyPrompt": "Copy the list:",
75
+ "pickFile": "Choose THIS same HTML file to replace it, so that the comments stay in one file.",
76
+ "htmlPage": "HTML page",
77
+ "saved": "Saved: {name}",
78
+ "downloaded": "File downloaded: {name} — replace the original with this version.",
79
+ "docxMissing": "DOCX library unavailable.",
80
+ "docxRunning": "Generating the Word document…",
81
+ "docxDone": "Word document generated (open it with Microsoft Word).",
82
+ "docxFailed": "DOCX generation failed: {error}",
83
+ "defaultFile": "TAD.html",
84
+ "savedServer": "Saved in {name} — the same file, comments included."
85
+ },
86
+ "doc": {
87
+ "figure": "Figure",
88
+ "callout": {
89
+ "integrator": "{integrator} contribution",
90
+ "note": "Note",
91
+ "reco": "Recommendation",
92
+ "warn": "Caution",
93
+ "team": "Project team note"
94
+ },
95
+ "page": "Page",
96
+ "kicker": "Technical Architecture Document",
97
+ "axesKicker": "Improvement axes · internal",
98
+ "meta": {
99
+ "reference": "Reference",
100
+ "version": "Version",
101
+ "date": "Date",
102
+ "author": "Prepared by",
103
+ "recipient": "Recipient",
104
+ "classification": "Classification",
105
+ "environment": "Environment"
106
+ },
107
+ "confidential": "Document prepared by {integrator} for {client}. Restricted distribution {client} / {integrator}.",
108
+ "axesConfidential": "Internal document of {integrator}. Not for distribution to the client without review.",
109
+ "generatedBy": "Generated with TADForce",
110
+ "confidentialSolo": "Document prepared for {client}. Restricted distribution.",
111
+ "axesConfidentialSolo": "Internal document of the project team. Not for distribution to the client without review."
112
+ },
113
+ "control": {
114
+ "element": "Item",
115
+ "value": "Value",
116
+ "title": "Title",
117
+ "reference": "Reference",
118
+ "client": "Client",
119
+ "integrator": "Integrator",
120
+ "version": "Version",
121
+ "date": "Date",
122
+ "classification": "Classification",
123
+ "scope": "Scope",
124
+ "author": "Author",
125
+ "purpose": "Purpose",
126
+ "scopeValue": "Salesforce organization ({environment}) of {client}, state as of {date}",
127
+ "firstVersion": "Consolidated version submitted to {client} for review and approval",
128
+ "preparedBy": "Prepared by",
129
+ "scopeLimited": "Scope limited to: {scope}"
130
+ },
131
+ "legend": {
132
+ "actor": "Actors: users, populations, channels",
133
+ "sf": "Salesforce components",
134
+ "ext": "Systems outside the CRM",
135
+ "data": "Data: objects, metadata, reference data"
136
+ },
137
+ "kpi": {
138
+ "apps": "Lightning applications",
139
+ "objects": "Custom business objects",
140
+ "classes": "Apex application classes, {tests} test classes",
141
+ "lwc": "Lightning Web Components",
142
+ "omni": "OmniScripts / Integration Procedures (active)",
143
+ "flows": "Active flows",
144
+ "cmdt": "Custom Metadata records ({types} types)",
145
+ "integrations": "Integration endpoints",
146
+ "systems": "Connected systems"
147
+ },
148
+ "layers": {
149
+ "presentation": "Presentation",
150
+ "orchestration": "Orchestration",
151
+ "services": "{n} Apex classes",
152
+ "data": "Data",
153
+ "integration": "Integration",
154
+ "apps": "{n} Lightning apps",
155
+ "pages": "{n} Lightning pages",
156
+ "lwc": "{n} LWC",
157
+ "aura": "{n} Aura",
158
+ "vf": "{n} Visualforce pages",
159
+ "os": "{n} OmniScripts",
160
+ "flows": "{n} active flows",
161
+ "ips": "{n} Integration Procedures",
162
+ "dms": "{n} Data Mappers",
163
+ "triggers": "{n} triggers and handlers",
164
+ "controllers": "{n} UI controllers",
165
+ "async": "Batch · Queueable · Schedulable · @future",
166
+ "standard": "Standard objects",
167
+ "custom": "{n} custom objects",
168
+ "cmdt": "{n} Custom Metadata types",
169
+ "files": "Salesforce Files",
170
+ "nc": "{n} Named Credentials",
171
+ "ec": "{n} External Credentials",
172
+ "rest": "{n} Apex REST services",
173
+ "apps2": "{n} connected apps",
174
+ "caption": "Logical architecture in layers"
175
+ },
176
+ "context": {
177
+ "salesforce": "Salesforce organization",
178
+ "users": "Users",
179
+ "platform": "Platform capabilities",
180
+ "data": "Data",
181
+ "external": "External systems",
182
+ "inbound": "Inbound calls",
183
+ "caption": "Context view: users, Salesforce organization and connected systems",
184
+ "callers": "External callers",
185
+ "rest": "REST",
186
+ "objects": "{n} custom objects",
187
+ "cmdt": "{n} Custom Metadata types"
188
+ },
189
+ "annex": {
190
+ "type": "Type",
191
+ "count": "Count",
192
+ "name": "Name",
193
+ "apiName": "API name",
194
+ "label": "Label",
195
+ "object": "Object",
196
+ "events": "Events",
197
+ "kinds": "Nature",
198
+ "status": "Status",
199
+ "trigger": "Trigger",
200
+ "processType": "Type",
201
+ "start": "Start",
202
+ "owd": "Default sharing (internal / external)",
203
+ "fields": "Custom fields",
204
+ "recordTypes": "Record types",
205
+ "relations": "Relationships",
206
+ "description": "Description",
207
+ "field": "Field",
208
+ "records": "Records",
209
+ "lastCreated": "Last created",
210
+ "permissionSets": "Permission sets",
211
+ "parent": "Parent role",
212
+ "access": "Access",
213
+ "rule": "Rule",
214
+ "endpoint": "Host",
215
+ "externalCredential": "External credential",
216
+ "protocol": "Protocol",
217
+ "scopes": "OAuth scopes",
218
+ "handler": "Registration handler",
219
+ "context": "Context",
220
+ "folder": "Folder",
221
+ "version": "Version",
222
+ "namespace": "Namespace",
223
+ "product": "Product",
224
+ "evidence": "Evidence in the metadata",
225
+ "url": "URL mapping",
226
+ "class": "Apex class",
227
+ "navigation": "Navigation",
228
+ "formFactors": "Form factors",
229
+ "components": "Custom components",
230
+ "placement": "Placed in",
231
+ "controllers": "Apex controllers",
232
+ "license": "License",
233
+ "users": "Active users",
234
+ "family": "Family",
235
+ "convention": "Observed convention",
236
+ "examples": "Occurrences",
237
+ "domain": "Area",
238
+ "value": "Value",
239
+ "reason": "Reason",
240
+ "system": "System",
241
+ "endpoints": "Salesforce endpoints",
242
+ "kind": "Kind",
243
+ "next": "Next run",
244
+ "cron": "Schedule",
245
+ "pillar": "Pillar",
246
+ "priority": "Priority",
247
+ "signal": "Signal",
248
+ "observed": "Observed",
249
+ "chapter": "Chapter",
250
+ "metadata": "Metadata analysed",
251
+ "term": "Term",
252
+ "definition": "Definition",
253
+ "language": "Language",
254
+ "active": "Active",
255
+ "inactive": "Inactive",
256
+ "yes": "Yes",
257
+ "no": "No",
258
+ "none": "—",
259
+ "more": "… and {n} more",
260
+ "standardObjects": "Standard objects",
261
+ "managed": "Package",
262
+ "units": {
263
+ "classes": "classes"
264
+ },
265
+ "evNamespace": "namespace",
266
+ "evObject": "object",
267
+ "evMetadata": "dedicated metadata"
268
+ },
269
+ "kinds": {
270
+ "batch": "Batch",
271
+ "queueable": "Queueable",
272
+ "schedulable": "Schedulable",
273
+ "future": "@future",
274
+ "rest": "REST",
275
+ "soap": "SOAP",
276
+ "invocable": "Invocable",
277
+ "auraEnabled": "LWC/Aura controller",
278
+ "callout": "Callout",
279
+ "registrationHandler": "SSO registration handler",
280
+ "emailHandler": "Inbound e-mail",
281
+ "stateful": "Stateful",
282
+ "global": "Global"
283
+ },
284
+ "pillars": {
285
+ "trusted": "Trusted",
286
+ "easy": "Easy",
287
+ "adaptable": "Adaptable"
288
+ },
289
+ "priorities": {
290
+ "p1": "P1 — act now",
291
+ "p2": "P2 — plan",
292
+ "p3": "P3 — improve"
293
+ },
294
+ "signals": {
295
+ "api-version-old": "Apex and triggers on old API versions",
296
+ "without-sharing": "Classes declared without sharing",
297
+ "no-sharing-keyword": "Classes without a sharing keyword (inherit the caller's mode)",
298
+ "hardcoded-ids": "Hard-coded record IDs in Apex",
299
+ "soql-dml-in-loops": "SOQL or DML inside loops (to review)",
300
+ "large-classes": "Very large Apex classes (> 1,000 lines)",
301
+ "multiple-triggers-per-object": "Several triggers on the same object",
302
+ "logic-in-triggers": "Logic written inside trigger bodies",
303
+ "low-test-ratio": "Few test classes compared to application classes",
304
+ "org-coverage": "Org-wide Apex code coverage",
305
+ "aura-residual": "Aura components still in use",
306
+ "visualforce-residual": "Visualforce pages still in use",
307
+ "workflow-rules": "Workflow rules (retired automation)",
308
+ "process-builders": "Process Builder processes (retired automation)",
309
+ "inactive-flows": "Inactive or draft flows",
310
+ "flows-and-triggers-same-object": "Record-triggered flows and Apex triggers on the same object",
311
+ "powerful-permissions": "Profiles or permission sets with Modify/View All Data",
312
+ "public-read-write-objects": "Custom objects with Public Read/Write default sharing",
313
+ "insecure-remote-sites": "Remote sites allowing non-HTTPS calls",
314
+ "legacy-named-credentials": "Legacy named credentials",
315
+ "connected-app-full-scope": "Connected apps with the Full OAuth scope",
316
+ "objects-without-description": "Custom objects without description",
317
+ "exclusion-candidates": "Components that look unused (to confirm)",
318
+ "code-analyzer-sev1": "Code Analyzer — severity 1 violations",
319
+ "code-analyzer-sev2": "Code Analyzer — severity 2 violations",
320
+ "code-analyzer-sev3": "Code Analyzer — severity 3 violations",
321
+ "code-analyzer-sev4": "Code Analyzer — severity 4 violations",
322
+ "code-analyzer-sev5": "Code Analyzer — severity 5 violations"
323
+ },
324
+ "traceability": {
325
+ "general": "Applications, Lightning pages, installed packages and namespaces",
326
+ "data": "Objects, fields, relationships, record types, validation rules, Custom Metadata",
327
+ "application": "Apex classes and triggers, flows, OmniStudio components",
328
+ "ui": "Applications, Lightning pages, LWC, Aura, Visualforce, tabs, quick actions",
329
+ "integration": "Named and External Credentials, remote sites, connected apps, auth providers, CSP and CORS, Apex REST",
330
+ "security": "Profiles, permission sets and groups, roles, queues, sharing rules, security settings",
331
+ "operations": "Scheduled jobs, test classes, code coverage (when connected to the org)"
332
+ },
333
+ "glossary": {
334
+ "OWD": "Organization-Wide Defaults: baseline record access for each object.",
335
+ "PSG": "Permission Set Group: bundle of permission sets assigned as one persona.",
336
+ "LWC": "Lightning Web Component: standards-based UI component of the Lightning platform.",
337
+ "Named Credential": "Secure definition of a callout endpoint and its authentication.",
338
+ "External Credential": "Authentication definition (protocol, principals) used by named credentials.",
339
+ "Custom Metadata": "Deployable configuration records, read by code and flows without consuming queries.",
340
+ "Flow": "Declarative automation of the Salesforce platform (record-triggered, scheduled, screen, autolaunched).",
341
+ "Queue": "Shared owner for records awaiting assignment.",
342
+ "Record Type": "Variant of an object with its own business process, picklist values and page layout."
343
+ },
344
+ "keyfig": {
345
+ "apps": "Lightning apps",
346
+ "pages": "Lightning pages",
347
+ "lwc": "Lightning Web Components",
348
+ "aura": "Aura components",
349
+ "vf": "Visualforce pages",
350
+ "classes": "Apex classes",
351
+ "tests": "Apex test classes",
352
+ "triggers": "Apex triggers",
353
+ "flows": "Flows (active / total)",
354
+ "os": "OmniScripts (active)",
355
+ "ips": "Integration Procedures (active)",
356
+ "dms": "Data Mappers",
357
+ "objects": "Custom objects",
358
+ "fields": "Custom fields",
359
+ "cmdt": "Custom Metadata types / records",
360
+ "psg": "Permission set groups / permission sets",
361
+ "roles": "Roles",
362
+ "nc": "Named / External credentials",
363
+ "rest": "Apex REST services",
364
+ "reports": "Reports / dashboards"
365
+ }
366
+ }