From aa96279ecc9b0b043d72afd8704305396b1052f9 Mon Sep 17 00:00:00 2001 From: S1lverline Date: Tue, 14 Apr 2026 23:37:10 +0900 Subject: [PATCH] fix(harness-audit): detect ECC plugin under marketplaces/ subdirectory `findPluginInstall()` in `scripts/harness-audit.js` scans two candidate roots: {rootDir}/.claude/plugins/ {HOME}/.claude/plugins/ Current Claude Code marketplace installs live one directory deeper: {HOME}/.claude/plugins/marketplaces/{ecc,everything-claude-code}/... As a result, running `node scripts/harness-audit.js repo` on any consumer project reports `consumer-plugin-install: false` even when ECC is fully installed via marketplace, costing 4 points from Tool Coverage. Add the `marketplaces/` intermediate directory to `candidateRoots` so both legacy and current install layouts are recognized. The change is purely additive: existing candidate paths still resolve, and the new ones only match when the marketplace layout is present. Reproduction: 1. Install ECC via Claude Code plugin marketplace 2. cd into any consumer project 3. node ~/.claude/plugins/marketplaces/everything-claude-code/scripts/harness-audit.js repo 4. Observe consumer-plugin-install=false despite a working install --- scripts/harness-audit.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/harness-audit.js b/scripts/harness-audit.js index 6180eb48..4eb6b7b2 100644 --- a/scripts/harness-audit.js +++ b/scripts/harness-audit.js @@ -196,7 +196,9 @@ function findPluginInstall(rootDir) { ]; const candidateRoots = [ path.join(rootDir, '.claude', 'plugins'), + path.join(rootDir, '.claude', 'plugins', 'marketplaces'), homeDir && path.join(homeDir, '.claude', 'plugins'), + homeDir && path.join(homeDir, '.claude', 'plugins', 'marketplaces'), ].filter(Boolean); const candidates = candidateRoots.flatMap((pluginsDir) => pluginDirs.flatMap((pluginDir) => [