GitHub Copilot Skills: cómo crear Agent Skills con SKILL.md
Aprende a crear
GitHub Copilot Skills
para enseñar procedimientos
especializados y reutilizables
a tus agentes.
Descubre cómo funciona
SKILL.md,
dónde guardar Skills,
cómo añadir scripts,
referencias y ejemplos,
activarlas mediante
slash commands,
utilizarlas desde
VS Code,
Copilot CLI,
Cloud Agent
y Code Review,
e instalar Skills
creadas por la comunidad.
¿Qué son las GitHub Copilot Agent Skills?
Una
Agent Skill
es una carpeta
que contiene
instrucciones especializadas
para enseñar
a GitHub Copilot
cómo ejecutar
una tarea repetible.
Cada Skill
contiene obligatoriamente
un archivo
SKILL.md
y puede añadir
scripts,
ejemplos,
documentación
y otros recursos.
Copilot descubre
las Skills disponibles
y carga únicamente
las que considera
relevantes
para la tarea actual.
Para qué sirven las Skills de GitHub Copilot
Workflows
Guardar procedimientos de varios pasos.
Scripts
Incluir herramientas auxiliares.
Referencias
Añadir documentación específica.
Testing
Estandarizar procedimientos de prueba.
Auditorías
Crear checklists especializadas.
Portabilidad
Reutilizar capacidades entre agentes compatibles.
Copilot no carga todas tus Skills completas en cada conversación
Descubre
Lee nombre y descripción de las Skills.
Selecciona
Detecta cuál Skill corresponde a la tarea.
Carga
Añade SKILL.md al contexto.
Accede
Lee scripts y recursos cuando los necesita.
Copilot Skills vs Custom Instructions
| Agent Skills | Custom Instructions |
|---|---|
| Procedimientos especializados | Reglas generales |
| Se cargan cuando son relevantes | Se aplican ampliamente o por glob |
| Pueden incluir scripts | Principalmente instrucciones |
| Pueden incluir recursos | Contexto y convenciones |
| Estándar portable | Configuración más ligada al cliente |
| “Cómo ejecutar esta tarea” | “Cómo trabajamos en este proyecto” |
“Todos los cambios PHP
deben utilizar
$wpdb->prepare()
para SQL dinámico”
pertenece
a
Instructions.
“Ejecuta nuestro proceso
de auditoría
de seguridad WordPress
en siete pasos”
pertenece
a una
Skill.
Agent Skills no es un formato exclusivo de GitHub
Agent Skills utiliza una especificación abierta diseñada para que las capacidades puedan trasladarse entre distintos agentes compatibles.
Una Skill bien diseñada puede reutilizarse en distintas superficies sin convertir el procedimiento en una configuración exclusiva de un único IDE.
Dónde funcionan las Agent Skills de GitHub Copilot
VS Code
Chat y Agent Mode.
Copilot CLI
Agente desde terminal.
Cloud Agent
Tareas remotas delegadas.
Code Review
Procedimientos especializados de revisión.
Copilot App
Skills propias y built-in.
JetBrains
Agent Mode compatible.
Cómo crear una GitHub Copilot Skill
Crea skills/
Selecciona ubicación de proyecto o personal.
Crea una carpeta
Una carpeta independiente para cada Skill.
Crea SKILL.md
Define nombre, descripción y procedimiento.
Añade recursos
Scripts, ejemplos y documentación opcional.
Prueba
Comprueba descubrimiento y activación.
Dónde guardar las Skills del proyecto
GitHub Copilot reconoce varias ubicaciones compatibles.
.github/skills/
.agents/skills/
.claude/skills/
Si buscas
máxima portabilidad
entre distintos
agentes,
.agents/skills/
es otra opción
muy útil.
Crear Skills reutilizables en todos tus proyectos
Para Skills personales puedes utilizar:
~/.copilot/skills/
~/.agents/skills/
VS Code
también reconoce
~/.claude/skills/
para compatibilidad
con Skills
almacenadas
en ese formato.
Si la Skill describe un procedimiento propio del repositorio, versiona la Skill con el proyecto. Si describe tu forma personal de trabajar en cualquier proyecto, utiliza una ubicación personal.
La estructura mínima de una Skill
.github/
└── skills/
└── security-review/
└── SKILL.md
El archivo debe llamarse exactamente:
en mayúsculas y dentro de la carpeta correspondiente a la Skill.
Ejemplo mínimo de una Agent Skill
---
name: security-review
description: Review code changes for security vulnerabilities. Use when asked to audit authentication, authorization, input validation, secrets, SQL, APIs, or security-sensitive code.
---
# Security Review
When reviewing security-sensitive code:
1. understand the trust boundaries
2. identify attacker-controlled input
3. inspect authentication
4. inspect authorization
5. inspect data validation
6. inspect persistence
7. inspect output encoding
8. inspect secret handling
Report findings with:
- severity
- file
- affected code
- exploit scenario
- recommended fix
Do not report speculative issues
without explaining
a realistic failure path.
El nombre de la Skill debe cumplir reglas estrictas
Usa minúsculas.
Usa guiones para separar palabras.
Máximo 64 caracteres.
Debe coincidir con la carpeta en VS Code.
Correcto:
security-review
wordpress-debugging
woocommerce-api-testing
Evita:
Security Review
security/review
company:security-review
security.review
Mantén nombres simples, descriptivos y compatibles con la especificación.
La descripción decide cuándo Copilot utiliza la Skill
“Security tools”
No explica qué hace ni cuándo utilizarla.
Descripción activable
Explica capacidad, contexto y señales de uso.
description: Audit WordPress PHP code for authentication, authorization, nonce, capability, SQL injection, XSS, CSRF, sanitization, escaping, and unsafe REST or AJAX handlers. Use when asked for a WordPress security review.
Copilot utiliza esa descripción para decidir si la capacidad es relevante para el prompt.
Campos importantes de SKILL.md
| Campo | Uso |
|---|---|
name |
Identificador de la Skill |
description |
Qué hace y cuándo utilizarla |
argument-hint |
Indica argumentos esperados |
user-invocable |
Controla aparición como slash command |
disable-model-invocation |
Impide activación automática |
allowed-tools |
Puede preautorizar tools en Copilot CLI |
context |
VS Code puede ejecutar la Skill en contexto fork experimental |
Si necesitas
máxima portabilidad,
mantén
name,
description
y el cuerpo
de la Skill
como núcleo,
utilizando
extensiones específicas
solo cuando
realmente
las necesitas.
Crear una Skill que Copilot nunca active automáticamente
---
name: production-release
description: Run the production release verification workflow.
user-invocable: true
disable-model-invocation: true
argument-hint: "[version]"
---
# Production Release
Only run this workflow
when explicitly invoked by the user.
Never deploy automatically.
1. verify working tree
2. run tests
3. run build
4. inspect changelog
5. verify version
6. prepare release summary
7. stop before deployment
Después puedes invocarla explícitamente:
/production-release 2.4.0
Ocultar una Skill del menú pero permitir que Copilot la cargue
---
name: api-conventions
description: Internal knowledge for working with this project's API conventions and response formats.
user-invocable: false
---
# API conventions
...
La Skill queda disponible para selección automática del modelo, pero no aparece normalmente como comando para el usuario.
Una Skill puede ser mucho más que SKILL.md
.github/
└── skills/
└── wordpress-security/
│
├── SKILL.md
│
├── checklist.md
│
├── examples/
│ ├── secure-ajax.php
│ └── secure-rest.php
│
└── scripts/
└── scan-php.sh
Documentación.
Ejemplos.
Scripts.
Plantillas y configuración.
Enlaza los recursos desde SKILL.md
# Security Review
Before reviewing:
1. Read the [security checklist](./checklist.md).
2. Compare WordPress AJAX handlers with
[secure AJAX example](./examples/secure-ajax.php).
3. Compare REST routes with
[secure REST example](./examples/secure-rest.php).
If static analysis is useful,
run:
[scripts/scan-php.sh](./scripts/scan-php.sh)
Copilot utiliza carga progresiva. Un recurso que nunca se referencia puede no entrar en el contexto de la tarea.
Cómo funciona la carga progresiva de Skills
Metadata
Copilot conoce name y description.
Match
La descripción coincide con el objetivo.
SKILL.md
Se cargan las instrucciones detalladas.
Resources
Se accede a archivos adicionales bajo demanda.
Puedes tener muchas Skills instaladas sin introducir automáticamente el contenido completo de todas ellas en cada conversación.
Invocar una Skill manualmente
Si la Skill se llama:
name: wordpress-security
puedes utilizar:
/wordpress-security
Review the current plugin changes.
También puedes incluir contexto:
/wordpress-security
Review only:
includes/class-rest-api.php
Focus on authorization
and ownership checks.
No siempre necesitas escribir el nombre de la Skill
Por defecto, Copilot puede decidir automáticamente utilizar una Skill cuando la descripción coincide con el trabajo solicitado.
Prompt:
Audit the WordPress REST endpoints
for authorization vulnerabilities.
Available skill:
wordpress-security
↓
Copilot detects relevance
↓
Loads SKILL.md
↓
Executes specialized procedure
Crear Skills directamente desde VS Code
VS Code permite administrar Skills desde Agent Customizations.
Configure Chat
Abre Agent Customizations.
Skills
Selecciona la pestaña de Skills.
New Skill
Workspace o User.
Edit SKILL.md
Define metadata y procedimiento.
También puedes escribir:
/skills
para abrir rápidamente la configuración de Skills.
Crear una Skill con ayuda de Copilot
/create-skill
Create a reusable skill
for debugging WordPress AJAX failures.
It should check:
- request payload
- action name
- nonce
- authentication
- capabilities
- PHP errors
- wp_send_json_* responses
- browser network response
Do not automatically modify code
until the root cause is identified.
VS Code puede hacer preguntas aclaratorias y generar la estructura inicial de la Skill.
Convertir una sesión exitosa en una Skill
Si acabas de resolver un problema complejo mediante una secuencia de pasos que probablemente repetirás, puedes pedir a Copilot que convierta ese proceso en una Skill.
Create an Agent Skill
from the debugging workflow
we just followed.
Keep only
the reusable procedure.
Do not include
details specific
to this one bug.
Ejecutar una Skill en un Subagent independiente
Las Skills normalmente cargan sus instrucciones dentro del contexto principal. Para tareas de investigación muy grandes, VS Code puede ejecutar una Skill en un contexto separado.
---
name: architecture-audit
description: Analyze a repository architecture and return a concise architecture risk report.
context: fork
---
# Architecture Audit
Inspect:
- module boundaries
- dependency direction
- data flow
- duplicated abstractions
- coupling
- test boundaries
Return only:
- findings
- evidence
- risks
- recommended next steps
El trabajo detallado ocurre en un Subagent, y solo el resultado final regresa al agente principal.
La función puede cambiar porque sigue siendo experimental.
Administrar Agent Skills desde la terminal
Dentro de una sesión de Copilot CLI:
/skills
/skills list
/skills info wordpress-security
/skills reload
Instalar Skills sin abrir una sesión interactiva
copilot skill list
copilot skill add ./wordpress-security/SKILL.md
copilot skill add --project ./wordpress-security/SKILL.md
copilot skill enable wordpress-security
copilot skill disable wordpress-security
copilot skill remove wordpress-security
Sin
--project,
una Skill
añadida
mediante archivo
se instala
normalmente
para tu usuario.
Con
--project
se añade
al proyecto actual.
Añadir un directorio completo de Skills
Copilot CLI también puede registrar un directorio personalizado como fuente de Skills.
copilot skill add ~/my-agent-skills
En este caso, el CLI registra la ubicación en vez de copiar necesariamente todo el directorio.
Qué ocurre si existen dos Skills con el mismo nombre
Copilot CLI utiliza una prioridad por origen cuando encuentra nombres duplicados.
| Prioridad | Origen |
|---|---|
| 1 | .github/skills/ |
| 2 | .agents/skills/ |
| 3 | .claude/skills/ |
| 4 | Skills heredadas del repositorio padre |
| 5 | ~/.copilot/skills/ |
| 6 | ~/.agents/skills/ |
| 7+ | Plugins, ubicaciones adicionales y built-ins |
Nombres claros y específicos hacen el comportamiento del agente mucho más fácil de entender.
Preautorizar herramientas con allowed-tools
El formato
de Skills
de Copilot CLI
admite
allowed-tools
para definir
herramientas
que pueden
utilizarse
automáticamente
cuando
la Skill
está activa.
---
name: test-runner
description: Run and diagnose the project's automated test suite.
allowed-tools:
- shell
---
# Test runner
Run the narrowest relevant test first.
If it fails:
1. capture the failure
2. identify the failed assertion
3. inspect related code
4. explain the hypothesis
5. rerun after the fix
Aplica mínimo privilegio. Una Skill de documentación probablemente no necesita capacidad para ejecutar cualquier herramienta.
Buscar e instalar Skills con gh skill
GitHub indica utilizar GitHub CLI 2.90.0 o posterior.
Buscar Skills:
gh skill search testing
Previsualizar antes de instalar:
gh skill preview OWNER/REPOSITORY SKILL
Instalar:
gh skill install github/awesome-copilot documentation-writer
Fijar una Skill a una versión concreta
gh skill install \
github/awesome-copilot \
documentation-writer \
--pin v1.2.0
Esto evita que una actualización futura modifique inesperadamente el procedimiento que utiliza tu equipo.
Actualizar Skills instaladas
gh skill update
gh skill update wordpress-security
gh skill update --all
Las Skills
fijadas
mediante
--pin
no se actualizan
automáticamente
junto
con las demás.
Una Skill descargada es código e instrucciones no confiables
Una Skill puede contener instrucciones maliciosas, prompt injection, scripts o procedimientos que ejecuten comandos peligrosos.
Preview
Lee SKILL.md antes de instalar.
Tree
Inspecciona todos los archivos incluidos.
Scripts
Lee cualquier script ejecutable.
Permissions
Comprueba las tools solicitadas.
Pin
Fija versiones cuando el workflow sea sensible.
Trátalas como tratarías una dependencia o script descargado de Internet.
Skill para debugging basado en causa raíz
---
name: root-cause-debugging
description: Diagnose software failures systematically before editing code. Use for bugs, exceptions, failed tests, broken APIs, regressions, and unexpected behavior.
---
# Root Cause Debugging
Do not begin by editing code.
## Step 1 — Reproduce
Identify the smallest
reliable reproduction.
## Step 2 — Observe
Collect:
- exact error
- stack trace
- request
- response
- logs
- failing assertion
## Step 3 — Trace
Follow the execution path
from input
to failure.
## Step 4 — Hypothesis
State the likely root cause
and evidence.
## Step 5 — Prove
Use a targeted check
or regression test.
## Step 6 — Fix
Apply the smallest safe change.
## Step 7 — Verify
Run:
- regression test
- related tests
- lint
- build when relevant
## Final report
Return:
- root cause
- evidence
- change
- verification
- remaining uncertainty
Skill para revisar un Pull Request
---
name: high-signal-pr-review
description: Review a pull request for real correctness, security, data-loss, API-contract, concurrency, and regression risks. Use when asked to review a PR or diff.
context: fork
---
# High Signal Pull Request Review
Focus on defects
that can change behavior.
Prioritize:
1. correctness
2. security
3. authorization
4. data integrity
5. API compatibility
6. race conditions
7. missing regression tests
For every finding include:
- severity
- file
- line or code area
- failure scenario
- why it matters
- recommended fix
Do not report
purely stylistic preferences
unless they cause
a concrete defect.
Skill completa para revisar seguridad en WordPress
---
name: wordpress-security
description: Audit WordPress plugins and themes for authentication, authorization, nonce, capability, CSRF, SQL injection, XSS, sanitization, escaping, REST API, AJAX, file handling, and WooCommerce security issues. Use for WordPress security reviews.
---
# WordPress Security Review
## 1. Map attack surface
Find:
- admin actions
- AJAX handlers
- REST routes
- form handlers
- shortcodes
- upload handlers
- cron callbacks
- WooCommerce hooks
- database writes
## 2. Authentication
Check whether actions
that require a user
actually enforce authentication.
## 3. Authorization
For every state-changing action:
- check capabilities
- check ownership
- validate resource access
Authentication alone
is not authorization.
## 4. CSRF
Check nonces
for browser-originated
state-changing actions
where appropriate.
## 5. Input
For every external value:
- determine expected type
- validate
- normalize
- sanitize before storage
## 6. SQL
Review:
- $wpdb queries
- dynamic table names
- dynamic WHERE clauses
- ORDER BY
- LIKE
- LIMIT
Use $wpdb->prepare()
for untrusted dynamic values.
## 7. Output
Check escaping
at the final output context:
- esc_html()
- esc_attr()
- esc_url()
- wp_kses()
as appropriate.
## 8. REST API
Inspect:
- register_rest_route()
- permission_callback
- ownership
- validation
- response data
## 9. AJAX
Inspect:
- wp_ajax_*
- wp_ajax_nopriv_*
- nonce
- capability
- ownership
- validation
- response
## 10. WooCommerce
Prefer public APIs.
Avoid direct dependence
on undocumented internals.
## Findings
Report only concrete issues.
For each finding:
- severity
- affected file
- vulnerable flow
- attacker requirements
- impact
- recommended fix
Do not modify code
unless explicitly requested.
Skill para debugging de pedidos WooCommerce
---
name: woocommerce-order-debugging
description: Diagnose WooCommerce order, checkout, payment, status-transition, webhook, and order-meta bugs. Use when investigating WooCommerce order flows.
---
# WooCommerce Order Debugging
First map:
checkout
↓
order creation
↓
payment
↓
status transition
↓
hooks
↓
email/webhooks
↓
custom integrations
Prefer WooCommerce public APIs.
Inspect:
- order notes
- status transitions
- hook priority
- duplicate callbacks
- idempotency
- payment callbacks
- webhook retries
- custom metadata
Do not directly update
WooCommerce internal tables
unless the project
explicitly requires it.
Una Skill puede enseñar cómo utilizar herramientas MCP
MCP proporciona las herramientas. La Skill puede explicar cuándo y cómo utilizarlas.
GitHub MCP
provides:
- workflow runs
- job logs
- pull requests
- issues
Skill provides:
- order of operations
- failure diagnosis
- decision rules
- verification process
↓
Specialized workflow
Skills y Custom Agents pueden trabajar juntos
Quién trabaja
Rol, modelo, herramientas y comportamiento.
Cómo ejecuta una tarea
Procedimiento, recursos y scripts especializados.
Un agente
de seguridad,
por ejemplo,
puede cargar
automáticamente
la Skill
wordpress-security
cuando revisa
un plugin.
Instructions + Skills es una combinación especialmente potente
copilot-instructions.md
│
├── architecture
├── coding standards
└── project rules
wordpress-security/
└── SKILL.md
│
├── audit workflow
├── security checklist
└── validation procedure
Prompt
↓
Project rules
+
Relevant Skill
↓
Specialized execution
Descubrir Skills desde el repositorio padre
En VS Code, si trabajas dentro de una subcarpeta de un monorepo, puedes habilitar:
chat.useCustomizationsInParentRepositories
para descubrir personalizaciones disponibles en el repositorio Git padre.
Los Plugins también pueden distribuir Agent Skills
Una Skill no necesariamente tiene que existir directamente en tu repositorio. También puede llegar mediante un Plugin instalado.
Plugin
│
├── Agent Skills
├── Custom Agents
├── MCP
└── Hooks
En esos casos, las Skills instaladas aparecen junto con tus Skills locales.
GitHub también entrega Skills propias
Algunas superficies de Copilot incluyen Skills incorporadas para tareas especializadas.
Orquestación de sesiones.
Workflows con Pull Requests.
Descubrimiento de herramientas.
Configuración de Cloud Agent.
No dependas de una lista fija como si fuera permanente.
Cómo diseñar una buena Agent Skill
Un objetivo
Evita Skills que intenten hacer de todo.
Descripción activable
Explica cuándo debe utilizarse.
Procedimiento
Define pasos concretos.
Decisiones
Explica qué hacer según cada resultado.
Recursos
Separa documentación pesada.
Verificación
Define cuándo se considera terminada.
Qué no debería ser una Skill
| Evita | Por qué |
|---|---|
| “Programar bien” | Demasiado general |
| Duplicar todo AGENTS.md | Es contexto, no workflow |
| Skill de 20 tareas no relacionadas | Dificulta routing |
| Descripción vaga | Copilot no sabe cuándo activarla |
| Scripts sin documentación | Aumenta riesgo |
| Deploy automático oculto | Consecuencia demasiado alta |
| allowed-tools: «*» | Exceso de privilegios |
Cuándo deberías convertir algo en una Skill
Template reutilizable para crear una Skill
---
name: skill-name
description: Explain what this skill does and exactly when Copilot should use it.
argument-hint: "[target]"
---
# Purpose
Explain the result
this skill helps produce.
# When to use
Use this skill when:
- condition 1
- condition 2
- condition 3
# Inputs
Before starting,
identify:
- target
- relevant context
- constraints
# Procedure
## Step 1 — Inspect
...
## Step 2 — Analyze
...
## Step 3 — Execute
...
## Step 4 — Verify
...
# Decision rules
If X:
do Y.
If Z:
stop and report.
# Safety
Never:
- expose secrets
- run destructive operations without need
- bypass authorization
- claim tests passed without running them
# Completion criteria
The task is complete when:
- criterion 1
- criterion 2
- criterion 3
# Final response
Report:
- actions performed
- files changed
- verification
- remaining risks
Guías relacionadas
Documentación sobre GitHub Copilot Agent Skills
About Agent Skills
Concepto, compatibilidad y ubicaciones.
Ver documentación →Copilot CLI Skills
Creación, instalación y comandos CLI.
Ver CLI →Agent Skills
SKILL.md, slash commands, forked context y recursos.
Ver VS Code →gh skill
Buscar, instalar, actualizar y publicar Skills.
Ver administración →FAQ sobre GitHub Copilot Skills
Son carpetas de instrucciones, scripts y recursos que GitHub Copilot puede cargar cuando una tarea requiere una capacidad especializada o un procedimiento reutilizable.
SKILL.md es el archivo principal de una Agent Skill. Contiene YAML frontmatter con metadatos como name y description, seguido de las instrucciones que Copilot debe seguir.
Las Skills de proyecto pueden guardarse en .github/skills, .agents/skills o .claude/skills. Las Skills personales pueden guardarse en ~/.copilot/skills o ~/.agents/skills, entre otras ubicaciones compatibles según el cliente.
Las Instructions definen reglas generales y convenciones del proyecto. Las Skills contienen procedimientos especializados que Copilot carga cuando resultan relevantes para una tarea.
Sí. Por defecto, Copilot puede comparar el prompt con el nombre y descripción de las Skills disponibles y cargar automáticamente una Skill cuando considera que es relevante.
Sí. Las Skills invocables pueden utilizarse como slash commands. Por ejemplo, una Skill llamada wordpress-security puede ejecutarse mediante /wordpress-security.
Puedes utilizar disable-model-invocation en el frontmatter de SKILL.md para exigir que la Skill se ejecute únicamente mediante una invocación manual.
Sí. Puedes incluir scripts dentro del directorio de la Skill y referenciarlos desde SKILL.md. Su ejecución sigue estando sujeta a las herramientas, permisos y controles del agente.
No. Copilot utiliza carga progresiva. Primero descubre nombre y descripción, después carga SKILL.md si la Skill es relevante y accede a recursos adicionales cuando los necesita.
Sí. VS Code soporta Agent Skills en Chat y Agent Mode, permite crearlas desde Agent Customizations y utilizarlas mediante slash commands.
Sí. Copilot CLI permite listar, añadir, habilitar, deshabilitar, recargar y eliminar Skills mediante /skills y el comando copilot skill.
Sí. Agent Skills funcionan con Copilot Cloud Agent, permitiendo que tareas remotas utilicen procedimientos especializados almacenados en el repositorio.
Sí. GitHub incluye Copilot Code Review entre las superficies compatibles con Agent Skills.
gh skill es una funcionalidad de GitHub CLI para buscar, previsualizar, instalar, actualizar y publicar Agent Skills. Actualmente se encuentra en public preview.
Debes revisarlas antes de instalarlas. Una Skill puede contener instrucciones, prompt injection, scripts o procedimientos maliciosos. GitHub recomienda inspeccionar su contenido antes de utilizarla.
Sí. Puedes crear Skills para debugging, auditorías de seguridad, WooCommerce, REST API, AJAX, testing, releases y otros workflows repetitivos de WordPress.
GitHub Copilot MCP: conecta tus agentes con herramientas externas
Las Skills enseñan procedimientos especializados. El siguiente paso es darle a Copilot nuevas herramientas mediante Model Context Protocol: GitHub, documentación, APIs, bases de datos, navegadores y servicios externos que los agentes pueden utilizar durante una tarea.
Aprender GitHub Copilot MCP →