14 character cards to understand the ecosystem. 4 agents that you control · 3 subagents that the Director invokes · 1 prompt key to the flow · 5 skills that load themselves · and the passive rules that are always active.
{req}.architecture.md with 14 mandatory sections. Can break down a large requirement into parallel or sequential sub-specs.RED → GREEN → REFACTOR per phase, with commit message prepared at the end of each.{req}-phase-N-complete.md per phase and {req}-complete.md at the end.al_build after every change.skill-debug for rare bugs, skill-performance to optimize, skill-api for APIs. Builds and validates in a loop.skill-estimation automatically. Knows how to break down integrations, NAV→BC migrations, AL extensions, and translate them into weighted effort.al-conductor via runSubagent. It is Phase 1 (Planning) of the TDD pipeline. You never call it directly.skill-api, skill-events, etc.) and which pattern it applied from each. The Reviewer crosses it afterwards to verify traceability.al-conductor. It is Phase 2 (Implementation) of the pipeline. Returns to the Director a structured summary with objects created, tests created, build status.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.{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.app.json idRanges before assigning them. If there's no prior architecture, also works in LOW complexity as a direct blueprint.@workspace use al-spec.create. You can invoke it directly — it's not an agent, it's a guided template with prompts and tools.OnBefore/OnAfter pattern with IsHandled, difference IntegrationEvent vs BusinessEvent.al-architect when designing event architecture · al-developer when implementing subscribers · al-implement-subagent within the Conductor's pipeline.APIPublisher, EntityName, ODataKeyFields = SystemId, DelayedInsert = true, header-lines with part(), bound actions with Microsoft.NAV, subscription webhooks.v1.0 obsolete → v2.0 stable → beta for preview of breaking changes.al-architect when designing API contracts · al-developer when implementing endpoints · al-implement-subagent within the TDD pipeline.IncludedPermissionSets, granulates RIMD in tabledata, creates permissionsetextension for standard BC roles, declares indirect permissions in codeunits.D on setup tables without justification.al-developer when generating permission sets · al-implement-subagent when closing a phase with new objects · al-review-subagent when verifying coverage.SetLoadFields before Get/Find, SetRange/SetFilter before FindSet, CalcSums instead of loops, temp tables for intermediate processing, cached FlowFields.repeat..until, and other anti-patterns.al-architect when planning large tables · al-developer when optimizing · al-implement-subagent when implementing phases with heavy tables · al-review-subagent when auditing.addafter/addbefore/modify/moveafter, FastTabs, FactBoxes, promoted actions with actionref.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.al-architect when designing UX · al-developer when implementing pages · al-implement-subagent when creating pages within the TDD pipeline..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.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.
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.