Skills Anywhere

Descubra e carregue Skills locais de agentes existentes via MCP. Preserve origens, resolva colisões de nomes e verifique arquivos SKILL.md explícitos na CI.

Documentação

dsh-skills-anywhere

Suas habilidades, em qualquer lugar. Instale uma Agent Skill uma vez, use-a em todos os agentes: um provedor de habilidades ao vivo para DeepSeek Harness (dsh) e um servidor MCP para Claude Code, Cursor, Codex e afins.

English | 中文

Experimente o playground interativo no Hugging Face — explore um workspace de exemplo, resolva conflitos de nomes e pesquise além do orçamento do catálogo. Sem necessidade de instalação ou API de modelo. Como funciona.

Inspecione uma habilidade e retorne à mesma linha usando o teclado. Limpe a pesquisa mantendo as escolhas do catálogo, ou compartilhe uma visualização que restaure essas escolhas explicitamente.

Traga seu próprio SKILL.md. Compare a análise estrita e a tolerante do provedor localmente: inspecione correções, configurações de invocação e um relatório de verificação para download. Seu arquivo permanece no navegador. As mesmas verificações estão disponíveis na linha de comando e no CI, com hashes de arquivo e códigos de saída acionáveis. Cada relatório também lista as fontes externas referenciadas pelas instruções e se estão fixadas, além das ferramentas declaradas pelo autor. Isso é uma enumeração, não uma auditoria de segurança, um veredito sobre intenção ou uma garantia de compatibilidade com todos os clientes.

Actual local SKILL.md check: strict mode rejects an invalid name, while lenient mode explains the name and description repairs.

CI npm dsh plugin OpenSSF Scorecard Glama maintenance rating License: MIT

Listado em diretórios da comunidade: Awesome DeepSeek Harness · Awesome Gemini CLI. Registro de publicação.

Agent Skills são portáveis por design: uma pasta com um SKILL.md. Cada agente ainda procura apenas em sua própria pasta, então uma habilidade instalada para Claude Code é invisível para Codex, Cursor e DeepSeek Harness, e as que você escreveu para eles são invisíveis de volta. dsh-skills-anywhere lê todas essas pastas onde elas vivem e as serve em qualquer lugar: como um provedor de habilidades ao vivo dentro do dsh, e como um servidor MCP para Claude Code, Cursor, Codex e qualquer outro cliente MCP.

dsh-skills-anywhere list finds skills from Claude Code, Codex, Cursor, Gemini CLI, Goose, Windsurf and Kiro, then adds anthropics/skills from GitHub

Dentro do dsh, ele registra um provedor extra no registro ctx.skills integrado, então a ferramenta skill normal do modelo e a invocação /name simplesmente veem mais habilidades:

  • Diretórios de habilidades de todos os outros agentes. 60+ agentes prontos: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, Windsurf, Kiro, Goose, OpenCode, Roo, Cline, Qwen Code, Trae e mais. Nível de projeto e nível de usuário.
  • Marketplaces de plugins do Claude Code. As habilidades aninhadas dentro de ~/.claude/plugins/marketplaces/*/plugins/*/skills/*, incluindo o marketplace oficial da Anthropic.
  • Qualquer repositório git cheio de habilidades. Aponte para anthropics/skills, um subdiretório, um branch, uma tag ou um commit. Ele é clonado superficialmente em um cache local, atualizado em segundo plano e fixado em um arquivo de bloqueio.
  • Zero cópias, zero symlinks. Os arquivos são lidos onde vivem e relidos a cada carregamento. Edite uma habilidade no Cursor e o dsh vê a mudança. Nada para importar, nada para manter sincronizado.

Centenas de habilidades inflariam cada requisição do modelo, então o provedor mantém um orçamento de catálogo: no máximo 50 habilidades entram no catálogo de sessão do modelo por padrão, e o restante fica a uma chamada de find_skills de distância por meio de duas pequenas ferramentas que o plugin adiciona, com a invocação /name intacta.

O mesmo pool está disponível fora do dsh também: dsh-skills-anywhere mcp o serve para qualquer cliente MCP (Claude Code, Cursor, Codex, Windsurf…) como ferramentas find_skills / open_skill e recursos skill://, então uma única instalação de uma habilidade alcança todos os agentes que você usa.

Ele também deduplica instalações com symlink e byte-idênticas (o CLI skills vincula uma cópia canônica em vários agentes), repara desvios comuns de frontmatter em vez de descartar silenciosamente uma habilidade, e renomeia nomes conflitantes (discord/configure vs telegram/configure) para que toda habilidade permaneça acessível. Um pequeno CLI mostra exatamente o que o dsh verá e por quê.

Novo na 0.10.0: pesquisa que você pode inspecionar

Explore todos os 27 testes reais de habilidades com GPU e os pilotos de pesquisa. O editor de cena capturada do Robot Reel e a replay oficial do LIBERO-Plus conectam registros de fontes reais com entrega portátil de habilidades e avaliação independente. Cada tentativa falha permanece visível; nenhuma eficácia de habilidade, benchmark completo ou resultado em hardware real é implícito.

Experimente um fluxo de trabalho real de Physical AI

Carregue uma habilidade de revisão de frames do Microduck via MCP, então peça ao seu agente para verificar seus fatos conjuntos registrados com o Robot Reel antes de escrever uma revisão. Exemplo interativo de habilidade (selecione 04 Review robot evidence) · Passo a passo local · Habilidade reutilizável. O navegador mostra as instruções; a ferramenta de execução do seu próprio agente executa o verificador somente-leitura. Nenhuma nova simulação ou GPU é necessária.

Revise uma vez, carregue o mesmo arquivo

O MCP open_skill agora retorna o SHA-256 do arquivo original. Forneça expected_sha256 de check --json ou de uma abertura anterior para rejeitar um SKILL.md alterado antes que suas instruções sejam retornadas. Novas exclusões do autor se aplicam imediatamente, mesmo enquanto a descoberta está em cache. Fluxo de trabalho de arquivo exato.

Suporte MCP 2026-07-28: o comando stdio local agora negocia com clientes legados e de protocolo atual. Quatro configurações de SDK e o arquivo npm instalado são verificados em conexões reais de subprocesso. Matriz de compatibilidade e migração de incorporação.

v0.9: revise o diretório inteiro de habilidades. Gere um manifesto de arquivos com bundle /path/to/skill --json, compare recursos adicionados/removidos/alterados, e exija expected_bundle_sha256 ao abrir via MCP. A comparação interativa de pacotes mostra uma mudança de script atrás de instruções inalteradas e compara seus próprios manifestos localmente. Revisão de diretório e limites.

Unchanged SKILL.md with a changed script: compare skill directory manifests locally.

Início 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 no npm com proveniência de build; cada release do GitHub também carrega o mesmo tarball.

Inicie o dsh como de costume. O catálogo de habilidades agora inclui tudo acima; carregue uma habilidade com a ferramenta skill ou /skill-name exatamente como antes.

Em uma máquina com apenas Claude Code instalado, list já encontra as 31 habilidades dentro do marketplace oficial de plugins, nenhuma das quais o dsh vê por conta própria:

$ 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
Instale a partir de um checkout git ou de um tarball de release em vez do npm

Cada release do GitHub carrega um tarball pré-construído, e tanto dsh plugin add quanto npx aceitam sua URL diretamente (https://github.com/noteflowai/dsh-skills-anywhere/releases/download/v0.11.0/dsh-skills-anywhere-0.11.0.tgz). Se você quiser um commit não lançado:

dsh plugin --profile web add github:noteflowai/dsh-skills-anywhere

Uma instalação via git envia fontes, então o pnpm precisa executar o build prepare deste pacote. O pnpm 10+ recusa até que você permita: o primeiro add falha e imprime a chave exata a ser permitida. Copie essa chave (ela inclui o commit) no pnpm-workspace.yaml do perfil e execute o add novamente.

# $DSH_HOME/profiles/web/pnpm-workspace.yaml
allowBuilds:
  'dsh-skills-anywhere@https://codeload.github.com/noteflowai/dsh-skills-anywhere/tar.gz/<sha>': true

Fixe um commit (github:noteflowai/dsh-skills-anywhere#<sha>) se quiser que a instalação seja reproduzível.

Requisitos
  • DeepSeek Harness 0.1.5-rc.1 ou mais recente (a suíte roda contra 0.1.5-rc.1 e 0.1.5-rc.2), qualquer perfil que monte @deepseek-ai/dsh-skill (os perfis web, acp, headless e sdk incluídos fazem isso)
  • Node.js 22.19+ ou 24+
  • git em PATH para fontes git (todo o resto funciona sem ele)

O que é descoberto

OndeExemploRótulo de fonte do dshClassificação padrão
Habilidades de projeto de outro agente<project>/.claude/skills/*anywhere-project250
Habilidades de usuário de outro agente~/.codex/skills/*, ~/.cursor/skills/*anywhere-user550
Marketplaces de plugins do Claude Code e o cache de plugins instalados~/.claude/plugins/marketplaces/*/plugins/*/skills/*anywhere-claude-plugins580
Fontes gitanthropics/skills, vercel-labs/agent-skills/skillsanywhere-source700

Classificação menor vence um nome duplicado dentro do registro do dsh. As raízes integradas do dsh mantêm suas classificações (.dsh/skills 100, .agents/skills 200, ~/.dsh/skills 400, ~/.agents/skills 500), então uma habilidade que você escreveu para o dsh sempre vence o mesmo nome encontrado em outro lugar. .agents/skills e .dsh/skills são deliberadamente não reescaneados aqui.

Execute npx dsh-skills-anywhere agents para a tabela completa de agentes e quais diretórios existem na sua máquina.

Formato de habilidade

Qualquer diretório com um SKILL.md seguindo a especificação Agent Skills, além da forma plana <name>.md do dsh. name, description, license, compatibility, allowed-tools, metadata, e disable-model-invocation / user-invocable do dsh são todos compreendidos. Frontmatter desconhecido (argument-hint, context, ... do Claude Code) é preservado sob metadata.frontmatter. scripts/, references/ e assets/ são expostos através do diretório de recursos da habilidade como qualquer habilidade do dsh.

No modo tolerante padrão, um nome ausente recai para o diretório, um nome inválido é normalizado para kebab-case, e uma descrição ausente é derivada do primeiro parágrafo. Cada reparo é registrado e mostrado por doctor. Defina lenient: false para corresponder ao comportamento estrito do provedor integrado.

Fontes 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

As fontes vêm de três lugares, mescladas nesta ordem: o config.sources do plugin, o arquivo de usuário ~/.dsh/skills-anywhere/sources.json, e o arquivo de projeto <project>/.dsh/skills-anywhere.json (faça commit para compartilhar habilidades com sua equipe). O CLI edita os dois últimos.

Cada repositório é clonado superficialmente uma vez em ~/.dsh/skills-anywhere/cache/<host>/<owner>/<repo> (<repo>@<ref> quando um branch, tag ou commit é definido, então várias refs de um repositório nunca compartilham um checkout) e atualizado quando o dsh inicia, a cada syncIntervalMs (6 horas por padrão), e sempre que um arquivo de fontes muda. O commit resolvido de cada fonte é escrito em ~/.dsh/skills-anywhere/lock.json. A descoberta apenas lê o cache, então uma atualização falha significa as habilidades de ontem, nunca um catálogo vazio. O catálogo é invalidado assim que uma atualização traz mudanças; o dsh nunca espera na rede.

Orçamento de catálogo e as ferramentas find_skills / open_skill

O dsh publica o nome e a descrição de toda habilidade invocável por modelo na sessão, a cada requisição. Com marketplaces e algumas fontes git, isso são centenas de linhas de contexto. O provedor portanto classifica suas habilidades e marca apenas as primeiras catalog.limit (padrão 50) como invocáveis por modelo; o restante é publicado com invocação por modelo desativada, o que o mantém fora do catálogo, mas ainda carregável por você com /name.

Duas ferramentas, registradas pela linha dsh-skills-anywhere/tools, tornam a parte oculta alcançável para o modelo:

  • find_skills(query, limit?) pesquisa todas as habilidades por palavra-chave (nome, descrição, whenToUse, origem), no catálogo ou não, e diz quais correspondências estão listadas.
  • open_skill(name) carrega qualquer habilidade pelo nome exato, incluindo as que o orçamento escondeu. Habilidades cujo próprio frontmatter diz disable-model-invocation: true ainda são recusadas, exatamente como a ferramenta integrada skill faz.
- 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

Habilidades desativadas pelo autor nunca contam contra o orçamento. Quais habilidades permanecem listadas segue a ordem de precedência abaixo, então habilidades de nível de projeto vencem as de nível de usuário, que vencem marketplaces e fontes git. A linha de ferramentas precisa do runtime de ferramentas (ctx.tools); em um perfil sem ele, ela permanece pendente e o provedor trabalha sozinho.

CLI

Verifique antes de commitar. Execute npx -y dsh-skills-anywhere@0.6.0 check skills/example/SKILL.md --fail-on-repair. O mesmo parser usado no playground agora tem verificações em lote de arquivos, relatórios JSON com hashes de arquivos e códigos de saída para CI. As verificações leem apenas os arquivos nomeados. Comandos, exemplo de CI e escopo.

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 os comandos aceitam --cwd <dir>. Para check, ele resolve os arquivos nomeados; outros comandos o usam para escolher o projeto. check --lenient aceita reparos do provedor; --fail-on-repair rejeita qualquer reparo relatado no modo selecionado. A CLI usa o mesmo código de parsing do plugin e nunca precisa do dsh em execução.

Uso como servidor MCP

Skills não são uma ideia exclusiva do dsh, e este provedor também não é. dsh-skills-anywhere mcp inicia um servidor Model Context Protocol via stdio que expõe o mesmo pool (diretórios de agentes, marketplaces do Claude Code, fontes git, mesmas regras de deduplicação e renomeação) para qualquer cliente MCP:

FerramentaO que faz
list_skillsNavegue por cada skill invocável pelo modelo com sua descrição e origem (limit, offset)
find_skillsBusca por palavras-chave em nomes, descrições e origens
open_skillCarrega as instruções de uma skill mais o diretório onde seus scripts e referências estão

Skills também são expostas como recursos skill://<name> (com autocompletar), para clientes que permitem mencionar recursos com @. Skills cujo frontmatter define disable-model-invocation: true nunca são listadas ou abertas. O servidor não precisa de instalação do dsh.

Claude Code (como plugin; este repositório também funciona como marketplace de plugins)

claude plugin marketplace add noteflowai/dsh-skills-anywhere
claude plugin install dsh-skills-anywhere@noteflowai

Ou registre o servidor avulso: claude mcp add skills-anywhere -- npx -y dsh-skills-anywhere mcp. De qualquer forma, reinicie o Claude Code uma vez para que ele conecte.

Cursor (.cursor/mcp.json ou ~/.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"]

O servidor também está listado no registro oficial de MCP como io.github.noteflowai/dsh-skills-anywhere, então clientes que conhecem o registro podem instalá-lo pelo nome. O repositório também é um Agent Plugin (plugin.json + mcp.json na raiz), então Cursor e outros clientes de plugin aberto podem instalá-lo pela URL do repositório. Adicione --cwd <dir> quando o cliente não iniciar o servidor dentro do projeto em que você está trabalhando. Fontes git sincronizam em segundo plano na inicialização, exatamente como no dsh. Uso programático: import { createSkillsAnywhereServer } from 'dsh-skills-anywhere/mcp' retorna o McpServer e o provedor para que você possa anexar seu próprio transporte.

Navegue e alterne skills na interface web do dsh

Em dsh web, abra Configurações → Plugins → Configuração de plugins. O cartão Skills Anywhere lista cada skill que o provedor encontrou, agrupado por onde vive (diretórios de agentes, plugins do Claude Code, fontes git), com seu estado no catálogo — listada para o modelo, não listada (mantida fora pelo orçamento ou por você) ou desabilitada pelo autor — e o nome para o qual foi renomeada em caso de colisão. Cada linha oferece Fixar (sempre listada), Ocultar (fora do catálogo do modelo, ainda acessível via /name e find_skills) e Excluir (removida do provedor); o orçamento do catálogo é editável no local, e uma caixa de filtro busca nomes, descrições e origens.

The Skills Anywhere card in dsh web settings: skills grouped by origin with listed / not listed / author disabled states, renames, and Pin, Hide, Exclude actions

As edições são gravadas no documento de configurações do dsh do perfil como o namespace skills-anywhere, sobreposto a catalog e excludeSkills de cordis.patch.yml, e o catálogo do modelo segue imediatamente: sem reiniciar, sem editar arquivos. O cartão só aparece em perfis que montam o serviço de configurações e o servidor web do dsh (o perfil web enviado faz isso); em qualquer outro lugar, o provedor se comporta exatamente como composto.

Configuração

Substitua a linha no cordis.patch.yml do seu perfil. Um patch substitui todo o bloco config, então reafirme cada chave que você se importa:

- 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]
CampoPadrãoSignificado
providerNameskills-anywhereNome do provedor em ctx.skills
agentstrueVerificar diretórios de skills de outros agentes
excludeAgents[]IDs de agentes a ignorar (veja o comando agents)
extraProjectDirs[]Diretórios adicionais de skills relativos ao projeto
extraUserDirs[]Diretórios adicionais de skills absolutos ou ~/
claudePluginstrueVerificar marketplaces e cache de plugins do Claude Code
sources[]Fontes git: strings ou { repo, ref?, path?, rank? }
sourcesFilestrueTambém ler os arquivos sources.json do usuário e do projeto
cacheDir~/.dsh/skills-anywhere/cacheOnde as fontes são clonadas
synctrueClonar e atualizar fontes git de forma alguma
syncOnStarttrueAtualizar quando o plugin inicia e no primeiro uso de um projeto
syncIntervalMs21600000Intervalo de atualização em segundo plano; 0 desativa
syncTimeoutMs120000Timeout por comando git
maxDepth5Profundidade de diretório percorrida dentro de fontes e marketplaces
dedupetrueColapsar duplicatas com symlink e byte-idênticas
lenienttrueReparar frontmatter recuperável em vez de pular
watchtrueObservar raízes locais e atualizar o catálogo em mudanças
excludeSkills[]Nomes de skills a ocultar (nome bruto do frontmatter ou o nome publicado mostrado por list); editável em tempo de execução pelo cartão web
ranks{ project: 250, user: 550, claudePlugins: 580, sources: 700 }Precedência por grupo
catalog.limit50Skills deste provedor listadas no catálogo do modelo; 0 = ilimitado
catalog.pin[]Nomes sempre listados
catalog.hide[]Nomes nunca listados (ainda invocáveis via /name e pesquisáveis)
dshHome, home$DSH_HOME / ~Raízes de caminho, principalmente para testes

A linha dsh-skills-anywhere/tools aceita findLimit (padrão 10), findMaxLimit (50) e booleanos find / open para registrar apenas uma ferramenta.

Como precedência e duplicatas funcionam

  1. Raízes são verificadas em ordem de classificação. Dentro de uma mesma classificação, a ordem da tabela de agentes, depois o caminho.
  2. Entradas apontando para o mesmo arquivo (symlinks) colapsam para a primeira. Entradas com o mesmo nome e corpo byte-idêntico colapsam para a primeira. Ambas aparecem em doctor como duplicatas ocultas.
  3. Entradas que ainda compartilham um nome mas diferem são todas mantidas. Se uma delas for sua (um diretório de agente), ela mantém o nome simples e as outras recebem prefixo com seu plugin, repositório ou agente (telegram-configure). Se todos os membros vêm de um marketplace ou fonte git, todos recebem prefixo, então você obtém discord-access e telegram-access em vez de um access simples sem sentido. doctor lista as renomeações.
  4. O registro do dsh então mescla os candidatos deste provedor com os integrados por classificação.

Notas de segurança

  • O plugin arquivos de skills. Ele nunca escreve em seus diretórios de agentes.
  • Fontes git executam git na sua máquina na inicialização do plugin e no intervalo de atualização. Fixe um commit para qualquer coisa que você não confie totalmente e revise lock.json.
  • Uma skill são instruções que o modelo seguirá. Adicionar uma fonte é uma decisão de confiança, exatamente como instalar um plugin.
  • Skills são lidas com a API de sistema de arquivos do Node, não através do ctx.fs em sandbox do dsh; o provedor integrado faz o mesmo para sua raiz agrupada.

Desenvolvimento

pnpm install
pnpm run check        # typecheck + lint + tests + build
pnpm pack             # tarball for `dsh plugin --profile <name> add ./dsh-skills-anywhere-*.tgz`

Testes rodam contra o registro real @deepseek-ai/dsh-skill e repositórios git reais em diretórios temporários.

Contribuindo

Issues e pull requests são bem-vindos. Adicionar um agente é uma mudança de uma linha em src/agents.ts. Veja CONTRIBUTING.md.

Licença

MIT © Note Flow AI