Zero-Noise Vibe Engineering
ZNVE es una metodología abierta que convierte a tu asistente de IA (Claude, Gemini, Copilot, Cursor, DeepSeek, Ollama, OpenRouter o Antigravity) en un ejecutor disciplinado. Primero se diseña un contrato; después la IA escribe solo el código necesario, sin dependencias parásitas, sin logs de relleno y sin errores silenciados.
ZNVE is an open methodology that turns your AI assistant (Claude, Gemini, Copilot, Cursor, DeepSeek, Ollama, OpenRouter or Antigravity) into a disciplined executor. First you design a contract; then the AI writes only the code that is needed, with no parasitic dependencies, no filler logs and no swallowed errors.
> /znve contract --platform=web Diseña el DTO de sesión de usuario CONTRATO DE ENTRADA Y SALIDA interface UserSession { readonly userId: string; readonly expiresAtEpochMs: number } CONTRATO DE PERSISTENCIA SELECT user_id, expires_at FROM sessions WHERE token = $1 -- índice: token CONTRATO DE ERRORES type SessionError = "EXPIRED" | "NOT_FOUND" | "STORE_DOWN" ANTI-BLOAT FENCE vetado: jsonwebtoken, moment, lodash → Web Crypto nativo "Contrato v1 sólido y cerrado. Listo para /znve-execute." > /znve execute --target=src/auth/session.ts
> /znve contract --platform=web Design the user session DTO
INPUT / OUTPUT CONTRACT
interface UserSession { readonly userId: string; readonly expiresAtEpochMs: number }
PERSISTENCE CONTRACT
SELECT user_id, expires_at FROM sessions WHERE token = $1 -- index: token
ERROR CONTRACT
type SessionError = "EXPIRED" | "NOT_FOUND" | "STORE_DOWN"
ANTI-BLOAT FENCE
banned: jsonwebtoken, moment, lodash → native Web Crypto
"Contrato v1 sólido y cerrado. Listo para /znve-execute." (contract frozen)
> /znve execute --target=src/auth/session.ts
01 · El problema01 · The problem
Pedirle código a una IA sin reglas funciona los primeros días. Después aparece la deriva agéntica (agentic drift): el asistente pierde el contexto, inventa arquitectura y arregla un error rompiendo otros tres.
Asking an AI for code without rules works for the first few days. Then agentic drift sets in: the assistant loses context, invents architecture and fixes one bug by breaking three others.
Instala axios, lodash o moment para tareas que el lenguaje ya resuelve. Cada paquete es superficie de ataque, peso y deuda de actualización.
It installs axios, lodash or moment for tasks the language already solves. Every package is attack surface, weight and upgrade debt.
Bloques catch {} vacíos y sleep() para "arreglar" condiciones de carrera. El fallo sigue ahí, solo que ahora nadie lo ve.
Empty catch {} blocks and sleep() calls to "fix" race conditions. The bug is still there; now nobody can see it.
Logs de "OK" y "Success" en cada petición. En producción, las alertas reales se pierden entre miles de líneas irrelevantes.
"OK" and "Success" logs on every request. In production, real alerts get lost among thousands of irrelevant lines.
Sin un contrato, la IA propone mejoras infinitas y cambia estructuras que nadie aprobó. El proyecto nunca se estabiliza.
Without a contract, the AI keeps proposing "improvements" and changes structures nobody approved. The project never stabilizes.
02 · Qué es ZNVE02 · What ZNVE is
"Inteligencia pesada en el diseño; huella casi nula en la ejecución." Todo el razonamiento ocurre antes de programar; lo que llega a producción es mínimo, predecible y fácil de verificar.
"Heavy intelligence in the design; near-zero footprint in execution." All the reasoning happens before coding; what reaches production is minimal, predictable and easy to verify.
"La IA no inventa arquitectura; ejecuta contratos deterministas." La forma de los datos, los errores y las dependencias permitidas se deciden y se aprueban antes de escribir código.
"AI does not invent architecture; it executes deterministic contracts." Data shapes, errors and allowed dependencies are decided and approved before any code is written.
Delimitas qué se construye, apruebas los contratos y certificas que el resultado es correcto.
You set the scope, approve the contracts and certify that the result is correct.
Produce código que cumple el contrato al 100 %, en un único archivo objetivo (TARGET_FILE) por tarea, sin cambios estructurales no autorizados.
It produces code that fulfils the contract 100%, in a single target file (TARGET_FILE) per task, with no unauthorized structural changes.
SELECT *: proyecciones e índices.No SELECT *: projections and indexes.catch vacíos y los sleep parche.No empty catch blocks or patch sleep calls.03 · Antes y después03 · Before and after
Ejemplos representativos de lo que suele devolver un asistente sin reglas frente a lo que entrega bajo ZNVE. Las líneas marcadas con ✗ son los antipatrones que ZNVE prohíbe.
Representative examples of what an assistant without rules tends to return versus what it delivers under ZNVE. Lines marked with ✗ are the anti-patterns ZNVE forbids.
Pedido: "Obtén un usuario por id desde la base de datos."
Request: "Get a user by id from the database."
✗ SIN ZNVE✗ WITHOUT ZNVE
import axios from "axios"; // ✗ dependencia parásita
import _ from "lodash"; // ✗ dependencia parásita
export async function getUser(id) { // ✗ sin tipos ni contrato
try {
console.log("Fetching user..."); // ✗ ruido en runtime
const rows = await db.query("SELECT * FROM users"); // ✗ escaneo ciego
console.log("OK");
return _.find(rows, { id });
} catch (e) {} // ✗ error silenciado
}
import axios from "axios"; // ✗ parasitic dependency
import _ from "lodash"; // ✗ parasitic dependency
export async function getUser(id) { // ✗ no types, no contract
try {
console.log("Fetching user..."); // ✗ runtime noise
const rows = await db.query("SELECT * FROM users"); // ✗ blind scan
console.log("OK");
return _.find(rows, { id });
} catch (e) {} // ✗ swallowed error
}✓ CON ZNVE · /znve-contract → /znve-execute✓ WITH ZNVE · /znve-contract → /znve-execute
// contracts/user.contract.ts ✓ contrato aprobado antes del código
export interface UserSummary {
readonly id: string;
readonly name: string;
readonly role: "admin" | "operator";
}
export type UserError = "NOT_FOUND" | "TIMEOUT";
// src/users/get-user.ts ✓ único TARGET_FILE, cero dependencias nuevas
export async function getUser(id: string, db: Db): Promise<UserSummary | UserError> {
const signal = AbortSignal.timeout(2_000); // ✓ timeout explícito
try {
const row = await db.queryOne<UserSummary>(
"SELECT id, name, role FROM users WHERE id = $1", // ✓ proyección + índice
[id], { signal });
return row ?? "NOT_FOUND";
} catch (err) {
if (signal.aborted) return "TIMEOUT";
throw new Error("users.getUser failed", { cause: err }); // ✓ nada silenciado
}
}
// contracts/user.contract.ts ✓ contract approved before any code
export interface UserSummary {
readonly id: string;
readonly name: string;
readonly role: "admin" | "operator";
}
export type UserError = "NOT_FOUND" | "TIMEOUT";
// src/users/get-user.ts ✓ single TARGET_FILE, zero new dependencies
export async function getUser(id: string, db: Db): Promise<UserSummary | UserError> {
const signal = AbortSignal.timeout(2_000); // ✓ explicit timeout
try {
const row = await db.queryOne<UserSummary>(
"SELECT id, name, role FROM users WHERE id = $1", // ✓ projection + index
[id], { signal });
return row ?? "NOT_FOUND";
} catch (err) {
if (signal.aborted) return "TIMEOUT";
throw new Error("users.getUser failed", { cause: err }); // ✓ nothing swallowed
}
}Verificación atómica:Atomic verification: node --test tests/unit/get-user.test.ts
Pedido: "Carga el informe desde la API al pulsar el botón." (WinUI / WPF)
Request: "Load the report from the API when the button is clicked." (WinUI / WPF)
✗ SIN ZNVE✗ WITHOUT ZNVE
public string LoadReport()
{
var client = new HttpClient(); // ✗ nunca se libera
var json = client.GetStringAsync(url).Result; // ✗ congela el UI thread
Debug.WriteLine("OK"); // ✗ ruido
return json; // ✗ sin contrato de datos
}
public string LoadReport()
{
var client = new HttpClient(); // ✗ never disposed
var json = client.GetStringAsync(url).Result; // ✗ freezes the UI thread
Debug.WriteLine("OK"); // ✗ noise
return json; // ✗ no data contract
}✓ CON ZNVE · Capa Camaleónica Windows✓ WITH ZNVE · Windows Chameleon Layer
public async Task<ReportDto> LoadReportAsync(CancellationToken ct) // ✓ async puro
{
using var cts = CancellationTokenSource.CreateLinkedTokenSource(ct);
cts.CancelAfter(TimeSpan.FromSeconds(5)); // ✓ timeout explícito
using var response = await _http.GetAsync(_reportUrl, cts.Token); // ✓ IDisposable
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<ReportDto>(cts.Token)
?? throw new InvalidDataException("REPORT_EMPTY"); // ✓ error explícito
}
public async Task<ReportDto> LoadReportAsync(CancellationToken ct) // ✓ pure async
{
using var cts = CancellationTokenSource.CreateLinkedTokenSource(ct);
cts.CancelAfter(TimeSpan.FromSeconds(5)); // ✓ explicit timeout
using var response = await _http.GetAsync(_reportUrl, cts.Token); // ✓ IDisposable
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<ReportDto>(cts.Token)
?? throw new InvalidDataException("REPORT_EMPTY"); // ✓ explicit error
}Verificación: analizador CA2000 sin avisos y la UI responde durante la carga.
Verification: CA2000 analyzer with no warnings and the UI stays responsive while loading.
Pedido: "Refactoriza legacy_calc.py, tiene 900 líneas y ningún test."
Request: "Refactor legacy_calc.py; it has 900 lines and no tests."
✗ SIN ZNVE✗ WITHOUT ZNVE
# ✗ reescritura completa en una sola respuesta
# ✗ "limpia" código duplicado que sostenía casos de negocio
# ✗ nadie puede probar que el resultado es equivalente
def calculate(a, b):
try:
return round(float(a) / float(b), 2)
except Exception:
pass # ✗ los errores que producción esperaba desaparecen
# ✗ full rewrite in a single answer
# ✗ "cleans up" duplicated code that held business cases together
# ✗ nobody can prove the result is equivalent
def calculate(a, b):
try:
return round(float(a) / float(b), 2)
except Exception:
pass # ✗ errors production relied on disappear✓ CON ZNVE · /znve-forensic → /znve-harness✓ WITH ZNVE · /znve-forensic → /znve-harness
# ✓ el archivo original no se toca: primero se congela su comportamiento
import json, pathlib, subprocess
CASES = [["10", "2"], ["0", "0"], ["", "3"], ["-1", "abc"]]
SNAPSHOTS = pathlib.Path(__file__).with_name("legacy_calc.snapshots.json")
def run(args):
p = subprocess.run(["python", "legacy_calc.py", *args], capture_output=True, text=True)
return {"code": p.returncode, "out": p.stdout, "err": p.stderr}
def test_golden_master(): # ✓ debe pasar al 100 % contra el código intacto
expected = json.loads(SNAPSHOTS.read_text(encoding="utf-8"))
assert [run(c) for c in CASES] == expected
# ✓ the original file is untouched: first its behavior is frozen
import json, pathlib, subprocess
CASES = [["10", "2"], ["0", "0"], ["", "3"], ["-1", "abc"]]
SNAPSHOTS = pathlib.Path(__file__).with_name("legacy_calc.snapshots.json")
def run(args):
p = subprocess.run(["python", "legacy_calc.py", *args], capture_output=True, text=True)
return {"code": p.returncode, "out": p.stdout, "err": p.stderr}
def test_golden_master(): # ✓ must pass 100% against the intact code
expected = json.loads(SNAPSHOTS.read_text(encoding="utf-8"))
assert [run(c) for c in CASES] == expectedDespués: Shadow Run (Salida(Nuevo) == Salida(Legacy)) y conmutación gradual con Strangler Fig.
Next: Shadow Run (Output(New) == Output(Legacy)) and gradual switch-over with Strangler Fig.
| Aspecto | Sin ZNVE | Con ZNVE |
|---|---|---|
| Dependencias | Una librería por tarea | API nativa primero (Anti-Bloat Fence) |
| Diseño | La IA improvisa tipos y campos | Contrato aprobado antes del código |
| Alcance | Cambios en cascada por todo el proyecto | Un TARGET_FILE por tarea |
| Errores | catch {} y sleep() | Tipos de error cerrados y causa raíz |
| Logs | "OK" en cada petición | Telemetría solo ante anomalías |
| Datos | SELECT * | Proyecciones explícitas sobre índices |
| Legacy | Reescribir y cruzar los dedos | Golden Master, Shadow Run y Strangler Fig |
| Cierre | "Parece que funciona" | Comando de verificación reproducible |
| Aspect | Without ZNVE | With ZNVE |
|---|---|---|
| Dependencies | One library per task | Native API first (Anti-Bloat Fence) |
| Design | The AI improvises types and fields | Contract approved before the code |
| Scope | Cascading changes across the project | One TARGET_FILE per task |
| Errors | catch {} and sleep() | Closed error types and root cause |
| Logs | "OK" on every request | Telemetry only on anomalies |
| Data | SELECT * | Explicit projections over indexes |
| Legacy | Rewrite and hope for the best | Golden Master, Shadow Run and Strangler Fig |
| Done | "Seems to work" | Reproducible verification command |
04 · Contrato primero04 · Contract first
Con /znve-contract la IA recomienda el stack de la plataforma, diseña los DTOs en contracts/ y aplica una lista de chequeo de 4 puntos. Cuando se cumple, emite un criterio de parada y deja de proponer cambios: así se corta el bucle infinito de "mejoras".
With /znve-contract the AI recommends the platform stack, designs the DTOs in contracts/ and applies a 4-point checklist. Once it passes, it emits a stop criterion and stops proposing changes, which breaks the endless "improvement" loop.
1. Estructura invariable: entradas, salidas, entidades y enums tipados.
2. Defensas de frontera: errores explícitos, sin any.
3. Cero dependencias parásitas: solo SDK nativo o runtime aprobado.
4. Filtro de diferimiento: ideas secundarias a contracts/CONTRACT_BACKLOG.md.
1. Invariant structure: typed inputs, outputs, entities and enums.
2. Boundary defenses: explicit errors, no any.
3. Zero parasitic dependencies: native SDK or approved runtime only.
4. Deferral filter: secondary ideas go to contracts/CONTRACT_BACKLOG.md.
Con los 4 puntos cumplidos, la IA responde exactamente:
Once the 4 points pass, the AI replies exactly (the phrase is part of the standard):
"Contrato v1 sólido y cerrado. Listo para /znve-execute."
--delta--delta/znve-contract --delta compara contracts/ con src/ y separa los cambios en Cubo A (lo que la etapa actual necesita ya) y Cubo B (ideas diferidas al backlog). Los contratos existentes se extienden, nunca se alteran.
/znve-contract --delta compares contracts/ with src/ and splits changes into Bucket A (what the current stage needs now) and Bucket B (ideas deferred to the backlog). Existing contracts are extended, never altered.
--platform--platformRust + Tauri v2 oor WinUI 3 · SQLite (WAL) / DuckDB · macOS: Swift 6 + SwiftUI + SwiftData
Vite + TypeScript / Next.js · IndexedDB
Tauri Mobile / Flutter / React Native · almacenamiento nativonative storage
Kotlin + Compose + Room · iOS: Swift 6 + SwiftUI + SwiftData
05 · Escenarios05 · Scenarios
Antes de cada tarea se declara el modo. Cada uno tiene su secuencia de comandos, pensada para una situación real del ciclo de vida del software.
The mode is declared before every task. Each one has its own command sequence, designed for a real situation in the software lifecycle.
Proyecto nuevo, día 0.
New project, day 0.
/znve-contract → /znve-execute
Nuevas capacidades en un sistema activo.
New features in a live system.
/znve-contract --delta → /znve-execute
Producción caída o degradada.
Production down or degraded.
/znve-triage → /znve-hotfix
SDKs con breaking changes.
SDKs with breaking changes.
/znve-upgrade
Monolitos sin tests, en 5 fases.
Untested monoliths, in 5 phases.
/znve-forensic → /znve-harness → /znve-legacy-rescue
Memoria, hilos, red, seguridad y ruido.
Memory, threads, network, security and noise.
/znve-audit
06 · Comandos06 · Commands
Los mismos 10 comandos funcionan en todos los asistentes. Se escriben como /znve-contract, /znve contract o /znve -contract. Sin comando, la respuesta sigue los 4 bloques.
The same 10 commands work in every assistant. Write them as /znve-contract, /znve contract or /znve -contract. Without a command, the answer follows the 4 blocks.
/znve-help --> Manual operativo e índice de comandos.
/znve-contract --> Diseño de interfaces inmutables, DTOs y Anti-Bloat Fence.
/znve-execute --> Implementación atómica en TARGET_FILE con desecho de recursos.
/znve-triage --> Diagnóstico y contención de radio de impacto ante caídas.
/znve-hotfix --> Parche quirúrgico atómico con test de regresión obligatorio.
/znve-upgrade --> Migración de dependencias mediante Adaptador desacoplado.
/znve-forensic --> Ingesta en solo lectura, matriz I/O y efectos secundarios.
/znve-harness --> Suite Golden Master de caja negra sobre código intacto.
/znve-legacy-rescue --> Orquestación integral en 5 fases para código legacy.
/znve-audit --> Hardening de hilos, memoria, descriptores y seguridad.
/znve-help --> Operating manual and command index.
/znve-contract --> Immutable interfaces, DTOs and Anti-Bloat Fence.
/znve-execute --> Atomic implementation in TARGET_FILE with resource disposal.
/znve-triage --> Root-cause diagnosis and blast-radius containment.
/znve-hotfix --> Atomic patch with mandatory regression test.
/znve-upgrade --> Dependency migration behind a decoupled Adapter.
/znve-forensic --> Read-only ingestion, I/O matrix and side effects.
/znve-harness --> Black-box Golden Master suite on intact code.
/znve-legacy-rescue --> End-to-end 5-phase legacy orchestration.
/znve-audit --> Hardening of threads, memory, descriptors and security.
Formatos de salida exactos de cada comando: protocols/COMMANDS.md · Plantillas de prompts listas para copiar: PROMPT_GUIDE.md
Exact output format of each command: protocols/COMMANDS.md · Ready-to-copy prompt templates: PROMPT_GUIDE.md
07 · Caso real07 · Case study
/znve-audit/znve-auditZNVE se aplicó a un laboratorio de detección de bots (proxy mitmproxy, huella TLS JA4, panel en vivo y víctimas en Docker). La auditoría del modo 6 se hizo en solo lectura, con evidencia medida y una hoja de remediación para aprobar.
ZNVE was applied to a bot-detection lab (mitmproxy, JA4 TLS fingerprinting, a live dashboard and target services in Docker). The mode 6 audit ran read-only, with measured evidence and a remediation sheet for approval.
Por el proxy normal (:18080) y HTTP plano no hay huella TLS: un curl con su UA real obtuvo {"passed":true}.
Through the plain proxy (:18080) over HTTP there is no TLS fingerprint: a curl with its real UA got {"passed":true}.
Unos 7 MB por cada 1.000 peticiones: base 75 MB y después 145 → 158 → 172 → 186 → 201 MB.
About 7 MB per 1,000 requests: 75 MB baseline, then 145 → 158 → 172 → 186 → 201 MB.
Un JSON mal formado exponía rutas internas; faltaban validación de entrada y NODE_ENV=production.
Malformed JSON exposed internal paths; input validation and NODE_ENV=production were missing.
29.769 líneas para unas 6.000 peticiones, sin rotación de logs.
29,769 lines for about 6,000 requests, with no log rotation.
Puertos solo en loopback, la cabecera de huella falsa se descartaba y el .env tenía permisos 600.
Ports bound to loopback only, the forged fingerprint header was discarded and .env had 600 permissions.
| # | Causa raíz | Acción |
|---|---|---|
| 1 | Tráfico sin huella TLS llega a las víctimas | Rechazar toda petición sin huella, sea cual sea el UA |
| 2 | mitmweb guarda todos los flujos | Usar mitmdump para el tráfico |
| 3 | Sin límites ni rotación de logs | mem_limit, cpus y max-size por servicio |
| 5 | Sin validación ni manejador de errores | Validar entrada y responder errores cerrados sin traza |
| # | Root cause | Action |
|---|---|---|
| 1 | Traffic without a TLS fingerprint reaches the targets | Reject every request without a fingerprint, whatever the UA |
| 2 | mitmweb keeps every flow in memory | Use mitmdump for traffic |
| 3 | No resource limits or log rotation | mem_limit, cpus and max-size per service |
| 5 | No input validation or error handler | Validate input and return closed errors without traces |
El panel emitía un evento por cada petición. Se escribió primero el contrato (una fila por huella JA4 + User-Agent, con tope de 200) y después el código: 600 peticiones iguales generaron 1 evento en lugar de 600.
The dashboard emitted one event per request. The contract came first (one row per JA4 fingerprint + User-Agent, capped at 200), then the code: 600 identical requests produced 1 event instead of 600.
En el propio repositorio, la retrospectiva registró 30 hallazgos, de los que 28 ya están resueltos, entre ellos 89 pruebas automáticas y 30 artefactos generados desde una sola especificación.
In this very repository, the retrospective logged 30 findings, 28 of them already resolved, backed by 89 automated tests and 30 artifacts generated from a single specification.
08 · Instalación08 · Installation
Elige tu herramienta. Todas reciben los mismos comandos y reglas. Para comprobarlo, escribe /znve help: debe aparecer el catálogo de 10 comandos.
Pick your tool. They all get the same commands and rules. To check it, type /znve help: the 10-command catalog should appear. The directives answer in Spanish by default; ask the assistant to reply in English if you prefer.
/znve helpNew chat: /znve help¿Usas Claude Projects? Pega project-instructions.md en Project Instructions. Si tenías una versión anterior de la skill, elimínala antes de subir la nueva.
Using Claude Projects? Paste project-instructions.md into Project Instructions. If you had an older version of the skill, delete it before uploading the new one.
git clone https://github.com/jeffryc6/znve-spec.git
cp -r znve-spec/integrations/claude/skills/znve ~/.claude/skills/git clone https://github.com/jeffryc6/znve-spec.git
Copy-Item -Recurse znve-spec\integrations\claude\skills\znve $HOME\.claude\skills\znveLa skill aparece en el menú / como /znve. Para un solo proyecto, cópiala en .claude/skills/ dentro del proyecto.
The skill shows up in the / menu as /znve. For a single project, copy it into .claude/skills/ inside that project.
znve-helpNew chat: znve-helpApp web y de Mac. Requiere cuenta personal de Google, mayor de 18 años y la actividad de Keep activada.
Web and Mac app. Requires a personal Google Account, age 18+ and Keep Activity turned on.
gemini skills install https://github.com/jeffryc6/znve-spec.git --path integrations/gemini/skills/znve
gemini skills listEn Gemini CLI escribe los comandos sin barra inicial (znve-contract …): la CLI reserva / para sus propios comandos. Guía completa: INSTALL_GEMINI.md.
In Gemini CLI, type commands without the leading slash (znve-contract …): the CLI reserves / for its own commands. Full guide: INSTALL_GEMINI.md.
mkdir -p .github
curl -fsSL https://raw.githubusercontent.com/jeffryc6/znve-spec/main/.github/copilot-instructions.md -o .github/copilot-instructions.mdCopilot lee ese archivo automáticamente en VS Code, Visual Studio y JetBrains. En el chat escribe /znve-contract … como texto normal (no es un slash command nativo de Copilot).
Copilot reads that file automatically in VS Code, Visual Studio and JetBrains. In chat, type /znve-contract … as plain text (it is not a native Copilot slash command).
curl -fsSL https://raw.githubusercontent.com/jeffryc6/znve-spec/main/integrations/cursor/cursorrules.md -o .cursorrulesLas reglas de Cursor ya están en inglés.
The Cursor rules are already written in English.
git clone https://github.com/jeffryc6/znve-spec.git
ollama create znve-agent -f znve-spec/integrations/ollama/Modelfile
ollama run znve-agentDeepSeek: envía directive.md como mensaje system (en R1 las fases de validación ocurren dentro de <think>). OpenRouter: usa system-prompt.md + response-schema.json o el cliente incluido.
DeepSeek: send directive.md as the system message (in R1 the validation phases run inside <think>). OpenRouter: use system-prompt.md + response-schema.json or the bundled client.
git clone https://github.com/jeffryc6/znve-spec.git
cd znve-spec/integrations/mcp-server
node install-antigravity.mjs --workspace "/ruta/a/tu-proyecto"Instala dependencias, compila, verifica las 6 herramientas con un handshake real, guarda un backup de mcp_config.json y registra znve-engine. Después: Manage MCP Servers → Refresh. Prueba antes con --dry-run.
It installs dependencies, builds, verifies the 6 tools with a real handshake, backs up mcp_config.json and registers znve-engine. Then: Manage MCP Servers → Refresh. Try --dry-run first, and replace the path with your own project folder.
python znve-spec/integrations/antigravity/install_znve_global.pyInstala la skill znve en ~/.gemini/config/skills/, el workflow /znve-help y la regla global, y retira la copia antigua. Para un solo proyecto: Auto_Installer.py desde la raíz del proyecto (instala en .agents/skills/znve/).
Installs the znve skill in ~/.gemini/config/skills/, the /znve-help workflow and the global rule, and removes the old copy. For a single project: run Auto_Installer.py from the project root (installs into .agents/skills/znve/).
/znve contract --platform=web + tu requerimiento/znve contract --platform=web + your requirement/znve execute --target=src/…Guía completa del día 0: GREENFIELD_STARTER.md · Manual de instalación del MCP: ANTIGRAVITY_INSTALL.md
Full day-0 guide: GREENFIELD_STARTER.md · MCP installation manual: ANTIGRAVITY_INSTALL.md
09 · Cómo funciona por dentro09 · Under the hood
Mantener las mismas reglas en 8 asistentes a mano provocaba versiones desalineadas. Hoy la metodología se declara una vez en znve-auto/master_spec.json, un compilador sin dependencias genera cada directiva y el CI rechaza cualquier desvío.
Keeping the same rules across 8 assistants by hand led to drifting versions. Today the methodology is declared once in znve-auto/master_spec.json, a dependency-free compiler generates every directive and CI rejects any drift.
znve-spec/ ├── README.md portada bilingüe ├── SPECIFICATION.md norma técnica formal ├── GLOSSARY.md glosario ES/EN ├── CHANGELOG.md cambios por versión ├── protocols/ protocolos, guías y manual │ ├── ZNVE_PROTOCOL.md los 6 modos │ └── COMMANDS.md manual de comandos y MCP ├── integrations/ una carpeta por asistente │ ├── claude/ gemini/ cursor/ │ ├── deepseek/ ollama/ openrouter/ │ ├── antigravity/ skill e instaladores │ └── mcp-server/ servidor MCP (6 herramientas) ├── field-tests/ pruebas de campo archivadas ├── znve-auto/ fuente única + builder + tests └── index.html esta página
znve-spec/
├── README.md bilingual front page
├── SPECIFICATION.md formal technical standard
├── GLOSSARY.md ES/EN glossary
├── CHANGELOG.md changes per version
├── protocols/ protocols, guides and manual
│ ├── ZNVE_PROTOCOL.md the 6 modes
│ └── COMMANDS.md command and MCP manual
├── integrations/ one folder per assistant
│ ├── claude/ gemini/ cursor/
│ ├── deepseek/ ollama/ openrouter/
│ ├── antigravity/ skill and installers
│ └── mcp-server/ MCP server (6 tools)
├── field-tests/ archived field tests
├── znve-auto/ single source + builder + tests
└── index.html this page
# 1. edit znve-auto/master_spec.json
python znve-auto/builder.py # 30 artifacts
python znve-auto/test_sync.py # parity check
git push # CI + GitHub PagesSolo biblioteca estándar de Python. Los archivos generados llevan un aviso y no se editan a mano. Detalles en znve-auto/README.md.
Python standard library only. Generated files carry a notice and are never edited by hand. Details in znve-auto/README.md.
README (español e inglés) · SPECIFICATION.md · GLOSSARY.md (español e inglés) · ZNVE_PROTOCOL.md · ZNVE_LEGACY_PROTOCOL.md · ZNVE_MODERN_APPS_PROTOCOL.md
README (English and Spanish) · SPECIFICATION.md · GLOSSARY.md (English and Spanish) · ZNVE_PROTOCOL.md · ZNVE_LEGACY_PROTOCOL.md · ZNVE_MODERN_APPS_PROTOCOL.md. Spanish-only documents open through Google Translate.
10 · Cómo se creó10 · How it was built
Axiomas, pilares, protocolos universal y legacy, RFCs y las primeras reglas para Claude y Cursor.
Axioms, pillars, the universal and legacy protocols, RFCs and the first rules for Claude and Cursor.
Directivas para Copilot, DeepSeek, Ollama y OpenRouter, el primer servidor MCP, el catálogo de comandos y el glosario.
Directives for Copilot, DeepSeek, Ollama and OpenRouter, the first MCP server, the command catalog and the glossary.
Frontmatter válido, UTF-8, empaquetado en zip y tres formas de invocar: /znve-help, /znve help y /znve -help.
Valid frontmatter, UTF-8, zip packaging and three ways to invoke it: /znve-help, /znve help and /znve -help.
El laboratorio anti-bot adopta ZNVE: auditoría /znve-audit con evidencia medida y arreglo del panel guiado por contrato.
The anti-bot lab adopts ZNVE: a /znve-audit with measured evidence and a contract-driven dashboard fix.
Diagnóstico de por qué "se instalaba pero no pasaba nada", instalador automático con verificación real y guía de instalación.
Diagnosis of why it "installed but nothing happened", an auto-installer with real verification and an installation guide.
Nace znve-auto: 22 artefactos generados, 18 pruebas y CI. Todo el repositorio queda en v2.3.0 y publicado en esta página.
znve-auto is born: 22 generated artifacts, 18 tests and CI. The whole repository moves to v2.3.0 and is published on this page.
La misma skill en formato Agent Skills para la app de Gemini y Gemini CLI, generada desde la especificación: 25 artefactos y 19 pruebas.
The same skill in Agent Skills format for the Gemini app and Gemini CLI, generated from the specification: 25 artifacts and 19 tests.
Nueve guardrails (Cerca de Contexto y Verificación Inviolable), Capa de Agente con un perfil por asistente y servidor MCP 2.0.0 con el mismo contrato de respuesta que la skill de Python. Donde corre el servidor, el código hace cumplir las garantías. Una prueba piloto A/B, archivada con sus límites, no mostró ahorro de tokens: siguen las pruebas con proyectos reales.
Nine guardrails (Context Fence and Inviolable Verification), an agent layer with one profile per assistant and MCP server 2.0.0 sharing its response contract with the Python skill. Where the server runs, code enforces the guarantees. A pilot A/B test, archived with its limits, showed no token savings: tests on real projects come next.
11 · Preguntas frecuentes11 · FAQ
No. ZNVE son instrucciones para tu asistente de IA (una skill, un archivo de reglas o un prompt de sistema). El servidor MCP es opcional y solo lo necesitan agentes autónomos como Antigravity.
No. Es agnóstico al lenguaje y a la base de datos. La Capa Camaleónica añade reglas específicas para Android, iOS/macOS, Windows, híbridos (Tauri, Flutter, React Native) y Web/Backend.
Tú eres el Director de Arquitectura: los 4 bloques y los encabezados fijos de cada comando hacen visible cualquier desvío. Con el servidor MCP, además, herramientas como znve_surgical_write rechazan físicamente un catch vacío.
Sí. El modo 2 (--delta) añade capacidades sin romper contratos, el modo 3 atiende incidentes en producción y el modo 5 rescata código legacy sin tests.
Esta página, el README y el glosario son bilingües, y las reglas de Cursor están en inglés. El resto de documentos está en español: en modo inglés sus enlaces se abren a través del traductor de Google, y puedes pedirle a cualquier asistente que responda en inglés.
La especificación y la documentación usan CC BY 4.0. Los protocolos y las integraciones (/protocols y /integrations) se ofrecen a la vez bajo CC BY 4.0 y MIT. Las herramientas del repositorio, bajo MIT. Detalles en LICENSE.
Mediante una RFC: copia rfcs/0000-template.md, abre un pull request y, si modifica comandos o reglas, cambia znve-auto/master_spec.json. Guía en CONTRIBUTING.md.
No. ZNVE is a set of instructions for your AI assistant (a skill, a rules file or a system prompt). The MCP server is optional and only needed by autonomous agents such as Antigravity.
No. It is language- and database-agnostic. The Chameleon Layer adds specific rules for Android, iOS/macOS, Windows, hybrid apps (Tauri, Flutter, React Native) and Web/Backend.
You are the Director of Architecture: the 4 blocks and each command's fixed headers make any drift visible. With the MCP server, tools such as znve_surgical_write also physically reject an empty catch.
Yes. Mode 2 (--delta) adds features without breaking contracts, mode 3 handles production incidents and mode 5 rescues untested legacy code.
This page, the README and the glossary are bilingual, and the Cursor rules are in English. The other documents are in Spanish; in English mode their links open through Google Translate, and you can ask any assistant to reply in English.
The specification and documentation use CC BY 4.0. The protocols and integrations (/protocols and /integrations) are offered under both CC BY 4.0 and MIT. Repository tooling is MIT. Details in LICENSE.
Through an RFC: copy rfcs/0000-template.md, open a pull request and, if it changes commands or rules, edit znve-auto/master_spec.json. Guide in CONTRIBUTING.md.