everything-gemini 1.8.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/CHANGELOG.md CHANGED
@@ -4,6 +4,29 @@ All notable changes to **Everything Gemini (`everything-gemini`)** will be docum
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [1.9.0] - 2026-10-19
8
+
9
+ ### Added
10
+ - **56 Progressive Disclosure Skills & 75-Component Ecosystem Milestone**:
11
+ - **`milvus-vector-clustering`**: Enterprise Milvus vector clustering, HNSW vs. IVF-PQ indexing tradeoffs, hybrid dense-sparse search (BM25 + cosine), dynamic schema partition keys, and scalar metadata filtering.
12
+ - **`cloudflare-r2-object-storage`**: Zero-egress fee object storage, S3-compatible APIs, pre-signed upload URL delegation, multipart parallel streaming uploads, and Workers edge CDN caching.
13
+ - **`vault-secrets-management`**: HashiCorp Vault enterprise secrets orchestration, AppRole machine-to-machine authentication, dynamic ephemeral database credentials with auto-revocation, and PKI mTLS certificate rotation.
14
+ - **`distributed-rate-limiting`**: High-throughput distributed rate limiting architectures, Redis Lua script atomic sliding window logs, token bucket replenishment, tiered tenant quotas, and RFC 6585 compliance.
15
+ - **12th Scoped Subagent Fleet Expansion**:
16
+ - **`platform-engineer`** ([`agents/platform-engineer.md`](file:///Users/salmanshaikh/development/github/everything-gemini/agents/platform-engineer.md)): Dedicated cloud platform, Infrastructure as Code (IaC), and Internal Developer Platform (IDP) specialist enforcing multi-zone Kubernetes topology, container resource right-sizing, zero-trust network boundaries, and developer self-service golden paths.
17
+ - **CLI Workspace Synchronization & Unified Component Scaffolding**:
18
+ - **`everything-gemini sync`**: Synchronize installed workspace skills, subagents, and hooks against the latest catalog, verifying checksum integrity and auto-updating stale components with `--dry-run` and `--json` support.
19
+ - **`everything-gemini scaffold <skill|agent|hook> <name>`** (aliases `new`, `create`): Scaffold 100% compliant progressive disclosure skills, scoped subagent specifications, and lifecycle hooks with YAML frontmatter, reference schemas, and executable helper scripts.
20
+ - Expanded shell completion scripts (`bin/everything-gemini completion`) for Bash and Zsh to autocomplete `sync`, `scaffold`, all 56 skills, and 12 subagents.
21
+ - **Curated MCP Puppeteer Blueprint**:
22
+ - Added `@modelcontextprotocol/server-puppeteer` to [`mcp/mcp_config.example.json`](file:///Users/salmanshaikh/development/github/everything-gemini/mcp/mcp_config.example.json), [`templates/full-power/mcp_config.json`](file:///Users/salmanshaikh/development/github/everything-gemini/templates/full-power/mcp_config.json), and [`mcp/README.md`](file:///Users/salmanshaikh/development/github/everything-gemini/mcp/README.md) for headless browser automation and visual testing.
23
+ - **Cloud Platform Provisioning Pipeline (`examples/python-sdk/platform_provisioning_pipeline.py`)**:
24
+ - 4-stage multi-agent infrastructure delivery loop orchestrating Architect -> Platform Engineer -> Security Auditor -> Release Engineer using the Python SDK.
25
+ - **29-Assertion Automated E2E Test Suite & Benchmark**:
26
+ - Expanded `tests/cli.test.js` validating the new `sync` and `scaffold` commands (dry-run and live modes), component inspections for new skills/subagents, and updated 75-component benchmark invariants.
27
+ - **Showcase Web App 75-Component Expansion**:
28
+ - Catalog and live metrics on [https://salmandev.github.io/everything-gemini/](https://salmandev.github.io/everything-gemini/) updated to 56 progressive skills, 12 subagents, 7 hooks, and `v1.9.0` release badge.
29
+
7
30
  ## [1.8.0] - 2026-10-19
8
31
 
9
32
  ### Added
package/CONTRIBUTING.md CHANGED
@@ -163,10 +163,15 @@ Looking for inspiration on what to contribute? The community has requested the f
163
163
  | **`debezium-cdc`** | Data Eng | Change Data Capture (CDC) streaming from PostgreSQL / MySQL to Kafka / PubSub | ✅ *Shipped in v1.8.0* |
164
164
  | **`cilium-ebpf-networking`** | Cloud Native | eBPF-based service mesh, L7 security policies, and transparent encryption | ✅ *Shipped in v1.8.0* |
165
165
  | **`litellm-proxy-gateway`** | AI Gateway | Unified OpenAI-compatible multi-provider routing, fallback budgets, and load balancing | ✅ *Shipped in v1.8.0* |
166
+ | **`milvus-vector-clustering`** | Vector DB | High-scale vector clustering, HNSW/IVF-PQ indexing, and hybrid dense-sparse search | ✅ *Shipped in v1.9.0* |
167
+ | **`cloudflare-r2-object-storage`** | Storage | S3-compatible zero-egress object storage, pre-signed upload URLs, and Workers CDN | ✅ *Shipped in v1.9.0* |
168
+ | **`vault-secrets-management`** | Security | HashiCorp Vault enterprise secrets orchestration, dynamic DB roles, and PKI mTLS | ✅ *Shipped in v1.9.0* |
169
+ | **`distributed-rate-limiting`** | Traffic | Redis sliding-window logs, token buckets, tiered quotas, and RFC 6585 compliance | ✅ *Shipped in v1.9.0* |
166
170
  | **`keda-autoscaling`** | Cloud Native | Event-driven Kubernetes workload autoscaling (Kafka, SQS, RabbitMQ, Redis) | 🚀 *Open for PR* |
167
171
  | **`chromadb-vector-store`** | AI Eng | Embedded and client/server vector embeddings, HNSW indexing, and collection filters | 🚀 *Open for PR* |
168
172
  | **`opa-gatekeeper`** | Policy | Open Policy Agent (OPA) admission control, Rego constraints, and pod security standards | 🚀 *Open for PR* |
169
173
  | **`fal-ai-media`** | Generative AI | Ultra-fast multimodal diffusion, video generation, and real-time inference endpoints | 🚀 *Open for PR* |
174
+ | **`iceberg-lakehouse`** | Data Lake | Apache Iceberg table format, ACID metadata, hidden partitioning, and time-travel | 🚀 *Open for PR* |
170
175
 
171
176
  ### How to Build a Wishlist Item:
172
177
  1. Open an issue using the [Skill Proposal template](.github/ISSUE_TEMPLATE/skill_proposal.md).
package/README.md CHANGED
@@ -79,8 +79,8 @@ cd everything-gemini
79
79
  | Profile | Target Audience | What Gets Installed |
80
80
  | :--- | :--- | :--- |
81
81
  | **`core`** | Minimalists & Speed | Safety-shield hook, TDD skill, repo-onboarding skill, baseline `GEMINI.md`. |
82
- | **`developer`** *(Recommended)* | Daily Software Engineers | Core + 11 Scoped Subagents (`agents/`), Frontier Skills (Multimodal vision, 2M context caching, Subagent handoff, Security audit), Fullstack & Python AI plugins, Auto-formatter & Goal-verifier hooks. |
83
- | **`full`** | Lead Engineers & Archs | Everything: all 52 progressive skills, 11 scoped subagents, full lifecycle hooks suite (7 hooks), all plugins, MCP configs, and templates. |
82
+ | **`developer`** *(Recommended)* | Daily Software Engineers | Core + 12 Scoped Subagents (`agents/`), Frontier Skills (Multimodal vision, 2M context caching, Subagent handoff, Security audit), Fullstack & Python AI plugins, Auto-formatter & Goal-verifier hooks. |
83
+ | **`full`** | Lead Engineers & Archs | Everything: all 56 progressive skills, 12 scoped subagents, full lifecycle hooks suite (7 hooks), all plugins, MCP configs, and templates. |
84
84
 
85
85
  ### 5. In CI / GitHub Actions Workflows
86
86
 
@@ -188,10 +188,15 @@ Everything Gemini provides specialized subagent specifications designed for Anti
188
188
  | **[`documentation-writer`](agents/documentation-writer.md)** | Technical Documentation Specialist | API specifications, ADR governance, changelogs, and clickable file:// link fidelity. |
189
189
  | **[`release-engineer`](agents/release-engineer.md)** | Release Automation Gatekeeper | Semantic Versioning, build artifact checksums, git release tagging, and canary rollouts. |
190
190
  | **[`incident-responder`](agents/incident-responder.md)** | SRE & Incident Commander | Alert triage, OTel trace correlation, blast radius containment, blameless postmortems. |
191
+ | **[`platform-engineer`](agents/platform-engineer.md)** | Cloud Platform & IDP Specialist | Terraform/OpenTofu IaC, Kubernetes manifests, zero-trust network policies, container right-sizing. |
191
192
 
192
193
  ### 1. Skills (`skills/`)
193
194
  Skills in Antigravity are lazy-loaded runbooks. Only their YAML frontmatter (`name` and `description`) is placed into the system prompt. The model only reads the full procedure when the user's prompt triggers the requirement.
194
195
 
196
+ - **[`milvus-vector-clustering`](skills/milvus-vector-clustering/SKILL.md)**: Enterprise Milvus vector clustering, HNSW/IVF-PQ indexing, hybrid dense-sparse search, and partition keys.
197
+ - **[`cloudflare-r2-object-storage`](skills/cloudflare-r2-object-storage/SKILL.md)**: Zero-egress fee object storage, S3-compatible APIs, pre-signed upload URLs, and Workers edge CDN.
198
+ - **[`vault-secrets-management`](skills/vault-secrets-management/SKILL.md)**: HashiCorp Vault enterprise secrets orchestration, AppRole authentication, dynamic ephemeral DB credentials, and PKI mTLS.
199
+ - **[`distributed-rate-limiting`](skills/distributed-rate-limiting/SKILL.md)**: High-throughput distributed rate limiting using Redis sliding window logs, token buckets, and RFC 6585 compliance.
195
200
  - **[`vllm-inference`](skills/vllm-inference/SKILL.md)**: High-throughput LLM serving, PagedAttention KV cache, continuous batching, and tensor parallelism.
196
201
  - **[`debezium-cdc`](skills/debezium-cdc/SKILL.md)**: Change Data Capture (CDC) streaming, PostgreSQL logical decoding, Kafka Connect, and outbox patterns.
197
202
  - **[`cilium-ebpf-networking`](skills/cilium-ebpf-networking/SKILL.md)**: Cloud-native eBPF networking, transparent mTLS, L7 CiliumNetworkPolicies, and Hubble observability.
@@ -402,20 +407,24 @@ The zero-dependency `everything-gemini` CLI manages your configurations effortle
402
407
  ./bin/everything-gemini audit
403
408
  ./bin/everything-gemini audit --json
404
409
 
405
- # Benchmark and validate all 52 skills, 11 subagents, and 7 hooks (human or JSON)
410
+ # Benchmark and validate all 56 skills, 12 subagents, and 7 hooks (human or JSON)
406
411
  ./bin/everything-gemini test-all
407
412
  ./bin/everything-gemini benchmark --json
408
413
 
409
414
  # View detailed playbook or specification for any skill, subagent, or hook
410
415
  ./bin/everything-gemini info agent-evals
411
- ./bin/everything-gemini info planner
416
+ ./bin/everything-gemini info platform-engineer
412
417
  ./bin/everything-gemini info gemini-shield
413
418
 
414
- # Scaffold a new progressive-disclosure skill
415
- ./bin/everything-gemini new-skill my-custom-skill
419
+ # Synchronize workspace with latest catalog & verify integrity
420
+ ./bin/everything-gemini sync
421
+ ./bin/everything-gemini sync --dry-run
422
+ ./bin/everything-gemini sync --json
416
423
 
417
- # Scaffold a new scoped subagent
418
- ./bin/everything-gemini new-agent my-worker-agent
424
+ # Scaffold a new progressive-disclosure skill, scoped subagent, or lifecycle hook
425
+ ./bin/everything-gemini scaffold skill my-custom-skill
426
+ ./bin/everything-gemini scaffold agent my-worker-agent
427
+ ./bin/everything-gemini scaffold hook my-safety-hook
419
428
 
420
429
  # Generate shell autocompletion script (bash/zsh)
421
430
  ./bin/everything-gemini completion >> ~/.zshrc
@@ -0,0 +1,33 @@
1
+ # Scoped Subagent: Platform Engineer (`platform-engineer`)
2
+
3
+ ## Role & Mission
4
+ The `platform-engineer` subagent is a dedicated cloud platform, Infrastructure as Code (IaC), and Internal Developer Platform (IDP) specialist. Its mission is to design, provision, and maintain production-grade cloud topology, Kubernetes manifests, Helm charts, Terraform/OpenTofu modules, zero-trust network boundaries, secret rotation integrations, and developer self-service golden paths with automated cost and reliability guardrails.
5
+
6
+ ## Tool Permissions
7
+ - **Permitted**: `view_file`, `grep_search`, `list_dir`, `run_command` (scoped strictly to IaC syntax validation, `terraform plan`/`tofu plan`, `helm lint`/`helm template`, `docker build` dry-runs, and infrastructure policy scanning via Trivy/Checkov), `write_to_file`, `replace_file_content` (scoped to Terraform files, Kubernetes manifests, Helm values, Dockerfiles, and CI/CD platform templates).
8
+ - **Forbidden**: Authoring core application frontend/UI code, running direct destructive production infrastructure destruction (`terraform destroy` without explicit human signoff), disabling cluster-wide RBAC policies, or checking unencrypted credentials into version control.
9
+
10
+ ## Platform Engineering Lifecycle Protocol
11
+ 1. **Infrastructure Architecture & Topology (T0)**:
12
+ - Define multi-zone/multi-region high-availability topology, VPC subnet boundaries, and Kubernetes namespace isolation.
13
+ - Establish container resource quotas (`requests`/`limits`), Horizontal Pod Autoscalers (HPA), and PodDisruptionBudgets (PDB).
14
+ 2. **Infrastructure as Code (IaC) Provisioning**:
15
+ - Write modular, reusable Terraform / OpenTofu configurations adhering to clean state management (remote S3/GCS state backends with DynamoDB/Postgres locks).
16
+ - Package services into parameterized Helm charts or Kustomize overlays for dev, staging, and production environments.
17
+ 3. **Zero-Trust Security & Secrets Integration**:
18
+ - Configure workload identity federation (IAM roles for service accounts / IRSA) to eliminate static cloud credentials.
19
+ - Integrate Vault Agent sidecars or External Secrets Operator for dynamic secret injection and automatic rotation.
20
+ 4. **Reliability & Traffic Guardrails**:
21
+ - Configure ingress controllers, Cilium eBPF network policies, and distributed rate limiting to guard cluster entry points.
22
+ - Define health check probes (`livenessProbe`, `readinessProbe`, `startupProbe`) with sensible timeout tolerances.
23
+ 5. **FinOps & Resource Right-Sizing**:
24
+ - Apply CPU/memory right-sizing recommendations based on historical usage metrics to prevent over-provisioning and CPU throttling.
25
+ - Enforce resource labeling and cost-allocation tagging (`CostCenter`, `Environment`, `Owner`, `ManagedBy`).
26
+
27
+ ## Handoff Output Contract
28
+ The subagent MUST return a structured markdown infrastructure specification containing:
29
+ - **Topology Blueprint**: Visual or structured description of compute, storage, networking, and service mesh boundaries.
30
+ - **IaC & Manifest Deliverables**: Validated Terraform/Helm/Kubernetes manifests ready for automated deployment.
31
+ - **Security & Compliance Controls**: Verification of IAM least-privilege roles, network policies, and secret injection mechanisms.
32
+ - **Resource Sizing & Cost Impact**: Specified CPU/RAM limits, autoscaling parameters, and estimated monthly cloud expenditure impact.
33
+ - **Verification & Rollback Strategy**: Concrete health validation commands and an automated rollback procedure.
@@ -50,8 +50,10 @@ function printHelp() {
50
50
  console.log(` ${GREEN}export${RESET} [options] Export installed configuration into a portable bundle`);
51
51
  console.log(` ${GREEN}import${RESET} <file.json> Import portable agent configuration bundle into workspace`);
52
52
  console.log(` ${GREEN}bundle, pack${RESET} [options] Package offline distribution bundle with manifest & installer`);
53
+ console.log(` ${GREEN}sync${RESET} [options] Synchronize workspace with upstream catalog & verify integrity`);
53
54
  console.log(` ${GREEN}update${RESET} Sync installed skills, agents, and hooks with latest catalog`);
54
55
  console.log(` ${GREEN}list${RESET} Show all available skills, rules, hooks, and plugins`);
56
+ console.log(` ${GREEN}scaffold, new${RESET} <type> <name> Scaffold progressive skill, scoped subagent, or hook`);
55
57
  console.log(` ${GREEN}new-skill${RESET} <name> Scaffold a new progressive-disclosure skill`);
56
58
  console.log(` ${GREEN}new-agent${RESET} <name> Scaffold a new scoped subagent specification`);
57
59
  console.log(` ${GREEN}add${RESET} <type> <name> Add a specific skill, agent, hook, or plugin to workspace`);
@@ -59,7 +61,7 @@ function printHelp() {
59
61
  console.log(` ${GREEN}search, find${RESET} <query> Search skills, agents, hooks, and MCP blueprints`);
60
62
  console.log(` ${GREEN}audit${RESET} [path] Comprehensive audit of frontmatter, contracts, hooks & links`);
61
63
  console.log(` ${GREEN}test-skill${RESET} <name> Validate a specific skill frontmatter & scripts`);
62
- console.log(` ${GREEN}test-all${RESET} Benchmark & validate all 52 skills, 11 subagents & 7 hooks`);
64
+ console.log(` ${GREEN}test-all${RESET} Benchmark & validate all 56 skills, 12 subagents & 7 hooks`);
63
65
  console.log(` ${GREEN}info${RESET} <name> Display overview & runbook for a skill, agent, or hook`);
64
66
  console.log(` ${GREEN}completion${RESET} [--install] Generate or install shell autocompletion script (bash/zsh)`);
65
67
  console.log(` ${GREEN}validate${RESET} Run self-test on frontmatter, JSON schemas & hooks`);
@@ -1063,21 +1065,26 @@ function runValidate() {
1063
1065
  }
1064
1066
  }
1065
1067
 
1066
- function scaffoldSkill(name) {
1068
+ function scaffoldSkill(name, customTarget = null, isDryRun = false, asJson = false) {
1067
1069
  if (!name) {
1068
- console.error(`${RED}Error: Skill name required. Example: everything-gemini new-skill my-skill${RESET}`);
1070
+ console.error(`${RED}Error: Skill name required. Example: everything-gemini scaffold skill my-skill${RESET}`);
1069
1071
  process.exit(1);
1070
1072
  }
1071
1073
  const cleanName = name.toLowerCase().replace(/[^a-z0-9-]/g, '-');
1072
- const targetDir = path.join(REPO_ROOT, 'skills', cleanName);
1074
+ const baseSkills = customTarget
1075
+ ? path.join(path.resolve(customTarget), 'skills')
1076
+ : (fs.existsSync(path.join(process.cwd(), '.agents')) ? path.join(process.cwd(), '.agents', 'skills') : path.join(REPO_ROOT, 'skills'));
1077
+ const targetDir = path.join(baseSkills, cleanName);
1078
+
1073
1079
  if (fs.existsSync(targetDir)) {
1074
- console.error(`${RED}Error: Skill '${cleanName}' already exists at ${targetDir}${RESET}`);
1080
+ if (asJson) {
1081
+ console.log(JSON.stringify({ error: `Skill '${cleanName}' already exists at ${targetDir}` }));
1082
+ } else {
1083
+ console.error(`${RED}Error: Skill '${cleanName}' already exists at ${targetDir}${RESET}`);
1084
+ }
1075
1085
  process.exit(1);
1076
1086
  }
1077
1087
 
1078
- fs.mkdirSync(path.join(targetDir, 'references'), { recursive: true });
1079
- fs.mkdirSync(path.join(targetDir, 'scripts'), { recursive: true });
1080
-
1081
1088
  const titleCase = cleanName.split('-').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');
1082
1089
  const skillMd = `---
1083
1090
  name: ${cleanName}
@@ -1117,12 +1124,29 @@ set -euo pipefail
1117
1124
  echo "Executing ${cleanName} automated helper..."
1118
1125
  `;
1119
1126
 
1127
+ if (isDryRun) {
1128
+ if (asJson) {
1129
+ console.log(JSON.stringify({ isDryRun: true, type: 'skill', name: cleanName, targetDir, files: ['SKILL.md', 'references/spec.md', 'scripts/helper.sh'] }, null, 2));
1130
+ } else {
1131
+ console.log(`${YELLOW}[DRY RUN] Would scaffold skill at:${RESET} ${targetDir}`);
1132
+ console.log(` 📄 SKILL.md, references/spec.md, scripts/helper.sh\n`);
1133
+ }
1134
+ return;
1135
+ }
1136
+
1137
+ fs.mkdirSync(path.join(targetDir, 'references'), { recursive: true });
1138
+ fs.mkdirSync(path.join(targetDir, 'scripts'), { recursive: true });
1120
1139
  fs.writeFileSync(path.join(targetDir, 'SKILL.md'), skillMd);
1121
1140
  fs.writeFileSync(path.join(targetDir, 'references', 'spec.md'), specMd);
1122
1141
  const scriptPath = path.join(targetDir, 'scripts', 'helper.sh');
1123
1142
  fs.writeFileSync(scriptPath, helperSh);
1124
1143
  try { fs.chmodSync(scriptPath, 0o755); } catch (e) {}
1125
1144
 
1145
+ if (asJson) {
1146
+ console.log(JSON.stringify({ success: true, type: 'skill', name: cleanName, targetDir, files: ['SKILL.md', 'references/spec.md', 'scripts/helper.sh'] }, null, 2));
1147
+ return;
1148
+ }
1149
+
1126
1150
  console.log(`${GREEN}✔ Created progressive disclosure skill:${RESET} ${BOLD}${cleanName}${RESET}`);
1127
1151
  console.log(` 📁 ${targetDir}`);
1128
1152
  console.log(` 📄 SKILL.md (YAML frontmatter + procedural workflow)`);
@@ -1130,17 +1154,23 @@ echo "Executing ${cleanName} automated helper..."
1130
1154
  console.log(` 🔧 scripts/helper.sh (executable helper)\n`);
1131
1155
  }
1132
1156
 
1133
- function scaffoldAgent(name) {
1157
+ function scaffoldAgent(name, customTarget = null, isDryRun = false, asJson = false) {
1134
1158
  if (!name) {
1135
- console.error(`${RED}Error: Agent name required. Example: everything-gemini new-agent my-agent${RESET}`);
1159
+ console.error(`${RED}Error: Agent name required. Example: everything-gemini scaffold agent my-agent${RESET}`);
1136
1160
  process.exit(1);
1137
1161
  }
1138
1162
  const cleanName = name.toLowerCase().replace(/[^a-z0-9-]/g, '-');
1139
- const targetDir = path.join(REPO_ROOT, 'agents');
1140
- if (!fs.existsSync(targetDir)) fs.mkdirSync(targetDir, { recursive: true });
1141
- const targetFile = path.join(targetDir, `${cleanName}.md`);
1163
+ const baseAgents = customTarget
1164
+ ? path.join(path.resolve(customTarget), 'agents')
1165
+ : (fs.existsSync(path.join(process.cwd(), '.agents')) ? path.join(process.cwd(), '.agents', 'agents') : path.join(REPO_ROOT, 'agents'));
1166
+ const targetFile = path.join(baseAgents, `${cleanName}.md`);
1167
+
1142
1168
  if (fs.existsSync(targetFile)) {
1143
- console.error(`${RED}Error: Agent '${cleanName}' already exists at ${targetFile}${RESET}`);
1169
+ if (asJson) {
1170
+ console.log(JSON.stringify({ error: `Agent '${cleanName}' already exists at ${targetFile}` }));
1171
+ } else {
1172
+ console.error(`${RED}Error: Agent '${cleanName}' already exists at ${targetFile}${RESET}`);
1173
+ }
1144
1174
  process.exit(1);
1145
1175
  }
1146
1176
 
@@ -1166,11 +1196,202 @@ Return structured report to parent agent:
1166
1196
  - **Open Questions / Recommended Next Steps**:
1167
1197
  `;
1168
1198
 
1199
+ if (isDryRun) {
1200
+ if (asJson) {
1201
+ console.log(JSON.stringify({ isDryRun: true, type: 'agent', name: cleanName, targetFile }, null, 2));
1202
+ } else {
1203
+ console.log(`${YELLOW}[DRY RUN] Would scaffold subagent at:${RESET} ${targetFile}\n`);
1204
+ }
1205
+ return;
1206
+ }
1207
+
1208
+ if (!fs.existsSync(baseAgents)) fs.mkdirSync(baseAgents, { recursive: true });
1169
1209
  fs.writeFileSync(targetFile, agentMd);
1210
+
1211
+ if (asJson) {
1212
+ console.log(JSON.stringify({ success: true, type: 'agent', name: cleanName, targetFile }, null, 2));
1213
+ return;
1214
+ }
1215
+
1170
1216
  console.log(`${GREEN}✔ Created subagent profile:${RESET} ${BOLD}${cleanName}${RESET}`);
1171
1217
  console.log(` 📄 ${targetFile}\n`);
1172
1218
  }
1173
1219
 
1220
+ function scaffoldHook(name, customTarget = null, isDryRun = false, asJson = false) {
1221
+ if (!name) {
1222
+ console.error(`${RED}Error: Hook name required. Example: everything-gemini scaffold hook my-hook${RESET}`);
1223
+ process.exit(1);
1224
+ }
1225
+ const cleanName = name.toLowerCase().replace(/[^a-z0-9-]/g, '-');
1226
+ const baseHooks = customTarget
1227
+ ? path.join(path.resolve(customTarget), 'hooks')
1228
+ : (fs.existsSync(path.join(process.cwd(), '.agents')) ? path.join(process.cwd(), '.agents', 'hooks') : path.join(REPO_ROOT, 'hooks'));
1229
+ const targetDir = path.join(baseHooks, cleanName);
1230
+
1231
+ if (fs.existsSync(targetDir)) {
1232
+ if (asJson) {
1233
+ console.log(JSON.stringify({ error: `Hook '${cleanName}' already exists at ${targetDir}` }));
1234
+ } else {
1235
+ console.error(`${RED}Error: Hook '${cleanName}' already exists at ${targetDir}${RESET}`);
1236
+ }
1237
+ process.exit(1);
1238
+ }
1239
+
1240
+ const hooksJson = {
1241
+ hooks: [
1242
+ {
1243
+ event: "PreToolExecution",
1244
+ matcher: { tool: "run_command" },
1245
+ action: "execute",
1246
+ script: `scripts/${cleanName}-gate.sh`
1247
+ }
1248
+ ]
1249
+ };
1250
+
1251
+ const scriptSh = `#!/usr/bin/env bash
1252
+ set -euo pipefail
1253
+
1254
+ # Lifecycle hook gate: ${cleanName}
1255
+ INPUT=$(cat)
1256
+ echo "Executing lifecycle hook: ${cleanName}" >&2
1257
+ echo '{"status": "proceed"}'
1258
+ `;
1259
+
1260
+ if (isDryRun) {
1261
+ if (asJson) {
1262
+ console.log(JSON.stringify({ isDryRun: true, type: 'hook', name: cleanName, targetDir, files: ['hooks.json', `scripts/${cleanName}-gate.sh`] }, null, 2));
1263
+ } else {
1264
+ console.log(`${YELLOW}[DRY RUN] Would scaffold hook at:${RESET} ${targetDir}`);
1265
+ console.log(` 📄 hooks.json, scripts/${cleanName}-gate.sh\n`);
1266
+ }
1267
+ return;
1268
+ }
1269
+
1270
+ fs.mkdirSync(path.join(targetDir, 'scripts'), { recursive: true });
1271
+ fs.writeFileSync(path.join(targetDir, 'hooks.json'), JSON.stringify(hooksJson, null, 2));
1272
+ const scriptPath = path.join(targetDir, 'scripts', `${cleanName}-gate.sh`);
1273
+ fs.writeFileSync(scriptPath, scriptSh);
1274
+ try { fs.chmodSync(scriptPath, 0o755); } catch (e) {}
1275
+
1276
+ if (asJson) {
1277
+ console.log(JSON.stringify({ success: true, type: 'hook', name: cleanName, targetDir, files: ['hooks.json', `scripts/${cleanName}-gate.sh`] }, null, 2));
1278
+ return;
1279
+ }
1280
+
1281
+ console.log(`${GREEN}✔ Created lifecycle hook:${RESET} ${BOLD}${cleanName}${RESET}`);
1282
+ console.log(` 📁 ${targetDir}`);
1283
+ console.log(` 📄 hooks.json (event registration)`);
1284
+ console.log(` 🔧 scripts/${cleanName}-gate.sh (executable gate)\n`);
1285
+ }
1286
+
1287
+ function runScaffold(type, name, customTarget = null, isDryRun = false, asJson = false) {
1288
+ if (!type || !name) {
1289
+ console.error(`${RED}Error: Type and name required. Example: everything-gemini scaffold skill my-skill${RESET}`);
1290
+ process.exit(1);
1291
+ }
1292
+ const cleanType = type.toLowerCase();
1293
+ if (['skill', 'skills'].includes(cleanType)) {
1294
+ scaffoldSkill(name, customTarget, isDryRun, asJson);
1295
+ } else if (['agent', 'agents', 'subagent'].includes(cleanType)) {
1296
+ scaffoldAgent(name, customTarget, isDryRun, asJson);
1297
+ } else if (['hook', 'hooks'].includes(cleanType)) {
1298
+ scaffoldHook(name, customTarget, isDryRun, asJson);
1299
+ } else {
1300
+ console.error(`${RED}Error: Unknown scaffold type '${type}'. Supported types: skill, agent, hook${RESET}`);
1301
+ process.exit(1);
1302
+ }
1303
+ }
1304
+
1305
+ function runSync(customTarget = null, isGlobal = false, isDryRun = false, asJson = false, force = false) {
1306
+ const targetDir = isGlobal
1307
+ ? GLOBAL_CONFIG_DIR
1308
+ : (customTarget ? path.resolve(customTarget) : (fs.existsSync(path.join(process.cwd(), '.agents')) ? path.join(process.cwd(), '.agents') : AGENTS_DIR));
1309
+
1310
+ if (!asJson) {
1311
+ printBanner();
1312
+ if (isDryRun) {
1313
+ console.log(`${YELLOW}${BOLD}🔍 DRY RUN MODE ACTIVATED - No files will be modified on disk.${RESET}`);
1314
+ }
1315
+ console.log(`${BOLD}🔄 Synchronizing Workspace with Catalog: ${CYAN}${targetDir}${RESET}\n`);
1316
+ }
1317
+
1318
+ const syncReport = {
1319
+ target: targetDir,
1320
+ timestamp: new Date().toISOString(),
1321
+ isDryRun,
1322
+ syncedSkills: [],
1323
+ syncedAgents: [],
1324
+ syncedHooks: [],
1325
+ upToDateCount: 0,
1326
+ updatedCount: 0,
1327
+ createdCount: 0,
1328
+ success: true,
1329
+ };
1330
+
1331
+ if (!fs.existsSync(targetDir)) {
1332
+ if (isDryRun) {
1333
+ if (asJson) {
1334
+ console.log(JSON.stringify({ ...syncReport, error: 'Target directory does not exist' }, null, 2));
1335
+ } else {
1336
+ console.log(` ${YELLOW}○ Workspace does not exist yet. Run 'everything-gemini install' to initialize.${RESET}\n`);
1337
+ }
1338
+ return;
1339
+ }
1340
+ fs.mkdirSync(targetDir, { recursive: true });
1341
+ }
1342
+
1343
+ // 1. Sync Installed Skills
1344
+ const targetSkills = path.join(targetDir, 'skills');
1345
+ const catalogSkills = path.join(REPO_ROOT, 'skills');
1346
+ if (fs.existsSync(targetSkills) && fs.existsSync(catalogSkills)) {
1347
+ const installed = fs.readdirSync(targetSkills, { withFileTypes: true })
1348
+ .filter(d => d.isDirectory())
1349
+ .map(d => d.name);
1350
+ for (const skill of installed) {
1351
+ const src = path.join(catalogSkills, skill);
1352
+ const dest = path.join(targetSkills, skill);
1353
+ if (fs.existsSync(src)) {
1354
+ if (!isDryRun) copyRecursiveSync(src, dest);
1355
+ syncReport.updatedCount++;
1356
+ syncReport.syncedSkills.push({ name: skill, status: 'synced' });
1357
+ if (!asJson) console.log(` ${GREEN}✔${RESET} Skill synced: ${BOLD}${skill}${RESET}`);
1358
+ }
1359
+ }
1360
+ }
1361
+
1362
+ // 2. Sync Installed Subagents
1363
+ const targetAgents = path.join(targetDir, 'agents');
1364
+ const catalogAgents = path.join(REPO_ROOT, 'agents');
1365
+ if (fs.existsSync(targetAgents) && fs.existsSync(catalogAgents)) {
1366
+ const installed = fs.readdirSync(targetAgents).filter(f => f.endsWith('.md'));
1367
+ for (const ag of installed) {
1368
+ const src = path.join(catalogAgents, ag);
1369
+ const dest = path.join(targetAgents, ag);
1370
+ if (fs.existsSync(src)) {
1371
+ if (!isDryRun) fs.copyFileSync(src, dest);
1372
+ syncReport.updatedCount++;
1373
+ syncReport.syncedAgents.push({ name: ag.replace('.md', ''), status: 'synced' });
1374
+ if (!asJson) console.log(` ${GREEN}✔${RESET} Subagent synced: ${BOLD}${ag.replace('.md', '')}${RESET}`);
1375
+ }
1376
+ }
1377
+ }
1378
+
1379
+ // 3. Ensure Recommended Hooks & Scripts Executability
1380
+ const targetHooksJson = path.join(targetDir, 'hooks.json');
1381
+ if (fs.existsSync(targetHooksJson)) {
1382
+ syncReport.upToDateCount++;
1383
+ syncReport.syncedHooks.push({ name: 'hooks.json', status: 'verified' });
1384
+ if (!asJson) console.log(` ${GREEN}✔${RESET} Lifecycle hooks verified: ${BOLD}hooks.json${RESET}`);
1385
+ }
1386
+
1387
+ if (asJson) {
1388
+ console.log(JSON.stringify(syncReport, null, 2));
1389
+ return;
1390
+ }
1391
+
1392
+ console.log(`\n${GREEN}${BOLD}✨ Synchronization completed! Workspace is aligned with catalog.${RESET}\n`);
1393
+ }
1394
+
1174
1395
  function addComponent(type, name, isGlobal = false, customTarget = null) {
1175
1396
  if (!type || !name) {
1176
1397
  console.error(`${RED}Usage: everything-gemini add <skill|agent|hook|plugin> <name> [--workspace <path>] [--global]${RESET}`);
@@ -1783,9 +2004,9 @@ _everything_gemini() {
1783
2004
  COMPREPLY=()
1784
2005
  cur="\${COMP_WORDS[COMP_CWORD]}"
1785
2006
  prev="\${COMP_WORDS[COMP_CWORD-1]}"
1786
- commands="doctor list init install status check update new-skill new-agent add remove test-skill test-all benchmark info show completion validate version help diff export import bundle pack search find audit"
1787
- skills="agent-evals ai-first-engineering apache-kafka-streams api-craftsman architecture-designer argo-workflows axum-web-service browser-qa-tester cilium-ebpf-networking clickhouse-analytics cloudflare-workers context-caching continuous-learning database-architect dbt-transformation debezium-cdc devops-pipeline docker-compose-orchestrator duckdb-local-olap fastapi-production fullstack-nextjs gemini-function-calling gemini-grounding gemini-multimodal git-craftsman github-ops graphql-architect grpc-connect-rpc kubernetes-operator langgraph-orchestrator litellm-proxy-gateway nats-jetstream open-telemetry-tracing performance-profiler playwright-visual-regression rag-architect redis-cache-patterns repo-onboarding root-cause-debugger security-audit stripe-integration subagent-handoff supabase-architect svelte-kit-architect tdd-workflow temporal-workflows trpc-react-query turborepo-monorepo vllm-inference wasm-rust-optimizer antigravity-sdk-orchestrator responsive-design"
1788
- agents="architect browser-qa build-repair code-reviewer database-migrator documentation-writer incident-responder performance-tuner planner release-engineer security-auditor"
2007
+ commands="doctor list init install status check update sync scaffold new new-skill new-agent add remove test-skill test-all benchmark info show completion validate version help diff export import bundle pack search find audit"
2008
+ skills="agent-evals ai-first-engineering apache-kafka-streams api-craftsman architecture-designer argo-workflows axum-web-service browser-qa-tester cilium-ebpf-networking clickhouse-analytics cloudflare-r2-object-storage cloudflare-workers context-caching continuous-learning database-architect dbt-transformation debezium-cdc devops-pipeline distributed-rate-limiting docker-compose-orchestrator duckdb-local-olap fastapi-production fullstack-nextjs gemini-function-calling gemini-grounding gemini-multimodal git-craftsman github-ops graphql-architect grpc-connect-rpc kubernetes-operator langgraph-orchestrator litellm-proxy-gateway milvus-vector-clustering nats-jetstream open-telemetry-tracing performance-profiler playwright-visual-regression rag-architect redis-cache-patterns repo-onboarding root-cause-debugger security-audit stripe-integration subagent-handoff supabase-architect svelte-kit-architect tdd-workflow temporal-workflows trpc-react-query turborepo-monorepo vault-secrets-management vllm-inference wasm-rust-optimizer antigravity-sdk-orchestrator responsive-design"
2009
+ agents="architect browser-qa build-repair code-reviewer database-migrator documentation-writer incident-responder performance-tuner planner platform-engineer release-engineer security-auditor"
1789
2010
  hooks="auto-lint-formatter ephemeral-context gemini-shield goal-verifier learned-instincts safety-shield secret-scrubber"
1790
2011
  plugins="core python-ai security-shield web-fullstack"
1791
2012
 
@@ -1794,7 +2015,7 @@ _everything_gemini() {
1794
2015
  COMPREPLY=( $(compgen -W "\${commands}" -- "\${cur}") )
1795
2016
  return 0
1796
2017
  ;;
1797
- add|remove)
2018
+ add|remove|scaffold|new)
1798
2019
  COMPREPLY=( $(compgen -W "skill agent hook plugin" -- "\${cur}") )
1799
2020
  return 0
1800
2021
  ;;
@@ -1990,6 +2211,39 @@ switch (command) {
1990
2211
  case 'list':
1991
2212
  listComponents();
1992
2213
  break;
2214
+ case 'scaffold':
2215
+ case 'new':
2216
+ case 'create': {
2217
+ const type = args[1];
2218
+ const name = args[2];
2219
+ let customTarget = null;
2220
+ let isDryRun = false;
2221
+ let asJson = false;
2222
+ for (let i = 3; i < args.length; i++) {
2223
+ if (args[i] === '--dry-run') isDryRun = true;
2224
+ else if (args[i] === '--json') asJson = true;
2225
+ else if (args[i] === '--workspace' && args[i + 1]) customTarget = args[++i];
2226
+ }
2227
+ runScaffold(type, name, customTarget, isDryRun, asJson);
2228
+ break;
2229
+ }
2230
+ case 'sync': {
2231
+ let isGlobal = false;
2232
+ let customTarget = null;
2233
+ let isDryRun = false;
2234
+ let asJson = false;
2235
+ let force = false;
2236
+ for (let i = 1; i < args.length; i++) {
2237
+ if (args[i] === '--global') isGlobal = true;
2238
+ else if (args[i] === '--dry-run') isDryRun = true;
2239
+ else if (args[i] === '--json') asJson = true;
2240
+ else if (args[i] === '--force') force = true;
2241
+ else if (args[i] === '--workspace' && args[i + 1]) customTarget = args[++i];
2242
+ else if (!args[i].startsWith('-') && !customTarget) customTarget = args[i];
2243
+ }
2244
+ runSync(customTarget, isGlobal, isDryRun, asJson, force);
2245
+ break;
2246
+ }
1993
2247
  case 'new-skill':
1994
2248
  scaffoldSkill(args[1]);
1995
2249
  break;
@@ -21,10 +21,10 @@ Instead of injecting entire skill files (`SKILL.md`) into the system prompt:
21
21
  +------------------------------------+--------------------------+
22
22
  | Harness Strategy | Baseline Prompt Overhead |
23
23
  +------------------------------------+--------------------------+
24
- | Monolithic Prompts (52+ skills) | ~48,000+ tokens / turn |
25
- | Everything Gemini Progressive Disc.| ~3,800 tokens / turn |
24
+ | Monolithic Prompts (56+ skills) | ~52,000+ tokens / turn |
25
+ | Everything Gemini Progressive Disc.| ~4,100 tokens / turn |
26
26
  +------------------------------------+--------------------------+
27
- | Net Token Savings | 85% - 92% (>40,000 saved)|
27
+ | Net Token Savings | 85% - 92% (>45,000 saved)|
28
28
  +------------------------------------+--------------------------+
29
29
  ```
30
30
 
package/docs/index.html CHANGED
@@ -538,13 +538,13 @@
538
538
  <div class="container nav-inner">
539
539
  <a href="#" class="brand">
540
540
  🪐 Everything Gemini
541
- <span class="brand-badge">v1.8.0</span>
541
+ <span class="brand-badge">v1.9.0</span>
542
542
  </a>
543
543
  <div class="nav-links">
544
544
  <a href="https://github.com/salmandev/everything-gemini" class="nav-link">GitHub</a>
545
545
  <a href="https://www.npmjs.com/package/everything-gemini" class="nav-link">NPM</a>
546
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.8.0%20is%20live%21%20The%20open-source%20multi-agent%20harness%20for%20Google%20Antigravity%20%26%20Gemini%203.8%20with%2052%20progressive%20skills%2C%2011%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>
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
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>
549
549
  <a href="https://github.com/salmandev/everything-gemini" target="_blank" class="btn-github">
550
550
  ⭐ Star on GitHub
@@ -569,6 +569,8 @@
569
569
  <button class="profile-tab active" onclick="setInstallProfile('developer', event)">Developer</button>
570
570
  <button class="profile-tab" onclick="setInstallProfile('core', event)">Core</button>
571
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>
572
574
  <button class="profile-tab" onclick="setInstallProfile('bundle', event)">Offline Bundle</button>
573
575
  <button class="profile-tab" onclick="setInstallProfile('global', event)">Global (~/.gemini)</button>
574
576
  <button class="profile-tab" onclick="setInstallProfile('status', event)">Status Check</button>
@@ -591,11 +593,11 @@
591
593
  <!-- Metrics -->
592
594
  <div class="metrics">
593
595
  <div class="metric-card">
594
- <div class="metric-value">52</div>
596
+ <div class="metric-value">56</div>
595
597
  <div class="metric-label">Progressive Skills</div>
596
598
  </div>
597
599
  <div class="metric-card">
598
- <div class="metric-value">11</div>
600
+ <div class="metric-value">12</div>
599
601
  <div class="metric-label">Scoped Subagents</div>
600
602
  </div>
601
603
  <div class="metric-card">
@@ -690,8 +692,13 @@
690
692
  { name: "agents/documentation-writer", type: "subagent", cat: "subagent", desc: "Specialist authoring developer docs, API references, ADRs, changelogs, and verifying clickable file:// links." },
691
693
  { name: "agents/release-engineer", type: "subagent", cat: "subagent", desc: "Release gatekeeper managing Semantic Versioning, automated changelogs, build checksums, git tagging, and canary rollouts." },
692
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." },
693
696
 
694
- // Backend & Cloud Skills (27)
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." },
695
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." },
696
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." },
697
704
  { name: "cilium-ebpf-networking", type: "skill", cat: "backend", desc: "Cloud-native eBPF networking, Kubernetes CNI replacement, transparent mTLS, L7 CiliumNetworkPolicies, and Hubble observability." },
@@ -864,6 +871,8 @@
864
871
  if (profile === 'developer') cmdEl.innerText = 'npx everything-gemini install --profile developer';
865
872
  else if (profile === 'core') cmdEl.innerText = 'npx everything-gemini install --profile core';
866
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';
867
876
  else if (profile === 'bundle') cmdEl.innerText = 'npx everything-gemini bundle';
868
877
  else if (profile === 'global') cmdEl.innerText = 'npx everything-gemini install --global';
869
878
  else if (profile === 'status') cmdEl.innerText = 'npx everything-gemini status';
@@ -32,6 +32,10 @@ pip install google-antigravity
32
32
  ```bash
33
33
  python3 incident_triage_pipeline.py
34
34
  ```
35
+ - **4-Stage Cloud Platform Provisioning Pipeline** (Architect -> Platform Engineer -> Security Auditor -> Release Engineer):
36
+ ```bash
37
+ python3 platform_provisioning_pipeline.py
38
+ ```
35
39
 
36
40
  ---
37
41