La configuracion de los agentes Claude Code y Copilot reside en:
src/bcbench/agent/shared/config.yaml
Este fichero controla cuatro aspectos fundamentales:
Las plantillas definen la instruccion base que recibe el agente. Se configuran bajo la clave prompt: del config.yaml.
prompt:
bug-fix-template: |
You are working with a Business Central (AL) code repository at .
Task: Fix the issue described below
Important constraints:
- Do NOT modify any testing logic or test files
- Focus solely on fixing the reported issue
- Do NOT try to build or run tests, just provide the code changes needed
- Do NOT commit any changes to the repository
- Focus on W1 localization
Issue details:
prompt:
test-generation-input: "both" # "problem-statement", "gold-patch", o "both"
test-generation-template: |
You are working with a Business Central (AL) code repository at .
Task: Generate ONE NEW test case that reproduce the issue described below
...
El campo test-generation-input controla que informacion recibe el agente:
| Modo | El agente ve | Caso de uso |
|---|---|---|
problem-statement |
Solo la descripcion del bug | Test-driven development: escribir tests desde el requisito |
gold-patch |
Solo el codigo fix aplicado como cambios unstaged | Verificacion: escribir tests que validen un fix conocido |
both |
Bug + fix | Contexto completo para generar tests |
Para probar un prompt distinto, edita directamente la plantilla en config.yaml. Las variables disponibles son:
| Variable | Contenido |
|---|---|
| `` | Ruta al repositorio en el sistema de archivos |
| `` | Contenido del problem statement (README.md de la entrada) |
| `` | Lista de rutas de proyecto afectadas (si include_project_paths: true) |
Ejemplo: Si quieres que el agente tenga informacion sobre los project paths:
prompt:
include_project_paths: true # Cambiado de false a true
Las custom instructions son ficheros markdown que se copian al repositorio antes de ejecutar el agente. El agente las lee automaticamente como contexto de trabajo.
instructions:
enabled: true # Poner a false para evaluacion baseline
Cuando enabled: true:
AGENTS.md a {repo}/.claude/CLAUDE.mdAGENTS.md a {repo}/.github/copilot-instructions.mdEl fichero fuente esta en:
src/bcbench/agent/shared/instructions/{sanitized-repo}/AGENTS.md
Donde {sanitized-repo} es el nombre del repo con / reemplazado por - (ej: microsoft-BCApps).
Las instrucciones incluyen:
src/bcbench/agent/shared/instructions/mi-organizacion-MiRepo/
AGENTS.md con tus instruccionesLos skills son modulos de conocimiento especializado que se copian al directorio del agente. Cada skill es un directorio con un fichero SKILL.md.
skills:
enabled: true
include: # Whitelist: solo copiar estos skills
- skill-al-bugfix
- skill-debug
- skill-testing
- skill-events
- skill-performance
- skill-api
- skill-permissions
| Skill | Proposito |
|---|---|
skill-al-bugfix |
Estrategias de diagnostico y fix de bugs en AL |
skill-debug |
Tecnicas de depuracion en Business Central |
skill-testing |
Patrones de testing AL (AAA, mocking, test isolation) |
skill-events |
Sistema de eventos y subscribers de BC |
skill-performance |
Optimizacion de rendimiento en AL |
skill-api |
Desarrollo de APIs en Business Central |
skill-permissions |
Gestion de permisos y seguridad |
Hay mas skills disponibles pero no incluidos en la whitelist por defecto:
| Skill | Proposito | Por que excluido |
|---|---|---|
skill-copilot |
Desarrollo de Copilot features | No relevante para bug-fix |
skill-migrate |
Migracion de versiones | No relevante para bug-fix |
skill-translate |
XLIFF y traducciones | No relevante para bug-fix |
skill-pages |
Desarrollo de pages AL | No relevante para bug-fix |
skill-estimation |
Estimacion PERT | No relevante para bug-fix |
Para probar con un conjunto distinto de skills:
skills:
enabled: true
include:
- skill-al-bugfix
- skill-debug
# Quitar o anadir skills aqui
Para usar TODOS los skills disponibles, elimina la clave include:
skills:
enabled: true
# Sin include = copia todos los skills
Para deshabilitar skills completamente (evaluacion sin knowledge modules):
skills:
enabled: false
Los agentes personalizados son definiciones markdown que establecen el rol, herramientas y comportamiento del agente.
agents:
enabled: true
name: al-developer-bench # Agente activo por defecto
profiles:
al-developer-bench:
include:
- al-developer-bench.md
al-conductor-bench:
include:
- al-conductor-bench.md
- al-planning-subagent.md
- al-implement-subagent.md
- al-review-subagent.md
al-bugfix-firstline:
include:
- al-bugfix-firstline.md
Tipo: Implementacion tactica directa
Fichero: agents/al-developer-bench.md
Herramientas: Read, Glob, Grep, Write, Edit, Bash, Task, WebSearch, WebFetch
Modelo sugerido: Sonnet
Max turnos: 50
Especialista en implementacion que ejecuta fixes directamente. No delega, no hace diseno arquitectonico. Ideal para bug-fix.
Tipo: Orquestacion multi-agente con TDD
Fichero: agents/al-conductor-bench.md + 3 subagentes
Herramientas: Read, Glob, Grep, Write, Edit, Bash, Task, WebSearch, WebFetch
Modelo sugerido: Haiku (para el orquestador)
Max turnos: 50
Orquesta un ciclo Planning -> Implementation -> Review usando subagentes delegados:
al-planning-subagent.md - Planificacional-implement-subagent.md - Implementacional-review-subagent.md - Revision de codigoIdeal para test-generation donde la orquestacion TDD puede mejorar la calidad.
Tipo: Diagnostico autonomo especializado
Fichero: agents/al-bugfix-firstline.md
Herramientas: Read, Glob, Grep, Write, Edit, Bash
Max turnos: 40
Agente minimalista enfocado en producir el parche minimo necesario. Su workflow es:
Cambia el valor de agents.name:
agents:
name: al-conductor-bench # Antes: al-developer-bench
src/bcbench/agent/shared/instructions/{repo}/agents/mi-agente.md
---
name: Mi Agente Especializado
description: >
Descripcion de lo que hace el agente.
tools: Read, Glob, Grep, Write, Edit, Bash
model: sonnet
maxTurns: 50
---
Escribe las instrucciones del agente en el cuerpo del markdown
config.yaml:
agents:
name: mi-agente
profiles:
mi-agente:
include:
- mi-agente.md
Los servidores MCP (Model Context Protocol) dan al agente acceso a herramientas externas durante la evaluacion.
mcp:
servers:
- name: "altool" # AL Tool - compilador AL via MCP
type: "stdio"
command: "al"
args: ["launchmcpserver", "--transport", "stdio",
"--packagecachepath", ""]
- name: "mslearn" # Microsoft Learn - documentacion
type: "http"
url: "https://learn.microsoft.com/api/mcp"
--al-mcp. Da al agente acceso al compilador AL para obtener errores de compilacion en tiempo real.Descomenta o anade servidores en la seccion mcp.servers:
- name: "context7"
type: "stdio"
command: "npx"
args: ["-y", "@upstash/context7-mcp@latest"]
Nota: Los servidores
stdiorequieren que el ejecutable este en el PATH de la VM.
| Que quieres probar | Donde modificar | Valor |
|---|---|---|
| Otro modelo LLM | Flag --model en el CLI |
Ver lista de modelos |
| Sin instrucciones (baseline) | config.yaml > instructions.enabled |
false |
| Sin skills | config.yaml > skills.enabled |
false |
| Distinto conjunto de skills | config.yaml > skills.include |
Lista de skills |
| Sin agente custom | config.yaml > agents.enabled |
false |
| Otro agente custom | config.yaml > agents.name |
Nombre del agente |
| Con AL MCP | Flag --al-mcp en el CLI |
Presente o ausente |
| Otro prompt | config.yaml > prompt.bug-fix-template |
Tu plantilla |
| Otra categoria | Flag --category en el CLI |
bug-fix o test-generation |
Siguiente: Parte 4 - Comparacion de Baselines y Scripts para VM