Skip to main content

Habilidades personalizadas

As habilidades são módulos reutilizáveis de prompt que expandem os recursos do Copilot. Carregue habilidades a partir de diretórios para fornecer ao Copilot capacidades especializadas em domínios específicos ou fluxos de trabalho.

Overview

Uma habilidade é um diretório nomeado que contém um arquivo SKILL.md — um documento markdown que fornece instruções para Copilot. Quando carregado, o conteúdo da habilidade é injetado no contexto da sessão.

As habilidades permitem que você:

  • Empacotar expertise de domínio em módulos reutilizáveis
  • Compartilhar comportamentos especializados entre projetos
  • Organizar configurações complexas do agente
  • Habilitar/desabilitar recursos por sessão

Carregando habilidades

Especifique os diretórios que contêm habilidades ao criar uma sessão:

Idiomas de código navigation

TypeScript
import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
const session = await client.createSession({
    model: "gpt-4.1",
    skillDirectories: [
        "./skills/code-review",
        "./skills/documentation",
    ],
    onPermissionRequest: async () => ({ kind: "approve-once" }),
});

// Copilot now has access to skills in those directories
await session.sendAndWait({ prompt: "Review this code for security issues" });

Desativando funcionalidades

Desabilite habilidades específicas mantendo outras pessoas ativas:

Idiomas de código navigation

TypeScript
const session = await client.createSession({
    skillDirectories: ["./skills"],
    disabledSkills: ["experimental-feature", "deprecated-tool"],
});

Estrutura do diretório de habilidades

Cada habilidade é um subdiretório nomeado que contém um SKILL.md arquivo:

skills/
├── code-review/
│   └── SKILL.md
└── documentation/
    └── SKILL.md

A skillDirectories opção aponta para o diretório pai (por exemplo, ./skills). A CLI descobre todos os SKILL.md arquivos em subdiretórios imediatos.

formato SKILL.md

Um SKILL.md arquivo é um documento de markdown com metadados YAML opcionais:

---
name: code-review
description: Specialized code review capabilities
---

# Code Review Guidelines

When reviewing code, always check for:

1. **Security vulnerabilities** - SQL injection, XSS, etc.
2. **Performance issues** - N+1 queries, memory leaks
3. **Code style** - Consistent formatting, naming conventions
4. **Test coverage** - Are critical paths tested?

Provide specific line-number references and suggested fixes.

Os campos de elementos iniciais:

  • name: o identificador da habilidade (usado com disabledSkills para desativá-la seletivamente). Se omitido, o nome do diretório será usado.
  • description: uma breve descrição do que a habilidade faz.

O corpo do markdown contém as instruções que são injetadas no contexto da sessão quando a habilidade é carregada.

Opções de configuração

Campos de habilidade SessionConfig

LinguagemCampoTipoDescription
Node.jsskillDirectoriesstring[]Diretórios para carregar habilidades de
Node.jsdisabledSkillsstring[]Funções a desativar
Pythonskill_directorieslist[str]Diretórios para carregar habilidades de
Pythondisabled_skillslist[str]Funções a desativar
GoSkillDirectories[]stringDiretórios para carregar habilidades de
GoDisabledSkills[]stringFunções a desativar
.NETSkillDirectoriesList<string>Diretórios para carregar habilidades de
.NETDisabledSkillsList<string>Funções a desativar

Práticas recomendadas

  1. Organizar por domínio – Agrupar habilidades relacionadas (por exemplo, skills/security/, ) skills/testing/

  2. Usar frontmatter – Incluir name e description no frontmatter do YAML para maior clareza

  3. Dependências de documento – Observe as ferramentas ou servidores MCP que uma habilidade requer

  4. Testar habilidades isoladamente – Verificar se as habilidades funcionam antes de combiná-las

  5. Usar caminhos relativos – Manter as habilidades portáveis entre ambientes

Combinando com outros recursos

Habilidades + agentes personalizados

As habilidades listadas no campo de skills um agente são ansiosamente pré-carregadas– seu conteúdo completo é injetado no contexto do agente na inicialização, portanto, o agente tem acesso às instruções de habilidade imediatamente sem precisar invocar uma ferramenta de habilidade. Os nomes de habilidade são resolvidos no nível da sessão skillDirectories.

const session = await client.createSession({
    skillDirectories: ["./skills/security"],
    customAgents: [{
        name: "security-auditor",
        description: "Security-focused code reviewer",
        prompt: "Focus on OWASP Top 10 vulnerabilities",
        skills: ["security-scan", "dependency-check"],
    }],
    onPermissionRequest: async () => ({ kind: "approve-once" }),
});

Observação

As habilidades são opcionais — quando skills é omitido, nenhum conteúdo de habilidades é injetado. Os sub-agentes não herdam habilidades do pai; você deve listá-los explicitamente por agente.

Habilidades + servidores MCP

As habilidades podem complementar os recursos do servidor MCP:

const session = await client.createSession({
    skillDirectories: ["./skills/database"],
    mcpServers: {
        postgres: {
            type: "local",
            command: "npx",
            args: ["-y", "@modelcontextprotocol/server-postgres"],
            tools: ["*"],
        },
    },
    onPermissionRequest: async () => ({ kind: "approve-once" }),
});

Troubleshooting

Habilidades que não estão carregando

  1. Caminho de verificação existe - Verifique se o caminho do diretório de habilidades está correto e contém subdiretórios com SKILL.md arquivos
  2. Verificar permissões – verifique se o SDK pode ler o diretório
  3.           **Verificar o formato de SKILL.md** — certifique-se de que o markdown está bem formado e que qualquer frontmatter YAML use sintaxe válida
    
  4.           **Habilitar o registro em log de depuração** — defina `logLevel: "debug"` para ver os logs de carregamento de habilidades
    

Conflitos de habilidades

Se várias habilidades fornecerem instruções conflitantes:

  • Usar disabledSkills para excluir habilidades conflitantes
  • Reorganizar diretórios de habilidades para evitar sobreposições

Consulte também