4 Agentes · los que invocas tú
Agente · Diseño
al-architect
El Estratega
📐Diseño
🛠️Implementa
🎯Decide
📜Documenta
Diseñar antes de construir. La arquitectura buena es la que sobrevive a la implementación.
Qué hace
Convierte un requisito vago en arquitectura accionable. Decide patrones (event subscribers vs extensions), modela datos, planifica integraciones. No escribe código de producción — diseña el plano.
Habilidad especial
Genera {req}.architecture.md con 14 secciones obligatorias. Puede descomponer un requisito grande en sub-specs paralelas o secuenciales.
Cuándo invocarlo
Complejidad MEDIUM/HIGH. Cuando hay decisiones de patrón, integraciones externas, o cuando no sabes si el requisito necesita una o varias specs.
Posición en la cadena
al-architect al-spec.create al-conductor
Agente · Orquestación
al-conductor
El Director
🎼Orquesta
🛠️Implementa
🚦HITL gates
🧪TDD
Yo no construyo. Coordino. Mi pipeline es Plan → Implement → Review → Commit, y nadie pasa de fase sin que tú lo apruebes.
Qué hace
Lee la spec + arquitectura y reparte el trabajo entre sus 3 subagentes (planning, implement, review). Garantiza el ciclo TDD estricto: RED → GREEN → REFACTOR por fase, con commit message preparado al final de cada una.
Habilidad especial
Hard gates obligatorios: si el usuario no aprueba el plan, no empieza. Si una fase no pasa review, no avanza. Crea {req}-phase-N-complete.md por cada fase y {req}-complete.md al final.
Cuándo invocarlo
Después de tener spec + arquitectura listas (MEDIUM/HIGH). Si solo hay spec y la complejidad es LOW, salta directamente a al-developer en lugar de invocarlo a él.
Posición en la cadena
al-architect al-spec.create al-conductor
Agente · Implementación
al-developer
El Implementador
⚒️Implementa
📐Diseña
🐞Debug
Velocidad
Construye, no debate. Si hay spec, ejecuto. Si hay bug, lo cazo. Lo mío es al_build tras cada cambio.
Qué hace
Implementación táctica directa: crea AL objects, fixes bugs, refactoriza. Tiene acceso completo a las herramientas AL (build, publish, debug, profiling). Ejecuta dentro de patrones ya establecidos por el Estratega — no decide arquitectura.
Habilidad especial
Carga skills bajo demanda según el contexto: skill-debug para bugs raros, skill-performance para optimizar, skill-api para APIs. Construye y valida en bucle.
Cuándo invocarlo
Complejidad LOW (con spec ya creada) · Bug fixes · Refactors aislados · Ajustes finales tras al-conductor. Si la tarea pide decisiones arquitectónicas, te derivará al Estratega.
Posición en la cadena
al-spec.create al-developer · post-conductor
Agente · Estimación
al-presales
El Tasador
📊Estima
🛠️Implementa
⚖️Análisis
📑Propuestas
No estimo a ojo. PERT con 3 puntos: optimista, probable, pesimista. SWOT antes de comprometer una sola hora.
Qué hace
Convierte un brief de cliente en propuesta técnica accionable: estimación PERT con 3 puntos, complejidad scoring, análisis SWOT/DAFO, paquete completo de entregables (Excel + Word + PowerPoint).
Habilidad especial
Carga skill-estimation automáticamente. Sabe descomponer integraciones, migraciones NAV→BC, AL extensions, y traducirlas en esfuerzo ponderado.
Cuándo invocarlo
Cuando llega un RFP, un brief comercial o necesitas valorar un proyecto BC antes de aceptar el alcance. Trigger words: "valorar", "presupuesto", "estimación", "propuesta".
Posición en la cadena
brief cliente al-presales al-architect
3 Subagentes · el equipo del Director
Subagente · Investigación
al-planning-subagent
El Explorador
user-invocable: false
🔍Investiga
🛠️Implementa
📋Planifica
📡Reporta
No diseño ni implemento. Exploro el codebase, mapeo el terreno, y devuelvo al Director un informe con todo lo que encontré.
Qué hace
Investiga el workspace AL antes de cualquier implementación: objetos base, extensiones existentes, eventos disponibles, AL-Go structure, dependencias. Devuelve hallazgos estructurados al Conductor — nunca habla con el usuario directamente.
Habilidad especial
Para al 90% de confianza — no investiga hasta el infinito. Cuando tiene contexto suficiente para que el Conductor cree un plan accionable, devuelve resultados y sugiere 2-3 opciones de implementación con pros/cons.
Cuándo entra en juego
Solo invocable por al-conductor vía runSubagent. Es la Fase 1 (Planning) del pipeline TDD. Tú nunca lo llamas directamente.
Trabaja en equipo con
planning implement review
Subagente · Implementación
al-implement-subagent
El Forjador
user-invocable: false
🔥TDD estricto
⚒️Forja AL
🎯Decide
🔄Refactor
Test primero. Siempre. Si me dan código sin tests, lo rechazo y empiezo de nuevo desde el RED.
Qué hace
Implementa una fase del plan siguiendo el ciclo RED → GREEN → REFACTOR. Crea test codeunit primero (que falla), luego production code (que hace pasar el test), luego refactor. Verifica el test infrastructure antes de empezar.
Habilidad especial
Skills Evidencing: declara qué skills cargó (skill-api, skill-events, etc.) y qué patrón aplicó de cada uno. El Reviewer lo cruza después para verificar trazabilidad.
Cuándo entra en juego
Solo invocable por al-conductor. Es la Fase 2 (Implementation) del pipeline. Devuelve al Director un summary estructurado con objetos creados, tests creados, build status.
Trabaja en equipo con
planning implement review
Subagente · Auditoría
al-review-subagent
El Inspector
user-invocable: false
🔍Audita
🛠️Implementa
🚦Severidad
📏Rigor AL
Construir verde no es aprobado. Reviso patrones, naming, performance, eventos. Si hay base modificado, paro la cadena entera.
Qué hace
Audita cada fase del Forjador contra AL best practices y el contrato del proyecto: extension-only, naming 26-char, AL-Go structure, performance patterns, error handling, cobertura de tests. Devuelve verdict: APPROVED · NEEDS_REVISION · FAILED.
Habilidad especial
Skills Compliance Check: cruza la declaración del Forjador ("yo cargué skill-api") contra el código real para verificar que los patrones se aplicaron. Si dice que cargó pero no aplicó, lo flaggea.
Cuándo entra en juego
Solo invocable por al-conductor. Es la Fase 3 (Review) del pipeline TDD. No implementa fixes — solo audita y devuelve feedback con severidad: CRITICAL · MAJOR · MINOR.
Trabaja en equipo con
planning implement review
1 Prompt clave · el puente del flujo
Prompt · Workflow
al-spec.create
El Cartógrafo
📜Detalla
🛠️Implementa
🎯Decide
🗺️Mapea
No soy un agente — soy un workflow. Convierto la arquitectura del Estratega en un blueprint con object IDs, signatures y AL code real.
Qué hace
Lee {req}.architecture.md y produce {req}.spec.md: inventario de objetos AL con IDs concretos, data model, signatures de procedures, event integration, pages, tests Given/When/Then, permission sets. Implementable directo.
Habilidad especial
Verifica que los object IDs caen dentro de app.json idRanges antes de asignarlos. Si no hay arquitectura previa, también funciona en LOW complexity como blueprint directo.
Cómo invocarlo
Es un workflow de VS Code: @workspace use al-spec.create. Puedes invocarlo tú directamente — no es un agente, es una plantilla guiada con prompts y tools.
Posición en la cadena
al-architect al-spec.create al-conductor
5 Skills · conocimiento que se carga solo
Skill · Conocimiento
skill-events
El Conector
🔌Subscribers
📡Publishers
🪝IsHandled
🎙️Decide
No soy un agente. Soy el conocimiento que un agente carga cuando necesita conectar piezas sin tocar código base.
Qué hace
Encapsula el patrón Pub/Sub de Business Central: descubrimiento con Event Recorder, signature matching exacta, patrón OnBefore/OnAfter con IsHandled, diferencia IntegrationEvent vs BusinessEvent.
Habilidad especial
Se carga automáticamente cuando un agente detecta vocabulario afín en tu prompt: "extender posting", "subscribe to event", "extensibilidad", "publisher". No se invoca a mano.
Quién la carga
al-architect al diseñar arquitectura de eventos · al-developer al implementar subscribers · al-implement-subagent dentro del pipeline del Conductor.
Familia de skills
skill-events · skill-api · skill-pages
Skill · Conocimiento
skill-api
El Embajador
🌐OData v2.0
Bound actions
📡Webhooks
🎙️Decide
Llevo a Business Central a hablar con el resto del mundo. APIs v2.0, OData, webhooks. Versionado sin romper consumidores.
Qué hace
Encapsula el patrón de API pages v2.0: APIPublisher, EntityName, ODataKeyFields = SystemId, DelayedInsert = true, header-lines con part(), bound actions con Microsoft.NAV, webhooks de subscripción.
Habilidad especial
Sabe diseñar versionado API sin romper consumidores: v1.0 obsoletev2.0 establebeta para preview de breaking changes.
Quién la carga
al-architect al diseñar contratos de API · al-developer al implementar endpoints · al-implement-subagent dentro del pipeline TDD.
Familia de skills
skill-events · skill-api · skill-permissions
Skill · Conocimiento
skill-permissions
El Guardián
🛡️Least priv.
🔑RIMD
🏰Hierarchy
🎙️Decide
Mínimos privilegios siempre. Antes de generar permission sets, te enseño la matriz y espero tu OK. La seguridad no se autopilota.
Qué hace
Diseña permission sets en capas Base → User → Admin con IncludedPermissionSets, granula RIMD en tabledata, crea permissionsetextension para roles BC estándar, declara permisos indirectos en codeunits.
Habilidad especial
HITL Security Gate obligatorio: presenta la matriz objeto × rol × RIMD al usuario y espera aprobación explícita antes de generar nada. Nunca da D en setup tables sin justificación.
Quién la carga
al-developer al generar permission sets · al-implement-subagent al cerrar una fase con nuevos objetos · al-review-subagent al verificar cobertura.
Familia de skills
skill-api · skill-permissions · skill-events
Skill · Conocimiento
skill-performance
El Optimizador
SetLoadFields
🎯Filtering
📊CalcSums
🎙️Decide
Cargar 47 campos de Customer cuando solo necesitas 3 es un crimen. Filtrar después de FindSet también. Yo lo evito.
Qué hace
Aplica patrones de performance AL: SetLoadFields antes de Get/Find, SetRange/SetFilter antes de FindSet, CalcSums en lugar de loops, temp tables para procesado intermedio, FlowFields cacheados.
Habilidad especial
Sabe interpretar CPU profiles de BC y mapear hotspots a patrones concretos. Detecta FlowFields en loops, queries repetidas dentro de repeat..until, y otros antipatrones.
Quién la carga
al-architect al planificar tablas grandes · al-developer al optimizar · al-implement-subagent al implementar fases con tablas heavy · al-review-subagent al auditar.
Familia de skills
skill-events · skill-performance · skill-pages
Skill · Conocimiento
skill-pages
El Diseñador
🎨Layout
📋PageTypes
Dynamic UI
🎙️Decide
Una List page no es un volcado de campos. Importance Promoted/Standard/Additional, FastTabs con sentido, FactBoxes que no estorban.
Qué hace
Domina los page types de BC: Card, List, Document, Worksheet, RoleCenter. Sabe extender páginas estándar con addafter/addbefore/modify/moveafter, FastTabs, FactBoxes, promoted actions con actionref.
Habilidad especial
Dynamic UI: StyleExpr para condicionar formato, Visible para ocultar grupos, Editable según estado del registro, Importance para priorizar campos. Y avisa: máximo 3-4 FlowFields en List pages.
Quién la carga
al-architect al diseñar UX · al-developer al implementar pages · al-implement-subagent al crear pages dentro del pipeline TDD.
Familia de skills
skill-performance · skill-pages · skill-api
Las reglas pasivas · siempre activas, sin invocar
Instrucciones · 6 archivos
.instructions.md
Las Reglas Pasivas
Auto-load
🎙️Decide
📏Cobertura
🔇Discreción
No nos invocas — estamos siempre. Nos cargamos según el archivo que abres y aplicamos reglas sin ruido. La calidad por defecto.
Qué son
Seis archivos .instructions.md en .github/instructions/ con un front-matter applyTo que indica a qué tipos de archivo aplicar. GitHub Copilot y Claude Code los cargan automáticamente al editar un archivo que matchea el pattern.
Los 6 archivos
al-guidelines — principios generales · al-code-style — formato y comentarios · al-naming-conventions — 26-char limit, prefijos · al-performance — SetLoadFields, filtering · al-error-handling — Error/ErrorInfo, no Confirm en API · al-events — patrón Pub/Sub · al-testing — Given/When/Then, codeunit subtype Test.
Cómo se cargan
El front-matter declara applyTo: "**/*.al" (o el pattern correspondiente). VS Code detecta el archivo abierto, matchea contra los patterns, e inyecta las reglas como contexto al modelo. Cero comandos por tu parte.
Posición en la cadena
.instructions cualquier agente cualquier skill