From 9b63125f6a995fafb64adbb5609c96fa4a659638 Mon Sep 17 00:00:00 2001 From: Kjell Tore Guttormsen Date: Fri, 19 Jun 2026 21:48:12 +0200 Subject: [PATCH] docs(plan): mark v5.4.0 Feature 1 DONE + field-set correction [skip-docs] CA-PLH-015 shipped (7abc5a1). Records the Verifiseringsplikt correction: replaces-only field set (commands/agents/outputStyles); skills excluded (adds-to-default), hooks/mcpServers/lspServers excluded (own merge rules). Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01Ter3E2JSi1Khgmuf2kady8 --- docs/v5.4.0-release-plan.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/v5.4.0-release-plan.md b/docs/v5.4.0-release-plan.md index 5614b41..ebe93bd 100644 --- a/docs/v5.4.0-release-plan.md +++ b/docs/v5.4.0-release-plan.md @@ -58,11 +58,19 @@ Re-confirm each feature's exact CC behavior against primary docs at the start of (Verifiseringsplikt — premises were verified in Session A but the exact field lists / warning text must be pinned before coding). Checkpoint STATE + this plan after each feature. -### Feature 1 — PLH shadow-folder (`CA-PLH-015`) -- **What:** flag when a `plugin.json` component-path key (`commands`/`agents`/`skills`/`hooks`) +### Feature 1 — PLH shadow-folder (`CA-PLH-015`) ✅ DONE (commit `7abc5a1`) +- **Verifiseringsplikt correction (2026-06-19):** the field set was pinned against + `code.claude.com/docs/.../path-behavior-rules`. Only the **replaces** category truly shadows: + shipped set = `commands`/`agents`/`outputStyles`. **`skills` excluded** — it *adds to* the + default `skills/` scan (both load, never a shadow); **`hooks`/`mcpServers`/`lspServers` + excluded** — own merge rules, not a folder-shadow. Experimental `themes`/`monitors` omitted + (docs warn their schema may change). Explicit-address exception honored + (`"commands": ["./commands/x.md"]` not flagged). +5 tests (936→941), suite green, self-audit + A/A, count 13, gitleaks clean. Pushed. +- **What:** flag when a `plugin.json` component-path key (`commands`/`agents`/`outputStyles`) points at a **custom path** while the **default folder of that name also exists** in the plugin, - so one silently shadows the other. Mirrors CC's warning in `/doctor` & `claude plugin list` - (introduced ~2.1.140; 2.1.142 names every conflicting key). + so the default is silently ignored. Mirrors CC's warning in `/doctor` & `claude plugin list` + (~2.1.140). _(Original plan listed `commands/agents/skills/hooks` — corrected above.)_ - **Where:** `scanners/plugin-health-scanner.mjs` (per-plugin loop; the scanner already reads `plugin.json` but only checks `name`/`description`/`version`). Add component-path-key parsing. - **Severity:** MEDIUM — silently-shadowed components = dead config (a whole command/skill/agent