From a1b0ef89c6e22987894aa6d45551d4c88879f4cb Mon Sep 17 00:00:00 2001 From: wenjiefan Date: Thu, 2 Jul 2026 15:57:01 +0200 Subject: [PATCH] Bridge skill: make enabled-layers configurable; note layer-pruning limit and manifest choice Addresses PR #84 review (JesperSchulz): #2 layer policy has no hook in the plugin path -> expose BCQUALITY_ENABLED_LAYERS and document that it narrows discovery only, not a hard deny; #3 document the .claude-plugin manifest choice (verified on Copilot CLI). --- skills/bcquality-al-review/SKILL.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/skills/bcquality-al-review/SKILL.md b/skills/bcquality-al-review/SKILL.md index 1f5067a..937e06a 100644 --- a/skills/bcquality-al-review/SKILL.md +++ b/skills/bcquality-al-review/SKILL.md @@ -46,9 +46,15 @@ plugin-root environment variable, prefer it. goal: "Review the AL changes for quality issues" inputs-available: [pr-diff] # or [file-path] for single-file review technologies: [al] - enabled-layers: [microsoft, community, custom] + enabled-layers: [microsoft, community, custom] # see "Layer selection" below ``` + **Layer selection.** `enabled-layers` defaults to all three layers. A host can + narrow it by setting the `BCQUALITY_ENABLED_LAYERS` environment variable to a + comma-separated subset (e.g. `microsoft` or `microsoft,community`); when set, pass + exactly those layers instead of the default. This is the plugin path's only knob + for layer policy — see the limitation in Notes. + Fill `bc-version`, `countries`, and `application-area` only when the caller supplies them; omit them otherwise (an omitted dimension is unconstrained). @@ -72,3 +78,14 @@ caller can log the reason. the existing Entry protocol from a plugin host. Knowledge and skill changes belong in the layers under `PLUGIN_ROOT/microsoft/`, `PLUGIN_ROOT/community/`, and `PLUGIN_ROOT/custom/`, not here. +- **Layer pruning is coarser than the URL/clone model.** In the clone model a consumer + prunes its checkout to policy *before* the agent runs, and the knowledge index is + rebuilt over the pruned tree, so a denied layer can never leak into discovery. A + plugin install ships the whole tree, so this bridge can only *narrow discovery* via + `enabled-layers` (`BCQUALITY_ENABLED_LAYERS`) — the denied layers' files still exist on + disk. Treat `enabled-layers` as a selection filter, not a hard security boundary. A + future revision could add a genuine deny mechanism (e.g. pruning the installed tree). +- **Manifest location.** This plugin uses `.claude-plugin/plugin.json`, which both + Claude Code and Copilot CLI accept (verified with Copilot CLI: `plugin install` + reports the bridge skill loaded). Copilot CLI also accepts a root `plugin.json`; if a + future host only reads the root form, dual-home the manifest.