class-ai-agent 1.4.1 → 1.5.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/.agent/README.md +10 -5
- package/.agent/rules/agent-continuity.md +44 -0
- package/.agent/rules/antigravity-overview.md +38 -0
- package/.agent/rules/api-conventions.md +85 -0
- package/.agent/rules/clean-code.md +211 -0
- package/.agent/rules/code-style.md +92 -0
- package/.agent/rules/codegraph.md +47 -0
- package/.agent/rules/database.md +66 -0
- package/.agent/rules/error-handling.md +98 -0
- package/.agent/rules/git-workflow.md +83 -0
- package/.agent/rules/monitoring.md +317 -0
- package/.agent/rules/naming-conventions.md +266 -0
- package/.agent/rules/project-structure.md +71 -0
- package/.agent/rules/security.md +95 -0
- package/.agent/rules/system-design.md +168 -0
- package/.agent/rules/tech-stack.md +463 -0
- package/.agent/rules/testing.md +110 -0
- package/.agents/agents/backend.md +395 -0
- package/.agents/agents/business-analyst.md +380 -0
- package/.agents/agents/code-reviewer.md +110 -0
- package/.agents/agents/copywriter-seo.md +236 -0
- package/.agents/agents/frontend.md +384 -0
- package/.agents/agents/project-manager.md +201 -0
- package/.agents/agents/qa.md +221 -0
- package/.agents/agents/security-auditor.md +143 -0
- package/.agents/agents/systems-architect.md +211 -0
- package/.agents/agents/test-engineer.md +123 -0
- package/.agents/agents/ui-ux-designer.md +210 -0
- package/.agents/references/accessibility-checklist.md +174 -0
- package/.agents/references/agent-continuity.md +42 -0
- package/.agents/references/codegraph.md +90 -0
- package/.agents/references/mcp-antigravity.md +71 -0
- package/.agents/references/performance-checklist.md +150 -0
- package/.agents/references/security-checklist.md +94 -0
- package/.agents/references/supabase.md +55 -0
- package/.agents/references/testing-patterns.md +183 -0
- package/.agents/skills/agent-continuity/SKILL.md +70 -0
- package/.agents/skills/code-review/SKILL.md +208 -0
- package/.agents/skills/deploy/SKILL.md +68 -0
- package/.agents/skills/deploy/deploy.md +735 -0
- package/.agents/skills/incremental-implementation/SKILL.md +210 -0
- package/.agents/skills/security-review/SKILL.md +71 -0
- package/.agents/skills/supabase/SKILL.md +135 -0
- package/.agents/skills/supabase/UPSTREAM.md +16 -0
- package/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
- package/.agents/skills/supabase/references/skill-feedback.md +17 -0
- package/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/.agents/skills/supabase-postgres-best-practices/UPSTREAM.md +16 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/.agents/skills/tdd/SKILL.md +217 -0
- package/.agents/skills/ui-ux-pro-max/SKILL.md +288 -0
- package/.agents/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agents/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agents/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agents/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agents/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agents/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/.agents/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agents/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agents/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agents/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agents/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agents/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/.agents/workflows/build.md +132 -0
- package/.agents/workflows/debug.md +242 -0
- package/.agents/workflows/deploy.md +43 -0
- package/.agents/workflows/fix-issue.md +45 -0
- package/.agents/workflows/handoff.md +93 -0
- package/.agents/workflows/plan.md +125 -0
- package/.agents/workflows/publish-npm.md +122 -0
- package/.agents/workflows/resume.md +106 -0
- package/.agents/workflows/review.md +53 -0
- package/.agents/workflows/simplify.md +221 -0
- package/.agents/workflows/spec.md +95 -0
- package/.agents/workflows/test.md +213 -0
- package/.cursor/rules/cursor-overview.mdc +3 -2
- package/.kiro/steering/kiro-overview.md +2 -2
- package/AGENTS.md +4 -1
- package/GEMINI.md +152 -0
- package/README.md +52 -15
- package/bin/class-ai-agent.cjs +85 -9
- package/package.json +9 -4
package/bin/class-ai-agent.cjs
CHANGED
|
@@ -13,7 +13,7 @@ function readPkg() {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
function printHelp() {
|
|
16
|
-
console.log(`class-ai-agent — Install Claude Code, Cursor &
|
|
16
|
+
console.log(`class-ai-agent — Install Claude Code, Cursor, Kiro & Antigravity AI agent scaffolding
|
|
17
17
|
|
|
18
18
|
Usage:
|
|
19
19
|
npx class-ai-agent [init] [options]
|
|
@@ -23,15 +23,17 @@ Options:
|
|
|
23
23
|
--claude Install only .claude/
|
|
24
24
|
--cursor Install only .cursor/
|
|
25
25
|
--kiro Install only .kiro/
|
|
26
|
+
--antigravity Install only .agents/, .agent/rules/, GEMINI.md
|
|
26
27
|
-f, --force Overwrite existing files or directories
|
|
27
28
|
-h, --help Show help
|
|
28
29
|
-v, --version Print version
|
|
29
30
|
|
|
30
|
-
AGENTS.md is installed with --cursor, --kiro, or a full install (no --*-only flags).
|
|
31
|
+
AGENTS.md is installed with --cursor, --kiro, --antigravity, or a full install (no --*-only flags).
|
|
31
32
|
|
|
32
33
|
.agent/:
|
|
33
34
|
Cross-tool session handoff (.agent/SESSION.md). Seeded from template on install;
|
|
34
35
|
existing SESSION.md is never overwritten unless you use --force on .agent/.
|
|
36
|
+
Antigravity supplement rules live in .agent/rules/ (merged on install).
|
|
35
37
|
|
|
36
38
|
CodeGraph:
|
|
37
39
|
After install, runs "npx @colbymchenry/codegraph init -i" in the target directory
|
|
@@ -40,11 +42,13 @@ CodeGraph:
|
|
|
40
42
|
Supabase:
|
|
41
43
|
Bundled skills under skills/supabase/ and skills/supabase-postgres-best-practices/.
|
|
42
44
|
MCP: https://mcp.supabase.com/mcp (OAuth on first use). Reload Cursor / restart Kiro after install.
|
|
45
|
+
Antigravity: configure ~/.gemini/antigravity/mcp_config.json (see .agents/references/mcp-antigravity.md).
|
|
43
46
|
|
|
44
47
|
Examples:
|
|
45
48
|
npx class-ai-agent
|
|
46
49
|
npx class-ai-agent --dir ./my-app
|
|
47
50
|
npx class-ai-agent --kiro --force
|
|
51
|
+
npx class-ai-agent --antigravity
|
|
48
52
|
CODEGRAPH_SKIP_INIT=1 npx class-ai-agent
|
|
49
53
|
`);
|
|
50
54
|
}
|
|
@@ -56,6 +60,7 @@ function parseArgs(argv) {
|
|
|
56
60
|
claudeOnly: false,
|
|
57
61
|
cursorOnly: false,
|
|
58
62
|
kiroOnly: false,
|
|
63
|
+
antigravityOnly: false,
|
|
59
64
|
force: false,
|
|
60
65
|
help: false,
|
|
61
66
|
version: false,
|
|
@@ -92,6 +97,10 @@ function parseArgs(argv) {
|
|
|
92
97
|
opts.kiroOnly = true;
|
|
93
98
|
continue;
|
|
94
99
|
}
|
|
100
|
+
if (a === '--antigravity') {
|
|
101
|
+
opts.antigravityOnly = true;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
95
104
|
if (a === '-d' || a === '--dir') {
|
|
96
105
|
const v = argv[++i];
|
|
97
106
|
if (!v) {
|
|
@@ -129,6 +138,27 @@ function copyDir(src, dest, { force }) {
|
|
|
129
138
|
fs.cpSync(src, dest, { recursive: true });
|
|
130
139
|
}
|
|
131
140
|
|
|
141
|
+
function mergeDir(src, dest, { force }) {
|
|
142
|
+
if (!fs.existsSync(src)) {
|
|
143
|
+
console.error(`Error: template missing from package: ${src}`);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
147
|
+
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
148
|
+
const srcPath = path.join(src, entry.name);
|
|
149
|
+
const destPath = path.join(dest, entry.name);
|
|
150
|
+
if (entry.isDirectory()) {
|
|
151
|
+
mergeDir(srcPath, destPath, { force });
|
|
152
|
+
} else if (entry.isFile()) {
|
|
153
|
+
if (fs.existsSync(destPath) && !force) {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
ensureParentDir(destPath);
|
|
157
|
+
fs.copyFileSync(srcPath, destPath);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
132
162
|
function copyFile(src, dest, { force }) {
|
|
133
163
|
if (!fs.existsSync(src)) {
|
|
134
164
|
console.error(`Error: template missing from package: ${src}`);
|
|
@@ -183,7 +213,7 @@ function runCodegraphInit(targetDir) {
|
|
|
183
213
|
if (result.status === 0) {
|
|
184
214
|
console.log(`CodeGraph: index ready under ${path.join(targetDir, '.codegraph')}`);
|
|
185
215
|
console.log(
|
|
186
|
-
'CodeGraph: reload Cursor (.cursor/mcp.json)
|
|
216
|
+
'CodeGraph: reload Cursor (.cursor/mcp.json), restart Kiro (.kiro/settings/mcp.json), or configure Antigravity MCP.'
|
|
187
217
|
);
|
|
188
218
|
return;
|
|
189
219
|
}
|
|
@@ -201,15 +231,33 @@ function shouldInstallTarget(target, opts) {
|
|
|
201
231
|
claude: opts.claudeOnly,
|
|
202
232
|
cursor: opts.cursorOnly,
|
|
203
233
|
kiro: opts.kiroOnly,
|
|
234
|
+
antigravity: opts.antigravityOnly,
|
|
204
235
|
};
|
|
205
|
-
const anyOnly = only.claude || only.cursor || only.kiro;
|
|
236
|
+
const anyOnly = only.claude || only.cursor || only.kiro || only.antigravity;
|
|
206
237
|
if (!anyOnly) return true;
|
|
207
238
|
return only[target];
|
|
208
239
|
}
|
|
209
240
|
|
|
210
241
|
function shouldInstallAgentDir(opts) {
|
|
211
|
-
const anyOnly =
|
|
212
|
-
|
|
242
|
+
const anyOnly =
|
|
243
|
+
opts.claudeOnly || opts.cursorOnly || opts.kiroOnly || opts.antigravityOnly;
|
|
244
|
+
if (!anyOnly) return true;
|
|
245
|
+
return opts.antigravityOnly;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function shouldInstallAgentsMd(opts) {
|
|
249
|
+
const anyOnly =
|
|
250
|
+
opts.claudeOnly || opts.cursorOnly || opts.kiroOnly || opts.antigravityOnly;
|
|
251
|
+
if (!anyOnly) return true;
|
|
252
|
+
return opts.cursorOnly || opts.kiroOnly || opts.antigravityOnly;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
function installAgentRules(targetDir, { force }) {
|
|
256
|
+
const srcRules = path.join(PKG_ROOT, '.agent', 'rules');
|
|
257
|
+
const destRules = path.join(targetDir, '.agent', 'rules');
|
|
258
|
+
if (!fs.existsSync(srcRules)) return;
|
|
259
|
+
mergeDir(srcRules, destRules, { force: true });
|
|
260
|
+
console.log(`Installed: ${destRules}`);
|
|
213
261
|
}
|
|
214
262
|
|
|
215
263
|
function installAgentContinuity(targetDir, { force }) {
|
|
@@ -225,9 +273,15 @@ function installAgentContinuity(targetDir, { force }) {
|
|
|
225
273
|
|
|
226
274
|
if (fs.existsSync(destDir)) {
|
|
227
275
|
if (force) {
|
|
276
|
+
const sessionBackup =
|
|
277
|
+
fs.existsSync(sessionDest) ? fs.readFileSync(sessionDest, 'utf8') : null;
|
|
228
278
|
fs.rmSync(destDir, { recursive: true, force: true });
|
|
229
279
|
fs.cpSync(srcDir, destDir, { recursive: true });
|
|
230
|
-
|
|
280
|
+
if (sessionBackup !== null) {
|
|
281
|
+
fs.writeFileSync(sessionDest, sessionBackup);
|
|
282
|
+
console.log(`Preserved: ${sessionDest} (existing session handoff)`);
|
|
283
|
+
}
|
|
284
|
+
console.log(`Installed: ${destDir} (overwritten; SESSION.md preserved if present)`);
|
|
231
285
|
} else {
|
|
232
286
|
const readmeSrc = path.join(srcDir, 'README.md');
|
|
233
287
|
const readmeDest = path.join(destDir, 'README.md');
|
|
@@ -261,7 +315,8 @@ function run(opts) {
|
|
|
261
315
|
const installClaude = shouldInstallTarget('claude', opts);
|
|
262
316
|
const installCursor = shouldInstallTarget('cursor', opts);
|
|
263
317
|
const installKiro = shouldInstallTarget('kiro', opts);
|
|
264
|
-
const
|
|
318
|
+
const installAntigravity = shouldInstallTarget('antigravity', opts);
|
|
319
|
+
const installAgentsMd = shouldInstallAgentsMd(opts);
|
|
265
320
|
|
|
266
321
|
fs.mkdirSync(opts.dir, { recursive: true });
|
|
267
322
|
|
|
@@ -288,7 +343,19 @@ function run(opts) {
|
|
|
288
343
|
console.log(`Installed: ${dest}`);
|
|
289
344
|
}
|
|
290
345
|
|
|
291
|
-
if (
|
|
346
|
+
if (installAntigravity) {
|
|
347
|
+
const src = path.join(PKG_ROOT, '.agents');
|
|
348
|
+
const dest = path.join(opts.dir, '.agents');
|
|
349
|
+
copyDir(src, dest, copyOpts);
|
|
350
|
+
console.log(`Installed: ${dest}`);
|
|
351
|
+
|
|
352
|
+
const geminiSrc = path.join(PKG_ROOT, 'GEMINI.md');
|
|
353
|
+
const geminiDest = path.join(opts.dir, 'GEMINI.md');
|
|
354
|
+
copyFile(geminiSrc, geminiDest, copyOpts);
|
|
355
|
+
console.log(`Installed: ${geminiDest}`);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
if (installAgentsMd) {
|
|
292
359
|
const src = path.join(PKG_ROOT, 'AGENTS.md');
|
|
293
360
|
const dest = path.join(opts.dir, 'AGENTS.md');
|
|
294
361
|
copyFile(src, dest, copyOpts);
|
|
@@ -299,6 +366,10 @@ function run(opts) {
|
|
|
299
366
|
installAgentContinuity(opts.dir, copyOpts);
|
|
300
367
|
}
|
|
301
368
|
|
|
369
|
+
if (installAntigravity || shouldInstallAgentDir(opts)) {
|
|
370
|
+
installAgentRules(opts.dir, copyOpts);
|
|
371
|
+
}
|
|
372
|
+
|
|
302
373
|
ensureCodegraphGitignore(opts.dir);
|
|
303
374
|
runCodegraphInit(opts.dir);
|
|
304
375
|
|
|
@@ -306,6 +377,7 @@ function run(opts) {
|
|
|
306
377
|
if (installClaude) hints.push('.claude/CLAUDE.md');
|
|
307
378
|
if (installCursor) hints.push('.cursor/CURSOR.md');
|
|
308
379
|
if (installKiro) hints.push('.kiro/KIRO.md');
|
|
380
|
+
if (installAntigravity) hints.push('GEMINI.md');
|
|
309
381
|
console.log(`\nDone. Next steps: read ${hints.join(', ')}.`);
|
|
310
382
|
if (installCursor) {
|
|
311
383
|
console.log(' Cursor: reload the window so MCP loads (.cursor/mcp.json — CodeGraph + Supabase).');
|
|
@@ -315,6 +387,10 @@ function run(opts) {
|
|
|
315
387
|
console.log(' Kiro: restart IDE/CLI so MCP loads (.kiro/settings/mcp.json — CodeGraph + Supabase).');
|
|
316
388
|
console.log(' Supabase: complete OAuth when you first use Supabase MCP tools.');
|
|
317
389
|
}
|
|
390
|
+
if (installAntigravity) {
|
|
391
|
+
console.log(' Antigravity: configure ~/.gemini/antigravity/mcp_config.json (.agents/references/mcp-antigravity.md).');
|
|
392
|
+
console.log(' Antigravity: use /build, /resume, /handoff workflows; read GEMINI.md for the full hub.');
|
|
393
|
+
}
|
|
318
394
|
if (shouldInstallAgentDir(opts)) {
|
|
319
395
|
console.log(' Continuity: edit .agent/SESSION.md at session end (/handoff); read at start (/resume).');
|
|
320
396
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "class-ai-agent",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Production-grade AI agent configuration for Claude Code, Cursor &
|
|
3
|
+
"version": "1.5.0",
|
|
4
|
+
"description": "Production-grade AI agent configuration for Claude Code, Cursor, Kiro & Antigravity",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -16,6 +16,8 @@
|
|
|
16
16
|
"claude-code",
|
|
17
17
|
"cursor",
|
|
18
18
|
"kiro",
|
|
19
|
+
"antigravity",
|
|
20
|
+
"gemini",
|
|
19
21
|
"codegraph",
|
|
20
22
|
"supabase",
|
|
21
23
|
"ai",
|
|
@@ -31,19 +33,22 @@
|
|
|
31
33
|
"files": [
|
|
32
34
|
"bin",
|
|
33
35
|
".agent",
|
|
36
|
+
".agents",
|
|
34
37
|
".claude",
|
|
35
38
|
".cursor",
|
|
36
39
|
".kiro",
|
|
37
40
|
"AGENTS.md",
|
|
41
|
+
"GEMINI.md",
|
|
38
42
|
"royal-solution-logo-v2.svg"
|
|
39
43
|
],
|
|
40
44
|
"scripts": {
|
|
41
|
-
"prepack": "node -e \"const fs=require('fs');['.agent','.claude','.cursor','.kiro','AGENTS.md'].forEach(p=>{if(!fs.existsSync(p))process.exit(1)})\"",
|
|
45
|
+
"prepack": "node -e \"const fs=require('fs');['.agent','.agents','.claude','.cursor','.kiro','AGENTS.md','GEMINI.md'].forEach(p=>{if(!fs.existsSync(p))process.exit(1)})\"",
|
|
42
46
|
"sync:kiro": "node scripts/sync-kiro-from-cursor.mjs",
|
|
43
47
|
"sync:claude": "node scripts/sync-claude-from-cursor.mjs",
|
|
48
|
+
"sync:antigravity": "node scripts/sync-antigravity-from-cursor.mjs",
|
|
44
49
|
"sync:all": "node scripts/sync-all.mjs",
|
|
45
50
|
"sync:supabase-skills": "node scripts/sync-supabase-skills.mjs",
|
|
46
51
|
"release:readme": "node scripts/update-readme-release.mjs",
|
|
47
|
-
"test:cli": "node bin/class-ai-agent.cjs --help && node bin/class-ai-agent.cjs --version && node -e \"const fs=require('fs');const c=JSON.parse(fs.readFileSync('.cursor/mcp.json','utf8'));const k=JSON.parse(fs.readFileSync('.kiro/settings/mcp.json','utf8'));if(!c.mcpServers?.codegraph||!k.mcpServers?.codegraph)throw new Error('missing codegraph MCP');if(!c.mcpServers?.supabase?.url?.includes('mcp.supabase.com')||!k.mcpServers?.supabase?.url?.includes('mcp.supabase.com'))throw new Error('missing supabase MCP');if(!fs.existsSync('.cursor/skills/supabase/SKILL.md')||!fs.existsSync('.cursor/skills/supabase-postgres-best-practices/SKILL.md'))throw new Error('missing supabase skills');if(!fs.existsSync('.claude/skills/supabase/SKILL.md'))throw new Error('missing claude supabase skill');if(!fs.existsSync('.cursor/references/supabase.md'))throw new Error('missing supabase reference');if(!fs.existsSync('scripts/sync-supabase-skills.mjs'))throw new Error('missing sync-supabase-skills');if(!fs.existsSync('.cursor/rules/codegraph.mdc'))throw new Error('missing codegraph.mdc');if(!fs.existsSync('.claude/rules/codegraph.md'))throw new Error('missing claude codegraph rule');if(!fs.existsSync('.kiro/steering/codegraph.md'))throw new Error('missing kiro codegraph steering');if(!fs.existsSync('.agent/SESSION.template.md'))throw new Error('missing SESSION.template');if(!fs.existsSync('.cursor/rules/agent-continuity.mdc'))throw new Error('missing agent-continuity.mdc');if(!fs.existsSync('.kiro/steering/agent-continuity.md'))throw new Error('missing kiro agent-continuity steering');if(!fs.existsSync('.cursor/commands/handoff.md')||!fs.existsSync('.cursor/commands/resume.md'))throw new Error('missing handoff/resume commands');\" && node scripts/check-parity.mjs"
|
|
52
|
+
"test:cli": "node bin/class-ai-agent.cjs --help && node bin/class-ai-agent.cjs --version && node -e \"const fs=require('fs');const c=JSON.parse(fs.readFileSync('.cursor/mcp.json','utf8'));const k=JSON.parse(fs.readFileSync('.kiro/settings/mcp.json','utf8'));if(!c.mcpServers?.codegraph||!k.mcpServers?.codegraph)throw new Error('missing codegraph MCP');if(!c.mcpServers?.supabase?.url?.includes('mcp.supabase.com')||!k.mcpServers?.supabase?.url?.includes('mcp.supabase.com'))throw new Error('missing supabase MCP');if(!fs.existsSync('.cursor/skills/supabase/SKILL.md')||!fs.existsSync('.cursor/skills/supabase-postgres-best-practices/SKILL.md'))throw new Error('missing supabase skills');if(!fs.existsSync('.claude/skills/supabase/SKILL.md'))throw new Error('missing claude supabase skill');if(!fs.existsSync('.agents/skills/supabase/SKILL.md'))throw new Error('missing antigravity supabase skill');if(!fs.existsSync('.cursor/references/supabase.md'))throw new Error('missing supabase reference');if(!fs.existsSync('.agents/references/mcp-antigravity.md'))throw new Error('missing mcp-antigravity reference');if(!fs.existsSync('scripts/sync-supabase-skills.mjs'))throw new Error('missing sync-supabase-skills');if(!fs.existsSync('.cursor/rules/codegraph.mdc'))throw new Error('missing codegraph.mdc');if(!fs.existsSync('.claude/rules/codegraph.md'))throw new Error('missing claude codegraph rule');if(!fs.existsSync('.kiro/steering/codegraph.md'))throw new Error('missing kiro codegraph steering');if(!fs.existsSync('.agent/rules/codegraph.md'))throw new Error('missing antigravity codegraph rule');if(!fs.existsSync('.agent/SESSION.template.md'))throw new Error('missing SESSION.template');if(!fs.existsSync('.cursor/rules/agent-continuity.mdc'))throw new Error('missing agent-continuity.mdc');if(!fs.existsSync('.kiro/steering/agent-continuity.md'))throw new Error('missing kiro agent-continuity steering');if(!fs.existsSync('.agent/rules/agent-continuity.md'))throw new Error('missing antigravity agent-continuity rule');if(!fs.existsSync('.cursor/commands/handoff.md')||!fs.existsSync('.cursor/commands/resume.md'))throw new Error('missing handoff/resume commands');if(!fs.existsSync('.agents/workflows/handoff.md')||!fs.existsSync('.agents/workflows/resume.md'))throw new Error('missing antigravity handoff/resume workflows');if(!fs.existsSync('GEMINI.md'))throw new Error('missing GEMINI.md');if(!fs.existsSync('scripts/sync-antigravity-from-cursor.mjs'))throw new Error('missing sync-antigravity script');\" && node scripts/check-parity.mjs"
|
|
48
53
|
}
|
|
49
54
|
}
|