diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index b3767a7..404d466 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "superpowers-zh", "description": "AI 编程超能力中文增强版:20 个 skills(14 翻译 + 6 中国原创),支持 Claude Code / Hermes Agent / Cursor / Claw Code 等 17 款工具", - "version": "1.1.8", + "version": "1.2.1", "author": { "name": "jnMetaCode", "url": "https://github.com/jnMetaCode" diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index c28e9b7..d4383cf 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -2,7 +2,7 @@ "name": "superpowers-zh", "displayName": "Superpowers 中文版", "description": "AI 编程超能力中文增强版:20 个 skills(14 翻译 + 6 中国原创),支持 Cursor / Claude Code / Hermes Agent / Claw Code 等 17 款工具", - "version": "1.1.8", + "version": "1.2.1", "author": { "name": "jnMetaCode", "url": "https://github.com/jnMetaCode" diff --git a/package.json b/package.json index 43da296..f216d5f 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,9 @@ "bin": { "superpowers-zh": "bin/superpowers-zh.js" }, + "scripts": { + "version": "node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .cursor-plugin/plugin.json" + }, "files": [ "bin/", "skills/", diff --git a/scripts/sync-plugin-version.js b/scripts/sync-plugin-version.js new file mode 100644 index 0000000..ee2581d --- /dev/null +++ b/scripts/sync-plugin-version.js @@ -0,0 +1,30 @@ +#!/usr/bin/env node +// 把 package.json 的 version 同步到 plugin manifest +// 由 npm version 钩子触发,跑在 version commit 创建之前 +import { readFileSync, writeFileSync } from 'fs'; +import { resolve, dirname } from 'path'; +import { fileURLToPath } from 'url'; + +const root = resolve(dirname(fileURLToPath(import.meta.url)), '..'); +const pkg = JSON.parse(readFileSync(resolve(root, 'package.json'), 'utf8')); +const targets = [ + '.claude-plugin/plugin.json', + '.cursor-plugin/plugin.json', +]; + +let touched = 0; +for (const rel of targets) { + const path = resolve(root, rel); + const text = readFileSync(path, 'utf8'); + const json = JSON.parse(text); + if (json.version === pkg.version) continue; + // 只替换顶层 version 字段一行,保留原文件其他字段的格式(数组单行/多行、缩进等) + const updated = text.replace(/("version":\s*")[^"]+(")/, `$1${pkg.version}$2`); + if (updated === text) { + throw new Error(`未能在 ${rel} 中定位 version 字段`); + } + writeFileSync(path, updated, 'utf8'); + console.log(` ${rel}: ${json.version} -> ${pkg.version}`); + touched++; +} +if (touched === 0) console.log(` plugin manifests already at ${pkg.version}`);