Del caos multiagente
a un harness de agentes y skills predecibles.

Recupera tokens (¡y dinero!), ahorra tiempo y deja tus Markdowns deterministas. Encuentra lo que sobra: incoherencias, repeticiones, skills grandes.
El harness que diseñaste, por fin a la vista: análisis y arreglos, deterministas y probabilísticos, en un mismo mapa.

Demo en vivo
~/.claude/skills
13 nodes · 15 links · 3 collisions · 1 orphan
Skill
Agent
MCP
Markdown
Command
Orphan
oauth-flow deploy ship release reviewer planner mcp:github mcp:fs fs/read git/log legacy.md read-pdf CLAUDE.md

¡Todo tu harness de agentes
en una única pantalla!

Primeros pasos

Tutorial en 5 líneas

Instala, abre tu agente en una carpeta vacía (Claude Code, Codex, etc) y pídele el tutorial: te guía paso a paso, en vivo en consola y navegador.

bash
npm i -g @skill-map/cli mkdir try-skill-map && cd try-skill-map sm tutorial# instala la skill del tutorial claude# abre Claude Code aquí

Después, dentro de Claude, escribe:

Ecosistema

Seis tipos de plugin,
extensiones sin límite.

Tu plugin, el de tu empresa, el que publica la comunidad, incluso el de tu suegra: todos corren contra el mismo kernel.

+ tu plugin KERNEL motor del mapa Provider BUILT-IN Extractor BUILT-IN Analyzer BUILT-IN Action Formatter BUILT-IN Hook BUILT-IN
tipo de plugin

Provider

Define un agente (Claude, Codex, etc)

Un provider describe a un agente: sus tipos de archivo (skill / agent / command en Claude), dónde viven, su frontmatter y cómo se dibujan en la UI. El de Claude viene de fábrica; escribe el tuyo para Codex, Copilot o tu runner.

// claude/provider.ts (kinds live in claude/kinds/<name>/)
// id and kind come from the folder, you never write them.
export default {
  version: '0.1.0',
  description: 'Claude Code agents, commands, and skills',
  presentation: { label: 'Claude', color: '#cc785c' },
  detect: { markers: ['.claude'] },
  read: { extensions: ['.md'], parser: 'frontmatter-yaml' },
  classify: (path, fm) => /* 'agent' | 'command' | 'skill' | null */,
};
tipo de plugin

Extractor

Extrae datos de un nodo

Convierte un archivo (un nodo) en datos: links, atributos, señales que guardas en tu KV. Código puro y determinista dentro de `sm scan`: milisegundos, sin LLM y gratis.

// claude/extractors/slash/index.ts
export default {
  version: '0.1.0',
  description: 'Link /command invocations to their target',
  scope: 'body',
  extract(ctx) {
    for (const [, cmd] of ctx.body.matchAll(SLASH_RE))
      ctx.emitLink({
        source: ctx.node.path, target: cmd,
        kind: 'invokes', confidence: 0.8,
      });
  },
};
tipo de plugin

Analyzer

Encuentra problemas en el mapa

Analiza el mapa completo: colisiones de trigger, huérfanos, dependencias muertas, referencias rotas. Escribe el tuyo una vez y úsalo donde quieras.

// example/analyzers/trigger-collisions/index.ts
export default {
  version: '0.1.0',
  description: 'Flags two nodes that share one trigger',
  evaluate(ctx) {
    return [...byTrigger(ctx.nodes)]
      .filter(([, ns]) => ns.length > 1)
      .map(([trigger, ns]) => ({
        severity: 'warn',
        nodeIds: ns.map((n) => n.path),
        message: `"${trigger}" claimed by ${ns.length} nodes`,
      }));
  },
};
tipo de plugin

Action

Mejora tus agentes y skills automáticamente

Las actions son las únicas que tocan el disco. Si es determinista, código: renombrar un trigger, ajustar frontmatter. Si es probabilística, un prompt que ejecuta el LLM: regenerar un summary, reescribir un texto.

// core/actions/rename-trigger/index.ts
export default {
  version: '0.1.0',
  description: 'Rename a node trigger',
  mode: 'deterministic',
  invoke(input, ctx) {
    return {
      report: { ok: true, trigger: input.trigger },
      writes: [{ kind: 'sidecar', path: ctx.nodeAbsolutePath,
        changes: { annotations: { trigger: input.trigger } } }],
    };
  },
};
tipo de plugin

Formatter

Exporta el mapa a otros formatos

Saca el mapa de la memoria al formato que necesites: ASCII, Mermaid para el README, DOT, JSON. Los built-in cubren lo común; si te falta uno, son pocas líneas.

// core/formatters/mermaid/index.ts
export default {
  version: '0.1.0',
  description: 'Render the graph as Mermaid',
  format(ctx) {
    return 'graph LR\n' + ctx.links
      .map((l) => `  ${l.source} --> ${l.target}`).join('\n');
  },
};
tipo de plugin

Hook

Notifica e integra con otras herramientas

Cuando pasa algo (scan terminado, action ejecutada, job fallido), un hook se dispara: Slack, un webhook, o frenar un spawn antes de que arranque. Diez eventos disponibles.

// integrations/hooks/slack-on-failure/index.ts
export default {
  version: '0.1.0',
  description: 'Post to Slack when a job fails',
  triggers: ['job.failed'],
  on(ctx) {
    slack.post('#alerts', ctx.jobResult);
  },
};

Un plugin cabe en ~30 líneas de código.

sm plugins list
Features

Lo determinista y lo semántico, en el mismo mapa.

Determinístico y probabilístico, lado a lado

El análisis estático corre en milisegundos, offline. Luego encolas un job semántico y tu propio agente lee el nodo entendiéndolo: redundancia, un trigger que va a fallar, instrucciones vagas o contradictorias, incluso contenido que intenta manipular al agente. El mismo mapa, desde dos ángulos.

Peso de tokens por nodo

Bytes y tokens por nodo. Encuentra la skill grande que se está comiendo tu context window.

Casos de uso

Si vives en Markdown, esto es para ti.

Sin humo: solo un mapa sobre los archivos que ya tienes.

Para autores

Optimiza antes de publicar.

Antes de publicar una skill, mírala en contexto: qué duplica en otro lado, dónde se repite, cuántos tokens cuesta. Ajústala mientras todavía es tuya.

Para AI Architects & equipos de plataforma

Mira el harness que diseñaste, no el que se desvió.

Apúntalo a tu proyecto y contrasta lo que pensaste con lo que hay en disco: copias divergentes de una skill, un agente que nadie referencia, una regla que se pudrió en silencio.

Para quien depura agentes

Mira lo que tu agente ejecutó de verdad.

Deja el mapa abierto y cada nodo se enciende cuando tu runtime lo invoca: la skill que cargó, el agente al que delegó, el archivo que leyó. Abre un link de delegación y lee el prompt y la respuesta exactos. Sin tailear logs.

Para quien construye herramientas

Construye sobre el mapa.

Todo tiene verbo CLI, salida JSON y hook de plugin; tu agente lo maneja entero por MCP. Conéctalo a tu CI, tu dashboard o tu flujo LLM sin tocar el kernel.

Deja de leer carpetas:
lee mapas.

Todo tu harness de agentes en un vistazo. Ahora sí lo puedes diseñar bien.

Ver en GitHub

Roadmap.
Más de 290 decisiones documentadas, seis fases, un 1.0. Sin atajos.