@cometchat/skills 5.0.0 → 5.0.1

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 (83) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +8 -0
  4. package/MIGRATING.md +187 -0
  5. package/README.md +19 -1
  6. package/RULES.md +12 -1
  7. package/bin/cometchat-skills.mjs +106 -6
  8. package/package.json +8 -3
  9. package/peers.yaml +46 -3
  10. package/registry/android-calls-v5.json +40 -0
  11. package/registry/android-v6.json +40 -0
  12. package/registry/angular-v5.json +40 -0
  13. package/registry/flutter-calls-v5.json +40 -0
  14. package/registry/flutter-v6.json +40 -0
  15. package/registry/ios-calls-v5.json +40 -0
  16. package/registry/ios-v5.json +55 -0
  17. package/registry/rn-calls-v5.json +40 -0
  18. package/registry/rn-v5.json +40 -0
  19. package/registry/sdk-android-v5.json +40 -0
  20. package/registry/sdk-jsv4.json +40 -0
  21. package/registry/web-calls-v5.json +40 -0
  22. package/registry/web-v7.json +55 -0
  23. package/skills/cometchat/SKILL.md +8 -3
  24. package/skills/cometchat-a11y/SKILL.md +49 -0
  25. package/skills/cometchat-analytics/SKILL.md +61 -0
  26. package/skills/cometchat-android-v6-core/references/docs-map.md +2 -2
  27. package/skills/cometchat-android-v6-production/SKILL.md +1 -0
  28. package/skills/cometchat-angular-v5-production/SKILL.md +1 -0
  29. package/skills/cometchat-audit/SKILL.md +61 -0
  30. package/skills/cometchat-compliance/SKILL.md +63 -0
  31. package/skills/cometchat-flutter-v6-customization/SKILL.md +1 -1
  32. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +8 -7
  33. package/skills/cometchat-flutter-v6-production/SKILL.md +1 -0
  34. package/skills/cometchat-i18n/SKILL.md +50 -0
  35. package/skills/cometchat-ios-core/SKILL.md +3 -2
  36. package/skills/cometchat-ios-core/references/anti-patterns.md +33 -0
  37. package/skills/cometchat-ios-core/references/docs-map.md +4 -3
  38. package/skills/cometchat-ios-core/references/layout.md +33 -0
  39. package/skills/cometchat-ios-production/SKILL.md +82 -0
  40. package/skills/cometchat-ios-testing/SKILL.md +57 -0
  41. package/skills/cometchat-ios-troubleshooting/SKILL.md +45 -0
  42. package/skills/cometchat-migrate-from-getstream/SKILL.md +65 -0
  43. package/skills/cometchat-migrate-from-getstream/references/concept-map.md +98 -0
  44. package/skills/cometchat-migrate-from-getstream/references/data-migration.md +74 -0
  45. package/skills/cometchat-migrate-from-getstream/references/feature-map.md +108 -0
  46. package/skills/cometchat-migrate-from-getstream/references/inventory.md +82 -0
  47. package/skills/cometchat-migrate-from-getstream/references/native-build.md +9 -0
  48. package/skills/cometchat-migrate-from-getstream/references/report-template.md +59 -0
  49. package/skills/cometchat-migrate-from-sendbird/SKILL.md +64 -0
  50. package/skills/cometchat-migrate-from-sendbird/references/concept-map.md +99 -0
  51. package/skills/cometchat-migrate-from-sendbird/references/data-migration.md +74 -0
  52. package/skills/cometchat-migrate-from-sendbird/references/feature-map.md +104 -0
  53. package/skills/cometchat-migrate-from-sendbird/references/inventory.md +86 -0
  54. package/skills/cometchat-migrate-from-sendbird/references/native-build.md +10 -0
  55. package/skills/cometchat-migrate-from-sendbird/references/report-template.md +59 -0
  56. package/skills/cometchat-migrate-from-twilio/SKILL.md +52 -0
  57. package/skills/cometchat-migrate-from-twilio/references/concept-map.md +49 -0
  58. package/skills/cometchat-migrate-from-twilio/references/data-migration.md +50 -0
  59. package/skills/cometchat-migrate-from-twilio/references/feature-map.md +27 -0
  60. package/skills/cometchat-migrate-from-twilio/references/inventory.md +53 -0
  61. package/skills/cometchat-migrate-from-twilio/references/report-template.md +52 -0
  62. package/skills/cometchat-moderation/SKILL.md +58 -0
  63. package/skills/cometchat-onboarding/SKILL.md +4 -1
  64. package/skills/cometchat-onboarding/references/platforms.md +15 -0
  65. package/skills/cometchat-react-native-core/SKILL.md +25 -3
  66. package/skills/cometchat-react-native-core/references/docs-map.md +2 -1
  67. package/skills/cometchat-react-native-production/SKILL.md +1 -0
  68. package/skills/cometchat-react-native-sdk/SKILL.md +16 -9
  69. package/skills/cometchat-react-native-troubleshooting/SKILL.md +58 -0
  70. package/skills/cometchat-react-v7-core/SKILL.md +4 -4
  71. package/skills/cometchat-react-v7-core/references/anti-patterns.md +1 -1
  72. package/skills/cometchat-react-v7-core/references/component-props.md +1 -1
  73. package/skills/cometchat-react-v7-core/references/layout.md +4 -12
  74. package/skills/cometchat-react-v7-production/SKILL.md +84 -0
  75. package/skills/cometchat-react-v7-testing/SKILL.md +60 -0
  76. package/skills/cometchat-react-v7-troubleshooting/SKILL.md +47 -0
  77. package/skills/cometchat-security/SKILL.md +80 -0
  78. package/skills/cometchat-self-host/SKILL.md +56 -0
  79. package/test-suite/catalogs/flutter-calls-v5.json +1 -1
  80. package/test-suite/scripts/lint-skills.mjs +30 -7
  81. package/test-suite/scripts/verify-family-agnostic.mjs +5 -1
  82. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +0 -22
  83. package/skills/cometchat-react-v7-core/references/troubleshooting.md +0 -28
@@ -24,6 +24,16 @@
24
24
  "version": "1.1.0",
25
25
  "role": "router"
26
26
  },
27
+ {
28
+ "name": "cometchat-a11y",
29
+ "version": "1.0.0",
30
+ "role": "skill"
31
+ },
32
+ {
33
+ "name": "cometchat-analytics",
34
+ "version": "1.0.0",
35
+ "role": "skill"
36
+ },
27
37
  {
28
38
  "name": "cometchat-android-v5-calls-sdk",
29
39
  "version": "1.0.0",
@@ -34,20 +44,50 @@
34
44
  "version": "1.0.0",
35
45
  "role": "skill"
36
46
  },
47
+ {
48
+ "name": "cometchat-audit",
49
+ "version": "1.0.0",
50
+ "role": "skill"
51
+ },
52
+ {
53
+ "name": "cometchat-compliance",
54
+ "version": "1.0.0",
55
+ "role": "skill"
56
+ },
37
57
  {
38
58
  "name": "cometchat-flutter-v5-sdk",
39
59
  "version": "1.0.0",
40
60
  "role": "skill"
41
61
  },
62
+ {
63
+ "name": "cometchat-i18n",
64
+ "version": "1.0.0",
65
+ "role": "skill"
66
+ },
42
67
  {
43
68
  "name": "cometchat-js-v5-sdk",
44
69
  "version": "1.0.0",
45
70
  "role": "skill"
46
71
  },
72
+ {
73
+ "name": "cometchat-moderation",
74
+ "version": "1.0.0",
75
+ "role": "skill"
76
+ },
47
77
  {
48
78
  "name": "cometchat-onboarding",
49
79
  "version": "1.0.0",
50
80
  "role": "skill"
81
+ },
82
+ {
83
+ "name": "cometchat-security",
84
+ "version": "1.0.0",
85
+ "role": "skill"
86
+ },
87
+ {
88
+ "name": "cometchat-self-host",
89
+ "version": "1.0.0",
90
+ "role": "skill"
51
91
  }
52
92
  ]
53
93
  }
@@ -25,6 +25,16 @@
25
25
  "version": "1.1.0",
26
26
  "role": "router"
27
27
  },
28
+ {
29
+ "name": "cometchat-a11y",
30
+ "version": "1.0.0",
31
+ "role": "skill"
32
+ },
33
+ {
34
+ "name": "cometchat-analytics",
35
+ "version": "1.0.0",
36
+ "role": "skill"
37
+ },
28
38
  {
29
39
  "name": "cometchat-android-v5-calls-sdk",
30
40
  "version": "1.0.0",
@@ -35,20 +45,50 @@
35
45
  "version": "1.0.0",
36
46
  "role": "skill"
37
47
  },
48
+ {
49
+ "name": "cometchat-audit",
50
+ "version": "1.0.0",
51
+ "role": "skill"
52
+ },
53
+ {
54
+ "name": "cometchat-compliance",
55
+ "version": "1.0.0",
56
+ "role": "skill"
57
+ },
38
58
  {
39
59
  "name": "cometchat-flutter-v5-sdk",
40
60
  "version": "1.0.0",
41
61
  "role": "skill"
42
62
  },
63
+ {
64
+ "name": "cometchat-i18n",
65
+ "version": "1.0.0",
66
+ "role": "skill"
67
+ },
43
68
  {
44
69
  "name": "cometchat-js-v5-sdk",
45
70
  "version": "1.0.0",
46
71
  "role": "skill"
47
72
  },
73
+ {
74
+ "name": "cometchat-moderation",
75
+ "version": "1.0.0",
76
+ "role": "skill"
77
+ },
48
78
  {
49
79
  "name": "cometchat-onboarding",
50
80
  "version": "1.0.0",
51
81
  "role": "skill"
82
+ },
83
+ {
84
+ "name": "cometchat-security",
85
+ "version": "1.0.0",
86
+ "role": "skill"
87
+ },
88
+ {
89
+ "name": "cometchat-self-host",
90
+ "version": "1.0.0",
91
+ "role": "skill"
52
92
  }
53
93
  ]
54
94
  }
@@ -25,6 +25,16 @@
25
25
  "version": "1.1.0",
26
26
  "role": "router"
27
27
  },
28
+ {
29
+ "name": "cometchat-a11y",
30
+ "version": "1.0.0",
31
+ "role": "skill"
32
+ },
33
+ {
34
+ "name": "cometchat-analytics",
35
+ "version": "1.0.0",
36
+ "role": "skill"
37
+ },
28
38
  {
29
39
  "name": "cometchat-android-v5-calls-sdk",
30
40
  "version": "1.0.0",
@@ -35,16 +45,36 @@
35
45
  "version": "1.0.0",
36
46
  "role": "skill"
37
47
  },
48
+ {
49
+ "name": "cometchat-audit",
50
+ "version": "1.0.0",
51
+ "role": "skill"
52
+ },
53
+ {
54
+ "name": "cometchat-compliance",
55
+ "version": "1.0.0",
56
+ "role": "skill"
57
+ },
38
58
  {
39
59
  "name": "cometchat-flutter-v5-sdk",
40
60
  "version": "1.0.0",
41
61
  "role": "skill"
42
62
  },
63
+ {
64
+ "name": "cometchat-i18n",
65
+ "version": "1.0.0",
66
+ "role": "skill"
67
+ },
43
68
  {
44
69
  "name": "cometchat-js-v5-sdk",
45
70
  "version": "1.0.0",
46
71
  "role": "skill"
47
72
  },
73
+ {
74
+ "name": "cometchat-moderation",
75
+ "version": "1.0.0",
76
+ "role": "skill"
77
+ },
48
78
  {
49
79
  "name": "cometchat-onboarding",
50
80
  "version": "1.0.0",
@@ -90,10 +120,35 @@
90
120
  "version": "1.1.0",
91
121
  "role": "skill"
92
122
  },
123
+ {
124
+ "name": "cometchat-react-v7-production",
125
+ "version": "1.0.0",
126
+ "role": "skill"
127
+ },
93
128
  {
94
129
  "name": "cometchat-react-v7-push",
95
130
  "version": "1.0.0",
96
131
  "role": "skill"
132
+ },
133
+ {
134
+ "name": "cometchat-react-v7-testing",
135
+ "version": "1.0.0",
136
+ "role": "skill"
137
+ },
138
+ {
139
+ "name": "cometchat-react-v7-troubleshooting",
140
+ "version": "1.0.0",
141
+ "role": "skill"
142
+ },
143
+ {
144
+ "name": "cometchat-security",
145
+ "version": "1.0.0",
146
+ "role": "skill"
147
+ },
148
+ {
149
+ "name": "cometchat-self-host",
150
+ "version": "1.0.0",
151
+ "role": "skill"
97
152
  }
98
153
  ]
99
154
  }
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cometchat
3
- description: "Entry point for any CometChat task on any platform. Detects the framework + UI Kit version (React, Angular, iOS, Android, React Native, Flutter), then routes to that family's skills — for a NEW integration or a change to an existing one. Triggers: 'add chat', 'add cometchat', 'add chat to my app', 'add calling', 'change something in my chat', 'my chat is already set up', 'add a feature to the chat', 'add chat to my android app', 'integrate cometchat android', 'add chat to my ios app', 'integrate cometchat ios', 'add chat to my swift app'."
3
+ description: "Entry point for any CometChat task on any platform. Detects the framework + UI Kit version (React, Angular, iOS, Android, React Native, Flutter), then routes to that family's skills — for a NEW integration or a change to an existing one. Triggers: 'add chat', 'add cometchat', 'add chat to my app', 'add calling', 'change something in my chat', 'my chat is already set up', 'add a feature to the chat', 'add chat to my android app', 'integrate cometchat android', 'add chat to my ios app', 'integrate cometchat ios', 'add chat to my swift app', 'migrate my app to cometchat', 'migrate from sendbird', 'migrate from getstream / stream', 'replace sendbird / stream chat with cometchat'."
4
4
  license: "MIT"
5
5
  metadata:
6
6
  author: "CometChat"
@@ -11,7 +11,7 @@ metadata:
11
11
  > **Ground truth:** routing is `peers.yaml` (data); shared rules are `RULES.md`. This is a THIN classifier — detect + dispatch only. No workflows, credential logic, or component detail here; those live in `cometchat-onboarding` + the resolved family's skills + `RULES.md`.
12
12
 
13
13
  ## Use when
14
- User wants to add CometChat to a project, or upgrade an existing one. Triggers: "add chat", "add cometchat", "add voice/video calling", "upgrade my v6 UI Kit to v7", "add chat to my iOS app", "add chat in Swift", "upgrade my v4 iOS UI Kit to v5".
14
+ User wants to add CometChat to a project, upgrade an existing one, or migrate one off Sendbird / Stream. Triggers: "add chat", "add cometchat", "add voice/video calling", "upgrade my v6 UI Kit to v7", "add chat to my iOS app", "add chat in Swift", "upgrade my v4 iOS UI Kit to v5".
15
15
 
16
16
  ## If you cannot find it here — FETCH, never guess
17
17
  This applies to EVERY agent and EVERY install mode, whether or not a row above matched.
@@ -24,6 +24,7 @@ This applies to EVERY agent and EVERY install mode, whether or not a row above m
24
24
  Full text: `RULES.md` -> "Fetch discipline".
25
25
 
26
26
  ## Do only this
27
+ 0. **Migration OFF Sendbird or Stream (GetStream) → straight to that vendor's skill. No onboarding.** Triggers: "migrate my app to CometChat", "migrate / switch / move from Sendbird|Stream|GetStream|Twilio", "replace Sendbird|Stream Chat with CometChat". Run `npx @cometchat/skills detect --json`: each `migrate_from` entry names the vendor's `skill` (`cometchat-migrate-from-{sendbird,getstream,twilio}`, routed in `peers.yaml` `migrations:`); a vendor the user NAMES counts even if detect misses it. That skill runs the whole migration in one prompt (detect → replace → remove what CometChat lacks → verify → final list of removed features) and lands on the `<family>` core itself. "Migrate to CometChat" with neither vendor detected nor named → say no Sendbird/Stream usage was found, then continue at rule 1/2. A plain "add chat" on a repo where `migrate_from` is set → onboarding, which names the vendor in its plan and offers the migration.
27
28
  1. **ALREADY INTEGRATED + a specific request → go STRAIGHT to the task skill. Do NOT run onboarding.** Run `npx @cometchat/skills detect --json` — the authority: `existing_cometchat: true` means a CometChat UI Kit/SDK dependency is present (`@cometchat/chat-uikit-*`/`chat-sdk-*`/`calls-sdk-*`, `com.cometchat:*`, `cometchat_*`, `CometChatUIKitSwift`). If it can't run, READ the repo for that same dependency. A `.cometchat/` folder is NOT evidence — the installer and the dashboard CLI create it. (The dashboard CLI `@cometchat/skills-cli` has no `detect`; `RULES.md` → "The CLI is a dashboard/API client only".) Present ⇒ the plan/approve journey has already happened. Treat the ask as a TASK, not an integration: resolve `<family>` (rule 4), pick the `<type>` from the map in rule 5, open that skill directly. This is the COMMON case in a live app — "change my avatar", "add a logout button", "add polls", "restyle the bubble", "my custom view isn't showing" — and none of it is onboarding. Routing it through the gate re-asks questions the user already answered; having NO branch for it is worse, because the agent then falls out of the flow and guesses from `node_modules` (AUDIT-106).
28
29
  2. **First-contact "add CometChat" (add chat / add calling / integrate cometchat) → ALWAYS route to `cometchat-onboarding` FIRST.** This is a mandatory gate, not optional: onboarding runs the framework-agnostic DISCOVER → UNDERSTAND → PLAN journey (whole-repo detect, intent questions with recommended defaults, the full plan artifact, the modify/approve gate) BEFORE any framework core. It then hands a scoped build directive down to the framework core. Do NOT route straight to a `-core` skill for a first-contact add request — onboarding gates it. (Onboarding short-circuits on an already-integrated repo — see its Re-entry section.)
29
30
  3. **Upgrade request** ("upgrade v6 to v7", "v4 to v5", "v5 to v6 Android") is reconciliation, NOT onboarding → route straight to `cometchat-<family>-migration` (that IS the reconciliation). The `version_conflict` STOP still applies to *add* requests; onboarding surfaces it in the plan and reconciles before hand-off.
@@ -37,7 +38,11 @@ Full text: `RULES.md` -> "Fetch discipline".
37
38
  - push notifications → `cometchat-<family>-push` (THIN + docs-first — fetches the notifications docs; live delivery is a manual device check)
38
39
  - upgrade an existing major → `cometchat-<family>-migration`
39
40
  - framework glue (env, SSR/islands, routing, native build config) → `cometchat-<family>-patterns` on `react-v7` (Vite/Next/CRA/React Router/Astro), `angular-v5`, `flutter-v6`. `react-native`: the split pair `cometchat-react-native-expo-patterns` (Expo) / `cometchat-react-native-bare-patterns` (RN CLI/bare) — pick by whether `expo` is a dependency. iOS and Android have NO `patterns` skill.
40
- - production hardening / testing / troubleshooting `cometchat-<family>-{production,testing,troubleshooting}` on `angular-v5`, `react-native`, `android-v6`, `flutter-v6` (none on `react-v7`/`ios` — use `core` + its `docs-map.md`). `events` → `android-v6`, `flutter-v6`.
41
+ - **analytics / metrics / observability / monitor / dashboards / send events to Datadog·Segment·BigQuery** → `cometchat-analytics`.
42
+ - **audit / review / health-check an EXISTING integration** → `cometchat-audit` (read-only; routes fixes to the owning skills).
43
+ - **accessibility / WCAG / screen-reader / keyboard** → `cometchat-a11y`. **localization / i18n / translate the UI / RTL** → `cometchat-i18n`. (Cross-family, installed for every family.)
44
+ - **enterprise security / SSO / RBAC / session revocation / multi-tenant** → `cometchat-security` (cross-family: server + access-control model; client login stays in the family core/production). **data residency / GDPR / retention / audit logs / eDiscovery** → `cometchat-compliance`. **on-prem / self-host / private cloud** → `cometchat-self-host`. **moderation / safety / profanity / image moderation** → `cometchat-moderation`. These four are installed for every family (like onboarding).
45
+ - production hardening / testing / troubleshooting → `cometchat-<family>-{production,testing,troubleshooting}` on every UI family (`react-v7`, `angular-v5`, `react-native`, `ios`, `android-v6`, `flutter-v6`). `events` → `android-v6`, `flutter-v6`.
41
46
  - **`react-native` only** — `cometchat-react-native-sdk` (the method→contract fallback map; kit v5 removed the detail/management screens, so SDK calls are on the main road for RN, not an escape hatch).
42
47
  - **`android-v6` only** — cohort-split skills (pick cohort from gradle files: `kotlin-*` = XML Views, `compose-*` = Jetpack Compose): `cometchat-android-v6-{kotlin,compose}-{components,placement,customization}`; also `builder-settings`, `extensions`. Headless Chat SDK v5 (build-your-own-UI) → `cometchat-android-v5-sdk`.
43
48
  - **Headless Calls SDK v5** (from-scratch calling, NO UI Kit — meet-style or 1:1 ringing; via onboarding's calling-first tree) → `cometchat-js-v5-sdk` (web) · `cometchat-react-native-v5-sdk` · `cometchat-ios-v5-sdk` · `cometchat-android-v5-calls-sdk` · `cometchat-flutter-v5-sdk`. Not installed? `npx @cometchat/skills add --family <js|react-native|ios|android|flutter>-calls` adds it alongside the UI Kit skills. The prebuilt call UI stays `cometchat-<family>-calls`.
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: cometchat-a11y
3
+ description: "Keep a CometChat integration accessible — the UI Kit is designed targeting WCAG 2.1 AA with keyboard navigation (verify per component in its docs; full conformance still needs manual testing), and this skill makes sure the HOST app doesn't break that, covering contrast, focus, screen-reader context, reduced motion, RTL, and calls accessibility. Cross-family. Triggers: 'is cometchat accessible', 'WCAG / 508 / ADA compliance', 'screen reader support', 'keyboard navigation', 'a11y audit', 'accessible chat', 'contrast/focus issues in chat'."
4
+ license: "MIT"
5
+ compatibility: "CometChat UI Kits (React v7 · Angular v5 · React Native v5 · iOS v5 · Android v6 · Flutter v6). Kit components are designed targeting WCAG 2.1 AA + keyboard navigation (the Angular docs state this explicitly; other families are not individually documented, and full conformance needs manual testing / a VPAT). Host wiring is per platform."
6
+ metadata:
7
+ author: "CometChat"
8
+ version: "1.0.0"
9
+ tags: "cometchat a11y accessibility wcag screen-reader keyboard focus contrast rtl section508"
10
+ ---
11
+
12
+ > **Ground truth:** the UI Kit components are documented as **designed targeting WCAG 2.1 Level AA** with **keyboard navigation** built in (the Angular component docs state this most explicitly; note the docs' own caveat that full conformance still requires manual testing — do not assert a blanket AA/VPAT claim to the user without it). Treat AA as the design target, not a certified guarantee. Accessibility failures in a CometChat app are almost always **host-side regressions** — global CSS, a broken focus order, a container with no accessible name, or motion that ignores the user's preference. Verify component-level a11y claims against the component's own docs page (`cometchat-<family>-components` → docs-map); this skill owns the host-side discipline the kit can't control.
13
+
14
+ ## Use this skill when
15
+ An accessibility review (WCAG / Section 508 / ADA / EN 301 549), a screen-reader or keyboard complaint, or "make our chat accessible." Procurement for public-sector, education, healthcare and large enterprises requires this.
16
+
17
+ ## Start from what the kit gives you
18
+ The kit ships accessible components: keyboard-operable lists/composer, focus handling, and semantics **designed targeting** AA (the design target — not a certified guarantee; see above). On web it sets ARIA roles and names itself — the conversation/user rosters render as a labelled `listbox` and manage roving focus — so don't override or strip them. Your job is to **not break it** and to make the surrounding app equally accessible. Two rules first:
19
+ 1. **Don't let global CSS leak into the `.cometchat` subtree** (web) — a global `outline:none`, a low-contrast override, a `text-align`/flex reset, or a Tailwind base can strip focus rings or break contrast the kit set correctly. Scope your resets away from the kit (`RULES.md` → CSS isolation).
20
+ 2. **Give the chat container a real, labelled home** — a sized region (a11y needs a visible, non-collapsed surface too) with an accessible name (e.g. an `aria-label`/landmark on web, an accessibility label on native) so screen-reader users can find and enter it.
21
+
22
+ ## The checklist (host-side)
23
+ - **Keyboard:** every path reachable and operable by keyboard — open a conversation, type, send, open thread, close. Don't trap focus; return focus sensibly when a panel/dialog closes. Don't remove focus outlines; if you restyle them, keep a visible focus indicator.
24
+ - **Screen reader:** the surface and its regions have accessible names; your own buttons around the kit have labels (not icon-only with no `aria-label`/accessibility label). New-message announcements: verify the kit's live-region behavior on your target reader (VoiceOver/NVDA/TalkBack) and don't suppress it with `aria-hidden` on an ancestor.
25
+ - **Contrast:** if you theme the kit (`cometchat-<family>-customization`), keep text/UI contrast at **AA** (4.5:1 text, 3:1 large text/UI). Check both light and dark themes — a brand color that passes on light can fail on dark.
26
+ - **Reduced motion:** honor `prefers-reduced-motion` (web) / the OS "reduce motion" setting (native) in any animation you add around the chat; don't force motion the user opted out of.
27
+ - **Text scaling / zoom:** the surface must remain usable at 200% zoom / large Dynamic Type — don't cap font sizes or clip at large text.
28
+ - **RTL:** direction-correct for RTL locales (pairs with `cometchat-i18n`).
29
+ - **Targets:** your custom controls meet the minimum touch-target size; don't shrink the kit's.
30
+
31
+ ## Calls accessibility (if you use calling)
32
+ - Request camera/mic with clear, user-visible prompts and reasons.
33
+ - Provide accessible labels for call controls you add (mute, end, camera).
34
+ - Where available, surface captions/transcription; ensure incoming-call UI is announced and keyboard/AT-operable.
35
+
36
+ ## Test it
37
+ - **Automated (web):** run `axe`/Lighthouse on the chat screen — fix contrast, missing names, and ARIA misuse it flags. (Automated tools catch ~a third of issues; do the manual pass too.)
38
+ - **Manual:** tab through the whole flow with the mouse unplugged; drive it with VoiceOver / NVDA / TalkBack; zoom to 200%; toggle reduced motion; switch to dark. Fix what breaks in YOUR wiring; if a genuine kit-component gap appears, verify against the component docs and report it (don't hand-patch kit internals).
39
+
40
+ ## Common pitfalls
41
+ 1. **Global CSS stripping focus rings or contrast** inside `.cometchat` — scope resets away.
42
+ 2. **Icon-only custom buttons with no label** — add accessible names.
43
+ 3. **Unlabelled, collapsed, or unreachable chat container** — size it and name it.
44
+ 4. **Animations ignoring reduced-motion.**
45
+ 5. **Contrast checked in one theme only** — check light and dark.
46
+ 6. **Assuming automated tools are enough** — they miss keyboard/reader flow; test manually.
47
+
48
+ ## Verify it works
49
+ The chat flow is fully keyboard-operable with a visible focus indicator · a screen reader announces the surface, messages, and your controls · contrast passes AA in light and dark · the UI holds at 200% zoom / large type · reduced-motion is honored · RTL mirrors correctly · axe/Lighthouse on the chat screen is clean of contrast/name/ARIA errors.
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: cometchat-analytics
3
+ description: "See what your chat is doing — pull usage & message metrics via REST, stream real-time events to your data/observability stack via webhooks, monitor client-side errors & the init/login path, and read push/call logs. Cross-family: metrics/webhooks are server-side; client error monitoring wires per family. Triggers: 'chat analytics', 'usage metrics', 'message volume', 'monitor cometchat', 'observability', 'send chat events to datadog/segment/bigquery', 'track delivery', 'error monitoring for chat', 'dashboards for chat'."
4
+ license: "MIT"
5
+ compatibility: "CometChat Metrics REST API (usage · message) · Webhooks · Notification/Call logs · on-prem Prometheus/Grafana/Loki. Client error monitoring via each family's error boundary / listeners."
6
+ metadata:
7
+ author: "CometChat"
8
+ version: "1.0.0"
9
+ tags: "cometchat analytics observability metrics webhooks monitoring datadog sentry dashboards"
10
+ ---
11
+
12
+ > **Ground truth:** shapes are FETCHED from the live docs — `{DOCS_BASE}/rest-api/metrics/usage-metrics`, `/rest-api/metrics/message-metrics`, `/fundamentals/webhooks` (+ `/rest-api/management-apis/webhooks/overview`), `/notifications/logs`, `/rest-api/calls-apis/get-call`, and on-prem `/on-premise-deployment/docker/monitoring`. `DOCS_BASE = https://www.cometchat.com/docs`; append `.md`. Verify each metric field / event name against the docs before charting it; don't invent a metric.
13
+
14
+ ## Use this skill when
15
+ You need visibility into chat: product analytics (DAU, messages, retention), an ops/observability signal (delivery, errors, latency), or feeding chat events into an existing warehouse/monitoring stack.
16
+
17
+ ## Three layers of visibility
18
+ | Layer | Source | Use it for |
19
+ | --- | --- | --- |
20
+ | **Aggregate metrics** | Metrics REST API (usage + message) | dashboards, MAU/DAU, message volume, growth |
21
+ | **Real-time events** | Webhooks | stream every message/user/group/call event to your pipeline |
22
+ | **Client health** | your error monitor + the kit's error boundary/listeners | init/login failures, render errors, UX latency |
23
+
24
+ ## 1. Aggregate metrics (REST, server-side)
25
+ - **Usage metrics** (`{DOCS_BASE}/rest-api/metrics/usage-metrics`) — active users and usage over time.
26
+ - **Message metrics** (`{DOCS_BASE}/rest-api/metrics/message-metrics`) — message volume/counts.
27
+ - **Call metrics** — per-call detail incl. participant metrics via `{DOCS_BASE}/rest-api/calls-apis/get-call`.
28
+ Call these from a server job with the **REST API Key** (never client-side), on a schedule, into your BI tool. Fetch the exact query params + response fields from each page before building the report.
29
+
30
+ ## 2. Real-time events → your stack (webhooks)
31
+ Webhooks POST an HTTPS notification to your server on message / user / group / call events (`{DOCS_BASE}/fundamentals/webhooks`; configure via `/rest-api/management-apis/webhooks/overview`). This is how you get chat into **Segment / BigQuery / Snowflake / Datadog / a data lake** in real time:
32
+ 1. Stand up an HTTPS endpoint (returns 200 to ack). Secure it with the **Basic Auth** credentials CometChat sends on every webhook request (`{DOCS_BASE}/fundamentals/webhooks` — the docs describe Basic Auth only, with no payload-signature scheme, so validate the `Authorization` header rather than looking for an HMAC signature).
33
+ 2. Subscribe to the events you need (don't fan out everything if you only need message.sent).
34
+ 3. Transform + forward to your warehouse/observability sink; make the handler idempotent and fast (queue heavy work).
35
+ The same webhook stream doubles as a **tamper-evident audit log** for `cometchat-compliance`.
36
+
37
+ ## 3. Client-side error & performance monitoring (per family)
38
+ The metrics API won't tell you a user's chat failed to load — instrument the client:
39
+ - **Capture kit render errors** — on the React families via the error boundary's hook (React v7: `CometChatErrorBoundary` `onError`; Angular/RN have the equivalent); on iOS/Android/Flutter (no error-boundary construct) via the SDK error listeners / the kit's error-state views. Forward to Sentry/Datadog with context.
40
+ - **Instrument the critical path** — wrap init, the token fetch, and login in spans/breadcrumbs; a spike in login failures is your earliest incident signal (often Region or token issues).
41
+ - **Listen for connection state** — the SDK's connection/websocket listeners tell you when clients drop; count reconnects.
42
+ - **Don't log secrets or message bodies** to your monitor — log UIDs/event types/latencies, not content (privacy + `cometchat-compliance`).
43
+ Wire these through the resolved family's `-core`/`-production`/`-troubleshooting` skills.
44
+
45
+ ## 4. Delivery & call logs
46
+ - **Push delivery logs** (`{DOCS_BASE}/notifications/logs`) — FCM/APNs/email/SMS delivery, ~14-day retention; enable when diagnosing "notifications not arriving" and export before they age out.
47
+ - **Call logs** — the Calls REST APIs for per-call quality/participant metrics.
48
+
49
+ ## 5. Self-host observability
50
+ On-prem ships **Prometheus + Grafana + Loki + Promtail** (`{DOCS_BASE}/on-premise-deployment/docker/monitoring`): service metrics, dashboards, alerts, and centralized logs — wire alerts (P95 latency, error rate, WS capacity) to your on-call. SaaS customers use the Metrics API + webhooks instead.
51
+
52
+ ## Common pitfalls
53
+ 1. **Metrics API called client-side** — it needs the REST API Key; server only.
54
+ 2. **Webhook handler slow or non-idempotent** — retries pile up; ack fast, queue the work, dedupe.
55
+ 3. **Charting an invented metric** — fetch the real fields from the metrics pages.
56
+ 4. **Logging message content to your monitor** — privacy/compliance risk; log metadata, not bodies.
57
+ 5. **No client error monitoring** — you'll hear about outages from users, not dashboards; wire the error boundary + login-path spans.
58
+ 6. **Relying on push logs after they age out** — export within the retention window.
59
+
60
+ ## Verify it works
61
+ Usage/message metrics return real numbers into your dashboard · a test message triggers your webhook and lands in your warehouse/monitor · a forced init/login failure shows up in your error monitor with context · push/call logs are readable when needed · (on-prem) Grafana shows the services and alerts fire.
@@ -40,8 +40,8 @@ Fallback order: `.md` twin → if it 404s, the same URL **without** `.md` (HTML)
40
40
  ```
41
41
  An Android-v6-only index of every page as a `.md` link — use it to discover any page not in the
42
42
  table below. Global all-products index (large; last resort): `{DOCS_BASE}/llms.txt`.
43
- > **DOCS-GAP note:** this scoped index ships with docs branch `docs/android-llms-indexes`; until that
44
- > merges, the per-page `.md` twins below already work — fall back to the table + the global `llms.txt`.
43
+ > **Scoped index:** `{DOCS_BASE}/ui-kit/android/llms-android-v6.md` is live (the `docs/android-llms-indexes`
44
+ > branch merged). Use it to find pages; the per-page `.md` twins below + the global `llms.txt` remain fallbacks.
45
45
 
46
46
  ## SDK docs — the FALLBACK reference (a feature the UI Kit has NO component for)
47
47
  The rule of the pack: **for every feature, first check whether the UI Kit has a component/param for it
@@ -14,6 +14,7 @@ metadata:
14
14
  ## Companion skills (read first)
15
15
  - `cometchat-android-v6-core` — install, credentials, `initFromSettings → login`, lifecycle. Assumed here, never repeated.
16
16
  - `cometchat-android-v6-builder-settings` — the settings file + auth method reference · `cometchat-android-v6-testing` — pre-release verification · `cometchat-android-v6-push` (unregister on logout).
17
+ - `cometchat-security` — the enterprise auth model this client-side hardening plugs into: wiring your IdP / SSO into the token flow (your IdP → your server → mint the CometChat auth token; CometChat is **not** an IdP), token expiry/refresh + re-login, RBAC roles + group (SBAC) scopes, and Auth Key vs auth token vs REST API Key. Load it for a security review or any SSO question.
17
18
 
18
19
  ## Use this skill when
19
20
  "are we production ready?", "switch from the Auth Key to auth tokens", "prepare the release build", "does CometChat need ProGuard rules?", "what are the rate limits?", "anything to do before Play Store submission?".
@@ -13,6 +13,7 @@ metadata:
13
13
 
14
14
  ## Companion skills (read first)
15
15
  - `cometchat-angular-v5-core` — `references/setup-credentials.md` covers the dev credential flow this replaces.
16
+ - `cometchat-security` — the enterprise auth model this client-side hardening plugs into: wiring your IdP / SSO into the token flow (your IdP → your server → mint the CometChat auth token; CometChat is **not** an IdP), token expiry/refresh + re-login, RBAC roles + group (SBAC) scopes, and Auth Key vs auth token vs REST API Key. Load it for a security review or any SSO question.
16
17
 
17
18
  ## Use this skill when
18
19
  Moving off the development setup: going live, a security review, or "is this safe to ship".
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: cometchat-audit
3
+ description: "Review an EXISTING CometChat integration and report what's wrong or risky — security (no client Auth Key, server tokens), correctness (init→login→render order, no raw localization keys, no dead affordances), version drift (version_conflict), production-readiness, accessibility & localization gaps — ranked, with fixes routed to the right skill. Read-only: it reports, it doesn't rewrite unless you ask. Triggers: 'audit my cometchat integration', 'review my chat setup', 'is my cometchat secure / production ready', 'check my cometchat code', 'health check', 'what's wrong with my chat'."
4
+ license: "MIT"
5
+ compatibility: "Any CometChat integration (React v7 · Angular v5 · React Native v5 · iOS v5 · Android v6 · Flutter v6 · headless SDK). Read-only review; fixes route to the family skills."
6
+ metadata:
7
+ author: "CometChat"
8
+ version: "1.0.0"
9
+ tags: "cometchat audit review health-check security production-readiness diagnostics"
10
+ ---
11
+
12
+ > **Ground truth:** the authority for "correct" is `RULES.md` + the resolved family's skills (`cometchat-<family>-core`/`-production`/`-troubleshooting`) and the offline probe `npx @cometchat/skills detect --json`. Verify every symbol/prop you flag against the family catalog + docs (via `-core/references/docs-map.md`); never flag from memory. This is a **read-only** review — produce the report first; only change code if the user says so (then hand each fix to the owning skill).
13
+
14
+ ## Use this skill when
15
+ Someone wants an existing CometChat integration checked — before a launch, a security review, an upgrade, or a "why is this flaky / is this safe" question. It is the proactive complement to the per-family troubleshooting skills (`cometchat-<family>-troubleshooting`, which react to a specific symptom).
16
+
17
+ ## How to run the audit
18
+ 1. **Detect** — `npx @cometchat/skills detect --json`: framework, installed UI Kit, `version_conflict`, `existing_cometchat`. Resolve `<family>` from `peers.yaml`. If nothing is detected, say so and stop (nothing to audit).
19
+ 2. **Read the integration** — the init/login/lifecycle file, where the surface renders, the env/secret files, the server token endpoint (if any), and any custom message/theme/feature code. Do NOT read `node_modules`/`.d.ts`.
20
+ 3. **Score each check below**, gather evidence (`file:line`), and write a **ranked report** — most severe first — with, per finding, the fix and the skill that owns it. Then offer to apply fixes; don't auto-edit.
21
+
22
+ ## The checklist
23
+ **Security (highest severity)**
24
+ - Auth Key present in client code / bundle / binary? → critical; must move to server-minted tokens (`cometchat-security`, `cometchat-<family>-production`).
25
+ - Token endpoint deriving the UID from a client parameter (`?uid=`)? → impersonation.
26
+ - REST API Key anywhere client-side or in the repo? → critical.
27
+ - Sessions revocable on offboarding (flush tokens)? RBAC roles configured, or everyone on `default`? (`cometchat-security`.)
28
+
29
+ **Correctness**
30
+ - `init() → login() → render` order honored; no component rendered before login resolves; no init during SSR; StrictMode/double-invoke guarded.
31
+ - `initFromSettings` used (ai-agent attribution), not the classic builder init.
32
+ - Surface has real dimensions (not a collapsed 0-height box); host CSS not leaking into `.cometchat`.
33
+ - No raw localization keys rendered (`group_info` etc.).
34
+ - No dead affordances — every default-on control wired or hidden.
35
+ - Listeners removed on unmount/dispose (no duplicate messages/leaks).
36
+
37
+ **Version & drift**
38
+ - `version_conflict` from detect (UI Kit major ≠ the family's target)? → route to `cometchat-<family>-migration`.
39
+ - Kit/SDK versions pinned (not a floating major)? iOS: the exact kit+SDK+Calls pins.
40
+
41
+ **Production-readiness**
42
+ - HTTPS everywhere; logout teardown (session + push tokens); dashboard extensions/AI enabled on the PRODUCTION app; error handling in place (React families: an error boundary such as `CometChatErrorBoundary`; iOS/Android/Flutter: SDK error listeners / kit error-state views). (`cometchat-<family>-production`.)
43
+
44
+ **Accessibility & localization (enterprise procurement)**
45
+ - Focus rings / contrast not stripped by global CSS; chat container labelled; reduced-motion honored (`cometchat-a11y`).
46
+ - Locale set before render; no raw keys; RTL handled if targeted (`cometchat-i18n`).
47
+
48
+ **Compliance (if in scope)**
49
+ - App in the right data-residency region; a data-deletion path exists (`cometchat-compliance`); moderation enabled if the product needs T&S (`cometchat-moderation`).
50
+
51
+ ## The report format
52
+ Lead with a one-line verdict (ship / fix-first / not-ready) and counts by severity. Then a table: `Severity · Finding · Evidence (file:line) · Fix · Owning skill`. List what PASSED too, so the reader knows it was checked. End with the top 3 things to fix first. Do not inflate severity, and do not flag a "problem" you didn't verify against docs/catalog.
53
+
54
+ ## Common pitfalls (of the auditor)
55
+ 1. **Flagging from memory** — verify each symbol/prop against the catalog + docs before calling it wrong.
56
+ 2. **Auto-editing** — this is read-only; report, then ask.
57
+ 3. **Reading `node_modules`/`.d.ts`** — audit the user's code + docs, not kit internals.
58
+ 4. **Severity inflation** — a dev-only Auth Key in a local `.env` is not the same as one shipped in production; judge by what actually reaches users.
59
+
60
+ ## Verify it works
61
+ The report names the framework + family, lists ranked findings each with `file:line` + a fix + an owning skill, states what passed, and gives a clear verdict — and nothing was edited unless the user approved.
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: cometchat-compliance
3
+ description: "Data governance & compliance for CometChat — pick the data-residency region, satisfy GDPR/CCPA (right-to-erasure and data export), plan message retention & purge, and produce audit / eDiscovery records. Cross-family: all server/REST/dashboard-side. Triggers: 'is cometchat GDPR compliant', 'delete a user and their data', 'right to be forgotten', 'export a user's data', 'data residency EU', 'which region', 'message retention policy', 'audit log', 'eDiscovery', 'HIPAA/SOC2 chat', 'compliance review'."
4
+ license: "MIT"
5
+ compatibility: "CometChat REST API v3 (users · messages · conversations) + dashboard (regions, moderation records). Server-side over HTTPS."
6
+ metadata:
7
+ author: "CometChat"
8
+ version: "1.0.0"
9
+ tags: "cometchat compliance gdpr ccpa hipaa data-residency retention audit ediscovery erasure region"
10
+ ---
11
+
12
+ > **Ground truth:** REST shapes are FETCHED from the live docs — `{DOCS_BASE}/rest-api/users/delete` (erasure), `/rest-api/messages`, `/rest-api/conversations` (access/export), `/articles/properties-and-constraints` (regions, retention behaviour), `/moderation/reviewed-messages` (audit). `DOCS_BASE = https://www.cometchat.com/docs`; append `.md`. Where a control is a **dashboard setting or a sales/plan item** (a managed retention policy, a signed BAA, certifications), this skill says so plainly rather than inventing an API. Certification status (SOC 2, ISO 27001, HIPAA) is a business fact — confirm current scope at `{DOCS_BASE}`/the trust page, don't assert it from here.
13
+
14
+ ## Use this skill when
15
+ A privacy/security/compliance review, a data-subject request (delete/export), choosing where data lives, or planning retention and audit. All actions here are server-side; there is no client code to write.
16
+
17
+ ## 1. Data residency — choose the region up front
18
+ CometChat hosts each app in one region: **`us`, `eu`, or `in`** (`{DOCS_BASE}/rest-api/chat-apis` → Data Center Hosting — re-fetch before quoting to a customer; regions can be added). The region is fixed to the app and is part of every API/SDK endpoint (`https://{APP_ID}.api-{REGION}.cometchat.io/v3`, and the SDK init `region`). To keep EU data in the EU (GDPR) or meet a residency clause, **create the app in that region** — you cannot silently move an app's region afterward; migrating regions means a new app + a data migration (`cometchat-migrate-from-*` machinery / CometChat support). For full data sovereignty (your own infrastructure), see `cometchat-self-host`.
19
+
20
+ ## 2. Right to erasure (GDPR Art. 17 / CCPA delete)
21
+ Call the REST **Delete User** endpoint (`DELETE https://{APP_ID}.api-{REGION}.cometchat.io/v3/users/{uid}`; see the docs at `{DOCS_BASE}/rest-api/users`) with the **REST API Key**:
22
+ - **Default** (no body) → **deactivates** the user (recoverable; keeps data).
23
+ - **`{ "permanent": true }`** → **permanently deletes the user with all their messages, conversations and associated data. Irreversible.**
24
+
25
+ ```http
26
+ DELETE https://{APP_ID}.api-{REGION}.cometchat.io/v3/users/{uid}
27
+ apikey: {REST_API_KEY}
28
+ content-type: application/json
29
+
30
+ { "permanent": true }
31
+ ```
32
+ Wire this to your account-deletion flow so a "delete my account" request erases the user in CometChat too. Also flush their auth tokens (`cometchat-security`) so no session lingers.
33
+
34
+ ## 3. Right of access / portability (data export)
35
+ To answer a data-subject *access* request, export the user's data server-side via REST and hand it over in a portable format:
36
+ - their messages — the Messages REST collection (`{DOCS_BASE}/rest-api/messages`, filtered by the user);
37
+ - their conversations — `{DOCS_BASE}/rest-api/conversations`;
38
+ - their profile — the Users API.
39
+ Run it with the REST API Key from a server job; never expose these to the client. Fetch the exact filter params from the docs before writing the exporter.
40
+
41
+ ## 4. Retention & purge
42
+ CometChat keeps messages until they are deleted. Behaviour to know (`/articles/properties-and-constraints`): **soft-deleted** messages are retained; messages **permanently deleted via the API are not**. To enforce a retention window:
43
+ - run a scheduled server job that deletes messages/conversations older than your policy via the REST APIs (delete-message / delete-conversation / user permanent-delete);
44
+ - a **managed/automatic retention policy** (auto-purge at N days) is a dashboard/plan capability — confirm availability and configure it with CometChat rather than assuming an API. Do not invent a retention endpoint.
45
+ - **on-prem** gives you full control of storage lifecycle and backups (`cometchat-self-host`).
46
+
47
+ ## 5. Audit & eDiscovery
48
+ - **Moderation audit trail:** the dashboard's **Moderation → Reviewed Messages** records moderator activity and decisions for compliance (`{DOCS_BASE}/moderation/reviewed-messages`); pair with `cometchat-moderation`.
49
+ - **eDiscovery / legal hold:** export the relevant conversations and messages via the REST collections above (by user, group, or time range) — that is the supported way to produce chat records; there is no separate "eDiscovery API." For a legal hold, export before any retention purge runs.
50
+ - **Webhooks** (`{DOCS_BASE}/rest-api/management-apis/webhooks/overview`) can stream message/user events to your own immutable audit store in real time if you need a tamper-evident log outside CometChat.
51
+
52
+ ## 6. Certifications & agreements (business, not code)
53
+ SOC 2, ISO 27001, HIPAA (with a BAA), GDPR/CCPA posture, and pen-test reports are handled through CometChat's trust/compliance process, not the API. Point the reviewer to the current trust page and get agreements in writing; encryption in transit (TLS) is standard, and at-rest/e2e options + key management vary by plan/deployment — confirm the specifics for the customer's plan.
54
+
55
+ ## Common pitfalls
56
+ 1. **Region chosen by accident** — the default is `us`; an EU customer needs the app created in `eu` from day one.
57
+ 2. **"Delete" that only deactivates** — omitting `permanent: true` leaves the data; erasure requests need the flag.
58
+ 3. **Deleting the user but leaving live sessions** — also flush auth tokens (`cometchat-security`).
59
+ 4. **Assuming an automatic retention policy exists** — implement purge via REST/on-prem, or confirm the managed setting; don't invent it.
60
+ 5. **Asserting a certification from memory** — verify current SOC 2 / HIPAA / ISO scope with CometChat.
61
+
62
+ ## Verify it works
63
+ A test user permanently deleted returns success and their messages/conversations are gone · an access-request export produces the user's profile + messages + conversations · the app's region matches the customer's residency requirement · a retention job (or the confirmed managed policy) removes data past the window · moderation decisions appear in Reviewed Messages · webhooks (if used) land audit events in your store.
@@ -83,7 +83,7 @@ Widget themedHeader(User user) => CometChatMessageHeader(
83
83
  - **Text formatters** — `CometChatMentionsFormatter` and custom `CometChatTextFormatter` subclasses (`customization-text-formatters`, `custom-text-formatter-guide`). A subclass must implement `init`, `getMessageInputTextStyle`, `handlePreMessageSend`, `onChange` and `onScrollToBottom` — the class is abstract.
84
84
  - **Message templates** — custom message types and bubbles (`message-template`, → `-components`).
85
85
  - **Sounds** — the class is **`SoundManager`**, UN-prefixed (there is no `CometChatSoundManager`), a singleton: `SoundManager().play(sound: Sound.incomingMessage, customSound: "assets/ping.mp3")` / `.stop()`. Compiler-verified vs 6.1.0. It is absent from the catalog only because that tracks `CometChat*` symbols — same as `User`/`Group`. Page: `sound-manager`.
86
- - **Localization** — `Translations` from the **chat barrel**: `Translations.delegate` in `MaterialApp.localizationsDelegates`, `Translations.of(context)` for strings. v5's `package:cometchat_uikit_shared/l10n/translations.dart` is gone; the live `localize` page now documents the `Translations` path (DOCS-BACKLOG F7 corrected upstream verified `cometchat/docs`@`2ebb1db`, 2026-09-09). `CometChatLocalize` does not resolve in 6.1.0.
86
+ - **Localization** — via `CometChatLocalize`, the same localization class the other families use: register its delegate in `MaterialApp.localizationsDelegates` and read/override strings through it. Fetch the exact Flutter API from the live `localize` page (`references/docs-map.md` Localization). **[STAGED — needs the UI Kit change]** `CometChatLocalize` requires a `cometchat_chat_uikit` version that exposes it; the pinned **6.1.0 does not** (it exposes `Translations`). Bump the pin + refresh `catalogs/flutter-v6.json` when that kit ships — until then Flutter localization emitted this way will not compile.
87
87
 
88
88
  ## Common pitfalls (BAKED)
89
89
  - **Inventing a CometChat dark-mode switch.** Use `ThemeData` + `themeMode`; register the palette on both themes.
@@ -64,13 +64,14 @@ Everything here is **compiled against the published `cometchat_chat_uikit` 6.1.0
64
64
  `SoundManager().play(sound: Sound.incomingMessage)` / `.stop()`, compiler-verified vs 6.1.0). It looked
65
65
  missing only because the catalog tracks `CometChat*` symbols; the class is public and importable.
66
66
 
67
- ## Localization — use `Translations` from the chat barrel
68
- `CometChatLocalize` does not resolve in 6.1.0. The working entry point is **`Translations`, exported
69
- from the chat barrel**; `Translations.delegate` still goes in `MaterialApp.localizationsDelegates` and
70
- `Translations.of(context)` still resolves strings. A v5 app usually needs no change here beyond fixing
71
- which barrel its `as cc` prefix points at. (v5's `package:cometchat_uikit_shared/l10n/translations.dart`
72
- is gone; the live `localize` page now documents the `Translations` path DOCS-BACKLOG F7 corrected
73
- upstream, verified `cometchat/docs`@`2ebb1db`, 2026-09-09.)
67
+ ## Localization — use `CometChatLocalize`
68
+ Flutter localizes through **`CometChatLocalize`**, the same class as the other families: register its
69
+ delegate in `MaterialApp.localizationsDelegates` and read/override strings through it. Fetch the exact
70
+ Flutter API from the live `localize` page (`references/docs-map.md` Localization).
71
+ > **[STAGED needs the UI Kit change]** `CometChatLocalize` requires a `cometchat_chat_uikit` version
72
+ > that exposes it; the pinned **6.1.0 does not** (it exposes `Translations`). Bump the pin + refresh
73
+ > `catalogs/flutter-v6.json` when that kit ships — until then Flutter localization emitted this way
74
+ > will not compile. (The barrel-import notes below still describe the 6.1.0 shape.)
74
75
 
75
76
  ## Imports — expect this to break the MOST files
76
77
  - `package:cometchat_uikit_shared/...` → **gone**. Everything is `package:cometchat_chat_uikit/cometchat_chat_uikit.dart`.
@@ -14,6 +14,7 @@ metadata:
14
14
  ## Companion skills (read first)
15
15
  - `cometchat-flutter-v6-core` — install, credentials, `init→login→render`, `lifecycle.md`. This skill ASSUMES it.
16
16
  - `cometchat-flutter-v6-patterns` — where config comes from in your build pipeline.
17
+ - `cometchat-security` — the enterprise auth model this client-side hardening plugs into: wiring your IdP / SSO into the token flow (your IdP → your server → mint the CometChat auth token; CometChat is **not** an IdP), token expiry/refresh + re-login, RBAC roles + group (SBAC) scopes, and Auth Key vs auth token vs REST API Key. Load it for a security review or any SSO question.
17
18
 
18
19
  ## Use this skill when
19
20
  Hardening before release: "is the Auth Key safe to ship", "set up production auth", "what do I check before shipping".