From a25a8c78af0127b6598bb4da8798fd9cdf04a357 Mon Sep 17 00:00:00 2001 From: "SKh." Date: Wed, 18 Feb 2026 15:36:16 -0500 Subject: [PATCH 1/7] feat: validate plugin skills config for claude and codex --- .../.claude/skills/validate-plugin/SKILL.md | 1 + .../.codex/skills/validate-plugin/SKILL.md | 6 ++ .../.config/AGENTS/skills/validate-plugin.md | 71 +++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 packages/create-plugin/templates/common/.claude/skills/validate-plugin/SKILL.md create mode 100644 packages/create-plugin/templates/common/.codex/skills/validate-plugin/SKILL.md create mode 100644 packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md diff --git a/packages/create-plugin/templates/common/.claude/skills/validate-plugin/SKILL.md b/packages/create-plugin/templates/common/.claude/skills/validate-plugin/SKILL.md new file mode 100644 index 0000000000..14685c2c33 --- /dev/null +++ b/packages/create-plugin/templates/common/.claude/skills/validate-plugin/SKILL.md @@ -0,0 +1 @@ +@../../../../.config/AGENTS/skills/validate-plugin.md diff --git a/packages/create-plugin/templates/common/.codex/skills/validate-plugin/SKILL.md b/packages/create-plugin/templates/common/.codex/skills/validate-plugin/SKILL.md new file mode 100644 index 0000000000..f265c46ed2 --- /dev/null +++ b/packages/create-plugin/templates/common/.codex/skills/validate-plugin/SKILL.md @@ -0,0 +1,6 @@ +--- +name: validate-plugin +description: validate a Grafana plugin using the official Grafana plugin validator +--- + +@../../../../.config/AGENTS/skills/validate-plugin.md diff --git a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md new file mode 100644 index 0000000000..4deb8e6a09 --- /dev/null +++ b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md @@ -0,0 +1,71 @@ +# Validate Grafana Plugin + +## Important + +Always use the bash commands below directly. Do NOT use MCP tools for validation. + +## Usage + +``` +/validate-plugin [path-to-plugin-dir] +``` + +If no path is provided, defaults to the current directory. + +## Steps + +1. Check if `npx` or `docker` is available. npx is preferred, docker is the fallback: + ```bash + command -v npx >/dev/null 2>&1 && echo "VALIDATOR=npx" || { command -v docker >/dev/null 2>&1 && echo "VALIDATOR=docker"; } || echo "VALIDATOR=none" + ``` + If neither is found (`VALIDATOR=none`), stop immediately and tell the user: "Neither npx nor docker is installed. Please install Node.js (for npx) or Docker to run the plugin validator." + +2. Find `src/plugin.json` (or `plugin.json`) in the plugin directory and extract the plugin ID and whether it has a backend: + ```bash + PLUGIN_ID=$(grep '"id"' < src/plugin.json | sed -E 's/.*"id" *: *"(.*)".*/\1/') + HAS_BACKEND=$(grep -c '"backend" *: *true' src/plugin.json || true) + ``` + +3. Build the frontend following the build instructions in `.config/AGENTS/instructions.md`: + ```bash + npm run build + ``` + If the build fails, stop and report the error to the user. + +4. If `HAS_BACKEND` is non-zero (backend plugin detected), build the backend following the build instructions in `.config/AGENTS/instructions.md`: + - The backend must be built using `mage` with the build targets provided by the Grafana plugin Go SDK: + ```bash + mage -v + ``` + - If `mage` is not installed, stop and tell the user: "mage is required to build the backend. Install it from https://magefile.org or run: go install github.com/magefile/mage@latest" + - If the build fails, stop and report the error to the user. + +5. Build the plugin zip archive for validation with a timestamp: + ```bash + TIMESTAMP=$(date +%Y%m%d-%H%M%S) + ZIP_NAME="${PLUGIN_ID}-${TIMESTAMP}.zip" + cp -r dist "${PLUGIN_ID}" + zip -qr "${ZIP_NAME}" "${PLUGIN_ID}" + rm -rf "${PLUGIN_ID}" + ``` + +6. Run the validator with JSON output using whichever tool was found in step 1: + If npx (preferred): + ```bash + npx -y @grafana/plugin-validator@latest -jsonOutput -sourceCodeUri file://. "${ZIP_NAME}" + ``` + If docker (fallback): + ```bash + docker run --pull=always \ + -v "$(pwd)/${ZIP_NAME}:/archive.zip:ro" \ + -v "$(pwd):/source:ro" \ + grafana/plugin-validator-cli -jsonOutput -sourceCodeUri file:///source /archive.zip + ``` + +7. Read and interpret the JSON output. Summarize: + - Total errors, warnings, and passed checks + - List each error with its title and detail + - List each warning with its title and detail + - Provide actionable suggestions to fix each issue + +8. Inform the user that a zip file was created (include the filename) and suggest they remove it manually when done. Do NOT run `rm` to delete the zip — this tool does not have permission to remove files. From 3c7f0b62c060cffbedff8797b156cb048621c9c8 Mon Sep 17 00:00:00 2001 From: "SKh." Date: Wed, 18 Feb 2026 18:47:17 -0500 Subject: [PATCH 2/7] fix: reviews addressed --- .../.config/AGENTS/skills/validate-plugin.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md index 4deb8e6a09..ae7a6304cd 100644 --- a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md +++ b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md @@ -7,22 +7,22 @@ Always use the bash commands below directly. Do NOT use MCP tools for validation ## Usage ``` -/validate-plugin [path-to-plugin-dir] +/validate-plugin ``` -If no path is provided, defaults to the current directory. +Run this from the root of your plugin directory. ## Steps 1. Check if `npx` or `docker` is available. npx is preferred, docker is the fallback: ```bash - command -v npx >/dev/null 2>&1 && echo "VALIDATOR=npx" || { command -v docker >/dev/null 2>&1 && echo "VALIDATOR=docker"; } || echo "VALIDATOR=none" + VALIDATOR=$(command -v npx >/dev/null 2>&1 && echo "npx" || (command -v docker >/dev/null 2>&1 && echo "docker" || echo "none")) ``` - If neither is found (`VALIDATOR=none`), stop immediately and tell the user: "Neither npx nor docker is installed. Please install Node.js (for npx) or Docker to run the plugin validator." + If `VALIDATOR` is `none`, stop immediately and tell the user: "Neither npx nor docker is installed. Please install Node.js (for npx) or Docker to run the plugin validator." -2. Find `src/plugin.json` (or `plugin.json`) in the plugin directory and extract the plugin ID and whether it has a backend: +2. Find `src/plugin.json` (or `plugin.json`) in the plugin directory and extract the plugin ID and whether it has a backend. Sanitize `PLUGIN_ID` to only allow characters valid in a Grafana plugin ID: ```bash - PLUGIN_ID=$(grep '"id"' < src/plugin.json | sed -E 's/.*"id" *: *"(.*)".*/\1/') + PLUGIN_ID=$(grep '"id"' < src/plugin.json | sed -E 's/.*"id" *: *"(.*)".*/\1/' | tr -cd 'a-zA-Z0-9._-') HAS_BACKEND=$(grep -c '"backend" *: *true' src/plugin.json || true) ``` @@ -49,16 +49,16 @@ If no path is provided, defaults to the current directory. rm -rf "${PLUGIN_ID}" ``` -6. Run the validator with JSON output using whichever tool was found in step 1: - If npx (preferred): +6. Run the validator with JSON output using `$VALIDATOR` from step 1: + If `$VALIDATOR` is `npx`: ```bash npx -y @grafana/plugin-validator@latest -jsonOutput -sourceCodeUri file://. "${ZIP_NAME}" ``` - If docker (fallback): + If `$VALIDATOR` is `docker`: ```bash docker run --pull=always \ - -v "$(pwd)/${ZIP_NAME}:/archive.zip:ro" \ - -v "$(pwd):/source:ro" \ + -v "${PWD}/${ZIP_NAME}:/archive.zip:ro" \ + -v "${PWD}:/source:ro" \ grafana/plugin-validator-cli -jsonOutput -sourceCodeUri file:///source /archive.zip ``` From 5e51f39455875366584e41dfddd539ed2878d4d1 Mon Sep 17 00:00:00 2001 From: "SKh." Date: Thu, 19 Feb 2026 08:47:16 -0500 Subject: [PATCH 3/7] ref: rename RUN ENGINE --- .../common/.config/AGENTS/skills/validate-plugin.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md index ae7a6304cd..8bec542f62 100644 --- a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md +++ b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md @@ -16,9 +16,9 @@ Run this from the root of your plugin directory. 1. Check if `npx` or `docker` is available. npx is preferred, docker is the fallback: ```bash - VALIDATOR=$(command -v npx >/dev/null 2>&1 && echo "npx" || (command -v docker >/dev/null 2>&1 && echo "docker" || echo "none")) + RUN_ENGINE=$(command -v npx >/dev/null 2>&1 && echo "npx" || (command -v docker >/dev/null 2>&1 && echo "docker" || echo "none")) ``` - If `VALIDATOR` is `none`, stop immediately and tell the user: "Neither npx nor docker is installed. Please install Node.js (for npx) or Docker to run the plugin validator." + If `RUN_ENGINE` is `none`, stop immediately and tell the user: "Neither npx nor docker is installed. Please install Node.js (for npx) or Docker to run the plugin validator." 2. Find `src/plugin.json` (or `plugin.json`) in the plugin directory and extract the plugin ID and whether it has a backend. Sanitize `PLUGIN_ID` to only allow characters valid in a Grafana plugin ID: ```bash @@ -49,12 +49,12 @@ Run this from the root of your plugin directory. rm -rf "${PLUGIN_ID}" ``` -6. Run the validator with JSON output using `$VALIDATOR` from step 1: - If `$VALIDATOR` is `npx`: +6. Run the validator with JSON output using `$RUN_ENGINE` from step 1: + If `$RUN_ENGINE` is `npx`: ```bash npx -y @grafana/plugin-validator@latest -jsonOutput -sourceCodeUri file://. "${ZIP_NAME}" ``` - If `$VALIDATOR` is `docker`: + If `$RUN_ENGINE` is `docker`: ```bash docker run --pull=always \ -v "${PWD}/${ZIP_NAME}:/archive.zip:ro" \ From 9125ac089d9e83e9a1f14449bb93ee8a23e88119 Mon Sep 17 00:00:00 2001 From: "SKh." Date: Tue, 24 Feb 2026 12:07:02 -0500 Subject: [PATCH 4/7] ref: add package manager finding logic and extract build-plugin --- .../.claude/skills/build-plugin/SKILL.md | 1 + .../.codex/skills/build-plugin/SKILL.md | 6 +++ .../.config/AGENTS/skills/build-plugin.md | 47 +++++++++++++++++++ .../.config/AGENTS/skills/validate-plugin.md | 30 ++++-------- 4 files changed, 62 insertions(+), 22 deletions(-) create mode 100644 packages/create-plugin/templates/common/.claude/skills/build-plugin/SKILL.md create mode 100644 packages/create-plugin/templates/common/.codex/skills/build-plugin/SKILL.md create mode 100644 packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md diff --git a/packages/create-plugin/templates/common/.claude/skills/build-plugin/SKILL.md b/packages/create-plugin/templates/common/.claude/skills/build-plugin/SKILL.md new file mode 100644 index 0000000000..97f2d191a3 --- /dev/null +++ b/packages/create-plugin/templates/common/.claude/skills/build-plugin/SKILL.md @@ -0,0 +1 @@ +@../../../../.config/AGENTS/skills/build-plugin.md diff --git a/packages/create-plugin/templates/common/.codex/skills/build-plugin/SKILL.md b/packages/create-plugin/templates/common/.codex/skills/build-plugin/SKILL.md new file mode 100644 index 0000000000..c49a091550 --- /dev/null +++ b/packages/create-plugin/templates/common/.codex/skills/build-plugin/SKILL.md @@ -0,0 +1,6 @@ +--- +name: build-plugin +description: build a Grafana plugin using the standard build process (frontend and backend if applicable) +--- + +@../../../../.config/AGENTS/skills/build-plugin.md diff --git a/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md b/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md new file mode 100644 index 0000000000..7a5a40152a --- /dev/null +++ b/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md @@ -0,0 +1,47 @@ +# Build Grafana Plugin + +## Usage + +``` +/build-plugin +``` + +Run this from the root of your plugin directory. + +## Steps + +1. Detect the package manager. Check the `packageManager` field in `package.json` first, then fall back to lock file detection: + ```bash + PKG_MANAGER=$( + if grep -q '"packageManager"' package.json 2>/dev/null; then + grep '"packageManager"' package.json | sed -E 's/.*"packageManager" *: *"([^@]+).*/\1/' + elif [ -f "pnpm-lock.yaml" ]; then + echo "pnpm" + elif [ -f "bun.lock" ] || [ -f "bun.lockb" ]; then + echo "bun" + elif [ -f "yarn.lock" ]; then + echo "yarn" + else + echo "npm" + fi + ) + ``` + +2. Check if the plugin has a backend: + ```bash + HAS_BACKEND=$(grep -c '"backend" *: *true' src/plugin.json || true) + ``` + +3. Build the frontend following the build instructions in `.config/AGENTS/instructions.md`: + ```bash + ${PKG_MANAGER} run build + ``` + If the build fails, stop and report the error to the user. + +4. If `HAS_BACKEND` is non-zero (backend plugin detected), build the backend following the build instructions in `.config/AGENTS/instructions.md`: + - The backend must be built using `mage` with the build targets provided by the Grafana plugin Go SDK: + ```bash + mage -v + ``` + - If `mage` is not installed, stop and tell the user: "mage is required to build the backend. Install it from https://magefile.org or run: go install github.com/magefile/mage@latest" + - If the build fails, stop and report the error to the user. diff --git a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md index 8bec542f62..949f058cbe 100644 --- a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md +++ b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md @@ -20,27 +20,14 @@ Run this from the root of your plugin directory. ``` If `RUN_ENGINE` is `none`, stop immediately and tell the user: "Neither npx nor docker is installed. Please install Node.js (for npx) or Docker to run the plugin validator." -2. Find `src/plugin.json` (or `plugin.json`) in the plugin directory and extract the plugin ID and whether it has a backend. Sanitize `PLUGIN_ID` to only allow characters valid in a Grafana plugin ID: +2. Extract the plugin ID from `src/plugin.json` (or `plugin.json`). Sanitize `PLUGIN_ID` to only allow characters valid in a Grafana plugin ID: ```bash PLUGIN_ID=$(grep '"id"' < src/plugin.json | sed -E 's/.*"id" *: *"(.*)".*/\1/' | tr -cd 'a-zA-Z0-9._-') - HAS_BACKEND=$(grep -c '"backend" *: *true' src/plugin.json || true) ``` -3. Build the frontend following the build instructions in `.config/AGENTS/instructions.md`: - ```bash - npm run build - ``` - If the build fails, stop and report the error to the user. - -4. If `HAS_BACKEND` is non-zero (backend plugin detected), build the backend following the build instructions in `.config/AGENTS/instructions.md`: - - The backend must be built using `mage` with the build targets provided by the Grafana plugin Go SDK: - ```bash - mage -v - ``` - - If `mage` is not installed, stop and tell the user: "mage is required to build the backend. Install it from https://magefile.org or run: go install github.com/magefile/mage@latest" - - If the build fails, stop and report the error to the user. +3. Run the `build-plugin` skill to build the plugin (frontend and backend if applicable). -5. Build the plugin zip archive for validation with a timestamp: +4. Build the plugin zip archive for validation with a timestamp: ```bash TIMESTAMP=$(date +%Y%m%d-%H%M%S) ZIP_NAME="${PLUGIN_ID}-${TIMESTAMP}.zip" @@ -49,23 +36,22 @@ Run this from the root of your plugin directory. rm -rf "${PLUGIN_ID}" ``` -6. Run the validator with JSON output using `$RUN_ENGINE` from step 1: +5. Run the validator with JSON output using `$RUN_ENGINE` from step 1 and `$ZIP_NAME` from step 4: If `$RUN_ENGINE` is `npx`: ```bash - npx -y @grafana/plugin-validator@latest -jsonOutput -sourceCodeUri file://. "${ZIP_NAME}" + npx -y @grafana/plugin-validator@latest -jsonOutput "${ZIP_NAME}" ``` If `$RUN_ENGINE` is `docker`: ```bash docker run --pull=always \ -v "${PWD}/${ZIP_NAME}:/archive.zip:ro" \ - -v "${PWD}:/source:ro" \ - grafana/plugin-validator-cli -jsonOutput -sourceCodeUri file:///source /archive.zip + grafana/plugin-validator-cli -jsonOutput /archive.zip ``` -7. Read and interpret the JSON output. Summarize: +6. Read and interpret the JSON output. Summarize: - Total errors, warnings, and passed checks - List each error with its title and detail - List each warning with its title and detail - Provide actionable suggestions to fix each issue -8. Inform the user that a zip file was created (include the filename) and suggest they remove it manually when done. Do NOT run `rm` to delete the zip — this tool does not have permission to remove files. +7. Inform the user that a zip file was created (include the filename) and suggest they remove it manually when done. Do NOT run `rm` to delete the zip — this tool does not have permission to remove files. From 7e030456ba741370ed8edd910fb895c35fc6a324 Mon Sep 17 00:00:00 2001 From: "SKh." Date: Tue, 24 Feb 2026 13:43:31 -0500 Subject: [PATCH 5/7] ref: point to package section of instructions.md --- .../common/.config/AGENTS/skills/build-plugin.md | 8 ++++++-- .../common/.config/AGENTS/skills/validate-plugin.md | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md b/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md index 7a5a40152a..83f8df5d5d 100644 --- a/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md +++ b/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md @@ -32,16 +32,20 @@ Run this from the root of your plugin directory. HAS_BACKEND=$(grep -c '"backend" *: *true' src/plugin.json || true) ``` -3. Build the frontend following the build instructions in `.config/AGENTS/instructions.md`: +3. Build the frontend following the build instructions in `.config/AGENTS/instructions.md`. For detailed packaging steps refer to the packaging documentation linked there: ```bash ${PKG_MANAGER} run build ``` If the build fails, stop and report the error to the user. -4. If `HAS_BACKEND` is non-zero (backend plugin detected), build the backend following the build instructions in `.config/AGENTS/instructions.md`: +4. If `HAS_BACKEND` is non-zero (backend plugin detected), build the backend following the build instructions and packaging documentation linked in `.config/AGENTS/instructions.md`: - The backend must be built using `mage` with the build targets provided by the Grafana plugin Go SDK: ```bash mage -v ``` - If `mage` is not installed, stop and tell the user: "mage is required to build the backend. Install it from https://magefile.org or run: go install github.com/magefile/mage@latest" - If the build fails, stop and report the error to the user. + - After a successful backend build, ensure all backend binaries in `dist/` have execute permissions: + ```bash + chmod 0755 dist/gpx_* + ``` diff --git a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md index 949f058cbe..e466195d14 100644 --- a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md +++ b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md @@ -2,7 +2,7 @@ ## Important -Always use the bash commands below directly. Do NOT use MCP tools for validation. +Always use the bash commands below directly. ## Usage @@ -39,7 +39,7 @@ Run this from the root of your plugin directory. 5. Run the validator with JSON output using `$RUN_ENGINE` from step 1 and `$ZIP_NAME` from step 4: If `$RUN_ENGINE` is `npx`: ```bash - npx -y @grafana/plugin-validator@latest -jsonOutput "${ZIP_NAME}" + npx -y @grafana/plugin-validator@latest -jsonOutput $ZIP_NAME ``` If `$RUN_ENGINE` is `docker`: ```bash From 5dcb008e5d8406b6fe23fe55e46bc07da0c6f762 Mon Sep 17 00:00:00 2001 From: "SKh." Date: Wed, 25 Feb 2026 09:16:17 -0500 Subject: [PATCH 6/7] chore: network access config for codex --- packages/create-plugin/templates/common/.codex/config.toml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 packages/create-plugin/templates/common/.codex/config.toml diff --git a/packages/create-plugin/templates/common/.codex/config.toml b/packages/create-plugin/templates/common/.codex/config.toml new file mode 100644 index 0000000000..cd7c03a2ee --- /dev/null +++ b/packages/create-plugin/templates/common/.codex/config.toml @@ -0,0 +1,2 @@ +[sandbox_workspace_write] +network_access = true \ No newline at end of file From 26531d478fb6f37bf8d81ceea966b7726999a5d6 Mon Sep 17 00:00:00 2001 From: "SKh." Date: Wed, 25 Feb 2026 09:32:47 -0500 Subject: [PATCH 7/7] fix: use plugins cache folder for running the npx validator --- packages/create-plugin/templates/common/.codex/config.toml | 2 -- .../templates/common/.config/AGENTS/skills/build-plugin.md | 2 -- .../templates/common/.config/AGENTS/skills/validate-plugin.md | 2 +- 3 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 packages/create-plugin/templates/common/.codex/config.toml diff --git a/packages/create-plugin/templates/common/.codex/config.toml b/packages/create-plugin/templates/common/.codex/config.toml deleted file mode 100644 index cd7c03a2ee..0000000000 --- a/packages/create-plugin/templates/common/.codex/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[sandbox_workspace_write] -network_access = true \ No newline at end of file diff --git a/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md b/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md index 83f8df5d5d..dcad7b6674 100644 --- a/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md +++ b/packages/create-plugin/templates/common/.config/AGENTS/skills/build-plugin.md @@ -17,8 +17,6 @@ Run this from the root of your plugin directory. grep '"packageManager"' package.json | sed -E 's/.*"packageManager" *: *"([^@]+).*/\1/' elif [ -f "pnpm-lock.yaml" ]; then echo "pnpm" - elif [ -f "bun.lock" ] || [ -f "bun.lockb" ]; then - echo "bun" elif [ -f "yarn.lock" ]; then echo "yarn" else diff --git a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md index e466195d14..096f69002f 100644 --- a/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md +++ b/packages/create-plugin/templates/common/.config/AGENTS/skills/validate-plugin.md @@ -39,7 +39,7 @@ Run this from the root of your plugin directory. 5. Run the validator with JSON output using `$RUN_ENGINE` from step 1 and `$ZIP_NAME` from step 4: If `$RUN_ENGINE` is `npx`: ```bash - npx -y @grafana/plugin-validator@latest -jsonOutput $ZIP_NAME + npx --cache .cache/npm -y @grafana/plugin-validator@latest -jsonOutput $ZIP_NAME ``` If `$RUN_ENGINE` is `docker`: ```bash