@cometchat/skills 3.0.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.
- package/README.md +112 -0
- package/bin/install.js +211 -0
- package/package.json +70 -0
- package/skills/.claude-plugin/marketplace.json +86 -0
- package/skills/cometchat/SKILL.md +662 -0
- package/skills/cometchat-astro-patterns/SKILL.md +687 -0
- package/skills/cometchat-components/SKILL.md +993 -0
- package/skills/cometchat-core/SKILL.md +642 -0
- package/skills/cometchat-customization/SKILL.md +555 -0
- package/skills/cometchat-customization/references/component-catalog.md +236 -0
- package/skills/cometchat-features/SKILL.md +514 -0
- package/skills/cometchat-nextjs-patterns/SKILL.md +857 -0
- package/skills/cometchat-placement/SKILL.md +1293 -0
- package/skills/cometchat-production/SKILL.md +960 -0
- package/skills/cometchat-react-patterns/SKILL.md +527 -0
- package/skills/cometchat-react-router-patterns/SKILL.md +717 -0
- package/skills/cometchat-theming/SKILL.md +335 -0
- package/skills/cometchat-troubleshooting/SKILL.md +274 -0
package/README.md
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# cometchat-skills
|
|
2
|
+
|
|
3
|
+
**Add CometChat to any React project through your AI coding agent.** Works with Claude Code, Cursor, Codex, VS Code Copilot, Windsurf, Cline, Kiro, and [30+ more agents](https://github.com/vercel-labs/skills).
|
|
4
|
+
|
|
5
|
+
v3 takes an AI-first approach: your agent has a short conversation with you to understand your project and chat requirements, then writes production-grade integration code tailored to the files you already have.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npx @cometchat/skills add
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Supported IDEs: Claude Code (default), Cursor, Kiro, VS Code Copilot. Use `--ide <name>` to target a specific one, or `--ide all`.
|
|
14
|
+
|
|
15
|
+
Then in your IDE:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/cometchat add chat to my app
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## What happens
|
|
22
|
+
|
|
23
|
+
1. **Detects** your framework (React / Next.js / React Router / Astro), router, env prefix, existing auth system
|
|
24
|
+
2. **Onboards** you to CometChat in the terminal — no browser round-trip. Signup, login, app creation all via the CLI.
|
|
25
|
+
3. **Asks** what you're building (marketplace, SaaS, messaging, support, social, or just exploring) and **where** chat should live in your project — it reads your routes, nav, and components before proposing a placement
|
|
26
|
+
4. **Shows the plan** — exactly which files it will create, which it will modify, and which it will not touch — and waits for your approval
|
|
27
|
+
5. **Writes** the provider, integration components, and route/trigger wiring
|
|
28
|
+
6. **Saves** `.env` with the correct framework prefix (`VITE_` / `NEXT_PUBLIC_` / `PUBLIC_`) and records your choices in `.cometchat/config.json`
|
|
29
|
+
|
|
30
|
+
No templates, no experiences to pick — the agent writes real code that fits your app.
|
|
31
|
+
|
|
32
|
+
## Supported frameworks
|
|
33
|
+
|
|
34
|
+
| Framework | Status |
|
|
35
|
+
|---|---|
|
|
36
|
+
| React.js / Vite / CRA | ✅ |
|
|
37
|
+
| Next.js (App Router + Pages Router) | ✅ |
|
|
38
|
+
| React Router v6 / v7 | ✅ |
|
|
39
|
+
| Astro (React islands) | ✅ |
|
|
40
|
+
| React Native | 🔜 Coming soon |
|
|
41
|
+
| Flutter | 🔜 Coming soon |
|
|
42
|
+
| Android / iOS | 🔜 Coming soon |
|
|
43
|
+
|
|
44
|
+
## After the first integration
|
|
45
|
+
|
|
46
|
+
Re-run `/cometchat` anytime to pick from the iteration menu:
|
|
47
|
+
|
|
48
|
+
- **Customize look & feel** — theme presets (slack / whatsapp / imessage / discord / notion) or your own brand color
|
|
49
|
+
- **Add a feature** — 40+ features including calls, reactions, polls, AI smart replies, file sharing, presence
|
|
50
|
+
- **Customize a component** — custom message bubbles, headers, composer actions, empty/loading states
|
|
51
|
+
- **Add a floating widget** — overlay chat button + drawer on top of your existing app
|
|
52
|
+
- **Set up production auth** — replace the dev Auth Key with a server-side token endpoint
|
|
53
|
+
- **Set up user management** — server endpoints for creating/updating/deleting CometChat users
|
|
54
|
+
- **Run diagnostics** — verify, drift detection, symptom-to-cause lookup
|
|
55
|
+
|
|
56
|
+
## Recommended: CometChat Docs MCP
|
|
57
|
+
|
|
58
|
+
For deeper component customization (custom views, SDK events, request builders), install the docs MCP:
|
|
59
|
+
|
|
60
|
+
**Claude Code:**
|
|
61
|
+
```bash
|
|
62
|
+
claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Cursor** (`.cursor/mcp.json`):
|
|
66
|
+
```json
|
|
67
|
+
{ "mcpServers": { "cometchat-docs": { "url": "https://www.cometchat.com/docs/mcp" } } }
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Windsurf:**
|
|
71
|
+
```json
|
|
72
|
+
{ "mcpServers": { "cometchat-docs": { "type": "sse", "serverUrl": "https://www.cometchat.com/docs/mcp" } } }
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
No authentication required. Not needed for the initial integration — the skill handles Phase A without it.
|
|
76
|
+
|
|
77
|
+
## CLI (used by the agent under the hood)
|
|
78
|
+
|
|
79
|
+
The skill calls `@cometchat/skills-cli` commands. You can also run them directly:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Onboarding
|
|
83
|
+
npx @cometchat/skills-cli auth signup # create account, all in terminal
|
|
84
|
+
npx @cometchat/skills-cli auth login # sign in (masked password)
|
|
85
|
+
npx @cometchat/skills-cli auth status # check current session
|
|
86
|
+
|
|
87
|
+
# App provisioning
|
|
88
|
+
npx @cometchat/skills-cli provision list # list apps on your account
|
|
89
|
+
npx @cometchat/skills-cli provision setup \
|
|
90
|
+
--name my-chat --region us --industry saas_businesses \
|
|
91
|
+
--framework reactjs # create app + write .env + save config
|
|
92
|
+
|
|
93
|
+
# Project introspection
|
|
94
|
+
npx @cometchat/skills-cli detect # framework, router, env prefix
|
|
95
|
+
npx @cometchat/skills-cli config show # read .cometchat/config.json
|
|
96
|
+
npx @cometchat/skills-cli doctor # diagnostics
|
|
97
|
+
|
|
98
|
+
# See everything
|
|
99
|
+
npx @cometchat/skills-cli --help
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Prerequisites
|
|
103
|
+
|
|
104
|
+
- An AI coding agent ([Claude Code](https://claude.ai/code), [Cursor](https://cursor.sh), [Kiro](https://kiro.dev), VS Code Copilot, or any [skills.sh](https://skills.sh)-compatible agent)
|
|
105
|
+
- Node.js 18+
|
|
106
|
+
- React 18+ (React 19 fully supported)
|
|
107
|
+
|
|
108
|
+
No CometChat account required before starting — the skill walks you through signup from the terminal.
|
|
109
|
+
|
|
110
|
+
## License
|
|
111
|
+
|
|
112
|
+
MIT
|
package/bin/install.js
ADDED
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
"use strict";
|
|
4
|
+
|
|
5
|
+
const fs = require("fs");
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const os = require("os");
|
|
8
|
+
|
|
9
|
+
// ── Lazy-load optional deps ───────────────────────────────────────────────────
|
|
10
|
+
function tryRequire(name) {
|
|
11
|
+
try { return require(name); } catch { return null; }
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const chalk = tryRequire("chalk");
|
|
15
|
+
const ora = tryRequire("ora");
|
|
16
|
+
|
|
17
|
+
const c = {
|
|
18
|
+
bold: (s) => chalk ? chalk.bold(s) : s,
|
|
19
|
+
cyan: (s) => chalk ? chalk.cyan(s) : s,
|
|
20
|
+
green: (s) => chalk ? chalk.green(s) : s,
|
|
21
|
+
yellow: (s) => chalk ? chalk.yellow(s) : s,
|
|
22
|
+
gray: (s) => chalk ? chalk.gray(s) : s,
|
|
23
|
+
red: (s) => chalk ? chalk.red(s) : s,
|
|
24
|
+
dim: (s) => chalk ? chalk.dim(s) : s,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// ── Skills registry ───────────────────────────────────────────────────────────
|
|
28
|
+
const SKILLS_SRC_DIR = path.join(__dirname, "..", "skills");
|
|
29
|
+
|
|
30
|
+
const SKILLS = [
|
|
31
|
+
// Core (always installed)
|
|
32
|
+
{ name: "cometchat", description: "Entry point — detects framework, handles onboarding, guides integration" },
|
|
33
|
+
{ name: "cometchat-core", description: "Foundational rules — init, login, CSS, env vars, SSR safety, provider" },
|
|
34
|
+
{ name: "cometchat-components", description: "Component catalog — names, props, composition patterns" },
|
|
35
|
+
{ name: "cometchat-placement", description: "Where to put chat — route, modal, drawer, widget, embedded" },
|
|
36
|
+
// Framework patterns
|
|
37
|
+
{ name: "cometchat-react-patterns", description: "React / Vite / CRA integration patterns" },
|
|
38
|
+
{ name: "cometchat-nextjs-patterns", description: "Next.js App Router + Pages Router patterns" },
|
|
39
|
+
{ name: "cometchat-react-router-patterns", description: "React Router v6 / v7 patterns" },
|
|
40
|
+
{ name: "cometchat-astro-patterns", description: "Astro React islands patterns" },
|
|
41
|
+
// Phase B
|
|
42
|
+
{ name: "cometchat-theming", description: "Theme presets, brand colors, CSS variable overrides" },
|
|
43
|
+
{ name: "cometchat-features", description: "40+ feature catalog — calls, polls, AI, moderation" },
|
|
44
|
+
{ name: "cometchat-customization", description: "Component customization — custom views, builders, events" },
|
|
45
|
+
{ name: "cometchat-production", description: "Production auth — token endpoints, user management, security" },
|
|
46
|
+
{ name: "cometchat-troubleshooting", description: "Diagnostics — verify, drift, doctor, symptom lookup" },
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
50
|
+
function ensureDir(dir) {
|
|
51
|
+
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// ── IDE target directories ────────────────────────────────────────────────────
|
|
55
|
+
const IDE_TARGETS = {
|
|
56
|
+
claude: { local: ".claude/skills", global: path.join(os.homedir(), ".claude", "skills"), skillFile: "SKILL.md" },
|
|
57
|
+
// Cursor loads agent "skills" from `.cursor/skills/` (not `.cursor/rules/`).
|
|
58
|
+
cursor: { local: ".cursor/skills", global: path.join(os.homedir(), ".cursor", "skills"), skillFile: "SKILL.md" },
|
|
59
|
+
kiro: { local: ".kiro/skills", global: path.join(os.homedir(), ".kiro", "skills"), skillFile: "SKILL.md" },
|
|
60
|
+
copilot: { local: ".github", global: null, skillFile: null }, // single-file mode
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// Each skill is installed as <base>/<name>/SKILL.md (or concatenated for copilot)
|
|
64
|
+
// Returns the destination path on success, or null if the source SKILL.md
|
|
65
|
+
// doesn't exist.
|
|
66
|
+
function installSkill(skill, baseDir, skillFile) {
|
|
67
|
+
const src = path.join(SKILLS_SRC_DIR, skill.name, "SKILL.md");
|
|
68
|
+
if (!fs.existsSync(src)) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const skillDir = path.join(baseDir, skill.name);
|
|
72
|
+
ensureDir(skillDir);
|
|
73
|
+
const dest = path.join(skillDir, skillFile);
|
|
74
|
+
fs.copyFileSync(src, dest);
|
|
75
|
+
|
|
76
|
+
// Copy supporting files (e.g. references/component-catalog.md)
|
|
77
|
+
// that live alongside SKILL.md in the skill's directory.
|
|
78
|
+
const refsDir = path.join(SKILLS_SRC_DIR, skill.name, "references");
|
|
79
|
+
if (fs.existsSync(refsDir)) {
|
|
80
|
+
const destRefs = path.join(skillDir, "references");
|
|
81
|
+
ensureDir(destRefs);
|
|
82
|
+
for (const file of fs.readdirSync(refsDir)) {
|
|
83
|
+
fs.copyFileSync(path.join(refsDir, file), path.join(destRefs, file));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return dest;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function installCopilotSkills(baseDir) {
|
|
91
|
+
ensureDir(baseDir);
|
|
92
|
+
const dest = path.join(baseDir, "copilot-instructions.md");
|
|
93
|
+
let content = "# CometChat Skills\n\n";
|
|
94
|
+
for (const skill of SKILLS) {
|
|
95
|
+
const src = path.join(SKILLS_SRC_DIR, skill.name, "SKILL.md");
|
|
96
|
+
if (!fs.existsSync(src)) {
|
|
97
|
+
continue; // skip skills that haven't been promoted yet
|
|
98
|
+
}
|
|
99
|
+
content += fs.readFileSync(src, "utf8") + "\n\n---\n\n";
|
|
100
|
+
}
|
|
101
|
+
fs.writeFileSync(dest, content, "utf8");
|
|
102
|
+
return dest;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function printHelp() {
|
|
106
|
+
console.log(`
|
|
107
|
+
${c.bold("cometchat-skills")} — Install CometChat AI coding skills
|
|
108
|
+
|
|
109
|
+
${c.bold("Usage:")}
|
|
110
|
+
${c.cyan("npx @cometchat/skills add")} Install for Claude Code (default)
|
|
111
|
+
${c.cyan("npx @cometchat/skills add --ide cursor")} Install for Cursor
|
|
112
|
+
${c.cyan("npx @cometchat/skills add --ide kiro")} Install for Kiro
|
|
113
|
+
${c.cyan("npx @cometchat/skills add --ide copilot")} Install for VS Code Copilot
|
|
114
|
+
${c.cyan("npx @cometchat/skills add --ide all")} Install for all supported IDEs
|
|
115
|
+
${c.cyan("npx @cometchat/skills add --global")} Install globally
|
|
116
|
+
${c.cyan("npx @cometchat/skills add --list")} Show available skills
|
|
117
|
+
|
|
118
|
+
${c.bold("Supported IDEs:")} claude, cursor, kiro, copilot, all
|
|
119
|
+
|
|
120
|
+
${c.bold("After installing, open your project in your IDE and run:")}
|
|
121
|
+
${c.cyan("/cometchat")}
|
|
122
|
+
`);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ── Main ──────────────────────────────────────────────────────────────────────
|
|
126
|
+
async function main() {
|
|
127
|
+
const args = process.argv.slice(2);
|
|
128
|
+
const cmd = args[0];
|
|
129
|
+
|
|
130
|
+
if (!cmd || cmd === "--help" || cmd === "-h") {
|
|
131
|
+
printHelp();
|
|
132
|
+
process.exit(0);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (cmd !== "add") {
|
|
136
|
+
console.error(c.red(`\n Unknown command: ${cmd}`));
|
|
137
|
+
printHelp();
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const isGlobal = args.includes("--global") || args.includes("-g");
|
|
142
|
+
const listOnly = args.includes("--list") || args.includes("-l");
|
|
143
|
+
const ideIdx = args.indexOf("--ide");
|
|
144
|
+
const ideArg = ideIdx !== -1 ? args[ideIdx + 1] : "claude";
|
|
145
|
+
|
|
146
|
+
if (listOnly) {
|
|
147
|
+
console.log(`\n ${c.bold("Available skills:")}\n`);
|
|
148
|
+
for (const s of SKILLS) {
|
|
149
|
+
console.log(` ${c.cyan(s.name)}`);
|
|
150
|
+
console.log(` ${c.dim(s.description)}\n`);
|
|
151
|
+
}
|
|
152
|
+
process.exit(0);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const targets = ideArg === "all" ? Object.keys(IDE_TARGETS) : [ideArg];
|
|
156
|
+
|
|
157
|
+
for (const ide of targets) {
|
|
158
|
+
const target = IDE_TARGETS[ide];
|
|
159
|
+
if (!target) {
|
|
160
|
+
console.error(c.red(`\n Unknown IDE: ${ide}. Valid: ${Object.keys(IDE_TARGETS).join(", ")}, all`));
|
|
161
|
+
process.exit(1);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (isGlobal && !target.global) {
|
|
165
|
+
console.log(`\n ${c.yellow("⚠")} ${ide} does not support global install — skipping.`);
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const baseDir = isGlobal ? target.global : path.join(process.cwd(), target.local);
|
|
170
|
+
const scopeLabel = isGlobal
|
|
171
|
+
? `global ${c.gray(`(${target.global}/`)}`
|
|
172
|
+
: `local ${c.gray(`(${target.local}/)`)}`;
|
|
173
|
+
|
|
174
|
+
console.log(`\n ${c.bold(c.cyan("CometChat Skills"))} — ${ide} integration\n`);
|
|
175
|
+
console.log(` Scope: ${scopeLabel}\n`);
|
|
176
|
+
|
|
177
|
+
ensureDir(baseDir);
|
|
178
|
+
|
|
179
|
+
if (ide === "copilot") {
|
|
180
|
+
const spinner = ora ? ora({ text: "copilot-instructions.md", prefixText: " " }).start() : null;
|
|
181
|
+
try {
|
|
182
|
+
const dest = installCopilotSkills(baseDir);
|
|
183
|
+
if (spinner) spinner.succeed(c.green("✓ ") + c.bold("copilot-instructions.md") + ` ${c.dim("All skills concatenated")}`);
|
|
184
|
+
else console.log(` ✓ copilot-instructions.md`);
|
|
185
|
+
} catch (err) {
|
|
186
|
+
if (spinner) spinner.fail(c.red(`✗ copilot-instructions.md: ${err.message}`));
|
|
187
|
+
else console.error(` ✗ copilot-instructions.md: ${err.message}`);
|
|
188
|
+
}
|
|
189
|
+
} else {
|
|
190
|
+
for (const skill of SKILLS) {
|
|
191
|
+
const spinner = ora ? ora({ text: skill.name, prefixText: " " }).start() : null;
|
|
192
|
+
try {
|
|
193
|
+
installSkill(skill, baseDir, target.skillFile);
|
|
194
|
+
if (spinner) spinner.succeed(c.green("✓ ") + c.bold(skill.name) + ` ${c.dim(skill.description)}`);
|
|
195
|
+
else console.log(` ✓ ${skill.name}`);
|
|
196
|
+
} catch (err) {
|
|
197
|
+
if (spinner) spinner.fail(c.red(`✗ ${skill.name}: ${err.message}`));
|
|
198
|
+
else console.error(` ✗ ${skill.name}: ${err.message}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
console.log(`\n ${c.bold("Done.")} Open your project in your IDE and run:\n`);
|
|
205
|
+
console.log(` ${c.cyan("/cometchat")}\n`);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
main().catch((err) => {
|
|
209
|
+
console.error(chalk ? chalk.red(`\n Error: ${err.message}`) : `\n Error: ${err.message}`);
|
|
210
|
+
process.exit(1);
|
|
211
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cometchat/skills",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"description": "AI coding skills for CometChat UI Kit — works with Claude Code, Cursor, Kiro, and Copilot",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"claude-code",
|
|
10
|
+
"claude-skill",
|
|
11
|
+
"cometchat",
|
|
12
|
+
"react",
|
|
13
|
+
"nextjs",
|
|
14
|
+
"react-router",
|
|
15
|
+
"astro",
|
|
16
|
+
"chat",
|
|
17
|
+
"ui-kit"
|
|
18
|
+
],
|
|
19
|
+
"author": "swapnil-cometchat",
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "https://github.com/cometchat/cometchat-skills.git"
|
|
24
|
+
},
|
|
25
|
+
"homepage": "https://github.com/cometchat/cometchat-skills#readme",
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/cometchat/cometchat-skills/issues"
|
|
28
|
+
},
|
|
29
|
+
"bin": {
|
|
30
|
+
"cometchat-skills": "./bin/install.js"
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"bin/",
|
|
34
|
+
"skills/"
|
|
35
|
+
],
|
|
36
|
+
"engines": {
|
|
37
|
+
"node": ">=16"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"setup": "node bin/install.js add",
|
|
41
|
+
"test": "bash test-suite/scripts/run-matrix.sh --models claude-sonnet-4-6 --experiences 1 --projects fresh --ide cli",
|
|
42
|
+
"test:quick": "bash test-suite/scripts/run-test.sh --framework reactjs --experience 1 --model claude-sonnet-4-6 --project fresh --keep",
|
|
43
|
+
"test:matrix": "bash test-suite/scripts/run-matrix.sh",
|
|
44
|
+
"test:trials": "bash test-suite/scripts/run-test.sh --framework reactjs --experience 1 --model claude-sonnet-4-6 --project fresh --trials 3",
|
|
45
|
+
"test:baseline": "bash test-suite/scripts/baseline.sh --framework reactjs --experience 1 --model claude-sonnet-4-6 --project fresh",
|
|
46
|
+
"test:prompts": "node test-suite/scripts/run-prompts.js --category all --model claude-sonnet-4-6",
|
|
47
|
+
"test:prompts:negative": "node test-suite/scripts/run-prompts.js --category negative --model claude-sonnet-4-6",
|
|
48
|
+
"test:prompts:edge": "node test-suite/scripts/run-prompts.js --category edge_cases --model claude-sonnet-4-6",
|
|
49
|
+
"test:prompts:dry": "node test-suite/scripts/run-prompts.js --category all --dry-run",
|
|
50
|
+
"test:gemini": "bash test-suite/scripts/run-matrix.sh --models gemini-2.5-pro,gemini-2.5-flash --provider custom --cli-cmd node --cli-flags \"$PWD/test-suite/scripts/gemini-cli.js\"",
|
|
51
|
+
"test:gemini:quick": "bash test-suite/scripts/run-test.sh --framework reactjs --experience 1 --model gemini-2.5-pro --project fresh --provider custom --cli-cmd node --cli-flags \"$PWD/test-suite/scripts/gemini-cli.js\"",
|
|
52
|
+
"test:codex": "bash test-suite/scripts/run-matrix.sh --models o3,o4-mini,gpt-4.1 --provider custom --cli-cmd node --cli-flags \"$PWD/test-suite/scripts/codex-cli.js\"",
|
|
53
|
+
"test:codex:quick": "bash test-suite/scripts/run-test.sh --framework reactjs --experience 1 --model o3 --project fresh --provider custom --cli-cmd node --cli-flags \"$PWD/test-suite/scripts/codex-cli.js\"",
|
|
54
|
+
"test:codex:matrix": "bash test-suite/scripts/run-matrix.sh --models o3,o4-mini,gpt-4.1,gpt-4.1-mini --provider custom --cli-cmd node --cli-flags \"$PWD/test-suite/scripts/codex-cli.js\"",
|
|
55
|
+
"test:report": "bash test-suite/scripts/report.sh",
|
|
56
|
+
"test:verify": "bash test-suite/scripts/verify.sh",
|
|
57
|
+
"test:eval": "bash test-suite/run.sh"
|
|
58
|
+
},
|
|
59
|
+
"dependencies": {
|
|
60
|
+
"chalk": "^4.1.2",
|
|
61
|
+
"ora": "^5.4.1"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@playwright/test": "^1.59.0",
|
|
65
|
+
"playwright": "^1.59.0",
|
|
66
|
+
"ts-morph": "^27.0.2",
|
|
67
|
+
"@google/genai": "^1.47.0",
|
|
68
|
+
"openai": "^4.80.0"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cometchat-skills",
|
|
3
|
+
"display_name": "CometChat Skills for Claude",
|
|
4
|
+
"description": "AI-native skill suite for integrating CometChat React UI Kit v6 into any React project. Skills teach Claude integration patterns, component APIs, and production hardening instead of relying on templates.",
|
|
5
|
+
"version": "3.0.0",
|
|
6
|
+
"skills": [
|
|
7
|
+
{
|
|
8
|
+
"name": "cometchat",
|
|
9
|
+
"path": "skills/cometchat/SKILL.md",
|
|
10
|
+
"group": "core",
|
|
11
|
+
"description": "Entry-point dispatcher. Detects framework, understands the project, recommends integration shape, and routes to the right skills."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "cometchat-core",
|
|
15
|
+
"path": "skills/cometchat-core/SKILL.md",
|
|
16
|
+
"group": "core",
|
|
17
|
+
"description": "Foundational rules — initialization, login, CSS, env vars, SSR safety, provider pattern, and anti-patterns."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"name": "cometchat-components",
|
|
21
|
+
"path": "skills/cometchat-components/SKILL.md",
|
|
22
|
+
"group": "core",
|
|
23
|
+
"description": "Complete catalog of CometChat React UI Kit v6 components — names, props, and composition patterns."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "cometchat-placement",
|
|
27
|
+
"path": "skills/cometchat-placement/SKILL.md",
|
|
28
|
+
"group": "core",
|
|
29
|
+
"description": "Where to put chat — route, modal, drawer, embedded panel, or floating widget patterns."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "cometchat-react-patterns",
|
|
33
|
+
"path": "skills/cometchat-react-patterns/SKILL.md",
|
|
34
|
+
"group": "framework",
|
|
35
|
+
"description": "Integration patterns for React projects (Vite or CRA) — provider setup, routing, env vars."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "cometchat-nextjs-patterns",
|
|
39
|
+
"path": "skills/cometchat-nextjs-patterns/SKILL.md",
|
|
40
|
+
"group": "framework",
|
|
41
|
+
"description": "Integration patterns for Next.js (App Router + Pages Router) — SSR prevention, dynamic imports, API routes."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "cometchat-react-router-patterns",
|
|
45
|
+
"path": "skills/cometchat-react-router-patterns/SKILL.md",
|
|
46
|
+
"group": "framework",
|
|
47
|
+
"description": "Integration patterns for React Router (v6 library + v7 framework mode) — outlet nesting, SSR guards."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "cometchat-astro-patterns",
|
|
51
|
+
"path": "skills/cometchat-astro-patterns/SKILL.md",
|
|
52
|
+
"group": "framework",
|
|
53
|
+
"description": "Integration patterns for Astro — React islands, client:only rendering, island communication."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "cometchat-theming",
|
|
57
|
+
"path": "skills/cometchat-theming/SKILL.md",
|
|
58
|
+
"group": "features",
|
|
59
|
+
"description": "Theme customization — CSS variable overrides, preset themes, dark mode, brand color mapping."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "cometchat-features",
|
|
63
|
+
"path": "skills/cometchat-features/SKILL.md",
|
|
64
|
+
"group": "features",
|
|
65
|
+
"description": "Feature catalog — calls, reactions, polls, AI features, and how to enable each one."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "cometchat-production",
|
|
69
|
+
"path": "skills/cometchat-production/SKILL.md",
|
|
70
|
+
"group": "features",
|
|
71
|
+
"description": "Production readiness — server-side token auth, user management CRUD, environment hardening, security checklist."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "cometchat-customization",
|
|
75
|
+
"path": "skills/cometchat-customization/SKILL.md",
|
|
76
|
+
"group": "features",
|
|
77
|
+
"description": "Component customization — four-tier discovery, custom view slots, request builders, event subscriptions, and CSS overrides."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "cometchat-troubleshooting",
|
|
81
|
+
"path": "skills/cometchat-troubleshooting/SKILL.md",
|
|
82
|
+
"group": "features",
|
|
83
|
+
"description": "Diagnostics — verify checks, drift detection, error decoding, and targeted fixes."
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
}
|