Skills Anywhere
Descubre y carga Skills locales de Agente existentes a través de MCP. Preserva los orígenes, resuelve colisiones de nombres y verifica archivos SKILL.md explícitos en CI.
Documentación
dsh-skills-anywhere
Tus habilidades, en cualquier lugar. Instala una Agent Skill una vez, úsala en cada agente: un proveedor de habilidades en vivo para DeepSeek Harness (dsh) y un servidor MCP para Claude Code, Cursor, Codex y otros.
English | 中文
Prueba el playground interactivo de Hugging Face — explora un espacio de trabajo de ejemplo, resuelve conflictos de nombres y busca más allá del presupuesto del catálogo. No se necesita instalación ni API de modelos. Cómo funciona.
Inspecciona una habilidad y vuelve a la misma fila con el teclado. Limpia la búsqueda manteniendo las opciones del catálogo, o comparte una vista que restaure esas opciones explícitamente.
Trae tu propio SKILL.md. Compara el análisis estricto y permisivo del proveedor
localmente: inspecciona reparaciones, configuraciones de invocación y un informe de verificación descargable.
Tu archivo permanece en el navegador. Las mismas verificaciones están disponibles en la
línea de comandos y CI, con hashes de archivos y códigos de salida accionables.
Cada informe también enumera las fuentes externas que las instrucciones referencian y si están fijadas, además de las herramientas que el autor declaró. Eso es una enumeración, no una auditoría de seguridad, un veredicto sobre la intención o una garantía de compatibilidad con cada cliente.
Listado en directorios de la comunidad: Awesome DeepSeek Harness · Awesome Gemini CLI. Registro de publicaciones.
Las Agent Skills son portables por diseño: una carpeta con un SKILL.md. Cada agente sigue mirando solo en su propia carpeta, así que una habilidad que instalas para Claude Code es invisible para Codex, Cursor y DeepSeek Harness, y las que escribiste para ellos son invisibles de vuelta. dsh-skills-anywhere lee todas esas carpetas donde viven y las sirve en todas partes: como proveedor de habilidades en vivo dentro de dsh, y como servidor MCP para Claude Code, Cursor, Codex y cualquier otro cliente MCP.

Dentro de dsh, registra un proveedor adicional en el registro integrado ctx.skills, así que la herramienta skill normal del modelo y la invocación /name simplemente ven más habilidades:
- Los directorios de habilidades de todos los demás agentes. Más de 60 agentes listos para usar: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, Windsurf, Kiro, Goose, OpenCode, Roo, Cline, Qwen Code, Trae y más. A nivel de proyecto y de usuario.
- Los marketplaces de plugins de Claude Code. Las habilidades anidadas dentro de
~/.claude/plugins/marketplaces/*/plugins/*/skills/*, incluido el marketplace oficial de Anthropic. - Cualquier repositorio git lleno de habilidades. Apunta a
anthropics/skills, un subdirectorio, una rama, una etiqueta o un commit. Se clona superficialmente en una caché local, se actualiza en segundo plano y se fija en un archivo de bloqueo. - Cero copias, cero symlinks. Los archivos se leen donde viven y se releen en cada carga. Edita una habilidad en Cursor y dsh ve el cambio. Nada que importar, nada que mantener sincronizado.
Cientos de habilidades inflarían cada solicitud del modelo, así que el proveedor mantiene un presupuesto de catálogo: como máximo 50 habilidades entran en el catálogo de sesión del modelo por defecto, y el resto queda a una llamada find_skills de distancia a través de dos pequeñas herramientas que el plugin añade, con la invocación /name intacta.
El mismo grupo está disponible fuera de dsh también: dsh-skills-anywhere mcp lo sirve a cualquier cliente MCP (Claude Code, Cursor, Codex, Windsurf…) como herramientas find_skills / open_skill y recursos skill://, así que una instalación de una habilidad llega a cada agente que uses.
También deduplica instalaciones con symlink y byte-idénticas (el CLI skills enlaza una copia canónica en varios agentes), repara la deriva común de frontmatter en lugar de descartar silenciosamente una habilidad, y renombra nombres en conflicto (discord/configure vs telegram/configure) para que cada habilidad siga siendo accesible. Un pequeño CLI te muestra exactamente lo que dsh verá y por qué.
Nuevo en 0.10.0: investigación que puedes inspeccionar
Explora las 27 pruebas reales de habilidades GPU y los pilotos de investigación. El editor de escenas capturadas de Robot Reel y la repetición oficial de LIBERO-Plus conectan registros fuente reales con entrega portable de habilidades y calificación independiente. Cada intento fallido permanece visible; no se implica ninguna eficacia de habilidad, resultado completo de benchmark o de hardware real.
Prueba un flujo de trabajo real de Physical AI
Carga una habilidad de revisión de fotogramas de Microduck a través de MCP, luego haz que tu agente verifique sus hechos conjuntos registrados con Robot Reel antes de escribir una revisión. Ejemplo interactivo de habilidad (selecciona 04 Review robot evidence) · Recorrido local · Habilidad reutilizable. El navegador muestra las instrucciones; la herramienta de ejecución de tu propio agente ejecuta el verificador de solo lectura. No se necesita nueva simulación ni GPU.
Revisa una vez, carga el mismo archivo
MCP open_skill ahora devuelve el SHA-256 del archivo original. Proporciona
expected_sha256 desde check --json o una apertura anterior para rechazar un
SKILL.md cambiado antes de que se devuelvan sus instrucciones. Las exclusiones nuevas del autor se aplican
inmediatamente, incluso mientras la detección está en caché. Flujo de archivo exacto.
Soporte MCP 2026-07-28: el comando stdio local ahora negocia con clientes legados y de protocolo actual. Se verifican cuatro configuraciones de SDK y el archivo npm instalado sobre conexiones reales de subprocesos. Matriz de compatibilidad y migración de incrustación.
v0.9: revisa todo el directorio de habilidades. Genera un manifiesto de archivos con
bundle /path/to/skill --json, compara recursos añadidos/eliminados/cambiados, y
exige expected_bundle_sha256 al abrir a través de MCP. La
comparación interactiva de paquetes
muestra un cambio de script detrás de instrucciones sin cambios y compara tus propios
manifiestos localmente. Revisión de directorio y límites.
Inicio rápido
# 1. Install into the dsh profile you use (web is the default UI profile)
dsh plugin --profile web add dsh-skills-anywhere
# 2. See what the model will get, without booting dsh
npx dsh-skills-anywhere list
# 3. Add a whole repository of skills
npx dsh-skills-anywhere add anthropics/skills
Publicado en npm con procedencia de compilación; cada release de GitHub también lleva el mismo tarball.
Inicia dsh como siempre. El catálogo de habilidades ahora incluye todo lo anterior; carga una habilidad con la herramienta skill o /skill-name exactamente como antes.
En una máquina con solo Claude Code instalado, list ya encuentra las 31 habilidades dentro del marketplace oficial de plugins, ninguna de las cuales dsh ve por sí solo:
$ npx dsh-skills-anywhere list
NAME FROM PATH
discord-access claude plugin discord @ claude-plugins-official ~/.claude/plugins/marketplaces/.../discord/skills/access/SKILL.md
frontend-design claude plugin frontend-design @ claude-plugins-official ~/.claude/plugins/marketplaces/.../frontend-design/skills/frontend-design/SKILL.md
skill-creator claude plugin skill-creator @ claude-plugins-official ~/.claude/plugins/marketplaces/.../skill-creator/skills/skill-creator/SKILL.md
...
31 skills, 6 renamed — run `dsh-skills-anywhere doctor` for details
Instala desde un checkout de git o un tarball de release en lugar de npm
Cada release de GitHub lleva un tarball precompilado, y tanto dsh plugin add como npx aceptan su URL directamente (https://github.com/noteflowai/dsh-skills-anywhere/releases/download/v0.11.0/dsh-skills-anywhere-0.11.0.tgz). Si quieres un commit no publicado:
dsh plugin --profile web add github:noteflowai/dsh-skills-anywhere
Una instalación de git incluye fuentes, así que pnpm tiene que ejecutar la compilación prepare de este paquete. pnpm 10+ se niega hasta que lo permitas: el primer add falla e imprime la clave exacta a permitir. Copia esa clave (incluye el commit) en el pnpm-workspace.yaml del perfil y ejecuta el add de nuevo.
# $DSH_HOME/profiles/web/pnpm-workspace.yaml
allowBuilds:
'dsh-skills-anywhere@https://codeload.github.com/noteflowai/dsh-skills-anywhere/tar.gz/<sha>': true
Fija un commit (github:noteflowai/dsh-skills-anywhere#<sha>) si quieres que la instalación sea reproducible.
Requisitos
- DeepSeek Harness
0.1.5-rc.1o más reciente (la suite se ejecuta contra0.1.5-rc.1y0.1.5-rc.2), cualquier perfil que monte@deepseek-ai/dsh-skill(los perfiles incluidosweb,acp,headlessysdktodos lo hacen) - Node.js 22.19+ o 24+
gitenPATHpara fuentes git (todo lo demás funciona sin él)
Qué se descubre
| Dónde | Ejemplo | Etiqueta de fuente dsh | Rango predeterminado |
|---|---|---|---|
| Habilidades de proyecto de otro agente | <project>/.claude/skills/* | anywhere-project | 250 |
| Habilidades de usuario de otro agente | ~/.codex/skills/*, ~/.cursor/skills/* | anywhere-user | 550 |
| Marketplaces de plugins de Claude Code y la caché de plugins instalados | ~/.claude/plugins/marketplaces/*/plugins/*/skills/* | anywhere-claude-plugins | 580 |
| Fuentes git | anthropics/skills, vercel-labs/agent-skills/skills | anywhere-source | 700 |
Un rango más bajo gana un nombre duplicado dentro del registro de dsh. Las raíces integradas de dsh mantienen sus rangos (.dsh/skills 100, .agents/skills 200, ~/.dsh/skills 400, ~/.agents/skills 500), así que una habilidad que escribiste para dsh siempre gana al mismo nombre encontrado en otro lugar. .agents/skills y .dsh/skills deliberadamente no se re-escanean aquí.
Ejecuta npx dsh-skills-anywhere agents para la tabla completa de agentes y qué directorios existen en tu máquina.
Formato de habilidad
Cualquier directorio con un SKILL.md que siga la especificación de Agent Skills, más la forma plana <name>.md de dsh. name, description, license, compatibility, allowed-tools, metadata, y disable-model-invocation / user-invocable de dsh se entienden todos. El frontmatter desconocido (argument-hint, context, ... de Claude Code) se preserva bajo metadata.frontmatter. scripts/, references/ y assets/ se exponen a través del directorio de recursos de la habilidad como cualquier habilidad de dsh.
En el modo permisivo predeterminado, un nombre faltante cae al directorio, un nombre inválido se normaliza a kebab-case, y una descripción faltante se deriva del primer párrafo. Cada reparación se registra y muestra con doctor. Establece lenient: false para coincidir con el comportamiento estricto del proveedor integrado.
Fuentes git
npx dsh-skills-anywhere add anthropics/skills # default branch
npx dsh-skills-anywhere add anthropics/skills@v1.0.0 # tag or branch
npx dsh-skills-anywhere add vercel-labs/agent-skills/skills # sub-directory
npx dsh-skills-anywhere add https://github.com/o/r/tree/main/dir # GitHub tree URL
npx dsh-skills-anywhere add git@gitlab.com:group/skills.git # any git URL
npx dsh-skills-anywhere add ./local/skills-repo --project # local repo, project-scoped
npx dsh-skills-anywhere add o/r --ref 3f2a9c1 --rank 300 # pin a commit, set precedence
Las fuentes vienen de tres lugares, fusionados en este orden: el config.sources del plugin, el archivo de usuario ~/.dsh/skills-anywhere/sources.json, y el archivo de proyecto <project>/.dsh/skills-anywhere.json (hazle commit para compartir habilidades con tu equipo). El CLI edita los dos últimos.
Cada repositorio se clona superficialmente una vez en ~/.dsh/skills-anywhere/cache/<host>/<owner>/<repo> (<repo>@<ref> cuando se establece una rama, etiqueta o commit, así que varias refs de un repositorio nunca comparten un checkout) y se actualiza cuando dsh inicia, cada syncIntervalMs (6 horas por defecto), y cada vez que un archivo de fuentes cambia. El commit resuelto de cada fuente se escribe en ~/.dsh/skills-anywhere/lock.json. La detección solo lee la caché, así que una actualización fallida significa las habilidades de ayer, nunca un catálogo vacío. El catálogo se invalida tan pronto como una actualización trae cambios; dsh nunca espera en la red.
Presupuesto de catálogo y las herramientas find_skills / open_skill
dsh publica el nombre y la descripción de cada habilidad invocable por el modelo en la sesión, en cada solicitud. Con marketplaces y algunas fuentes git eso son cientos de líneas de contexto. El proveedor por lo tanto clasifica sus habilidades y marca solo las primeras catalog.limit (50 por defecto) como invocables por el modelo; el resto se publica con invocación de modelo desactivada, lo que lo mantiene fuera del catálogo pero aún cargable por ti con /name.
Dos herramientas, registradas por la fila dsh-skills-anywhere/tools, hacen que la parte oculta sea alcanzable para el modelo:
find_skills(query, limit?)busca en cada habilidad por palabra clave (nombre, descripción,whenToUse, origen), en catálogo o no, y dice qué coincidencias están listadas.open_skill(name)carga cualquier habilidad por nombre exacto, incluidas las que el presupuesto ocultó. Las habilidades cuyo propio frontmatter dicedisable-model-invocation: trueaún se rechazan, exactamente como hace la herramienta integradaskill.
- id: skills-anywhere
config:
catalog:
limit: 30 # 0 = unlimited (old behaviour)
pin: [frontend-design] # always listed
hide: [example-skill] # never listed, still searchable and /name-invocable
- id: skills-anywhere-tools
config:
findLimit: 10
Las habilidades deshabilitadas por el autor nunca cuentan contra el presupuesto. Qué habilidades permanecen listadas sigue el orden de precedencia a continuación, así que las habilidades a nivel de proyecto ganan sobre las de nivel de usuario, que ganan sobre marketplaces y fuentes git. La fila de herramientas necesita el runtime de herramientas (ctx.tools); en un perfil sin uno permanece pendiente y el proveedor trabaja solo.
CLI
Comprueba antes de hacer commit. Ejecuta npx -y dsh-skills-anywhere@0.6.0 check skills/example/SKILL.md --fail-on-repair. El mismo analizador usado en el playground
ahora tiene comprobaciones por lotes de archivos, informes JSON con hashes de archivos y códigos de salida para CI.
Las comprobaciones solo leen los archivos nombrados. Comandos, ejemplo de CI y alcance.
dsh-skills-anywhere list [--all] [--json] Skills the provider publishes (--all shows hidden duplicates)
dsh-skills-anywhere agents [--json] Supported agents and which directories exist here
dsh-skills-anywhere sources [--json] Configured git sources and their synced commits
dsh-skills-anywhere add <source> [--ref] [--path] [--rank] [--project]
dsh-skills-anywhere remove <source> [--project]
dsh-skills-anywhere sync [--force] [--json] Clone or refresh every source now
dsh-skills-anywhere doctor [--json] Repaired, skipped, renamed and duplicate skills, with reasons
dsh-skills-anywhere check <files...> [--json] Explicit local files; strict parser gate by default
dsh-skills-anywhere mcp Serve the same skills to any MCP client over stdio
Todos los comandos aceptan --cwd <dir>. Para check, resuelve los archivos nombrados; otros
comandos lo usan para elegir el proyecto. check --lenient acepta reparaciones del proveedor;
--fail-on-repair rechaza cualquier reparación reportada en el modo seleccionado.
El CLI usa el mismo código de análisis que el plugin y nunca necesita dsh en ejecución.
Uso como servidor MCP
Las skills no son una idea exclusiva de dsh, y este proveedor tampoco lo es. dsh-skills-anywhere mcp inicia un servidor Model Context Protocol sobre stdio que expone el mismo pool (directorios de agentes, marketplaces de Claude Code, fuentes git, mismas reglas de deduplicación y renombrado) a cualquier cliente MCP:
| Herramienta | Qué hace |
|---|---|
list_skills | Navega por cada skill invocable por el modelo con su descripción y origen (limit, offset) |
find_skills | Búsqueda por palabras clave en nombres, descripciones y orígenes |
open_skill | Carga las instrucciones de una skill más el directorio donde viven sus scripts y referencias |
Las skills también se exponen como recursos skill://<name> (con autocompletado), para clientes que permiten mencionar recursos con @. Las skills cuyo frontmatter establece disable-model-invocation: true nunca se listan ni se abren. El servidor no necesita ninguna instalación de dsh.
Claude Code (como plugin; este repositorio funciona también como marketplace de plugins)
claude plugin marketplace add noteflowai/dsh-skills-anywhere
claude plugin install dsh-skills-anywhere@noteflowai
O registra el servidor simple en su lugar: claude mcp add skills-anywhere -- npx -y dsh-skills-anywhere mcp. En cualquier caso, reinicia Claude Code una vez para que se conecte.
Cursor (.cursor/mcp.json o ~/.cursor/mcp.json)
{ "mcpServers": { "skills-anywhere": { "command": "npx", "args": ["-y", "dsh-skills-anywhere", "mcp"] } } }
Codex (~/.codex/config.toml)
[mcp_servers.skills-anywhere]
command = "npx"
args = ["-y", "dsh-skills-anywhere", "mcp"]
El servidor también está listado en el registro oficial de MCP como io.github.noteflowai/dsh-skills-anywhere, por lo que los clientes que conocen el registro pueden instalarlo por nombre. El repositorio también es un Agent Plugin (plugin.json + mcp.json en la raíz), por lo que Cursor y otros clientes de plugins abiertos pueden instalarlo desde la URL del repositorio. Añade --cwd <dir> cuando el cliente no inicie el servidor dentro del proyecto en el que estás trabajando. Las fuentes git se sincronizan en segundo plano al inicio, exactamente como en dsh. Uso programático: import { createSkillsAnywhereServer } from 'dsh-skills-anywhere/mcp' devuelve el McpServer y el proveedor para que puedas adjuntar tu propio transporte.
Navegar y alternar skills en la interfaz web de dsh
En dsh web, abre Configuración → Plugins → Configuración de plugins. La tarjeta Skills Anywhere lista cada skill que el proveedor encontró, agrupada por dónde vive (directorios de agentes, plugins de Claude Code, fuentes git), con su estado de catálogo — listada para el modelo, no listada (excluida por el presupuesto o por ti) o deshabilitada por el autor — y el nombre al que fue renombrada cuando hubo colisión. Cada fila ofrece Fijar (siempre listada), Ocultar (fuera del catálogo del modelo, aún accesible por /name y find_skills) y Excluir (eliminada del proveedor); el presupuesto del catálogo es editable en el lugar, y un cuadro de filtro busca nombres, descripciones y orígenes.

Las ediciones se escriben en el documento de configuración de dsh del perfil como el espacio de nombres skills-anywhere, superpuesto sobre catalog y excludeSkills de cordis.patch.yml, y el catálogo del modelo se actualiza inmediatamente: sin reinicio, sin edición de archivos. La tarjeta solo aparece en perfiles que montan el servicio de configuración y el servidor web de dsh (el perfil web incluido lo hace); en cualquier otro lugar, el proveedor se comporta exactamente como está compuesto.
Configuración
Sobrescribe la fila en el cordis.patch.yml de tu perfil. Un parche reemplaza todo el bloque config, así que vuelve a indicar cada clave que te importe:
- id: skills-anywhere
config:
agents: true
excludeAgents: [openclaw]
claudePlugins: true
sources:
- anthropics/skills
- { repo: vercel-labs/agent-skills, path: skills, ref: main, rank: 650 }
excludeSkills: [example-skill]
| Campo | Predeterminado | Significado |
|---|---|---|
providerName | skills-anywhere | Nombre del proveedor en ctx.skills |
agents | true | Escanear directorios de skills de otros agentes |
excludeAgents | [] | IDs de agentes a omitir (ver comando agents) |
extraProjectDirs | [] | Directorios de skills adicionales relativos al proyecto |
extraUserDirs | [] | Directorios de skills adicionales absolutos o ~/ |
claudePlugins | true | Escanear marketplaces y caché de plugins de Claude Code |
sources | [] | Fuentes git: cadenas o { repo, ref?, path?, rank? } |
sourcesFiles | true | También leer los archivos sources.json de usuario y proyecto |
cacheDir | ~/.dsh/skills-anywhere/cache | Dónde se descargan las fuentes |
sync | true | Clonar y actualizar fuentes git en absoluto |
syncOnStart | true | Actualizar cuando el plugin inicia y en el primer uso de un proyecto |
syncIntervalMs | 21600000 | Intervalo de actualización en segundo plano; 0 lo desactiva |
syncTimeoutMs | 120000 | Tiempo de espera por comando git |
maxDepth | 5 | Profundidad de directorio recorrida dentro de fuentes y marketplaces |
dedupe | true | Colapsar duplicados con enlaces simbólicos y byte-idénticos |
lenient | true | Reparar frontmatter recuperable en lugar de omitir |
watch | true | Vigilar raíces locales y actualizar el catálogo al cambiar |
excludeSkills | [] | Nombres de skills a ocultar (nombre de frontmatter crudo o el nombre publicado mostrado por list); editable en tiempo de ejecución desde la tarjeta web |
ranks | { project: 250, user: 550, claudePlugins: 580, sources: 700 } | Precedencia por grupo |
catalog.limit | 50 | Skills de este proveedor listadas en el catálogo del modelo; 0 = ilimitado |
catalog.pin | [] | Nombres siempre listados |
catalog.hide | [] | Nombres nunca listados (aún invocables por /name y buscables) |
dshHome, home | $DSH_HOME / ~ | Raíces de ruta, principalmente para pruebas |
La fila dsh-skills-anywhere/tools acepta findLimit (predeterminado 10), findMaxLimit (50) y booleanos find / open para registrar solo una herramienta.
Cómo funcionan la precedencia y los duplicados
- Las raíces se escanean en orden de rango. Dentro de un mismo rango, el orden de la tabla de agentes, luego la ruta.
- Las entradas que apuntan al mismo archivo (enlaces simbólicos) se colapsan a la primera. Las entradas con el mismo nombre y cuerpo byte-idéntico se colapsan a la primera. Ambas aparecen en
doctorcomo duplicados ocultos. - Las entradas que aún comparten nombre pero difieren se conservan todas. Si una de ellas es tuya (un directorio de agente), conserva el nombre simple y las demás se prefijan con su plugin, repositorio o agente (
telegram-configure). Si todos los miembros provienen de un marketplace o una fuente git, todos se prefijan, por lo que obtienesdiscord-accessytelegram-accessen lugar de unaccesssimple sin significado.doctorlista los renombrados. - El registro de dsh luego fusiona los candidatos de este proveedor con los integrados por rango.
Notas de seguridad
- El plugin lee archivos de skills. Nunca escribe en tus directorios de agentes.
- Las fuentes git ejecutan
giten tu máquina al inicio del plugin y en el intervalo de actualización. Fija un commit para cualquier cosa que no confíes por completo y revisalock.json. - Una skill son instrucciones que el modelo seguirá. Añadir una fuente es una decisión de confianza, exactamente como instalar un plugin.
- Las skills se leen con la API de sistema de archivos de Node, no a través del
ctx.fssandbox de dsh; el proveedor integrado hace lo mismo para su raíz incluida.
Desarrollo
pnpm install
pnpm run check # typecheck + lint + tests + build
pnpm pack # tarball for `dsh plugin --profile <name> add ./dsh-skills-anywhere-*.tgz`
Las pruebas se ejecutan contra el registro real de @deepseek-ai/dsh-skill y repositorios git reales en directorios temporales.
Contribuciones
Las incidencias y las solicitudes de extracción son bienvenidas. Añadir un agente es un cambio de una línea en src/agents.ts. Consulta CONTRIBUTING.md.
Licencia
MIT © Note Flow AI

