From a7e10e560ab703123c348f404c30531fd7c500eb Mon Sep 17 00:00:00 2001 From: Steve Calvert Date: Sun, 22 Feb 2026 16:35:00 -0800 Subject: [PATCH 1/4] docs: add release-it bumper step to plugin checklist Co-Authored-By: Claude Sonnet 4.6 (1M context) --- .../skills/glean-plugin-checklist/SKILL.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.claude/skills/glean-plugin-checklist/SKILL.md b/.claude/skills/glean-plugin-checklist/SKILL.md index 1adf2b1..7385fde 100644 --- a/.claude/skills/glean-plugin-checklist/SKILL.md +++ b/.claude/skills/glean-plugin-checklist/SKILL.md @@ -120,6 +120,27 @@ When releasing a new version: 2. Update `package.json` version 3. Update ALL `plugins/*/.claude-plugin/plugin.json` versions +### 6. Add to .release-it.json bumper (REQUIRED) + +Path: `.release-it.json` + +Add an entry to the `plugins["@release-it/bumper"].out` array, after the last existing entry: + +```json +{ + "file": "plugins//.claude-plugin/plugin.json", + "path": "version" +} +``` + +**If you skip this step**, the plugin version will fall behind the marketplace version on every future release. This failure is silent — no error will be thrown and no CI check will catch it. + +Verify the entry was added: + +```bash +node -e "const c=JSON.parse(require('fs').readFileSync('.release-it.json','utf8')); const found=c.plugins['@release-it/bumper'].out.some(o=>o.file.includes('')); console.log(found?'found in bumper':'MISSING from bumper')" +``` + ## Verification Commands After adding a plugin, verify with: @@ -138,6 +159,9 @@ done # Check README mentions the plugin grep "" README.md + +# Check .release-it.json bumper includes the plugin +node -e "const c=JSON.parse(require('fs').readFileSync('.release-it.json','utf8')); const found=c.plugins['@release-it/bumper'].out.some(o=>o.file.includes('')); console.log(found?'in bumper: ok':'MISSING from bumper')" ``` ## Common Mistakes to Avoid From b74078df6eb10e8d90c09313129c5ba0613832ed Mon Sep 17 00:00:00 2001 From: Steve Calvert Date: Mon, 23 Feb 2026 10:14:42 -0800 Subject: [PATCH 2/4] refactor: extract bumper check into scripts/check-bumper.sh --- .../skills/glean-plugin-checklist/SKILL.md | 4 ++-- .../scripts/check-bumper.sh | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 .claude/skills/glean-plugin-checklist/scripts/check-bumper.sh diff --git a/.claude/skills/glean-plugin-checklist/SKILL.md b/.claude/skills/glean-plugin-checklist/SKILL.md index 7385fde..169042e 100644 --- a/.claude/skills/glean-plugin-checklist/SKILL.md +++ b/.claude/skills/glean-plugin-checklist/SKILL.md @@ -138,7 +138,7 @@ Add an entry to the `plugins["@release-it/bumper"].out` array, after the last ex Verify the entry was added: ```bash -node -e "const c=JSON.parse(require('fs').readFileSync('.release-it.json','utf8')); const found=c.plugins['@release-it/bumper'].out.some(o=>o.file.includes('')); console.log(found?'found in bumper':'MISSING from bumper')" +bash .claude/skills/glean-plugin-checklist/scripts/check-bumper.sh ``` ## Verification Commands @@ -161,7 +161,7 @@ done grep "" README.md # Check .release-it.json bumper includes the plugin -node -e "const c=JSON.parse(require('fs').readFileSync('.release-it.json','utf8')); const found=c.plugins['@release-it/bumper'].out.some(o=>o.file.includes('')); console.log(found?'in bumper: ok':'MISSING from bumper')" +bash .claude/skills/glean-plugin-checklist/scripts/check-bumper.sh ``` ## Common Mistakes to Avoid diff --git a/.claude/skills/glean-plugin-checklist/scripts/check-bumper.sh b/.claude/skills/glean-plugin-checklist/scripts/check-bumper.sh new file mode 100644 index 0000000..eb51c0d --- /dev/null +++ b/.claude/skills/glean-plugin-checklist/scripts/check-bumper.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# Check if a plugin is registered in the .release-it.json bumper. +# Usage: bash scripts/check-bumper.sh +# Exit code 0 = found, 1 = missing + +set -euo pipefail + +PLUGIN_NAME="${1:?Usage: $0 }" + +node -e " +const fs = require('fs'); +const config = JSON.parse(fs.readFileSync('.release-it.json', 'utf8')); +const found = config.plugins['@release-it/bumper'].out.some( + o => o.file.includes('${PLUGIN_NAME}') +); +if (found) { + console.log('in bumper: ok'); + process.exit(0); +} else { + console.error('MISSING from bumper: add plugins/${PLUGIN_NAME}/.claude-plugin/plugin.json to .release-it.json'); + process.exit(1); +} +" From 4d4cd7c9460939901c7dd611284b7ae2ffd36f2d Mon Sep 17 00:00:00 2001 From: Steve Calvert Date: Mon, 23 Feb 2026 10:17:19 -0800 Subject: [PATCH 3/4] chore: ignore docs/plans directory --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 9cb3102..a0d361e 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,6 @@ plugins/**/[0-9]*.[0-9]*.[0-9]* # Bun lockfile (not used in this project) bun.lock + +# Local planning documents +docs/plans/ From f3583cd2416892c3015d5921320228182a65ead3 Mon Sep 17 00:00:00 2001 From: Steve Calvert Date: Mon, 23 Feb 2026 10:20:55 -0800 Subject: [PATCH 4/4] refactor: use node script instead of bash wrapper for bumper check --- .../skills/glean-plugin-checklist/SKILL.md | 4 ++-- .../scripts/check-bumper.mjs | 24 +++++++++++++++++++ .../scripts/check-bumper.sh | 23 ------------------ 3 files changed, 26 insertions(+), 25 deletions(-) create mode 100644 .claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs delete mode 100644 .claude/skills/glean-plugin-checklist/scripts/check-bumper.sh diff --git a/.claude/skills/glean-plugin-checklist/SKILL.md b/.claude/skills/glean-plugin-checklist/SKILL.md index 169042e..edf7306 100644 --- a/.claude/skills/glean-plugin-checklist/SKILL.md +++ b/.claude/skills/glean-plugin-checklist/SKILL.md @@ -138,7 +138,7 @@ Add an entry to the `plugins["@release-it/bumper"].out` array, after the last ex Verify the entry was added: ```bash -bash .claude/skills/glean-plugin-checklist/scripts/check-bumper.sh +node .claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs ``` ## Verification Commands @@ -161,7 +161,7 @@ done grep "" README.md # Check .release-it.json bumper includes the plugin -bash .claude/skills/glean-plugin-checklist/scripts/check-bumper.sh +node .claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs ``` ## Common Mistakes to Avoid diff --git a/.claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs b/.claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs new file mode 100644 index 0000000..1494c5a --- /dev/null +++ b/.claude/skills/glean-plugin-checklist/scripts/check-bumper.mjs @@ -0,0 +1,24 @@ +#!/usr/bin/env node +// Check if a plugin is registered in the .release-it.json bumper. +// Usage: node scripts/check-bumper.mjs +// Exit code 0 = found, 1 = missing + +import { readFileSync } from 'fs'; + +const pluginName = process.argv[2]; +if (!pluginName) { + console.error('Usage: node scripts/check-bumper.mjs '); + process.exit(1); +} + +const config = JSON.parse(readFileSync('.release-it.json', 'utf8')); +const found = config.plugins['@release-it/bumper'].out.some( + o => o.file.includes(pluginName) +); + +if (found) { + console.log('in bumper: ok'); +} else { + console.error(`MISSING from bumper: add plugins/${pluginName}/.claude-plugin/plugin.json to .release-it.json`); + process.exit(1); +} diff --git a/.claude/skills/glean-plugin-checklist/scripts/check-bumper.sh b/.claude/skills/glean-plugin-checklist/scripts/check-bumper.sh deleted file mode 100644 index eb51c0d..0000000 --- a/.claude/skills/glean-plugin-checklist/scripts/check-bumper.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# Check if a plugin is registered in the .release-it.json bumper. -# Usage: bash scripts/check-bumper.sh -# Exit code 0 = found, 1 = missing - -set -euo pipefail - -PLUGIN_NAME="${1:?Usage: $0 }" - -node -e " -const fs = require('fs'); -const config = JSON.parse(fs.readFileSync('.release-it.json', 'utf8')); -const found = config.plugins['@release-it/bumper'].out.some( - o => o.file.includes('${PLUGIN_NAME}') -); -if (found) { - console.log('in bumper: ok'); - process.exit(0); -} else { - console.error('MISSING from bumper: add plugins/${PLUGIN_NAME}/.claude-plugin/plugin.json to .release-it.json'); - process.exit(1); -} -"