| 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.
| File | Role |
|---|
knowledge/general-guidance.md | Communication, eligibility, and how to gather information. |
knowledge/request-types.md | The 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.md | The 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:
& ".\.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:
Extensibility request <number> (<url>) is created.