# Harness Similarity > Calcula la similitud ponderada entre dos huellas de harness (genoma + score): puntuación global en [0,1] más desglose por coseno, coincidencia categórica y Jaccard sobre agent_topology. Fuente: https://skillsagentes.com/skills/ruvnet/ruflo/harness-similarity Markdown: https://skillsagentes.com/skills/ruvnet/ruflo/harness-similarity.md Repositorio: https://github.com/ruvnet/ruflo Autor: ruvnet Licencia: MIT Actualizado: el mes pasado Coste de contexto: 102 tok instalada, 875 tok al activarse, 875 tok con todos los archivos del bundle Bundle: 1 archivo, 3 KB Permisos que pide: bash ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add ruvnet/ruflo --skill harness-similarity --agent claude-code # Cursor npx -y skills add ruvnet/ruflo --skill harness-similarity --agent cursor # Codex npx -y skills add ruvnet/ruflo --skill harness-similarity --agent codex # Gemini CLI npx -y skills add ruvnet/ruflo --skill harness-similarity --agent gemini # Windsurf npx -y skills add ruvnet/ruflo --skill harness-similarity --agent windsurf # Cline npx -y skills add ruvnet/ruflo --skill harness-similarity --agent cline ``` ## Qué hace - Calcula una similitud global ponderada (60% coseno, 25% categórica, 15% Jaccard) entre dos harnesses. - Da un desglose por componente con --per-dimension. - Falla con --alert-below N si la similitud cae por debajo del umbral. ## Cuándo usarla - Necesitas decidir si bifurcar un harness existente o crear uno nuevo desde cero. - Quieres rankear plantillas candidatas contra el genoma de un repo objetivo. - Quieres diferenciar dos harnesses hechos por equipos distintos para detectar trabajo duplicado. ## Qué la activa - "Compara la similitud entre estos dos harnesses" - "Alerta si la similitud cae por debajo de 0.5" ## Antes de instalar - Necesita en el PATH: npx - runs shell commands ## Archivos - SKILL.md — 3 KB ## SKILL.md Reproducido tal cual desde ruvnet/ruflo bajo MIT. Esta sección es el documento original y está en inglés. Surfaces the production similarity function from [`scripts/_similarity.mjs`](../../scripts/_similarity.mjs) as a callable skill. Use when an agent needs to: - decide whether to fork an existing harness vs scaffold a new one - rank candidate templates against a target repo's genome - diff two harnesses produced by different teams to find duplicate work - generate the confidence number that ADR-151 §3.2's Recommender wraps ## Algorithm (from ADR-152 §Decision) ``` overall = 0.60·cosine + 0.25·categorical + 0.15·jaccard ``` - **cosine** — over a 9-dim numerical vector of normalized scorecard + genome dims - **categorical** — fraction of 4 enum fields that match (`repo_type`, `archetype`, `template`, `recommendedMode`) - **jaccard** — `|A ∩ B| / |A ∪ B|` over the `agent_topology[]` array The 3-component design is load-bearing: numerical cosine alone is too coarse (the iter-35 spike showed LEGAL vs DEVOPS at cosine=0.97 despite being unrelated verticals). Categorical + jaccard pull the composite to the correct ordering. ## Reference outputs (iter-35 spike fixtures) | Pair | overall | cosine | categorical | jaccard | |---|---:|---:|---:|---:| | `LEGAL` × `LEGAL` (self) | 1.0000 | 1.0000 | 1.0000 | 1.0000 | | `LEGAL` × `SUPPORT` | 0.8296 | 0.9987 | 0.7500 | 0.2857 | | `LEGAL` × `DEVOPS` | 0.5840 | 0.9734 | 0.0000 | 0.0000 | Both invariants from ADR-152 §"Smallest demonstrable spike" hold: 1. `similarity(X, X) === 1` exactly 2. `similarity(LEGAL, DEVOPS) < similarity(LEGAL, SUPPORT)` (vertical affinity) ## Architectural constraint inheritance (ADR-150) - **Removable** — pure-TS function, zero static `@metaharness/*` imports. - **Optional** — no new dep in `package.json`. - **Graceful** — malformed inputs emit `{ degraded: true, reason }` with exit code 2; never throws. - **CI-gate** — smoke step 17y locks the contract: module exports, spike fixtures reproduce, CLI dispatcher entry registered, MCP tool registered. ## Usage ```bash # File inputs npx ruflo metaharness similarity --a a.json --b b.json # Memory inputs (records persisted by oia-audit.mjs) npx ruflo metaharness similarity --a-key harness-X --b-key harness-Y # Per-dimension breakdown (used by ADR-151 §3.2 Recommender) npx ruflo metaharness similarity --a a.json --b b.json --per-dimension # Alert when too-dissimilar (used by ADR-151 §3.3 Drift Detection) npx ruflo metaharness similarity --a a.json --b b.json --alert-below 0.5 ``` ## Implementation Production module: [`scripts/_similarity.mjs`](../../scripts/_similarity.mjs) CLI skill: [`scripts/similarity.mjs`](../../scripts/similarity.mjs) MCP tool: `mcp__plugin_ruflo-core_ruflo__metaharness_similarity` (registered in `v3/@claude-flow/cli/src/mcp-tools/metaharness-tools.ts`) Spike anchor: [`scripts/_spike-similarity.mjs`](../../scripts/_spike-similarity.mjs) (regression suite — invariants locked here) ## Dónde encaja - Categoría: [Herramientas para desarrolladores](https://skillsagentes.com/categorias/herramientas-desarrollo.md) — Skills que cambian cómo tu agente escribe, revisa y despliega código. - Creador: [ruvnet](https://skillsagentes.com/creators/ruvnet.md) — 275 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Harness Gepa](https://skillsagentes.com/skills/ruvnet/ruflo/harness-gepa.md): Inspecciona y audita genomas GEPA: carga y valida un genoma, renderiza el system prompt que compila, o clasifica los modos de fallo de una transcripción de ejecución. - [Deepseek Reason](https://skillsagentes.com/skills/ruvnet/ruflo/deepseek-reason.md): Completion en modo razonamiento contra deepseek-reasoner (R1) de DeepSeek. Devuelve el chain-of-thought por separado de la respuesta final. Lee DEEPSEEK_API_KEY y degrada si falta o la API no responde. - [Deepseek Chat](https://skillsagentes.com/skills/ruvnet/ruflo/deepseek-chat.md): Completion de un solo turno contra el modelo deepseek-chat de DeepSeek vía /v1/chat/completions. Lee DEEPSEEK_API_KEY y degrada con status:degraded si falta o la API no responde. Para tareas sin razonamiento. - [Adr Index](https://skillsagentes.com/skills/ruvnet/ruflo/adr-index.md): Construye o reconstruye el índice de ADRs y su grafo de dependencias ejecutando scripts/import.mjs, en vez de cientos de llamadas MCP. - [Agntcy Status](https://skillsagentes.com/skills/ruvnet/ruflo/agntcy-status.md): Muestra el estado de la integración AGNTCY/SLIM/CASA: si los paquetes están instalados, qué transporte está activo y si el enforcement de CASA está habilitado. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)