4 Agents · the ones you invoke
Agent · Design
al-architect
The Strategist
📐Design
🛠️Implements
🎯Decides
📜Documents
Design before building. The good architecture is the one that survives the implementation.
What it does
Converts a vague requirement into actionable architecture. Decides patterns (event subscribers vs extensions), models data, plans integrations. Does not write production code — designs the blueprint.
Special ability
Generates {req}.architecture.md with 14 mandatory sections. Can break down a large requirement into parallel or sequential sub-specs.
When to invoke it
Complexity MEDIUM/HIGH. When there are pattern decisions, external integrations, or when you're unsure if the requirement needs one or several specs.
Position in the chain
al-architect al-spec.create al-conductor
Agent · Orchestration
al-conductor
The Director
🎼Orchestrates
🛠️Implements
🚦HITL gates
🧪TDD
I don't build. I coordinate. My pipeline is Plan → Implement → Review → Commit, and nobody moves between phases without your approval.
What it does
Reads the spec + architecture and distributes work between its 3 subagents (planning, implement, review). Guarantees the strict TDD cycle: RED → GREEN → REFACTOR per phase, with commit message prepared at the end of each.
Special ability
Mandatory hard gates: if the user doesn't approve the plan, it doesn't start. If a phase doesn't pass review, it doesn't advance. Creates {req}-phase-N-complete.md per phase and {req}-complete.md at the end.
When to invoke it
After having spec + architecture ready (MEDIUM/HIGH). If there's only spec and complexity is LOW, jump directly to al-developer instead of invoking it.
Position in the chain
al-architect al-spec.create al-conductor
Agent · Implementation
al-developer
The Implementer
⚒️Implements
📐Designs
🐞Debug
Speed
Build, don't debate. If there's a spec, I execute. If there's a bug, I hunt it down. My thing is al_build after every change.
What it does
Direct tactical implementation: creates AL objects, fixes bugs, refactors. Has full access to AL tools (build, publish, debug, profiling). Executes within patterns already established by the Strategist — does not decide architecture.
Special ability
Loads skills on demand according to context: skill-debug for rare bugs, skill-performance to optimize, skill-api for APIs. Builds and validates in a loop.
When to invoke it
Complexity LOW (with spec already created) · Bug fixes · Isolated refactors · Final adjustments after al-conductor. If the task requires architectural decisions, it will refer you to the Strategist.
Position in the chain
al-spec.create al-developer · post-conductor
Agent · Estimation
al-presales
The Appraiser
📊Estimates
🛠️Implements
⚖️Analysis
📑Proposals
I don't estimate by gut. PERT with 3 points: optimistic, likely, pessimistic. SWOT before committing a single hour.
What it does
Converts a client brief into actionable technical proposal: PERT estimation with 3 points, complexity scoring, SWOT/DAFO analysis, complete deliverables package (Excel + Word + PowerPoint).
Special ability
Loads skill-estimation automatically. Knows how to break down integrations, NAV→BC migrations, AL extensions, and translate them into weighted effort.
When to invoke it
When an RFP, a commercial brief arrives or you need to assess a BC project before accepting the scope. Trigger words: "assess", "budget", "estimation", "proposal".
Position in the chain
brief cliente al-presales al-architect
3 Subagents · the Director's team
Subagent · Research
al-planning-subagent
The Explorer
user-invocable: false
🔍Researches
🛠️Implements
📋Plans
📡Reports
I don't design or implement. I explore the codebase, map the terrain, and return a report to the Director with everything I found.
What it does
Investigates the AL workspace before any implementation: base objects, existing extensions, available events, AL-Go structure, dependencies. Returns structured findings to the Conductor — never speaks directly to the user.
Special ability
Stops at 90% confidence — doesn't research to infinity. When it has enough context for the Conductor to create an actionable plan, returns results and suggests 2-3 implementation options with pros/cons.
When it comes into play
Only invocable by al-conductor via runSubagent. It is Phase 1 (Planning) of the TDD pipeline. You never call it directly.
Works as a team with
planning implement review
Subagent · Implementation
al-implement-subagent
The Forger
user-invocable: false
🔥Strict TDD
⚒️Forges AL
🎯Decides
🔄Refactor
Tests first. Always. If given code without tests, I reject it and start again from RED.
What it does
Implements a plan phase following the RED → GREEN → REFACTOR cycle. Creates test codeunit first (which fails), then production code (which makes the test pass), then refactor. Verifies test infrastructure before starting.
Special ability
Skills Evidencing: declares which skills it loaded (skill-api, skill-events, etc.) and which pattern it applied from each. The Reviewer crosses it afterwards to verify traceability.
When it comes into play
Only invocable by al-conductor. It is Phase 2 (Implementation) of the pipeline. Returns to the Director a structured summary with objects created, tests created, build status.
Works as a team with
planning implement review
Subagent · Audit
al-review-subagent
The Inspector
user-invocable: false
🔍Audits
🛠️Implements
🚦Severity
📏AL Rigor
Building green is not approved. I review patterns, naming, performance, events. If base is modified, I stop the entire chain.
What it does
Audits each phase of the Forger against AL best practices and the project contract: extension-only, 26-char naming, AL-Go structure, performance patterns, error handling, test coverage. Returns verdict: APPROVED · NEEDS_REVISION · FAILED.
Special ability
Skills Compliance Check: crosses the Forger's declaration ("I loaded skill-api") against the real code to verify that patterns were applied. If it says it loaded but didn't apply, it flags it.
When it comes into play
Only invocable by al-conductor. It is Phase 3 (Review) of the TDD pipeline. Does not implement fixes — only audits and returns feedback with severity: CRITICAL · MAJOR · MINOR.
Works as a team with
planning implement review
1 Key prompt · the flow bridge
Prompt · Workflow
al-spec.create
The Cartographer
📜Details
🛠️Implements
🎯Decides
🗺️Maps
I'm not an agent — I'm a workflow. I convert the Strategist's architecture into a blueprint with object IDs, signatures and real AL code.
What it does
Reads {req}.architecture.md and produces {req}.spec.md: AL object inventory with concrete IDs, data model, procedure signatures, event integration, pages, Given/When/Then tests, permission sets. Directly implementable.
Special ability
Verifies that object IDs fall within app.json idRanges before assigning them. If there's no prior architecture, also works in LOW complexity as a direct blueprint.
How to invoke it
It's a VS Code workflow: @workspace use al-spec.create. You can invoke it directly — it's not an agent, it's a guided template with prompts and tools.
Position in the chain
al-architect al-spec.create al-conductor
5 Skills · knowledge that loads itself
Skill · Knowledge
skill-events
The Connector
🔌Subscribers
📡Publishers
🪝IsHandled
🎙️Decides
I'm not an agent. I'm the knowledge an agent loads when it needs to connect pieces without touching base code.
What it does
Encapsulates the Business Central Pub/Sub pattern: discovery with Event Recorder, exact signature matching, OnBefore/OnAfter pattern with IsHandled, difference IntegrationEvent vs BusinessEvent.
Special ability
Loads automatically when an agent detects related vocabulary in your prompt: "extend posting", "subscribe to event", "extensibility", "publisher". Not manually invoked.
Who loads it
al-architect when designing event architecture · al-developer when implementing subscribers · al-implement-subagent within the Conductor's pipeline.
Skills family
skill-events · skill-api · skill-pages
Skill · Knowledge
skill-api
The Ambassador
🌐OData v2.0
Bound actions
📡Webhooks
🎙️Decides
I take Business Central to speak with the rest of the world. APIs v2.0, OData, webhooks. Versioning without breaking consumers.
What it does
Encapsulates the API pages v2.0 pattern: APIPublisher, EntityName, ODataKeyFields = SystemId, DelayedInsert = true, header-lines with part(), bound actions with Microsoft.NAV, subscription webhooks.
Special ability
Knows how to design API versioning without breaking consumers: v1.0 obsoletev2.0 stablebeta for preview of breaking changes.
Who loads it
al-architect when designing API contracts · al-developer when implementing endpoints · al-implement-subagent within the TDD pipeline.
Skills family
skill-events · skill-api · skill-permissions
Skill · Knowledge
skill-permissions
The Guardian
🛡️Least priv.
🔑RIMD
🏰Hierarchy
🎙️Decides
Minimum privileges always. Before generating permission sets, I show you the matrix and wait for your OK. Security doesn't autopilot.
What it does
Designs permission sets in Base → User → Admin layers with IncludedPermissionSets, granulates RIMD in tabledata, creates permissionsetextension for standard BC roles, declares indirect permissions in codeunits.
Special ability
Mandatory HITL Security Gate: presents the object × role × RIMD matrix to the user and waits for explicit approval before generating anything. Never gives D on setup tables without justification.
Who loads it
al-developer when generating permission sets · al-implement-subagent when closing a phase with new objects · al-review-subagent when verifying coverage.
Skills family
skill-api · skill-permissions · skill-events
Skill · Knowledge
skill-performance
The Optimizer
SetLoadFields
🎯Filtering
📊CalcSums
🎙️Decides
Loading 47 fields from Customer when you only need 3 is a crime. Filtering after FindSet too. I prevent that.
What it does
Applies AL performance patterns: SetLoadFields before Get/Find, SetRange/SetFilter before FindSet, CalcSums instead of loops, temp tables for intermediate processing, cached FlowFields.
Special ability
Knows how to interpret BC CPU profiles and map hotspots to concrete patterns. Detects FlowFields in loops, repeated queries inside repeat..until, and other anti-patterns.
Who loads it
al-architect when planning large tables · al-developer when optimizing · al-implement-subagent when implementing phases with heavy tables · al-review-subagent when auditing.
Skills family
skill-events · skill-performance · skill-pages
Skill · Knowledge
skill-pages
The Designer
🎨Layout
📋PageTypes
Dynamic UI
🎙️Decides
A List page is not a field dump. Importance Promoted/Standard/Additional, FastTabs with meaning, FactBoxes that don't get in the way.
What it does
Masters BC page types: Card, List, Document, Worksheet, RoleCenter. Knows how to extend standard pages with addafter/addbefore/modify/moveafter, FastTabs, FactBoxes, promoted actions with actionref.
Special ability
Dynamic UI: StyleExpr to conditionally format, Visible to hide groups, Editable based on record state, Importance to prioritize fields. And warns: maximum 3-4 FlowFields in List pages.
Who loads it
al-architect when designing UX · al-developer when implementing pages · al-implement-subagent when creating pages within the TDD pipeline.
Skills family
skill-performance · skill-pages · skill-api
The passive rules · always active, without invoking
Instructions · 6 files
.instructions.md
The Passive Rules
Auto-load
🎙️Decides
📏Coverage
🔇Discretion
You don't invoke us — we're always here. We load ourselves based on the file you open and apply rules without noise. Quality by default.
What they are
Six .instructions.md files in .github/instructions/ with a front-matter applyTo that indicates to which types of files to apply. GitHub Copilot and Claude Code load them automatically when editing a file that matches the pattern.
The 6 files
al-guidelines — general principles · al-code-style — format and comments · al-naming-conventions — 26-char limit, prefixes · al-performance — SetLoadFields, filtering · al-error-handling — Error/ErrorInfo, no Confirm in API · al-events — Pub/Sub pattern · al-testing — Given/When/Then, codeunit subtype Test.
How they load
The front-matter declares applyTo: "**/*.al" (or the corresponding pattern). VS Code detects the open file, matches against patterns, and injects the rules as context to the model. Zero commands on your part.
Position in the chain
.instructions cualquier agente cualquier skill