Frame app review as a plugin example (#173)

Remove historical naming and external orchestrator references, and present the app-folder review as one example of the broader host-native skill pattern.

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Jesper Schulz-Wedde 2026-09-09 17:07:11 +02:00 • committed by GitHub
parent 17bb84a25e
commit a21edfec46
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 25 additions and 22 deletions

View file

@ -22,7 +22,8 @@ A file that *prevents* a false positive — documenting why a pattern is legitim
## What's in this repo ## What's in this repo
BCQuality contains **knowledge** and **skills**. It does not contain agents. Agents that consume BCQuality ship with [AL-Go](https://github.com/microsoft/AL-Go) and other orchestrators. BCQuality contains **knowledge** and **skills**. It does not contain agents.
Agents that consume BCQuality are supplied by the host or orchestrator.
### Knowledge files ### Knowledge files
@ -60,13 +61,17 @@ Skills define how agents consume knowledge. They come in three flavors:
### Agent bootstrapping ### Agent bootstrapping
An orchestrator (such as AL-Go) points the agent at BCQuality's URL and provides a task context. The agent's first call is `/skills/entry.md`, which returns a dispatch record naming the action skill(s) to invoke. The agent then invokes the dispatched skills, reading READ and DO on demand. No prior knowledge of BCQuality's structure is baked into the orchestrator — only the convention *"invoke `/skills/entry.md` first."* A host or orchestrator points the agent at BCQuality and provides a task
context. The agent's first call is `/skills/entry.md`, which returns a dispatch
record naming the action skill(s) to invoke. The agent then invokes the
dispatched skills, reading READ and DO on demand. No prior knowledge of
BCQuality's structure is required beyond the convention *"invoke
`/skills/entry.md` first."*
### Standalone plugin installation ### Standalone plugin installation
BCQuality can also be installed directly as a plugin to review a complete AL BCQuality can also be installed directly as a plugin so supported hosts can
app folder, a change set, or an individual file. The plugin registers one discover and invoke its host-native skills. The plugin currently registers
host-native skill,
[`al-code-review`](skills/al-code-review/SKILL.md), which adapts the caller's [`al-code-review`](skills/al-code-review/SKILL.md), which adapts the caller's
request to the same Entry protocol used by orchestrators. request to the same Entry protocol used by orchestrators.
@ -76,7 +81,11 @@ For GitHub Copilot CLI:
copilot plugin install microsoft/BCQuality copilot plugin install microsoft/BCQuality
``` ```
#### Review a complete app folder #### Example: Review a complete app folder
This example demonstrates the walk-up pattern with the currently exposed
review skill. Future host-native skills follow the same discovery and
invocation pattern; they do not each require a dedicated README walkthrough.
1. Open the Business Central app folder in GitHub Copilot and start a fresh 1. Open the Business Central app folder in GitHub Copilot and start a fresh
session after installing the plugin. session after installing the plugin.
@ -94,12 +103,6 @@ a newer BCQuality release later, run:
copilot plugin update bcquality copilot plugin update bcquality
``` ```
Plugin version `0.2.0` renamed the former `bcquality-al-review` skill to
`al-code-review`; explicit invocations and allowlists using the old skill name
must be updated. The name remains distinct from BC-ALAgents' public
`al-review` skill because current hosts may load plugin skill names into one
shared inventory.
The adapter is intentionally not a second review implementation: The adapter is intentionally not a second review implementation:
```text ```text

View file

@ -3,6 +3,6 @@
- [How agents consume BCQuality](agent-consumption.md) explains the operational - [How agents consume BCQuality](agent-consumption.md) explains the operational
flow from Entry dispatch through structured findings and integration. flow from Entry dispatch through structured findings and integration.
- [Build a lightweight standalone review runner](standalone-runner.md) explains - [Build a lightweight standalone review runner](standalone-runner.md) explains
the walk-up app-folder flow and how an external runner can add model one concrete walk-up skill flow and how an external runner can add model
selection, concurrency, retries, and telemetry without moving orchestration selection, concurrency, retries, and telemetry without moving orchestration
into BCQuality. into BCQuality.

View file

@ -1,13 +1,16 @@
# How agents consume BCQuality # How agents consume BCQuality
BCQuality is content — knowledge files and skills. It is consumed by agents that live elsewhere (AL-Go, a VS Code extension, a GitHub Agent invocation, etc.). This document explains the end-to-end flow, so that skill authors, orchestrator maintainers, and contributors share one mental model. BCQuality is content — knowledge files and skills. It is consumed by agents
supplied by a host or orchestrator. This document explains the end-to-end flow
so that skill authors, orchestrator maintainers, and contributors share one
mental model.
For the high-level framing and repo structure, start with the For the high-level framing and repo structure, start with the
[README](../README.md). This document is the operational view. [README](../README.md). This document is the operational view.
## The actors ## The actors
- **Orchestrator** — the tool that triggers work (e.g. AL-Go on a pull request, or a VS Code extension on save). Lives *outside* BCQuality. Knows *when* to run something, not *what* to run. - **Orchestrator** — the tool that triggers work. Lives *outside* BCQuality. Knows *when* to run something, not *what* to run.
- **Agent** — an LLM-driven process spawned by the orchestrator. The agent has no built-in knowledge of BC or of BCQuality's conventions. It knows how to read instructions and call tools. - **Agent** — an LLM-driven process spawned by the orchestrator. The agent has no built-in knowledge of BC or of BCQuality's conventions. It knows how to read instructions and call tools.
- **BCQuality repo** — two kinds of content: - **BCQuality repo** — two kinds of content:
- **Global skills** in `/skills/` — the `entry.md` entry-point skill plus the READ · DO · WRITE contracts that govern the rest of the repo. - **Global skills** in `/skills/` — the `entry.md` entry-point skill plus the READ · DO · WRITE contracts that govern the rest of the repo.
@ -21,7 +24,7 @@ action skill: it creates the task context and enters the same flow at Entry.
```mermaid ```mermaid
flowchart LR flowchart LR
O[Orchestrator<br/>AL-Go] -->|1 trigger + task context| A[Agent] O[Host or orchestrator] -->|1 trigger + task context| A[Agent]
A -->|2 invoke entry.md| E[Entry<br/>routing skill] A -->|2 invoke entry.md| E[Entry<br/>routing skill]
E -->|3 dispatch record| A E -->|3 dispatch record| A
A -->|4 invoke dispatched skill| S[Action skill<br/>e.g. al-code-review] A -->|4 invoke dispatched skill| S[Action skill<br/>e.g. al-code-review]

View file

@ -97,7 +97,6 @@ A compatible runner:
- preserves knowledge paths verbatim and verifies references before publishing; - preserves knowledge paths verbatim and verifies references before publishing;
- records the BCQuality commit or release used for the run. - records the BCQuality commit or release used for the run.
BC-ALAgents, AL-Go, a Copilot custom agent, or a small host-native plugin can A CI integration, custom agent, or small host-native plugin can implement this
all implement this runner contract. They remain optional consumers: runner contract. These remain optional consumers: BCQuality's knowledge and
BCQuality's knowledge and skills stay independent of their orchestration skills stay independent of their orchestration choices.
choices.

View file

@ -48,8 +48,6 @@ This gives the two skill formats distinct roles:
The host adapter and internal coordinator deliberately share the The host adapter and internal coordinator deliberately share the
`al-code-review` name because they represent the same user-facing operation in `al-code-review` name because they represent the same user-facing operation in
their respective formats. Their locations distinguish their roles. The their respective formats. Their locations distinguish their roles. The
adapter remains distinct from BC-ALAgents' separately installed `al-review`
skill, avoiding a collision in hosts that use one shared skill inventory. The
reference from the adapter to Entry, and from a dispatched super-skill to its reference from the adapter to Entry, and from a dispatched super-skill to its
leaf skills, is intentional progressive disclosure. It avoids registering leaf skills, is intentional progressive disclosure. It avoids registering
every internal BCQuality protocol file as an ambient host skill while allowing every internal BCQuality protocol file as an ambient host skill while allowing