everything-gemini 1.2.0 → 1.9.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/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +27 -0
- package/.github/ISSUE_TEMPLATE/subagent_proposal.md +29 -0
- package/.github/workflows/ci.yml +72 -1
- package/.github/workflows/release.yml +17 -2
- package/CHANGELOG.md +178 -0
- package/CONTRIBUTING.md +90 -4
- package/README.md +147 -23
- package/action.yml +35 -0
- package/agents/browser-qa.md +1 -1
- package/agents/database-migrator.md +26 -0
- package/agents/documentation-writer.md +27 -0
- package/agents/incident-responder.md +34 -0
- package/agents/performance-tuner.md +27 -0
- package/agents/platform-engineer.md +33 -0
- package/agents/release-engineer.md +34 -0
- package/bin/everything-gemini +1791 -142
- package/docs/COMMUNITY_SUBMISSIONS.md +88 -0
- package/docs/LAUNCH_KIT.md +138 -13
- package/docs/architecture/progressive-disclosure.md +3 -3
- package/docs/index.html +410 -40
- package/docs/launch-kit.md +163 -0
- package/examples/cli-workflows/demo_workflow.sh +15 -7
- package/examples/python-sdk/README.md +32 -5
- package/examples/python-sdk/documentation_audit_pipeline.py +83 -0
- package/examples/python-sdk/incident_triage_pipeline.py +170 -0
- package/examples/python-sdk/multi_agent_pipeline.py +95 -0
- package/examples/python-sdk/platform_provisioning_pipeline.py +193 -0
- package/examples/python-sdk/release_readiness_audit.py +144 -0
- package/hooks/secret-scrubber/hooks.json +16 -0
- package/hooks/secret-scrubber/scripts/scrub-secrets.sh +62 -0
- package/mcp/README.md +21 -0
- package/mcp/mcp_config.example.json +39 -0
- package/package.json +3 -1
- package/plugins/core/rules/core-practices.md +63 -4
- package/plugins/python-ai/rules/ai-agent-patterns.md +67 -4
- package/plugins/security-shield/rules/zero-trust.md +60 -4
- package/plugins/web-fullstack/rules/frontend-standards.md +74 -4
- package/rules/paradigms/security-hardened.md +53 -10
- package/rules/paradigms/tdd.md +65 -8
- package/scripts/install.ps1 +14 -0
- package/scripts/install.sh +15 -1
- package/scripts/validate.sh +103 -12
- package/skills/apache-kafka-streams/SKILL.md +152 -0
- package/skills/argo-workflows/SKILL.md +151 -0
- package/skills/axum-web-service/SKILL.md +159 -0
- package/skills/cilium-ebpf-networking/SKILL.md +145 -0
- package/skills/clickhouse-analytics/SKILL.md +128 -0
- package/skills/cloudflare-r2-object-storage/SKILL.md +143 -0
- package/skills/dbt-transformation/SKILL.md +179 -0
- package/skills/debezium-cdc/SKILL.md +166 -0
- package/skills/distributed-rate-limiting/SKILL.md +138 -0
- package/skills/duckdb-local-olap/SKILL.md +134 -0
- package/skills/fastapi-production/SKILL.md +157 -0
- package/skills/grpc-connect-rpc/SKILL.md +176 -0
- package/skills/langgraph-orchestrator/SKILL.md +144 -0
- package/skills/litellm-proxy-gateway/SKILL.md +154 -0
- package/skills/milvus-vector-clustering/SKILL.md +134 -0
- package/skills/nats-jetstream/SKILL.md +122 -0
- package/skills/open-telemetry-tracing/SKILL.md +151 -0
- package/skills/playwright-visual-regression/SKILL.md +124 -0
- package/skills/redis-cache-patterns/SKILL.md +159 -0
- package/skills/svelte-kit-architect/SKILL.md +190 -0
- package/skills/temporal-workflows/SKILL.md +158 -0
- package/skills/trpc-react-query/SKILL.md +169 -0
- package/skills/turborepo-monorepo/SKILL.md +199 -0
- package/skills/vault-secrets-management/SKILL.md +129 -0
- package/skills/vllm-inference/SKILL.md +144 -0
- package/skills/wasm-rust-optimizer/SKILL.md +130 -0
- package/templates/full-power/hooks.json +14 -0
- package/templates/full-power/mcp_config.json +47 -0
- package/templates/recommended/hooks.json +14 -0
- package/tests/cli.test.js +447 -0
package/docs/index.html
CHANGED
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
<meta property="og:type" content="website">
|
|
11
11
|
<meta property="og:url" content="https://salmandev.github.io/everything-gemini/">
|
|
12
12
|
<meta property="og:title" content="Everything Gemini — Agent Harness for Google Antigravity">
|
|
13
|
-
<meta property="og:description" content="
|
|
13
|
+
<meta property="og:description" content="44 Progressive Disclosure Skills, 9 Scoped Subagents, and 7 Lifecycle Safety Gates for Gemini 3.8 & Google Antigravity.">
|
|
14
14
|
<meta property="og:image" content="https://raw.githubusercontent.com/salmandev/everything-gemini/main/assets/banner.jpg">
|
|
15
15
|
|
|
16
16
|
<!-- Twitter Card -->
|
|
17
17
|
<meta name="twitter:card" content="summary_large_image">
|
|
18
18
|
<meta name="twitter:url" content="https://salmandev.github.io/everything-gemini/">
|
|
19
19
|
<meta name="twitter:title" content="Everything Gemini — Agent Harness for Google Antigravity">
|
|
20
|
-
<meta name="twitter:description" content="
|
|
20
|
+
<meta name="twitter:description" content="48 Progressive Disclosure Skills, 10 Scoped Subagents, and 7 Lifecycle Safety Gates for Gemini 3.8 & Google Antigravity.">
|
|
21
21
|
<meta name="twitter:image" content="https://raw.githubusercontent.com/salmandev/everything-gemini/main/assets/banner.jpg">
|
|
22
22
|
|
|
23
23
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
@@ -294,6 +294,7 @@
|
|
|
294
294
|
display: flex;
|
|
295
295
|
flex-direction: column;
|
|
296
296
|
justify-content: space-between;
|
|
297
|
+
cursor: pointer;
|
|
297
298
|
}
|
|
298
299
|
.card:hover {
|
|
299
300
|
background: var(--bg-card-hover);
|
|
@@ -315,6 +316,7 @@
|
|
|
315
316
|
.tag-agent { background: rgba(156, 39, 176, 0.2); color: #d05ce3; }
|
|
316
317
|
.tag-backend { background: rgba(66, 133, 244, 0.18); color: #8ab4f8; }
|
|
317
318
|
.tag-devops { background: rgba(0, 230, 118, 0.15); color: var(--accent-emerald); }
|
|
319
|
+
.tag-hook { background: rgba(255, 171, 0, 0.18); color: #ffab00; }
|
|
318
320
|
|
|
319
321
|
.card h3 {
|
|
320
322
|
font-size: 1.15rem;
|
|
@@ -328,14 +330,46 @@
|
|
|
328
330
|
line-height: 1.5;
|
|
329
331
|
margin-bottom: 16px;
|
|
330
332
|
}
|
|
331
|
-
.card-
|
|
333
|
+
.card-actions {
|
|
332
334
|
display: flex;
|
|
333
|
-
justify-content: space-between;
|
|
334
335
|
align-items: center;
|
|
336
|
+
justify-content: space-between;
|
|
337
|
+
gap: 10px;
|
|
338
|
+
margin-top: 14px;
|
|
335
339
|
padding-top: 14px;
|
|
336
|
-
border-top: 1px solid rgba(255, 255, 255, 0.
|
|
337
|
-
|
|
340
|
+
border-top: 1px solid rgba(255, 255, 255, 0.08);
|
|
341
|
+
flex-wrap: wrap;
|
|
342
|
+
}
|
|
343
|
+
.card-btn-view {
|
|
344
|
+
font-size: 0.78rem;
|
|
345
|
+
font-weight: 600;
|
|
346
|
+
color: var(--accent-cyan);
|
|
347
|
+
text-decoration: none;
|
|
348
|
+
display: inline-flex;
|
|
349
|
+
align-items: center;
|
|
350
|
+
gap: 4px;
|
|
351
|
+
transition: color 0.2s ease;
|
|
352
|
+
}
|
|
353
|
+
.card-btn-view:hover {
|
|
354
|
+
color: #fff;
|
|
355
|
+
text-decoration: underline;
|
|
356
|
+
}
|
|
357
|
+
.card-btn-copy {
|
|
358
|
+
background: rgba(255, 255, 255, 0.06);
|
|
359
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
338
360
|
color: var(--text-muted);
|
|
361
|
+
font-size: 0.75rem;
|
|
362
|
+
font-weight: 600;
|
|
363
|
+
padding: 5px 12px;
|
|
364
|
+
border-radius: 6px;
|
|
365
|
+
cursor: pointer;
|
|
366
|
+
margin-left: auto;
|
|
367
|
+
transition: all 0.2s ease;
|
|
368
|
+
}
|
|
369
|
+
.card-btn-copy:hover {
|
|
370
|
+
background: rgba(255, 255, 255, 0.15);
|
|
371
|
+
color: var(--text-main);
|
|
372
|
+
border-color: rgba(255, 255, 255, 0.3);
|
|
339
373
|
}
|
|
340
374
|
|
|
341
375
|
/* Footer */
|
|
@@ -351,9 +385,149 @@
|
|
|
351
385
|
text-decoration: none;
|
|
352
386
|
}
|
|
353
387
|
|
|
388
|
+
/* Profile Tabs */
|
|
389
|
+
.profile-tabs {
|
|
390
|
+
display: inline-flex;
|
|
391
|
+
background: rgba(16, 20, 31, 0.9);
|
|
392
|
+
border: 1px solid var(--border-color);
|
|
393
|
+
border-radius: 999px;
|
|
394
|
+
padding: 4px;
|
|
395
|
+
margin-bottom: 20px;
|
|
396
|
+
gap: 4px;
|
|
397
|
+
flex-wrap: wrap;
|
|
398
|
+
justify-content: center;
|
|
399
|
+
}
|
|
400
|
+
.profile-tab {
|
|
401
|
+
background: transparent;
|
|
402
|
+
border: none;
|
|
403
|
+
color: var(--text-muted);
|
|
404
|
+
padding: 6px 16px;
|
|
405
|
+
border-radius: 999px;
|
|
406
|
+
font-size: 0.82rem;
|
|
407
|
+
font-weight: 600;
|
|
408
|
+
cursor: pointer;
|
|
409
|
+
transition: all 0.2s ease;
|
|
410
|
+
}
|
|
411
|
+
.profile-tab:hover {
|
|
412
|
+
color: var(--text-main);
|
|
413
|
+
}
|
|
414
|
+
.profile-tab.active {
|
|
415
|
+
background: var(--accent-cyan);
|
|
416
|
+
color: #080a10;
|
|
417
|
+
box-shadow: 0 0 14px rgba(0, 229, 255, 0.4);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/* Modal Backdrop & Dialog */
|
|
421
|
+
.modal-backdrop {
|
|
422
|
+
position: fixed;
|
|
423
|
+
inset: 0;
|
|
424
|
+
background: rgba(4, 7, 13, 0.82);
|
|
425
|
+
backdrop-filter: blur(8px);
|
|
426
|
+
-webkit-backdrop-filter: blur(8px);
|
|
427
|
+
display: none;
|
|
428
|
+
align-items: center;
|
|
429
|
+
justify-content: center;
|
|
430
|
+
z-index: 1000;
|
|
431
|
+
padding: 20px;
|
|
432
|
+
}
|
|
433
|
+
.modal-backdrop.open {
|
|
434
|
+
display: flex;
|
|
435
|
+
}
|
|
436
|
+
.modal-dialog {
|
|
437
|
+
background: #0f1423;
|
|
438
|
+
border: 1px solid var(--border-glow);
|
|
439
|
+
border-radius: 18px;
|
|
440
|
+
max-width: 600px;
|
|
441
|
+
width: 100%;
|
|
442
|
+
padding: 32px;
|
|
443
|
+
box-shadow: 0 24px 60px rgba(0, 0, 0, 0.8), 0 0 35px rgba(0, 229, 255, 0.15);
|
|
444
|
+
position: relative;
|
|
445
|
+
animation: modalFadeIn 0.22s cubic-bezier(0.16, 1, 0.3, 1);
|
|
446
|
+
}
|
|
447
|
+
@keyframes modalFadeIn {
|
|
448
|
+
from { opacity: 0; transform: scale(0.95) translateY(10px); }
|
|
449
|
+
to { opacity: 1; transform: scale(1) translateY(0); }
|
|
450
|
+
}
|
|
451
|
+
.modal-close {
|
|
452
|
+
position: absolute;
|
|
453
|
+
top: 20px;
|
|
454
|
+
right: 20px;
|
|
455
|
+
background: rgba(255, 255, 255, 0.08);
|
|
456
|
+
border: 1px solid rgba(255, 255, 255, 0.12);
|
|
457
|
+
color: var(--text-muted);
|
|
458
|
+
width: 32px;
|
|
459
|
+
height: 32px;
|
|
460
|
+
border-radius: 50%;
|
|
461
|
+
cursor: pointer;
|
|
462
|
+
display: flex;
|
|
463
|
+
align-items: center;
|
|
464
|
+
justify-content: center;
|
|
465
|
+
font-size: 1.1rem;
|
|
466
|
+
transition: all 0.2s ease;
|
|
467
|
+
}
|
|
468
|
+
.modal-close:hover {
|
|
469
|
+
background: rgba(255, 255, 255, 0.2);
|
|
470
|
+
color: #fff;
|
|
471
|
+
}
|
|
472
|
+
.modal-header {
|
|
473
|
+
margin-bottom: 16px;
|
|
474
|
+
}
|
|
475
|
+
.modal-header h2 {
|
|
476
|
+
font-size: 1.4rem;
|
|
477
|
+
font-weight: 700;
|
|
478
|
+
font-family: var(--font-mono);
|
|
479
|
+
margin-top: 10px;
|
|
480
|
+
}
|
|
481
|
+
.modal-desc {
|
|
482
|
+
font-size: 0.96rem;
|
|
483
|
+
line-height: 1.6;
|
|
484
|
+
color: var(--text-muted);
|
|
485
|
+
margin-bottom: 24px;
|
|
486
|
+
}
|
|
487
|
+
.modal-cmd-box {
|
|
488
|
+
background: rgba(0, 0, 0, 0.45);
|
|
489
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
490
|
+
border-radius: 10px;
|
|
491
|
+
padding: 12px 16px;
|
|
492
|
+
font-family: var(--font-mono);
|
|
493
|
+
font-size: 0.88rem;
|
|
494
|
+
display: flex;
|
|
495
|
+
align-items: center;
|
|
496
|
+
justify-content: space-between;
|
|
497
|
+
gap: 12px;
|
|
498
|
+
margin-bottom: 24px;
|
|
499
|
+
}
|
|
500
|
+
.modal-cmd-text {
|
|
501
|
+
color: var(--accent-cyan);
|
|
502
|
+
overflow-x: auto;
|
|
503
|
+
white-space: nowrap;
|
|
504
|
+
}
|
|
505
|
+
.modal-actions {
|
|
506
|
+
display: flex;
|
|
507
|
+
align-items: center;
|
|
508
|
+
justify-content: space-between;
|
|
509
|
+
gap: 14px;
|
|
510
|
+
border-top: 1px solid rgba(255, 255, 255, 0.08);
|
|
511
|
+
padding-top: 20px;
|
|
512
|
+
flex-wrap: wrap;
|
|
513
|
+
}
|
|
514
|
+
.modal-btn-view {
|
|
515
|
+
color: var(--accent-cyan);
|
|
516
|
+
font-weight: 600;
|
|
517
|
+
text-decoration: none;
|
|
518
|
+
font-size: 0.9rem;
|
|
519
|
+
display: inline-flex;
|
|
520
|
+
align-items: center;
|
|
521
|
+
gap: 6px;
|
|
522
|
+
}
|
|
523
|
+
.modal-btn-view:hover {
|
|
524
|
+
text-decoration: underline;
|
|
525
|
+
}
|
|
526
|
+
|
|
354
527
|
@media (max-width: 768px) {
|
|
355
528
|
.hero h1 { font-size: 2.4rem; }
|
|
356
529
|
.catalog-grid { grid-template-columns: 1fr; }
|
|
530
|
+
.nav-links { gap: 12px; flex-wrap: wrap; justify-content: flex-end; }
|
|
357
531
|
}
|
|
358
532
|
</style>
|
|
359
533
|
</head>
|
|
@@ -364,11 +538,14 @@
|
|
|
364
538
|
<div class="container nav-inner">
|
|
365
539
|
<a href="#" class="brand">
|
|
366
540
|
🪐 Everything Gemini
|
|
367
|
-
<span class="brand-badge">v1.
|
|
541
|
+
<span class="brand-badge">v1.9.0</span>
|
|
368
542
|
</a>
|
|
369
543
|
<div class="nav-links">
|
|
370
544
|
<a href="https://github.com/salmandev/everything-gemini" class="nav-link">GitHub</a>
|
|
371
545
|
<a href="https://www.npmjs.com/package/everything-gemini" class="nav-link">NPM</a>
|
|
546
|
+
<a href="https://github.com/salmandev/everything-gemini/blob/main/CONTRIBUTING.md" class="nav-link" style="color: var(--accent-emerald); font-weight: 600;">✨ Contribute</a>
|
|
547
|
+
<a href="https://twitter.com/intent/tweet?text=%F0%9F%AA%90%20Everything%20Gemini%20v1.9.0%20is%20live%21%20The%20open-source%20multi-agent%20harness%20for%20Google%20Antigravity%20%26%20Gemini%203.8%20with%2056%20progressive%20skills%2C%2012%20subagents%2C%20and%207%20safety%20gates.%0A%0A%F0%9F%91%89%20https%3A%2F%2Fsalmandev.github.io%2Feverything-gemini%2F" target="_blank" class="nav-link" style="color: var(--accent-cyan); font-weight: 600;">🐦 Share on X</a>
|
|
548
|
+
<a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fsalmandev.github.io%2Feverything-gemini%2F" target="_blank" class="nav-link" style="color: #00a0dc; font-weight: 600;">💼 Share on LinkedIn</a>
|
|
372
549
|
<a href="https://github.com/salmandev/everything-gemini" target="_blank" class="btn-github">
|
|
373
550
|
⭐ Star on GitHub
|
|
374
551
|
</a>
|
|
@@ -387,6 +564,23 @@
|
|
|
387
564
|
Battle-tested progressive disclosure skills, scoped subagent fleets, and deterministic lifecycle security gates engineered for Google Antigravity.
|
|
388
565
|
</p>
|
|
389
566
|
|
|
567
|
+
<!-- Profile Tabs -->
|
|
568
|
+
<div class="profile-tabs">
|
|
569
|
+
<button class="profile-tab active" onclick="setInstallProfile('developer', event)">Developer</button>
|
|
570
|
+
<button class="profile-tab" onclick="setInstallProfile('core', event)">Core</button>
|
|
571
|
+
<button class="profile-tab" onclick="setInstallProfile('full', event)">Full Power</button>
|
|
572
|
+
<button class="profile-tab" onclick="setInstallProfile('sync', event)">Sync</button>
|
|
573
|
+
<button class="profile-tab" onclick="setInstallProfile('scaffold', event)">Scaffold</button>
|
|
574
|
+
<button class="profile-tab" onclick="setInstallProfile('bundle', event)">Offline Bundle</button>
|
|
575
|
+
<button class="profile-tab" onclick="setInstallProfile('global', event)">Global (~/.gemini)</button>
|
|
576
|
+
<button class="profile-tab" onclick="setInstallProfile('status', event)">Status Check</button>
|
|
577
|
+
<button class="profile-tab" onclick="setInstallProfile('update', event)">Update Ecosystem</button>
|
|
578
|
+
<button class="profile-tab" onclick="setInstallProfile('dryrun', event)">Dry Run Preview</button>
|
|
579
|
+
<button class="profile-tab" onclick="setInstallProfile('json', event)">JSON Export</button>
|
|
580
|
+
<button class="profile-tab" onclick="setInstallProfile('doctor', event)">Doctor</button>
|
|
581
|
+
<button class="profile-tab" onclick="setInstallProfile('action', event)">GitHub Action</button>
|
|
582
|
+
</div>
|
|
583
|
+
|
|
390
584
|
<!-- Install box -->
|
|
391
585
|
<div class="install-box">
|
|
392
586
|
<div class="install-cmd">
|
|
@@ -399,33 +593,34 @@
|
|
|
399
593
|
<!-- Metrics -->
|
|
400
594
|
<div class="metrics">
|
|
401
595
|
<div class="metric-card">
|
|
402
|
-
<div class="metric-value">
|
|
596
|
+
<div class="metric-value">56</div>
|
|
403
597
|
<div class="metric-label">Progressive Skills</div>
|
|
404
598
|
</div>
|
|
405
599
|
<div class="metric-card">
|
|
406
|
-
<div class="metric-value">
|
|
600
|
+
<div class="metric-value">12</div>
|
|
407
601
|
<div class="metric-label">Scoped Subagents</div>
|
|
408
602
|
</div>
|
|
409
603
|
<div class="metric-card">
|
|
410
|
-
<div class="metric-value"
|
|
411
|
-
<div class="metric-label">
|
|
604
|
+
<div class="metric-value">7</div>
|
|
605
|
+
<div class="metric-label">Lifecycle Hooks</div>
|
|
412
606
|
</div>
|
|
413
607
|
<div class="metric-card">
|
|
414
608
|
<div class="metric-value">2M</div>
|
|
415
|
-
<div class="metric-label">
|
|
609
|
+
<div class="metric-label">Prefix Cache Tokens</div>
|
|
416
610
|
</div>
|
|
417
611
|
</div>
|
|
418
612
|
</section>
|
|
419
613
|
|
|
420
614
|
<!-- Filters & Search -->
|
|
421
615
|
<section class="filter-section">
|
|
422
|
-
<input type="text" id="search-input" class="search-bar" placeholder="🔍 Search skills, subagents, or hooks (e.g. multimodal, supabase, tdd, cloudflare)...">
|
|
616
|
+
<input type="text" id="search-input" class="search-bar" placeholder="🔍 Search skills, subagents, or hooks (e.g. multimodal, supabase, tdd, cloudflare, shield, lint)...">
|
|
423
617
|
<div class="filter-pills">
|
|
424
|
-
<button class="filter-btn active" onclick="filterCategory('all')">All Components</button>
|
|
425
|
-
<button class="filter-btn" onclick="filterCategory('frontier')">Frontier & Vision</button>
|
|
426
|
-
<button class="filter-btn" onclick="filterCategory('subagent')">Scoped Subagents</button>
|
|
427
|
-
<button class="filter-btn" onclick="filterCategory('backend')">Backend & Cloud</button>
|
|
428
|
-
<button class="filter-btn" onclick="filterCategory('devops')">DevOps &
|
|
618
|
+
<button class="filter-btn active" onclick="filterCategory('all', event)">All Components</button>
|
|
619
|
+
<button class="filter-btn" onclick="filterCategory('frontier', event)">Frontier & Vision</button>
|
|
620
|
+
<button class="filter-btn" onclick="filterCategory('subagent', event)">Scoped Subagents</button>
|
|
621
|
+
<button class="filter-btn" onclick="filterCategory('backend', event)">Backend & Cloud</button>
|
|
622
|
+
<button class="filter-btn" onclick="filterCategory('devops', event)">DevOps & Quality</button>
|
|
623
|
+
<button class="filter-btn" onclick="filterCategory('hook', event)">Lifecycle Hooks</button>
|
|
429
624
|
</div>
|
|
430
625
|
</section>
|
|
431
626
|
|
|
@@ -439,49 +634,120 @@
|
|
|
439
634
|
<div class="container">
|
|
440
635
|
<p>Built with 💙 for Google Antigravity & Gemini developers worldwide.</p>
|
|
441
636
|
<p style="margin-top: 8px;">
|
|
442
|
-
Licensed under <a href="https://github.com/salmandev/everything-gemini/blob/main/LICENSE">Apache 2.0</a> • Inspired by <a href="https://github.com/affaan-m/everything-claude-code">ECC</a>
|
|
637
|
+
Licensed under <a href="https://github.com/salmandev/everything-gemini/blob/main/LICENSE">Apache 2.0</a> • Inspired by <a href="https://github.com/affaan-m/everything-claude-code">ECC</a> • <a href="https://star-history.com/#salmandev/everything-gemini&Date" target="_blank">Star History ↗</a>
|
|
443
638
|
</p>
|
|
444
639
|
</div>
|
|
445
640
|
</footer>
|
|
446
641
|
|
|
642
|
+
<!-- Quick-View Modal -->
|
|
643
|
+
<div id="quick-view-modal" class="modal-backdrop" onclick="closeModalOnBackdrop(event)">
|
|
644
|
+
<div class="modal-dialog">
|
|
645
|
+
<button class="modal-close" onclick="closeModal()">✕</button>
|
|
646
|
+
<div class="modal-header">
|
|
647
|
+
<span id="modal-tag" class="card-tag tag-frontier"></span>
|
|
648
|
+
<h2 id="modal-title"></h2>
|
|
649
|
+
</div>
|
|
650
|
+
<p id="modal-desc" class="modal-desc"></p>
|
|
651
|
+
|
|
652
|
+
<div style="font-size: 0.8rem; font-weight: 700; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 8px;">1-Click Install Command</div>
|
|
653
|
+
<div class="modal-cmd-box">
|
|
654
|
+
<div class="modal-cmd-text" id="modal-cmd"></div>
|
|
655
|
+
<button class="card-btn-copy" id="modal-copy-btn" onclick="copyModalCmd()">Copy CLI</button>
|
|
656
|
+
</div>
|
|
657
|
+
|
|
658
|
+
<div class="modal-actions">
|
|
659
|
+
<span style="font-size: 0.82rem; color: var(--text-muted);">Google Antigravity & Gemini 3.8</span>
|
|
660
|
+
<a id="modal-github-link" href="#" target="_blank" class="modal-btn-view">View Complete Source on GitHub ↗</a>
|
|
661
|
+
</div>
|
|
662
|
+
</div>
|
|
663
|
+
</div>
|
|
664
|
+
|
|
447
665
|
<script>
|
|
448
666
|
const items = [
|
|
449
|
-
|
|
450
|
-
{ name: "
|
|
451
|
-
{ name: "
|
|
452
|
-
{ name: "
|
|
453
|
-
{ name: "
|
|
667
|
+
// Frontier & Vision Skills (10)
|
|
668
|
+
{ name: "gemini-multimodal", type: "skill", cat: "frontier", desc: "Native visual reasoning over UI mockups, converting wireframes to frontend code, diagram-to-Mermaid extraction, and visual regression QA." },
|
|
669
|
+
{ name: "context-caching", type: "skill", cat: "frontier", desc: "1M-2M token context optimization with deterministic static prefix caching, skeleton ingestion, and ~75% cost savings." },
|
|
670
|
+
{ name: "gemini-grounding", type: "skill", cat: "frontier", desc: "Live Google Search grounding to eliminate hallucinations, verify real-time APIs, and retrieve breaking documentation." },
|
|
671
|
+
{ name: "rag-architect", type: "skill", cat: "frontier", desc: "Retrieval-augmented generation pipelines, semantic AST chunking, hybrid keyword-vector search, and Gemini re-ranking." },
|
|
672
|
+
{ name: "gemini-function-calling", type: "skill", cat: "frontier", desc: "Production function declarations, structured JSON output schemas (Pydantic), parallel tool execution, and error recovery." },
|
|
454
673
|
{ name: "ai-first-engineering", type: "skill", cat: "frontier", desc: "Decomposing ambiguous specs into verifiable milestones, executable acceptance criteria (BDD), and blast-radius containment." },
|
|
674
|
+
{ name: "agent-evals", type: "skill", cat: "frontier", desc: "Automated evaluation pipelines, LLM-as-a-judge rubrics, golden test datasets, and prompt regression testing." },
|
|
675
|
+
{ name: "browser-qa-tester", type: "skill", cat: "frontier", desc: "Automated browser end-to-end testing with native WebP recording into artifacts for visual validation." },
|
|
676
|
+
{ name: "continuous-learning", type: "skill", cat: "frontier", desc: "Adaptive Learned Instincts and Knowledge Item memory capturing developer corrections across sessions." },
|
|
677
|
+
{ name: "repo-onboarding", type: "skill", cat: "frontier", desc: "Rapid codebase indexing, directory mapping, pattern extraction, and permanent Knowledge Item generation." },
|
|
678
|
+
|
|
679
|
+
// Scoped Subagents & Orchestration (13)
|
|
455
680
|
{ name: "subagent-handoff", type: "skill", cat: "subagent", desc: "Delegation protocol for multi-agent workflows with scoped context isolation and deterministic structured report synthesis." },
|
|
681
|
+
{ name: "architecture-designer", type: "skill", cat: "subagent", desc: "Comprehensive system design architectures, Mermaid diagrams, API contracts, and Architecture Decision Records (ADRs)." },
|
|
682
|
+
{ name: "langgraph-orchestrator", type: "skill", cat: "subagent", desc: "Stateful multi-agent systems, cyclic graphs, persistent checkpoints, human-in-the-loop pauses, and streaming orchestration." },
|
|
683
|
+
{ name: "antigravity-sdk-orchestrator", type: "skill", cat: "subagent", desc: "Programmatic multi-agent pipelines with the official google-antigravity Python SDK and token streaming." },
|
|
456
684
|
{ name: "agents/planner", type: "subagent", cat: "subagent", desc: "Strategic architect that breaks complex tasks into phased roadmaps with dependency mapping and risk radius assessment." },
|
|
457
685
|
{ name: "agents/code-reviewer", type: "subagent", cat: "subagent", desc: "Uncompromising reviewer enforcing minimal diffs, zero regression, strict typing, and defensive edge-case handling." },
|
|
458
686
|
{ name: "agents/browser-qa", type: "subagent", cat: "subagent", desc: "Autonomous UI tester driving browser_subagent with automatic WebP recording and DOM assertions into artifacts." },
|
|
459
687
|
{ name: "agents/build-repair", type: "subagent", cat: "subagent", desc: "Automated triage specialist isolating compiler errors and failing unit tests with surgical minimal fixes." },
|
|
460
688
|
{ name: "agents/security-auditor", type: "subagent", cat: "subagent", desc: "Adversarial security specialist scanning for credential leakage, injection risks, and dependency CVEs." },
|
|
461
689
|
{ name: "agents/architect", type: "subagent", cat: "subagent", desc: "Systems designer authoring C4 Mermaid diagrams, formal API contracts, and Architecture Decision Records (ADRs)." },
|
|
462
|
-
{ name: "
|
|
690
|
+
{ name: "agents/database-migrator", type: "subagent", cat: "subagent", desc: "Dedicated database schema evolution specialist designing zero-downtime expand/contract SQL migrations and rollback safety." },
|
|
691
|
+
{ name: "agents/performance-tuner", type: "subagent", cat: "subagent", desc: "Systems performance specialist diagnosing flamegraphs, memory leaks, slow database query plans, and N+1 waterfalls." },
|
|
692
|
+
{ name: "agents/documentation-writer", type: "subagent", cat: "subagent", desc: "Specialist authoring developer docs, API references, ADRs, changelogs, and verifying clickable file:// links." },
|
|
693
|
+
{ name: "agents/release-engineer", type: "subagent", cat: "subagent", desc: "Release gatekeeper managing Semantic Versioning, automated changelogs, build checksums, git tagging, and canary rollouts." },
|
|
694
|
+
{ name: "agents/incident-responder", type: "subagent", cat: "subagent", desc: "SRE incident commander triaging alerts, correlating OTel spans, containing blast radius, and generating blameless postmortems." },
|
|
695
|
+
{ name: "agents/platform-engineer", type: "subagent", cat: "subagent", desc: "Cloud platform & IDP specialist authoring Terraform/OpenTofu, Kubernetes manifests, zero-trust network policies, and container right-sizing." },
|
|
696
|
+
|
|
697
|
+
// Backend & Cloud Skills (31)
|
|
698
|
+
{ name: "milvus-vector-clustering", type: "skill", cat: "backend", desc: "Enterprise Milvus vector clustering, HNSW/IVF-PQ indexing, hybrid dense-sparse search, and dynamic partition keys." },
|
|
699
|
+
{ name: "cloudflare-r2-object-storage", type: "skill", cat: "backend", desc: "Zero-egress fee object storage, S3-compatible APIs, pre-signed upload URLs, and Workers edge CDN caching." },
|
|
700
|
+
{ name: "vault-secrets-management", type: "skill", cat: "backend", desc: "HashiCorp Vault enterprise secrets orchestration, AppRole authentication, dynamic ephemeral DB credentials, and PKI mTLS." },
|
|
701
|
+
{ name: "distributed-rate-limiting", type: "skill", cat: "backend", desc: "High-throughput distributed rate limiting using Redis sliding window logs, token buckets, and RFC 6585 compliance." },
|
|
702
|
+
{ name: "vllm-inference", type: "skill", cat: "backend", desc: "High-throughput LLM inference, PagedAttention KV cache, continuous batching, tensor parallelism, and OpenAI-compatible API serving." },
|
|
703
|
+
{ name: "debezium-cdc", type: "skill", cat: "backend", desc: "Change Data Capture (CDC) streaming with Debezium, PostgreSQL WAL replication, Kafka Connect, and transactional outbox patterns." },
|
|
704
|
+
{ name: "cilium-ebpf-networking", type: "skill", cat: "backend", desc: "Cloud-native eBPF networking, Kubernetes CNI replacement, transparent mTLS, L7 CiliumNetworkPolicies, and Hubble observability." },
|
|
705
|
+
{ name: "litellm-proxy-gateway", type: "skill", cat: "backend", desc: "Enterprise LLM proxy gateway, multi-provider routing (Gemini, Claude, OpenAI), budget controls, virtual keys, and fallback cascades." },
|
|
706
|
+
{ name: "open-telemetry-tracing", type: "skill", cat: "backend", desc: "Distributed tracing, OTLP exporters, W3C traceparent propagation, custom span attributes, and metric correlations." },
|
|
707
|
+
{ name: "argo-workflows", type: "skill", cat: "backend", desc: "Kubernetes-native DAG workflows, artifact passing, container steps, retry strategies, and CronWorkflows." },
|
|
708
|
+
{ name: "dbt-transformation", type: "skill", cat: "backend", desc: "Modular SQL transformations, Jinja macros, semantic layer models, automated schema tests, and documentation generation." },
|
|
709
|
+
{ name: "apache-kafka-streams", type: "skill", cat: "backend", desc: "Exactly-once event streaming, stateful window aggregations, consumer group rebalancing, and Schema Registry serialization." },
|
|
710
|
+
{ name: "grpc-connect-rpc", type: "skill", cat: "backend", desc: "Lightweight, browser-compatible gRPC and Protocol Buffers with Connect-ES / Connect-Go and HTTP/2-3 streaming." },
|
|
711
|
+
{ name: "duckdb-local-olap", type: "skill", cat: "backend", desc: "In-process embedded SQL analytics, direct S3/Parquet querying, and zero-copy Apache Arrow integration." },
|
|
712
|
+
{ name: "nats-jetstream", type: "skill", cat: "backend", desc: "Ultra-low latency event streaming, message deduplication, durable pull consumer groups, and KV stores." },
|
|
713
|
+
{ name: "axum-web-service", type: "skill", cat: "backend", desc: "Production Rust web APIs using Axum, Tokio async runtime, Tower middlewares, and SQLx connection pools." },
|
|
714
|
+
{ name: "clickhouse-analytics", type: "skill", cat: "backend", desc: "High-throughput OLAP schemas, MergeTree engines, Kafka streaming ingestion, and vector similarity search." },
|
|
715
|
+
{ name: "temporal-workflows", type: "skill", cat: "backend", desc: "Durable workflow orchestration, resilient async activities, saga compensations, and child workflows." },
|
|
716
|
+
{ name: "trpc-react-query", type: "skill", cat: "backend", desc: "End-to-end type safety with tRPC v11 routers, TanStack Query v5 cache management, and optimistic UI mutations." },
|
|
717
|
+
{ name: "wasm-rust-optimizer", type: "skill", cat: "backend", desc: "High-performance WebAssembly compilation from Rust using wasm-pack, zero-copy memory buffers, and SIMD." },
|
|
463
718
|
{ name: "supabase-architect", type: "skill", cat: "backend", desc: "Row Level Security (RLS) policies, pgvector embeddings for semantic AI search, and performant Supabase Edge Functions." },
|
|
719
|
+
{ name: "fastapi-production", type: "skill", cat: "backend", desc: "Production async FastAPI architecture, Pydantic v2 schemas, lifespan handlers, JWT auth, and Kubernetes health probes." },
|
|
720
|
+
{ name: "redis-cache-patterns", type: "skill", cat: "backend", desc: "Enterprise Redis caching (cache-aside, jitter), distributed locking with atomic Lua, sliding-window rate limiting, and streams." },
|
|
721
|
+
{ name: "svelte-kit-architect", type: "skill", cat: "backend", desc: "Modern SvelteKit applications using Svelte 5 runes ($state, $derived, $effect), SSR/prerendering, and progressive form actions." },
|
|
464
722
|
{ name: "cloudflare-workers", type: "skill", cat: "backend", desc: "Serverless edge functions, Wrangler v3 configuration, Cloudflare D1 SQL, and KV low-latency storage." },
|
|
465
723
|
{ name: "database-architect", type: "skill", cat: "backend", desc: "Relational and document schema modeling, zero-downtime expand/contract migrations, and concurrent indexing." },
|
|
466
724
|
{ name: "api-craftsman", type: "skill", cat: "backend", desc: "Production-grade REST APIs, OpenAPI 3.1 specifications, gRPC protobuf schemas, and RFC 7807 error envelopes." },
|
|
467
725
|
{ name: "fullstack-nextjs", type: "skill", cat: "backend", desc: "Next.js App Router, React Server Components (RSC), hydration error diagnosis, and Server Actions." },
|
|
468
726
|
{ name: "stripe-integration", type: "skill", cat: "backend", desc: "Cryptographic webhook signature verification, idempotent checkouts, and customer billing portal sessions." },
|
|
727
|
+
{ name: "graphql-architect", type: "skill", cat: "backend", desc: "Schema-first GraphQL APIs, DataLoader N+1 query batching, and Relay cursor-based pagination." },
|
|
728
|
+
{ name: "responsive-design", type: "skill", cat: "backend", desc: "Fluid typography, mobile-first flex/grid layouts, media queries, and cross-browser accessibility." },
|
|
729
|
+
|
|
730
|
+
// DevOps & Quality Skills (11)
|
|
731
|
+
{ name: "playwright-visual-regression", type: "skill", cat: "devops", desc: "Automated visual regression testing, pixelmatch snapshot diffing, cross-browser viewport matrices, and Docker baseline stability." },
|
|
732
|
+
{ name: "turborepo-monorepo", type: "skill", cat: "devops", desc: "High-performance monorepo build caching, task pipelines, package boundaries, and Docker pruning." },
|
|
733
|
+
{ name: "github-ops", type: "skill", cat: "devops", desc: "End-to-end GitHub PR generation, automated diff review, semantic release drafting, and issue triage with gh CLI & GitHub MCP." },
|
|
734
|
+
{ name: "docker-compose-orchestrator", type: "skill", cat: "devops", desc: "Multi-container local environments, database services (Postgres, pgvector, Redis), and healthcheck wiring." },
|
|
469
735
|
{ name: "kubernetes-operator", type: "skill", cat: "devops", desc: "Declarative production Kubernetes manifests, HPA autoscaling, zero-downtime rolling updates, and health probes." },
|
|
470
736
|
{ name: "devops-pipeline", type: "skill", cat: "devops", desc: "Multi-stage Dockerfiles, GitHub Actions CI/CD workflows, and container infrastructure automation." },
|
|
471
|
-
{ name: "gemini-shield", type: "hook", cat: "devops", desc: "Deterministic PreToolUse lifecycle gate blocking catastrophic commands (rm -rf, DROP TABLE, git push --force)." },
|
|
472
737
|
{ name: "security-audit", type: "skill", cat: "devops", desc: "OWASP Top 10 security audits, secret leakage detection, and dependency vulnerability scans." },
|
|
473
738
|
{ name: "tdd-workflow", type: "skill", cat: "devops", desc: "Strict Test-Driven Development (Red-Green-Refactor) loop ensuring tests exist before code is written." },
|
|
474
739
|
{ name: "root-cause-debugger", type: "skill", cat: "devops", desc: "Systematic regression diagnosis using binary search (git bisect), log traces, and minimal reproduction harnesses." },
|
|
475
|
-
{ name: "browser-qa-tester", type: "skill", cat: "frontier", desc: "Automated browser end-to-end testing with native WebP recording for visual validation." },
|
|
476
|
-
{ name: "agent-evals", type: "skill", cat: "frontier", desc: "Automated evaluation pipelines, LLM-as-a-judge rubrics, golden test datasets, and prompt regression testing." },
|
|
477
740
|
{ name: "git-craftsman", type: "skill", cat: "devops", desc: "Conventional atomic commits, interactive rebasing, clean branch lifecycles, and git hygiene." },
|
|
478
|
-
{ name: "docker-compose-orchestrator", type: "skill", cat: "devops", desc: "Multi-container local environments, database services (Postgres, pgvector, Redis), and healthcheck wiring." },
|
|
479
|
-
{ name: "graphql-architect", type: "skill", cat: "backend", desc: "Schema-first GraphQL APIs, DataLoader N+1 query batching, and Relay cursor-based pagination." },
|
|
480
741
|
{ name: "performance-profiler", type: "skill", cat: "devops", desc: "Application latency profiling, CPU/memory leak diagnosis, and slow query optimization." },
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
{ name: "
|
|
484
|
-
{ name: "
|
|
742
|
+
|
|
743
|
+
// Lifecycle Safety Hooks (7)
|
|
744
|
+
{ name: "gemini-shield", type: "hook", cat: "hook", desc: "Deterministic PreToolUse lifecycle gate blocking catastrophic commands (rm -rf, DROP TABLE, git push --force)." },
|
|
745
|
+
{ name: "safety-shield", type: "hook", cat: "hook", desc: "PreToolUse shell execution firewall that inspects CLI commands against safety rules before execution." },
|
|
746
|
+
{ name: "secret-scrubber", type: "hook", cat: "hook", desc: "PreToolUse security gate intercepting file write operations to block hardcoded API keys and private secrets." },
|
|
747
|
+
{ name: "auto-lint-formatter", type: "hook", cat: "hook", desc: "PostToolUse automated formatting with project linters (prettier, black, ruff, gofmt) immediately after file edits." },
|
|
748
|
+
{ name: "goal-verifier", type: "hook", cat: "hook", desc: "Stop hook intercepting agent exit, validating whether test suites pass or objectives are fulfilled before stopping." },
|
|
749
|
+
{ name: "ephemeral-context", type: "hook", cat: "hook", desc: "PreInvocation hook dynamically injecting repo context, alerts, and instructions into model reasoning turns." },
|
|
750
|
+
{ name: "learned-instincts", type: "hook", cat: "hook", desc: "Session learning hook that records developer corrections and feedback into persistent instincts." }
|
|
485
751
|
];
|
|
486
752
|
|
|
487
753
|
let currentCat = 'all';
|
|
@@ -491,6 +757,7 @@
|
|
|
491
757
|
if (cat === 'frontier') return 'tag-frontier';
|
|
492
758
|
if (cat === 'subagent') return 'tag-agent';
|
|
493
759
|
if (cat === 'backend') return 'tag-backend';
|
|
760
|
+
if (cat === 'hook') return 'tag-hook';
|
|
494
761
|
return 'tag-devops';
|
|
495
762
|
}
|
|
496
763
|
|
|
@@ -511,27 +778,130 @@
|
|
|
511
778
|
}
|
|
512
779
|
|
|
513
780
|
filtered.forEach(item => {
|
|
781
|
+
let githubUrl = "https://github.com/salmandev/everything-gemini";
|
|
782
|
+
let addCmd = `everything-gemini add skill ${item.name}`;
|
|
783
|
+
|
|
784
|
+
if (item.type === 'subagent' || item.name.startsWith('agents/')) {
|
|
785
|
+
const agentClean = item.name.replace('agents/', '');
|
|
786
|
+
githubUrl = `https://github.com/salmandev/everything-gemini/blob/main/agents/${agentClean}.md`;
|
|
787
|
+
addCmd = `everything-gemini add agent ${agentClean}`;
|
|
788
|
+
} else if (item.name === 'antigravity-sdk-orchestrator') {
|
|
789
|
+
githubUrl = `https://github.com/salmandev/everything-gemini/blob/main/plugins/python-ai/skills/antigravity-sdk-orchestrator/SKILL.md`;
|
|
790
|
+
addCmd = `everything-gemini add skill antigravity-sdk-orchestrator`;
|
|
791
|
+
} else if (item.name === 'responsive-design') {
|
|
792
|
+
githubUrl = `https://github.com/salmandev/everything-gemini/blob/main/plugins/web-fullstack/skills/responsive-design/SKILL.md`;
|
|
793
|
+
addCmd = `everything-gemini add skill responsive-design`;
|
|
794
|
+
} else if (item.type === 'hook') {
|
|
795
|
+
githubUrl = `https://github.com/salmandev/everything-gemini/blob/main/hooks/${item.name}/hooks.json`;
|
|
796
|
+
addCmd = `everything-gemini add hook ${item.name}`;
|
|
797
|
+
} else {
|
|
798
|
+
githubUrl = `https://github.com/salmandev/everything-gemini/blob/main/skills/${item.name}/SKILL.md`;
|
|
799
|
+
addCmd = `everything-gemini add skill ${item.name}`;
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
let tagLabel = '⚡ Skill';
|
|
803
|
+
if (item.type === 'subagent' || item.name.startsWith('agents/')) tagLabel = '🤖 Subagent';
|
|
804
|
+
else if (item.cat === 'frontier') tagLabel = '🪐 Frontier';
|
|
805
|
+
else if (item.cat === 'backend') tagLabel = '☁️ Backend';
|
|
806
|
+
else if (item.type === 'hook') tagLabel = '🛡️ Hook';
|
|
807
|
+
else if (item.cat === 'devops') tagLabel = '🛠️ DevOps';
|
|
808
|
+
|
|
514
809
|
const card = document.createElement('div');
|
|
515
810
|
card.className = 'card';
|
|
811
|
+
card.onclick = (e) => {
|
|
812
|
+
if (!e.target.closest('.card-actions')) {
|
|
813
|
+
openModal(item, tagLabel, githubUrl, addCmd);
|
|
814
|
+
}
|
|
815
|
+
};
|
|
516
816
|
card.innerHTML = `
|
|
517
817
|
<div>
|
|
518
|
-
<span class="card-tag ${getTagClass(item.cat)}">${
|
|
818
|
+
<span class="card-tag ${getTagClass(item.cat)}">${tagLabel}</span>
|
|
519
819
|
<h3>${item.name}</h3>
|
|
520
820
|
<p>${item.desc}</p>
|
|
521
821
|
</div>
|
|
522
|
-
<div class="card-
|
|
523
|
-
<
|
|
524
|
-
<
|
|
822
|
+
<div class="card-actions">
|
|
823
|
+
<a href="${githubUrl}" target="_blank" class="card-btn-view" onclick="event.stopPropagation()">View Spec ↗</a>
|
|
824
|
+
<button class="card-btn-copy" onclick="event.stopPropagation(); copyCardCmd('${addCmd}', this)">Copy Add CLI</button>
|
|
525
825
|
</div>
|
|
526
826
|
`;
|
|
527
827
|
container.appendChild(card);
|
|
528
828
|
});
|
|
529
829
|
}
|
|
530
830
|
|
|
531
|
-
function
|
|
831
|
+
function openModal(item, tagLabel, githubUrl, addCmd) {
|
|
832
|
+
document.getElementById('modal-tag').className = 'card-tag ' + getTagClass(item.cat);
|
|
833
|
+
document.getElementById('modal-tag').innerText = tagLabel;
|
|
834
|
+
document.getElementById('modal-title').innerText = item.name;
|
|
835
|
+
document.getElementById('modal-desc').innerText = item.desc;
|
|
836
|
+
document.getElementById('modal-cmd').innerText = addCmd;
|
|
837
|
+
document.getElementById('modal-github-link').href = githubUrl;
|
|
838
|
+
const copyBtn = document.getElementById('modal-copy-btn');
|
|
839
|
+
copyBtn.innerText = 'Copy CLI';
|
|
840
|
+
copyBtn.style.color = '';
|
|
841
|
+
copyBtn.style.borderColor = '';
|
|
842
|
+
document.getElementById('quick-view-modal').classList.add('open');
|
|
843
|
+
document.body.style.overflow = 'hidden';
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
function closeModal() {
|
|
847
|
+
document.getElementById('quick-view-modal').classList.remove('open');
|
|
848
|
+
document.body.style.overflow = '';
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
function closeModalOnBackdrop(e) {
|
|
852
|
+
if (e.target.id === 'quick-view-modal') {
|
|
853
|
+
closeModal();
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
document.addEventListener('keydown', (e) => {
|
|
858
|
+
if (e.key === 'Escape') closeModal();
|
|
859
|
+
});
|
|
860
|
+
|
|
861
|
+
function copyModalCmd() {
|
|
862
|
+
const text = document.getElementById('modal-cmd').innerText;
|
|
863
|
+
const btn = document.getElementById('modal-copy-btn');
|
|
864
|
+
copyCardCmd(text, btn);
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
function setInstallProfile(profile, ev) {
|
|
868
|
+
document.querySelectorAll('.profile-tab').forEach(t => t.classList.remove('active'));
|
|
869
|
+
if (ev && ev.target) ev.target.classList.add('active');
|
|
870
|
+
const cmdEl = document.getElementById('cmd-text');
|
|
871
|
+
if (profile === 'developer') cmdEl.innerText = 'npx everything-gemini install --profile developer';
|
|
872
|
+
else if (profile === 'core') cmdEl.innerText = 'npx everything-gemini install --profile core';
|
|
873
|
+
else if (profile === 'full') cmdEl.innerText = 'npx everything-gemini install --profile full';
|
|
874
|
+
else if (profile === 'sync') cmdEl.innerText = 'npx everything-gemini sync';
|
|
875
|
+
else if (profile === 'scaffold') cmdEl.innerText = 'npx everything-gemini scaffold skill my-skill';
|
|
876
|
+
else if (profile === 'bundle') cmdEl.innerText = 'npx everything-gemini bundle';
|
|
877
|
+
else if (profile === 'global') cmdEl.innerText = 'npx everything-gemini install --global';
|
|
878
|
+
else if (profile === 'status') cmdEl.innerText = 'npx everything-gemini status';
|
|
879
|
+
else if (profile === 'update') cmdEl.innerText = 'npx everything-gemini update';
|
|
880
|
+
else if (profile === 'dryrun') cmdEl.innerText = 'npx everything-gemini install --profile developer --dry-run';
|
|
881
|
+
else if (profile === 'json') cmdEl.innerText = 'npx everything-gemini status --json';
|
|
882
|
+
else if (profile === 'doctor') cmdEl.innerText = 'npx everything-gemini doctor';
|
|
883
|
+
else if (profile === 'action') cmdEl.innerText = '- uses: salmandev/everything-gemini@v1';
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
function copyCardCmd(cmd, btn) {
|
|
887
|
+
navigator.clipboard.writeText(cmd);
|
|
888
|
+
const original = btn.innerText;
|
|
889
|
+
btn.innerText = 'Copied! ✔';
|
|
890
|
+
btn.style.color = '#00e676';
|
|
891
|
+
btn.style.borderColor = '#00e676';
|
|
892
|
+
setTimeout(() => {
|
|
893
|
+
btn.innerText = original;
|
|
894
|
+
btn.style.color = '';
|
|
895
|
+
btn.style.borderColor = '';
|
|
896
|
+
}, 1500);
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
function filterCategory(cat, ev) {
|
|
532
900
|
currentCat = cat;
|
|
533
901
|
document.querySelectorAll('.filter-btn').forEach(btn => btn.classList.remove('active'));
|
|
534
|
-
|
|
902
|
+
if (ev && ev.target) {
|
|
903
|
+
ev.target.classList.add('active');
|
|
904
|
+
}
|
|
535
905
|
renderCards();
|
|
536
906
|
}
|
|
537
907
|
|