AL Copilot capability development for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

MITAuto-check passed

Install Skill Copilot

skills CLI
$ npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-copilot -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install javiarmesto/ALDC-AL-Development-Collection skill-copilot --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/javiarmesto/ALDC-AL-Development-Collection.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/skill-copilot .claude/skills/skill-copilot && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
skill-copilot
GitHub stars
109
Token cost
~3.5k tokens
SKILL.md length
656 words
Files
3 (incl. references)
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

AL Copilot capability development for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

  • Works in 4 steps: Capability Registration → PromptDialog Page → AI Generation Codeunit → …
  • Implementing PromptDialog pages
  • SKILL.md covers Purpose, When to Load, Phase 1: Capability Registration and Phase 2: PromptDialog Page, plus 5 more sections
  • Reaches learn.microsoft.com

What it does

Skill Copilot is an agent skill from javiarmesto/ALDC-AL-Development-Collection. AL Copilot capability development for Business Central. Use when implementing PromptDialog pages, AI generation features, or integrating with the Copilot toolkit.

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/copilot-ai-generation.md` and `references/copilot-testing.md`).

It works with Azure OpenAI. The repository describes itself as: AL development toolkit for Business Central with specialist agents, skills and review workflows for Copilot, Claude Code and Codex. The licence is MIT.

When your agent uses it

  • Implementing PromptDialog pages
  • AI generation features
  • Integrating with the Copilot toolkit

Example prompts

  • “/skill-copilot”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Capability Registration
  2. PromptDialog Page
  3. AI Generation Codeunit
  4. Testing with AI Test Toolkit

What it can do on your machine

Read from SKILL.md and the folder at commit 4f99d7d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are al).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • learn.microsoft.com

    Also links to:

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Skill Copilot loads about 3.5k tokens when it runs, and up to ~7.1k if it reads all its reference files. Until then it costs about 44 tokens; SKILL.md has 656 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~44
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from javiarmesto/ALDC-AL-Development-Collection at commit 4f99d7d, republished under its MIT licence (© javiarmesto). 656 words, ~3,454 tokens.

Download SKILL.mdSave it as .claude/skills/skill-copilot/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
skill-copilot
description
AL Copilot capability development for Business Central. Use when implementing PromptDialog pages, AI generation features, or integrating with the Copilot toolkit.

Skill: AL Copilot Development (Full Lifecycle)

Purpose

Build AI-powered Copilot experiences in Business Central end-to-end: capability registration, PromptDialog page design, Azure OpenAI generation codeunit, and testing with AI Test Toolkit.

When to Load

This skill should be loaded when:

  • A new Copilot/AI feature is being designed or implemented
  • A PromptDialog page needs to be created or modified
  • Azure OpenAI integration is required (chat completions, JSON mode)
  • AI Test Toolkit tests need to be created for a Copilot feature
  • Prompt engineering guidance is needed (system/user prompt design)
  • A capability needs to be registered in BC's Copilot admin page

Phase 1: Capability Registration

Objects Required
  1. Enum Extension — extend "Copilot Capability" to register your feature
  2. Install Codeunit — register the capability on app install
  3. Isolated Storage Wrapper — manage Azure OpenAI secrets securely
Pattern: Enum Extension
al
namespace Contoso.CopilotFeatures;

using System.AI;

enumextension 50100 "Contoso Copilot Capabilities" extends "Copilot Capability"
{
    value(50100; "Sales Forecasting")
    {
        Caption = 'Sales Forecasting with Copilot';
    }
}
Pattern: Install Codeunit
al
namespace Contoso.CopilotFeatures;

using System.AI;

codeunit 50100 "Contoso Copilot Setup"
{
    Subtype = Install;
    InherentEntitlements = X;
    InherentPermissions = X;
    Access = Internal;

    trigger OnInstallAppPerDatabase()
    begin
        RegisterCapability();
    end;

    local procedure RegisterCapability()
    var
        CopilotCapability: Codeunit "Copilot Capability";
        LearnMoreUrlTxt: Label 'https://learn.microsoft.com/dynamics365/business-central/', Locked = true;
    begin
        if not CopilotCapability.IsCapabilityRegistered(
            Enum::"Copilot Capability"::"Sales Forecasting") then
            CopilotCapability.RegisterCapability(
                Enum::"Copilot Capability"::"Sales Forecasting",
                Enum::"Copilot Availability"::Preview,
                LearnMoreUrlTxt);
    end;
}

Availability options: Preview (opt-in), GA (general availability).

After publishing, verify the capability appears in BC: search "Copilot & AI Capabilities" page.

Pattern: Isolated Storage Wrapper (Secrets)
al
codeunit 50101 "Contoso Isolated Storage"
{
    Access = Internal;

    procedure GetSecretKey(): SecretText
    var
        Secret: Text;
    begin
        if IsolatedStorage.Get('AzureOpenAIKey', DataScope::Module, Secret) then
            exit(Secret);
        Error('Azure OpenAI key not configured.');
    end;

    procedure SetSecretKey(NewKey: SecretText)
    begin
        IsolatedStorage.Set('AzureOpenAIKey', NewKey, DataScope::Module);
    end;

    procedure GetEndpoint(): Text
    var
        Endpoint: Text;
    begin
        if IsolatedStorage.Get('AzureOpenAIEndpoint', DataScope::Module, Endpoint) then
            exit(Endpoint);
        Error('Azure OpenAI endpoint not configured.');
    end;

    procedure SetEndpoint(NewEndpoint: Text)
    begin
        IsolatedStorage.Set('AzureOpenAIEndpoint', NewEndpoint, DataScope::Module);
    end;

    procedure GetDeployment(): Text
    var
        Deployment: Text;
    begin
        if IsolatedStorage.Get('AzureOpenAIDeployment', DataScope::Module, Deployment) then
            exit(Deployment);
        exit('gpt-4o');   // default model
    end;

    procedure SetDeployment(NewDeployment: Text)
    begin
        IsolatedStorage.Set('AzureOpenAIDeployment', NewDeployment, DataScope::Module);
    end;
}

Production vs Development:

  • Development: configure own Azure OpenAI credentials via SetSecretKey/SetEndpoint/SetDeployment
  • Production: use SetManagedResourceAuthorization (Microsoft-managed, no secrets needed)

Phase 2: PromptDialog Page

Page Areas
AreaPurposeContains
PromptOptionsUser settings/filtersOption/Enum fields only
PromptUser text inputFree-text field with InstructionalText
ContentAI output displayText field or part subpage with results
PromptGuide (actions)Example promptsActions that pre-fill the Prompt field
SystemActions (actions)Generate / OK / Cancelsystemaction(Generate), systemaction(OK), etc.
PromptMode Options
ModeBehaviorUse when
PromptShows input first, user clicks GenerateUser needs to provide context
GenerateAuto-runs generation when page opensContext is pre-filled from calling page
ContentShows content only, no generationDisplaying previously generated results
Pattern: Complete PromptDialog Page
al
namespace Contoso.CopilotFeatures;

using System.AI;

page 50110 "Contoso Sales Forecast Copilot"
{
    PageType = PromptDialog;
    Extensible = false;
    IsPreview = true;
    Caption = 'Sales Forecast with Copilot';
    PromptMode = Prompt;

    layout
    {
        area(PromptOptions)
        {
            field(ForecastPeriod; SelectedPeriod)
            {
                ApplicationArea = All;
                Caption = 'Forecast Period';
                ToolTip = 'Select the forecast time horizon.';
            }
        }

        area(Prompt)
        {
            field(UserInput; UserPromptText)
            {
                ShowCaption = false;
                MultiLine = true;
                ApplicationArea = All;
                InstructionalText = 'Describe what you want to forecast (e.g., "top 10 items for next quarter")';

                trigger OnValidate()
                begin
                    CurrPage.Update();
                end;
            }
        }

        area(Content)
        {
            // Option A: simple text response
            field(AIResponse; AIResponseText)
            {
                ApplicationArea = All;
                Caption = 'Copilot Suggestion';
                MultiLine = true;
                Editable = false;
            }

            // Option B: structured results via subpage
            // part(Proposals; "Contoso Forecast Proposal Sub")
            // {
            //     ApplicationArea = All;
            // }
        }
    }

    actions
    {
        area(PromptGuide)
        {
            action(ExampleTopItems)
            {
                ApplicationArea = All;
                Caption = 'Top selling items next quarter';
                ToolTip = 'Predict the best-selling items for the next quarter.';

                trigger OnAction()
                begin
                    UserPromptText := 'What will be the top 10 selling items next quarter based on historical sales?';
                    CurrPage.Update(false);
                end;
            }

            action(ExampleSlowMovers)
            {
                ApplicationArea = All;
                Caption = 'Slow-moving inventory';
                ToolTip = 'Identify items with declining sales trends.';

                trigger OnAction()
                begin
                    UserPromptText := 'Which items show declining sales over the last 6 months?';
                    CurrPage.Update(false);
                end;
            }
        }

        area(SystemActions)
        {
            systemaction(Generate)
            {
                Caption = 'Generate';
                ToolTip = 'Generate AI forecast suggestions.';

                trigger OnAction()
                begin
                    RunGeneration();
                end;
            }

            systemaction(Regenerate)
            {
                Caption = 'Regenerate';
                ToolTip = 'Generate different suggestions.';

                trigger OnAction()
                begin
                    RunGeneration();
                end;
            }

            systemaction(OK)
            {
                Caption = 'Keep it';
                ToolTip = 'Accept and apply the forecast.';
            }

            systemaction(Cancel)
            {
                Caption = 'Discard';
                ToolTip = 'Discard suggestions.';
            }
        }
    }

    trigger OnQueryClosePage(CloseAction: Action): Boolean
    begin
        if CloseAction = CloseAction::OK then
            ApplySuggestions();
    end;

    local procedure RunGeneration()
    var
        GenerationCU: Codeunit "Contoso Forecast Generation";
    begin
        AIResponseText := '';
        GenerationCU.SetUserPrompt(UserPromptText);
        GenerationCU.SetPeriod(SelectedPeriod);

        if GenerationCU.Run() then
            AIResponseText := GenerationCU.GetCompletionResult()
        else
            Error('Generation failed: %1', GetLastErrorText());

        CurrPage.Update(false);
    end;

    local procedure ApplySuggestions()
    begin
        // Apply user-approved results to BC data
    end;

    /// Call from external page to set context before opening
    procedure SetItemFilter(ItemCategoryCode: Code[20])
    begin
        ContextItemCategory := ItemCategoryCode;
    end;

    var
        UserPromptText: Text;
        AIResponseText: Text;
        SelectedPeriod: Option "Next Month","Next Quarter","Next Year";
        ContextItemCategory: Code[20];
}
Pattern: Temporary Table for Structured Output

When AI returns a list of proposals (not just text), use a temporary table:

al
table 50110 "Contoso Forecast Proposal"
{
    TableType = Temporary;
    Caption = 'Forecast Proposal';

    fields
    {
        field(1; "Entry No."; Integer) { AutoIncrement = true; }
        field(10; "Item No."; Code[20]) { Caption = 'Item No.'; }
        field(20; Description; Text[100]) { Caption = 'Description'; }
        field(30; "Forecast Qty"; Decimal) { Caption = 'Forecast Quantity'; }
        field(40; Explanation; Text[250]) { Caption = 'AI Explanation'; }
        field(50; "Confidence Score"; Decimal) { Caption = 'Confidence'; MinValue = 0; MaxValue = 1; }
    }

    keys
    {
        key(PK; "Entry No.") { Clustered = true; }
    }
}

Display via a ListPart subpage linked by part() in the Content area.

Phase 3: AI Generation Codeunit

Builds the Azure OpenAI chat-completion codeunit and the structured-output handling (temporary tables).

When implementing the generation codeunit, load references/copilot-ai-generation.md.

Phase 4: Testing with AI Test Toolkit

Validates the Copilot experience with the AI Test Toolkit: dependency setup, the test codeunit pattern, and the test workflow.

When writing Copilot tests, load references/copilot-testing.md.

Workflow

Step 1: Design Copilot Experience

Define before coding:

  1. User problem — what task does this Copilot help with?
  2. PromptMode — Prompt (user types) vs Generate (auto-run)?
  3. Input — free text, options, context from calling page?
  4. Output — simple text or structured proposals (temp table + subpage)?
  5. AI model — Temperature (deterministic vs creative), MaxTokens
Show full SKILL.md (238 more words)Show less
Step 2: Implement (Phase 1 → Phase 3)
  1. Register capability (Phase 1: enum + install codeunit)
  2. Create PromptDialog page (Phase 2: areas, system actions, prompt guide)
  3. Create generation codeunit (Phase 3: Azure OpenAI + JSON parsing)
  4. Build: al_build
Step 3: Test (Phase 4)
  1. Add AI Test Toolkit dependency to Test app
  2. Create test codeunit with happy path, edge cases, consistency, performance
  3. Create AI Test Suite dataset in BC for systematic prompt evaluation
  4. Run tests and iterate on prompts
Step 4: Responsible AI Review

Before shipping:

  • User transparency — users know they're interacting with AI
  • Content filtering — no raw AI output without validation
  • Data privacy — no sensitive data in prompts without sanitization
  • Feedback — users can accept/reject AI suggestions (OK/Cancel)
  • Error handling — graceful handling of all Azure OpenAI error codes

References

Constraints

  • Do NOT expose raw AI responses without validation — always parse and verify structure
  • Do NOT include sensitive customer data in prompts without sanitization
  • Do NOT deploy Copilot features without Responsible AI compliance review
  • Do NOT skip AI Test Toolkit testing — every Copilot feature MUST have test coverage
  • Do NOT use deprecated SetAuthorization in production — use SetManagedResourceAuthorization
  • Do NOT hardcode Azure OpenAI credentials — always use IsolatedStorage
  • Permission set generation → skill-permissions.md
  • Debugging AI integration issues → skill-debug.md
  • Test strategy design → skill-testing.md

© javiarmesto, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in skills/skill-copilot of javiarmesto/ALDC-AL-Development-Collection.

  • SKILL.md
  • references/copilot-ai-generation.md
  • references/copilot-testing.md

Open the folder on GitHubat commit 4f99d7d

Compare with similar skills

Skill Copilot next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Skill Copilot compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Skill Copilot this skilljaviarmesto/ALDC-AL-Development-Collection109—~3.5kAutomated safety check: PassMIT
Capacitymicrosoft/GitHub-Copilot-for-Azure2552 repos~1.7kAutomated safety check: PassMIT
Azure Openai To Responsesmicrosoft/ai-agents-for-beginners77k—~6kAutomated safety check: NotesMIT
Deploy Modelmicrosoft/GitHub-Copilot-for-Azure2551 repos~1.8kAutomated safety check: PassMIT
Cairamicrosoft/CAIRA229—~1.2kAutomated safety check: PassMIT
Azure Openai To Responsesmicrosoft/ai-agents-for-beginners77k—~6kAutomated safety check: NotesMIT

Similar skills

  • Capacity

    microsoft/GitHub-Copilot-for-Azure

    Official

    Discovers available Azure OpenAI model capacity across regions and projects.

    255 GitHub starsUsed in 2 repos~1.7k tokens
    DevOps & CloudAuto-check passed
  • Azure Openai To Responses

    microsoft/ai-agents-for-beginners

    Official

    Migrate Python apps from Azure OpenAI Chat Completions to the Responses API.

    77k GitHub stars~6k tokensUpdated 19 days ago
    AI & LLM EngineeringAuto-check: notes
  • Deploy Model

    microsoft/GitHub-Copilot-for-Azure

    Official

    Unified Azure OpenAI model deployment skill with intelligent intent-based routing.

    255 GitHub starsUsed in 1 repo~1.8k tokens
    DevOps & CloudAuto-check passed
  • Caira

    microsoft/CAIRA

    Official

    Primary entrypoint for coding agents using CAIRA as reference material to design and build generative AI solutions with Azure AI Foundry, Azure OpenAI-compatible endpoints, agent frameworks, APIs…

    229 GitHub stars~1.2k tokensUpdated 16 days ago
    AI & LLM EngineeringAuto-check passed
  • Azure Openai To Responses

    microsoft/ai-agents-for-beginners

    Official

    Shift Python apps dem from Azure OpenAI Chat Completions go Responses API.

    77k GitHub stars~6k tokensUpdated 19 days ago
    AI & LLM EngineeringAuto-check: notes
  • Baoyu Image Gen

    JimLiu/baoyu-skills

    AI image generation with OpenAI GPT Image 2.5, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs.

    26k GitHub starsUsed in 1 repo~5.3k tokens
    Media & CreativeAuto-check: notes

More from javiarmesto/ALDC-AL-Development-Collection

All 14 skills in this repo
  • Skill Agent Instructions

    javiarmesto/ALDC-AL-Development-Collection

    Generate, review, and optimize natural language instructions for Business Central agents (Designer or SDK).

    109 GitHub stars~2.8k tokensUpdated yesterday
    Auto-check passed
  • Skill API

    javiarmesto/ALDC-AL-Development-Collection

    AL API development patterns for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

    109 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed
  • Skill Migrate

    javiarmesto/ALDC-AL-Development-Collection

    AL version migration for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

    109 GitHub stars~3k tokensUpdated yesterday
    Auto-check passed
  • Skill Agent Task Patterns

    javiarmesto/ALDC-AL-Development-Collection

    Agent SDK task integration patterns for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

    109 GitHub stars~4.2k tokensUpdated yesterday
    Auto-check passed
  • Skill Agent Toolkit

    javiarmesto/ALDC-AL-Development-Collection

    Build, configure, and integrate Business Central agents using the AI Development Toolkit and Agent SDK.

    109 GitHub stars~4.4k tokensUpdated yesterday
    Auto-check passed
  • Skill Debug

    javiarmesto/ALDC-AL-Development-Collection

    AL debugging and diagnostics for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection.

    109 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check passed

Works with

Questions about Skill Copilot

What does Skill Copilot do?

AL Copilot capability development for Business Central. An agent skill from javiarmesto/ALDC-AL-Development-Collection. Skill Copilot is an agent skill from javiarmesto/ALDC-AL-Development-Collection. AL Copilot capability development for Business Central.

When should I use Skill Copilot?

Skill Copilot fits situations like: implementing PromptDialog pages; AI generation features; integrating with the Copilot toolkit.

How do I install Skill Copilot in Claude Code?

Run `npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-copilot -a claude-code`. Or copy the skill folder (skills/skill-copilot in javiarmesto/ALDC-AL-Development-Collection) into .claude/skills/skill-copilot in your project. Claude Code loads it when a task matches its description.

How do I install Skill Copilot in Codex?

Run `npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-copilot -a codex`. Or copy the skill folder (skills/skill-copilot in javiarmesto/ALDC-AL-Development-Collection) into .agents/skills/skill-copilot in your project. Codex loads it when a task matches its description.

Can I use Skill Copilot in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add javiarmesto/ALDC-AL-Development-Collection --skill skill-copilot -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skill-copilot, .gemini/skills/skill-copilot, .github/skills/skill-copilot and .opencode/skills/skill-copilot in your project.

What does Skill Copilot need to run?

SKILL.md names no scripts, command-line tools or credentials: Skill Copilot is instructions for the agent only.

Does Skill Copilot access the network?

SKILL.md names 2 domains. In commands or code: learn.microsoft.com; the agent is likely to contact it when it follows the instructions. As links in the text: github.com. This is read from the text; nothing was executed.

Is Skill Copilot safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Skill Copilot use?

Skill Copilot is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Skill Copilot use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.6k tokens, read only when the agent opens those files.

What are the alternatives to Skill Copilot?

Skills that share tags, products or a category with Skill Copilot: Capacity (microsoft/GitHub-Copilot-for-Azure, 255 stars), Azure Openai To Responses (microsoft/ai-agents-for-beginners, 77k stars), Deploy Model (microsoft/GitHub-Copilot-for-Azure, 255 stars) and Caira (microsoft/CAIRA, 229 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Skill Copilot?

javiarmesto (a GitHub user) maintains it in javiarmesto/ALDC-AL-Development-Collection, which has 109 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.

Source: javiarmesto/ALDC-AL-Development-Collection on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.