Skip to main content

Usando habilidades personalizadas com o SDK do Copilot

Utilize habilidades para estender as funcionalidades de Copilot com módulos de comando reutilizáveis.

Quem pode usar esse recurso?

SDK do GitHub Copilot está disponível com todos os Copilot planos.

Observação

          SDK do Copilot está atualmente em versão prévia técnica. A funcionalidade e a disponibilidade estão sujeitas a alterações.

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

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:

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: "approved" }),
});

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

Para obter exemplos em Python, Go e .NET, consulte o github/copilot-sdk repositório.

Desativando funcionalidades

Desabilite habilidades específicas mantendo outras pessoas ativas:

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

Para obter exemplos em Python, Go e .NET, consulte o github/copilot-sdk repositório.

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 desabilitá-lo 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

Ao chamar createSession(), passe esses campos relacionados à habilidade no objeto de configuração de sessão:

LinguagemCampoTipoDescrição
Node.jsskillDirectoriesstring[]Diretórios para carregar funcionalidades de
Node.jsdisabledSkillsstring[]Funções a desativar
Pythonskill_directorieslist[str]Diretórios para carregar habilidades de
Pythondisabled_skillslist[str]Habilidades para desativar
GoSkillDirectories[]stringDiretórios de onde carregar habilidades
GoDisabledSkills[]stringHabilidades para desabilitar
.NETSkillDirectoriesList<string>Diretórios para carregar habilidades de
.NETDisabledSkillsList<string>Habilidades para desabilitar

Práticas recomendadas

  •         **Organizar por domínio** — agrupar habilidades relacionadas (por exemplo, `skills/security/`, ) `skills/testing/`
    
  •         **Usar frontmatter** — Incluir `name` e `description` no frontmatter do YAML para maior clareza
    
  •         **Dependências de documentos** — observe as ferramentas ou servidores MCP que uma habilidade requer
    
  •         **Testar habilidades isoladamente** — verificar se as habilidades funcionam antes de combiná-las
    
  •         **Usar caminhos relativos** — Manter habilidades portáteis entre ambientes
    

Combinando com outros recursos

Habilidades com agentes personalizados

As habilidades funcionam junto com agentes personalizados:

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

Habilidades com 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: "approved" }),
});

Solução de problemas

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 do 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