Prompt file imported from javiarmesto/APM-ALDC (
.github/prompts/al-agent.create.prompt.md). Copyright stays with the author.
Workflow: Create Coded Agent (Agent SDK)
End-to-end orchestration to produce a production-ready agent. This prompt does not contain SDK knowledge — it applies patterns from the loaded skills:
skill-agent-toolkit→ registration, 3 interfaces, Setup Codeunit, ConfigurationDialog, project structureskill-agent-task-patterns→ Patterns A–H for task integration (Phase 6)skill-agent-instructions→ Responsibilities-Guidelines-Instructions framework (Phase 7)
Human validation gates
🛑 markers require human approval before proceeding to the next phase.
Phase 1 — Agent specification
1.1 Gather requirements
Ask the developer:
- Agent purpose — business process being automated
- Creation rules — single instance? multi? always?
- Trigger type — manual (page action) / EventSubscriber / email / mixed?
- Data scope — tables and pages the agent needs access to
- Setup properties — any agent-specific configuration beyond standard?
- Message processing — input validation? output post-processing?
- User intervention suggestions — what help options when stuck?
- Summary KPIs — what metrics on hover card?
- Annotations — what preconditions to validate (licensing, config completeness)?
1.2 Generate Agent Spec
# Agent Specification: {Agent Name}
## Identity
- Name: {Name}
- Initials: {3-4 chars}
- Object ID Range: {e.g. 52100-52199}
## Project Structure
See skill-agent-toolkit project structure section.
## Creation Rules
- Instance Model: {Single / Multi / Always}
## Interfaces
### IAgentFactory
- Setup Page: Page {ID} "{Agent} Setup" (ConfigurationDialog)
- Default Profile: {Profile ID}
- Default Permissions: {PermissionSet ID}
### IAgentMetadata
- Annotations: {precondition checks}
- Summary KPIs: {metrics for hover card}
- Custom Message Page: {Yes/No}
### IAgentTaskExecution
- Input Validation: {what to check}
- Output Post-Processing: {signatures, formatting}
- User Intervention Suggestions: {list}
- Page Context: {page-specific context}
## Task Integration
- Triggers: {events or page actions}
- ExternalId Pattern: {format}
- Patterns Applied: {A / B / C / D / E / F / G / H}
🛑 STOP — Review spec before proceeding.
Phase 2 — Registration + Integration
Apply: skill-agent-toolkit → "Registration — 4 required objects".
Generate:
- Copilot Capability EnumExt — unique value ID
- Metadata Provider EnumExt — links the 3 interface implementations
- Install Codeunit —
OnInstallAppPerDatabase, Unregister+Register, re-install instructions for existing setup records - Upgrade Codeunit —
OnUpgradePerDatabase, instruction updates withUpgradeTag
🛑 STOP — Verify enum IDs are unique.
Phase 3 — Setup Infrastructure
Apply: skill-agent-toolkit → "Setup Codeunit" and "ConfigurationDialog page".
Generate:
- Setup Table — PK =
"User Security ID": Guid,DataPerCompany = false, custom fields - Setup Codeunit —
GetInitials,GetSetupPageId,GetSummaryPageId,GetInstructions (SecretText),GetDefaultProfile,GetDefaultAccessControls,InitializeSetupRecord,SaveSetupRecord,SaveCustomProperties - ConfigurationDialog Page — invariants from the skill (SourceTableTemporary, AgentSetupPart first, AzureOpenAI check, system actions)
🛑 STOP — Review setup infrastructure.
Phase 4 — Interface implementations
Apply: skill-agent-toolkit → "The 3 core interfaces".
Generate the 3 codeunits delegating to Setup Codeunit. IAgentTaskExecution.AnalyzeAgentTaskMessage uses AgentMessage.GetText() / UpdateText() — never raw record fields.
🛑 STOP — Review interface implementations.
Phase 5 — Profile + Permissions + KPI
Generate:
- Profile with RoleCenter reference
- RoleCenter Page (
PageType = RoleCenter) with navigation actions - PageCustomizations to tailor pages for the agent's view
- PermissionSet including D365 BASIC + domain permissions
- KPI Table (PK = User Security ID, custom KPI fields)
- KPI Page (
PageType = CardPart, cuegroup with metrics)
🛑 STOP — Review profile and permissions.
Phase 6 — Task Integration + Public API
Apply: skill-agent-task-patterns → relevant patterns (A always, plus B/C/D/E/H depending on spec). Verify each method against the API Availability Matrix before generating code.
Generate:
- Public API codeunit (
Access = Public) — Pattern A, with the standard overloads - Public API Impl codeunit (
Access = Internal) — uses Agent Task Builder - Page Extension — example integration (Pattern B)
- EventSubscriber codeunit — if Pattern C applies (TryFunction + telemetry)
- Agent Session Events — if Pattern H applies (SingleInstance + BindSubscription)
🛑 STOP — Review task integration.
Phase 7 — Instructions + Tests
Apply: skill-agent-instructions → RGI framework + keywords.
Apply: al-agent.test prompt for the test codeunit.
Generate:
- InstructionsV1.txt — Responsibilities → Guidelines → Instructions, English, environment-agnostic
- Test Codeunit — 6 categories (run
al-agent.test)
🛑 STOP — Review instructions and tests.
Deliverables checklist
-
{Agent}CopilotCapability.EnumExt.al -
{Agent}MetadataProvider.EnumExt.al -
{Agent}Install.Codeunit.al -
{Agent}Upgrade.Codeunit.al -
{Agent}Setup.Table.al -
{Agent}Setup.Codeunit.al -
{Agent}Setup.Page.al -
{Agent}Factory.Codeunit.al(implements IAgentFactory) -
{Agent}Metadata.Codeunit.al(implements IAgentMetadata) -
{Agent}TaskExecution.Codeunit.al(implements IAgentTaskExecution) -
{Agent}KPI.Table.al+{Agent}KPI.Page.al -
{Agent}Profile.Profile.al+{Agent}RoleCenter.Page.al -
{Agent}.permissionset.al -
{Agent}PublicAPI.Codeunit.al+ Impl -
{Agent}*Ext.PageExt.al(example integration) -
.resources/Instructions/InstructionsV1.txt - Test codeunit (6 categories)
- Agent specification document
Skills Evidencing
End the workflow declaring:
**Skills loaded**: skill-agent-toolkit, skill-agent-task-patterns, skill-agent-instructions
**Patterns applied**: {list each pattern with the file where it was applied}
