Skills-based, spec-driven, TDD-orchestrated development framework for Microsoft Dynamics 365 Business Central.
From vibe coding to controlled engineering.
Important
Now available for both GitHub Copilot and Claude Code. ALDC is under active development against Core Spec v1.2, with conformance enforced in CI. See What's New for the latest release.
AI accelerates AL development β but raw code generation is unpredictable, hard to review, and easy to get wrong against Business Central's extension rules. ALDC adds the engineering discipline around it.
| Without ALDC | With ALDC |
|---|---|
| Ad-hoc, one-shot code generation | Contract-driven development (spec β architecture β test-plan β code) |
| No checkpoints β you find out at the end | Human-in-the-loop gates at every phase |
| Tests written last (or never) | TDD-orchestrated β tests FIRST, then code |
| Base-app edits sneak in | Extension-only by construction |
| "Looks fine to me" reviews | Cited reviews & audits against BC knowledge |
ALDC (AL Development Collection) transforms how you develop Business Central extensions. Instead of ad-hoc code generation, it provides structured, contract-driven development with specialized agents, composable skills, and human-in-the-loop gates β the same framework working natively across two platforms:
- GitHub Copilot β Agents, skills, prompts, and instructions in
.github/andagents/ - Claude Code β Agents, skills, rules, and hooks in
.claude/+ official plugin inclaude-plugin/
Install from the VS Code Marketplace or:
code --install-extension JavierArmesto.aldc-al-development-collectionThen, from the Command Palette:
AL Collection: Install Toolkit to Workspaceβ copies the framework into your project's.github/AL Collection: Update Toolkitβ merges a new version, preserving your customizationsAL Collection: Validate Installationβ verifies compliance
/plugin install aldc
/aldc:al-initializeal-initialize copies path-scoped rules to .claude/rules/, generates a project CLAUDE.md, and configures the workspace.
Clone this repo and open it with Claude Code. The .claude/ directory and CLAUDE.md are detected automatically.
- Install the extension and open your AL project
- Run
AL Collection: Install Toolkit to Workspace - Start with
@workspace use al-spec.createplus your requirement - Follow the guided flow
/plugin install aldc/aldc:al-initialize- Call any agent:
@al-architect,@al-developer,@al-conductor,@al-presales - Or run a workflow:
/aldc:al-spec-create
See QUICKSTART.md for the full onboarding guide.
| Agent | Role |
|---|---|
@AL Architecture & Design Specialist |
Designs solutions, information flows, technical decisions |
@AL Implementation Specialist |
Implements, debugs, quick adjustments |
@AL Development Conductor |
Orchestrates TDD implementation with subagents |
@AL Pre-Sales & Project Estimation Specialist |
Estimation and scoping |
- AL Planning Subagent β research and context gathering
- AL Implementation Subagent β TDD-only (tests FIRST, code SECOND)
- AL Code Review Subagent β review against spec + architecture
@AL Triageβ reactive diagnosis: reproduce β root-cause β minimal-fix recommendation@Dreddβ independent auditor: BCQuality-cited static audit with an advisory verdict
- Required: api Β· copilot Β· debug Β· performance Β· events Β· permissions Β· testing
- Recommended: migrate Β· pages Β· translate Β· estimation
- Plus
skill-contribution-assistantβ guided workflow for contributing back to ALDC
al-spec.create Β· al-build Β· al-pr-prepare Β· al-context.create Β· al-memory.create Β· al-initialize
al-guidelines Β· al-code-style Β· al-naming-conventions Β· al-performance Β· al-error-handling Β· al-events Β· al-testing Β· copilot-instructions Β· index
An externally-consumed BC knowledge base (multi-root), defaulting to the canonical upstream microsoft/BCQuality and configurable to your own fork. Agents cite findings to real knowledge files, with a graceful native fallback when it is absent. See docs/bcquality.md.
{req_name}.architecture.mdβ solution design (from architect){req_name}.spec.mdβ technical blueprint (from spec.create){req_name}.test-plan.mdβ test strategymemory.mdβ global context across sessions
LOW complexity:
al-spec.create β @AL Implementation Specialist
MEDIUM/HIGH complexity:
@AL Architecture & Design Specialist β al-spec.create β @AL Development Conductor
The architect designs the solution and can decompose complex requirements into multiple specs, each implemented independently by the conductor.
flowchart TD
REQ[Requirement] --> CLASSIFY{Complexity?}
CLASSIFY -->|LOW| SPEC_LOW[al-spec.create]
SPEC_LOW --> DEV["@AL Implementation Specialist"]
CLASSIFY -->|MEDIUM/HIGH| ARCH["@AL Architecture & Design Specialist"]
ARCH -->|Designs solution| ARCH_DOC[architecture.md]
ARCH --> DECOMPOSE{Decompose?}
DECOMPOSE -->|Yes| SPEC_A[al-spec.create β spec-A]
DECOMPOSE -->|Yes| SPEC_B[al-spec.create β spec-B]
DECOMPOSE -->|No| SPEC_SINGLE[al-spec.create β spec.md]
SPEC_A --> COND_A["@AL Development Conductor"]
SPEC_B --> COND_B["@AL Development Conductor"]
SPEC_SINGLE --> COND["@AL Development Conductor"]
The conductor enforces Test-Driven Development:
flowchart LR
PLAN[Phase 1\nPlanning] --> IMPL[Phase N\nImplementation]
IMPL --> REVIEW[Review\nSubagent]
REVIEW --> HITL{HITL Gate}
HITL -->|Approved| NEXT[Next Phase]
HITL -->|Revise| IMPL
subgraph IMPL_DETAIL[Implement Subagent - TDD]
RED[RED\nWrite failing tests] --> GREEN[GREEN\nMinimal code]
GREEN --> REFACTOR[REFACTOR\nAL patterns]
end
- Planning subagent researches context
- Implement subagent creates tests FIRST (RED)
- Implement subagent writes code to pass tests (GREEN)
- Implement subagent refactors to AL patterns (REFACTOR)
- Review subagent validates against spec + architecture
- Human approves each phase (HITL gate)
graph TB
subgraph PUBLIC["Public Agents (user-invocable)"]
ARCH["@AL Architecture & Design Specialist"]
DEV["@AL Implementation Specialist"]
COND["@AL Development Conductor"]
PRE["@AL Pre-Sales & Project Estimation Specialist"]
end
subgraph INTERNAL["Internal Subagents (conductor-only)"]
PLAN[AL Planning Subagent]
IMPL[AL Implementation Subagent]
REV[AL Code Review Subagent]
end
subgraph SKILLS["11 Composable Skills"]
S1[skill-api]
S2[skill-copilot]
S3[skill-debug]
S4[skill-performance]
S5[skill-events]
S6[skill-permissions]
S7[skill-testing]
S8[skill-migrate]
S9[skill-pages]
S10[skill-translate]
S11[skill-estimation]
end
subgraph WORKFLOWS["6 Retained Workflows"]
W1[al-spec.create]
W2[al-build]
W3[al-pr-prepare]
W4[al-context.create]
W5[al-memory.create]
W6[al-initialize]
end
ARCH --> SKILLS
DEV --> SKILLS
COND --> INTERNAL
PRE --> SKILLS
W1 --> ARCH
W1 --> COND
.github/
βββ plans/
βββ memory.md β Global (cross-session context)
βββ {req_name}/
βββ {req_name}.architecture.md β From @AL Architecture & Design Specialist
βββ {req_name}.spec.md β From al-spec.create
βββ {req_name}.test-plan.md β From al-spec.create or conductor
βββ {req_name}-plan.md β From @AL Development Conductor (Planning)
βββ {req_name}-phase-1-complete.md
βββ {req_name}-phase-N-complete.md
| Complexity | Route | When |
|---|---|---|
| LOW | al-spec.create β @AL Implementation Specialist |
Simple field, validation, single UI change |
| MEDIUM | @AL Architecture & Design Specialist β al-spec.create β @AL Development Conductor |
Business logic, event-driven feature |
| HIGH | @AL Architecture & Design Specialist β al-spec.create β @AL Development Conductor |
Multi-module, external integration, architectural change |
Not sure where to start?
@AL Architecture & Design Specialist
I need to [describe your requirement]
The architect analyzes requirements, designs the solution, and recommends the appropriate workflow.
ALDC is available as a native Claude Code integration in two forms:
- Official Plugin (
claude-plugin/) β Install with/plugin install aldc, namespaced asaldc:* - Direct Integration (
.claude/) β Auto-detected when opening the repo in Claude Code
| Primitive | Direct (.claude/) |
Plugin (aldc:) |
Count |
|---|---|---|---|
| Agents | .claude/agents/ |
agents/ |
7 public + 3 internal |
| Skills | .claude/skills/ |
skills/ |
16 composable knowledge modules |
| Rules | .claude/rules/ |
rules-templates/ (injected via al-initialize) |
8 coding standards |
| MCP Servers | .mcp.json |
.mcp.json |
3 servers |
| Hooks | .claude/settings.json |
hooks/hooks.json |
2 hooks |
| Instructions | CLAUDE.md |
CLAUDE.md |
Agent routing, workflows |
GitHub Copilot β Claude Code (Direct) β Claude Code (Plugin)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
agents/*.agent.md β .claude/agents/*.md β agents/*.md
skills/*/SKILL.md β .claude/skills/*/SKILL.md β skills/*/SKILL.md
instructions/*.md β .claude/rules/*.md β rules-templates/*.md
prompts/*.prompt.md β .claude/skills/ (workflows) β skills/ (workflows)
.github/copilot-instructions.md β CLAUDE.md β plugin.json + CLAUDE.md
| Agent | Direct | Plugin |
|---|---|---|
| Architecture & Design | @al-architect |
@aldc:al-architect |
| Implementation | @al-developer |
@aldc:al-developer |
| TDD Orchestration | @al-conductor |
@aldc:al-conductor |
| Estimation & Scoping | @al-presales |
@aldc:al-presales |
| Agent Builder | @al-agent-builder |
@aldc:al-agent-builder |
| Workflow | Direct | Plugin |
|---|---|---|
| Create specifications | /al-spec-create |
/aldc:al-spec-create |
| Build & deploy | /al-build |
/aldc:al-build |
| Prepare PR | /al-pr-prepare |
/aldc:al-pr-prepare |
| Session memory | /al-memory-create |
/aldc:al-memory-create |
| Project context | /al-context-create |
/aldc:al-context-create |
| Environment setup | /al-initialize |
/aldc:al-initialize |
Claude Code hooks enforce quality gates automatically:
- PostToolUse (Write/Edit) β Reminds to run tests after file modifications
- Stop β Reminds to verify Skills Evidencing was declared
On first enable, the plugin prompts for optional settings:
| Setting | Description |
|---|---|
bcSandboxUrl |
URL of your Business Central sandbox environment |
publisherName |
Your extension publisher name for app.json |
BCQuality is an optional, externally-consumed BC knowledge layer for cited reviews and audits. The source is configurable in aldc.yaml and defaults to the canonical upstream microsoft/BCQuality (point it at your own fork if you keep one); it is consumed via a multi-root workspace β not a submodule, never compiled. When absent, agents fall back gracefully to the native AβG checklist and are never blocked.
Quick start (3 steps):
-
From your AL project root, run the install script β clones the pinned fork to
../bcquality:bash tools/bcquality/install.sh # or on Windows: pwsh -File tools/bcquality/install.ps1Override the target location with
$BCQUALITY_HOMEif needed. -
Open
aldc.code-workspace(multi-root: your extension +../bcquality, which does not compile). -
Run a review or audit (
@AL Development Conductor,@Dredd, or@AL Triage): they cite BCQuality if mounted, or degrade gracefully to native checks if not.
See docs/bcquality.md for the full guide.
Build Business Central Agents with the AI Development Toolkit and Agent SDK.
Includes: @AL Agent Builder agent, 3 skills, 4 workflows, validation tools.
See BC Agent Builder documentation.
node tools/aldc-validate/index.js --config aldc.yamlExpected result: β
ALDC Core v1.2 COMPLIANT
AL-Development-Collection-for-GitHub-Copilot/
β
βββ GitHub Copilot βββββββββββββββββββββββββββββββββββββ
βββ .github/
β βββ copilot-instructions.md # Master coordination
β βββ plans/ # Per-requirement contracts
β βββ memory.md # Global memory (cross-session)
β βββ {req_name}/
β βββ {req_name}.architecture.md
β βββ {req_name}.spec.md
β βββ {req_name}.test-plan.md
βββ agents/ # 10 agents (4 core + 2 on-demand + 3 subagents + 1 extension)
βββ skills/ # 11 composable skills
βββ prompts/ # 6 retained workflows
βββ instructions/ # 9 auto-applied coding standards
β
βββ Claude Code (Direct) βββββββββββββββββββββββββββββββ
βββ CLAUDE.md # Master instructions
βββ .mcp.json # MCP server configuration
βββ .claude/
β βββ agents/ # 10 agents (7 public + 3 internal)
β βββ skills/ # 16 skills (composable knowledge modules)
β βββ rules/ # 8 path-scoped coding standards
β βββ settings.json # Hooks + permissions
β
βββ Claude Code Plugin βββββββββββββββββββββββββββββββββ
βββ claude-plugin/
β βββ .claude-plugin/plugin.json # Plugin manifest
β βββ agents/ # 10 agents (auto-discovered)
β βββ skills/ # 16 skills (auto-discovered)
β βββ hooks/hooks.json # PostToolUse + Stop hooks
β βββ rules-templates/ # 8 rules (injected via al-initialize)
β βββ .mcp.json # 3 MCP servers
β βββ README.md # Plugin documentation
β
βββ Shared βββββββββββββββββββββββββββββββββββββββββββββ
βββ docs/
β βββ framework/ # Normative spec + diagrams
β βββ templates/ # Immutable contract templates (7)
βββ tools/aldc-validate/ # ALDC Core validator
βββ aldc.yaml # Core v1.2 configuration
βββ CHANGELOG.md # Version history
βββ README.md # This file
- Core Specification v1.2
- Architecture Diagrams
- Manifesto
- Quickstart
- Governance
- Compliance Model
- Migration Guide v1.0βv1.1
| Server | Purpose |
|---|---|
| al-symbols-mcp | AL object analysis from compiled .app packages |
| context7 | Up-to-date library documentation retrieval |
| microsoft-docs | Official Microsoft/Azure documentation search |
GitHub Copilot
- Visual Studio Code 1.85.0+
- GitHub Copilot (agent and skill features)
- AL Language Extension
- Node.js 14+ (for validator)
Claude Code
- Claude Code CLI v1.0.33+
- AL Language Extension
- Node.js 14+ (for MCP servers via npx)
The framework now enforces its own spec in CI.
- Core Spec v1.2 β normalizes the real tier model: 4 core agents + 2 on-demand (
al-triage,dredd) + 3 subagents + 1 extension (al-agent-builder); 16 skills; 11 workflows. Everything that ships is declared. - Conformance tooling β
scripts/check-conformance.js(counters, cross-references, links, frontmatter) andscripts/sync-foundation.js --check(zero drift between the canonical trees andpackages/foundation/) run on every push and PR. ARCHITECTURE.mdβ one-page map of what is source, what is generated, and which distribution channel consumes each tree.- Fixed: truncated
skill-manifestinpackages/foundation/, broken README links, undeclared primitives inaldc.yaml, contradictory counters.
- β‘ Lower token / AIC cost β trimmed always-on entrypoint (~31% lighter), narrow instruction globs (
applyToby object type), curated context passing, condensed primitives, BCQuality task-context built once and passed inline. - π Cited reviews & audits with BCQuality (optional) β agents back findings with a pinned BC knowledge base; graceful native fallback (never blocks).
@AL Triageand@Dreddβ read-only on-demand specialists.skill-contribution-assistantβ guided contribution workflow.- Restored full architecture & spec templates with authoring guidance.
- Agents, instructions, skills, prompts, and templates condensed for a lower token footprint β behavior preserved.
- New
packages/foundation/layout; Architecture Decision Records (docs/decisions/); newal-agent.build-instructionsprompt; English-only content. - Breaking: primitives also available under
packages/foundation/; agent/instruction/skill wording token-optimized (behavior unchanged).
See CHANGELOG.md for full details.
Javier Armesto GonzΓ‘lez Microsoft MVP (Business Central & Azure AI Services) Head of R&D & AI at VS Sistemas LinkedIn Β· Tech Sphere Dynamics
- Report issues: GitHub Issues
- Ask questions: GitHub Discussions
- See CONTRIBUTING.md for contribution guidelines
MIT β See LICENSE for details.
Status: ALDC Core v1.2 COMPLIANT Β· Platforms: GitHub Copilot + Claude Code Β· Version: 4.2.0 Β· Last Updated: 2026-03-30