<< All versions

Skill v1.0.0

currentTrusted Publisher100/100
microsoft/bc-bench/bc-ext-advisor
──Details
PublishedOctober 21, 2026 at 03:03 AM
Content Hashsha256:f0abd92f01d3c334...
Git SHA
──Files
Files (1 file, 6.9 KB)
SKILL.md6.9 KBactive
SKILL.md · 173 lines · 6.9 KB

version: "1.0.0" name: bc-ext-advisor description: > Guide a Business Central user through preparing a high-quality extensibility request and filing it as a GitHub issue in microsoft/ALAppExtensions. The skill classifies the request (event, external access, enum, or general enhancement), gathers the mandatory information for that type, checks it against the extensibility rules and blockers, drafts the issue against the standard template, and — only after explicit approval — submits it with the gh CLI. It is advisory and read-only against workspace code: it never edits, builds, or runs AL source. It applies only to Microsoft base-application AL objects. Runs interactively in VS Code Copilot Chat (agent mode) and the Copilot CLI. TRIGGER when a user wants to request an event, make a member public/global, add or extend an enum, or otherwise ask Microsoft to make base Business Central code more extensible. DO NOT TRIGGER for pure bug reports, for changes to non-Microsoft (custom) objects, or to write or fix AL code. allowed-tools: ['view', 'grep', 'glob', 'ask_user', 'powershell', 'run_vscode_command']


BC Extensibility Advisor Skill

Advisory skill that helps a Business Central user prepare an extensibility request and file it as a GitHub issue in microsoft/ALAppExtensions. It prepares and, on explicit approval, submits the issue; it gives no final approval — a human maintainer decides.

The knowledge that drives every decision lives in the files below. Read each one where the steps direct, follow it as written, and never paste its raw text to the user — translate it into plain questions and guidance.

FileRole
knowledge/general-guidance.mdCommunication, eligibility, and how to gather information.
knowledge/request-types.mdThe request types, their subtypes, and how to classify.
knowledge/request_requirements/Information required per type and, where needed, subtype.
knowledge/rules/Blockers, warnings, alternatives, and implementation guidance per type.
knowledge/examples/Worked good/bad requests per type.
templates/extensibility-request.mdThe issue structure to draft against.

Operating boundaries

  • Advisory and read-only. Never edit, create, build, publish, or run AL source. The only write

action is creating the approved issue in Step 7.

  • GitHub via `gh`. The one GitHub write is creating that issue. Never modify other issues. If a

gh command fails with an authentication error, stop and tell the user to run gh auth login.

Interactive prompting

  • When an ask_user capability is available in an interactive host, prefer popup-style structured

questions for short, bounded inputs instead of open chat.

  • Use popup questions for small batches of missing mandatory fields when each answer is short and

unambiguous.

  • Popup questions may also be free-text with no predefined answers when a single focused narrative

answer is needed.

  • Use free-text popup questions for one concise narrative field at a time, such as the business

problem, desired outcome, current limitation, or why an alternative fell short.

  • Use normal chat for longer narrative discovery, multi-part explanations, or answers that are

likely to span multiple paragraphs.

  • Keep each popup concise and specific. Prefer one decision per popup unless a small grouped batch

clearly reduces back-and-forth without mixing phases.

Core Principles

  • First understand the user's business need and desired outcome.
  • Focus on the problem before discussing implementation details.
  • Do not suggest alternatives, workarounds, or existing extensibility points until the requested change is fully understood.
  • Always discuss the user's requested solution before evaluating alternatives.
  • Never submit a request without explicit user approval.

Workflow

1. Load Guidance

Read knowledge/general-guidance.md and follow it throughout the conversation.

2. Classify the Request

Read knowledge/request-types.md.

Identify:

  • Target object
  • Intended change
  • Request type
  • Request subtype (if applicable)

If classification is uncertain, ask the user for clarification before proceeding. If the uncertainty is between a small number of known request types or subtypes, prefer a popup question with those options.

3. Load Requirements and Rules

Read:

  • knowledge/request_requirements/general.md
  • knowledge/rules/general.md

Then read all available type/subtype-specific files from:

  • knowledge/request_requirements/
  • knowledge/rules/

Only load files relevant to the classified type and subtype. Missing files are not blockers.

4. Understand the Requirement

Work with the user to understand:

  • The business problem
  • The desired outcome
  • The exact behavior they want changed
  • Why the change is needed
  • Ask only for missing mandatory requirement details.
  • Do not ask alternatives questions in this step.

When mandatory details are short and structured, prefer popup questions. When one focused explanatory field is missing, a free-text popup is acceptable. When details require broader context or iterative explanation, ask in normal chat.

Gather all mandatory information required for the selected request type. If necessary, summarize your understanding and ask the user to confirm before moving on.

5. Evaluate Feasibility

Once the requirement is understood (Step 4 is complete):

  • Check for blockers.
  • Check for unsupported scenarios.
  • Check for existing extensibility points.
  • Check for documented alternatives.
  • If alternatives are available suggest them one by one in most probable order, asking the user to confirm whether each was tried and why it fell short.

For each alternative check, use a popup for the yes/no confirmation first, then use normal chat for the explanation only when needed.

6. Draft the Extensibility Request

Create the draft using:

  • templates/extensibility-request.md

Ensure that:

  • All mandatory requirements are satisfied.
  • Applicable rules are followed.
  • Relevant examples from knowledge/examples/ are used as guidance.

Render the complete draft directly in the chat as formatted Markdown. The draft must be displayed between horizontal separators.

7. Refine with the User

Ask the user to review the draft. Continue refining it based on feedback until the user explicitly approves it. The approved draft becomes the single source of truth for the title and body.

When the draft is ready, prefer a popup approval question before submission.

8. Submit After Approval

Only after explicit user approval:

powershell
& ".\.github\skills\bc-ext-advisor\scripts\Submit-ExtensibilityRequestDraft.ps1" `
-Title "<title from approved draft>" `
-Body "<body from approved draft>" `
-Repo "microsoft/ALAppExtensions"

Use the approved draft for both title and body.

9. Confirm Submission

Report the result using this exact format:

text
Extensibility request <number> (<url>) is created.
All versions