nav-upgrade nav-upgrade

自动化Navigator插件更新,包括版本检测、冲突解决和更新后验证,以确保插件始终保持最新状态并集成新功能。

DevOps 0 次安装 0 次浏览 更新于 3/4/2026

nav-upgrade

自动化Navigator插件更新。检测当前版本,更新插件,验证安装,更新项目CLAUDE.md,并验证新功能。当用户提及升级Navigator或获取新功能时自动调用。

Navigator升级技能

自动化Navigator插件更新,包括版本检测、冲突解决和更新后验证。

何时调用

自动调用当用户说:

  • “更新Navigator”
  • “升级Navigator插件”
  • “获取最新Navigator版本”
  • “更新到Navigator v3.3.0”
  • “安装新Navigator功能”
  • “检查Navigator更新”

这个做了什么

6步工作流程

  1. 版本检测:检查当前Navigator版本与最新版本
  2. 插件更新:执行 /plugin update navigator
  3. 验证:确认更新成功
  4. CLAUDE.md更新:通过nav-update-claude更新项目配置
  5. 钩子设置:在项目中安装/更新令牌监控钩子
  6. 功能发现:展示可用的新功能

节省时间:手动更新(10-15分钟)→ 自动化(2分钟)


先决条件

  • Navigator插件已安装
  • 项目已用Navigator初始化
  • 插件更新需要互联网连接

工作流程协议

第1步:版本检测

执行version_detector.py

检查稳定和预发布版本

# 当前安装版本
grep '"version"' .claude-plugin/plugin.json

# 获取所有发布(包括预发布)
curl -s https://api.github.com/repos/alekspetrov/navigator/releases

# 解析:
# - 最新稳定(预发布:false)
# - 最新预发布(预发布:true)
# - 与当前版本比较

输出场景

场景1:稳定更新可用

{
  "current_version": "4.0.0",
  "latest_stable": "4.2.0",
  "latest_prerelease": null,
  "recommendation": "update_to_stable"
}

场景2:预发布可用(用户在稳定版上)

{
  "current_version": "4.0.0",
  "latest_stable": "4.0.0",
  "latest_prerelease": "4.3.0",
  "recommendation": "offer_prerelease_option"
}

提供选择

✅ 您使用的是最新的稳定版本(v4.0.0)

⚡ 有实验版本可用:v4.3.0

v4.3.0新功能(实验):
• 多Claude代理工作流
• 30%成功率(用于简单功能)
• PM集成与工单关闭

选项:
[1] 留在稳定版v4.0.0(推荐)
[2] 尝试实验版v4.3.0(早期采用者)

您的选择 [1-2]:

场景3:已经是最新(稳定或预发布)

✅ 您使用的是v4.3.0(最新的实验版)

最新稳定版:v4.0.0
状态:您已经超过稳定版(测试实验功能)

您版本中的新功能:
- 多Claude工作流
- 子Claude阶段中的任务代理

跳转到第5步(功能发现)。

场景4:在预发布上,有更新的稳定版可用

⚠️  您使用的是v4.3.0(实验版)
最新稳定版:v4.6.0

建议:更新到稳定版v4.6.0
v4.3.0中的实验功能现在已稳定。

第2步:插件更新

基于场景的更新策略

场景2:预发布可用(用户在稳定版上)

当检测到预发布时,使用AskUserQuestion工具提供选择:

✅ 您使用的是最新的稳定版本(v4.0.0)

⚡ 有实验版本可用:v4.3.0

v4.3.0新功能(实验):
• 多Claude代理工作流
• 30%成功率(用于简单功能)
• PM集成与工单关闭

**问题**:您想要哪个版本?

**选项**:
[1] **留在稳定版v4.0.0**(推荐)
    - 生产就绪
    - 无实验功能
    - 最可靠

[2] **尝试实验版v4.3.0**(早期采用者)
    - 多Claude工作流
    - 最新功能
    - 30%完成率
    - 帮助测试新功能

您的选择?

如果用户选择[1](保持稳定)

✓ 保持在v4.0.0(最新稳定版)

无需操作。当您准备好尝试实验功能时,再次运行nav-upgrade。

如果用户选择[2](尝试实验版)

# 卸载当前版本
/plugin uninstall navigator

# 添加市场(如果尚未添加)
/plugin marketplace add alekspetrov/navigator

# 安装特定预发布版本
# 注意:/plugin update只获取稳定版,必须安装特定版本
git clone https://github.com/alekspetrov/navigator.git /tmp/navigator-v4.3.0
cd /tmp/navigator-v4.3.0
git checkout v4.3.0

# 从本地检出安装
/plugin install /tmp/navigator-v4.3.0

然后验证安装

/plugin list | grep navigator
# 应显示:navigator (v4.3.0)

场景1:稳定更新可用

执行/plugin update navigator

监控输出

更新navigator...
✅ Navigator更新到v4.2.0

如果更新失败

❌ 更新失败:[错误信息]

故障排除:
1. 重启Claude Code
2. 尝试:/plugin uninstall navigator && /plugin install navigator
3. 检查互联网连接
4. 报告问题:https://github.com/alekspetrov/navigator/issues

自动重试(一次): 如果更新失败,尝试自动卸载/重新安装:

/plugin uninstall navigator
/plugin marketplace add alekspetrov/navigator
/plugin install navigator

第3步:验证

执行plugin_verifier.py

验证

  1. 插件版本与最新匹配
  2. 新技能在文件系统中注册
  3. 技能可调用

测试新技能(v3.3.0示例):

# 测试visual-regression技能是否存在
ls ~/.config/claude/plugins/navigator/skills/visual-regression/SKILL.md 2>/dev/null || echo "技能未找到"

输出

✅ 更新验证

版本:v3.3.0 ✅
新技能注册:visual-regression ✅
技能可调用:✅

更新成功!

如果验证失败

⚠️ 更新完成但验证失败

问题:visual-regression技能未找到
修复:重启Claude Code以重新加载技能

重启后验证:
"为Button设置视觉回归"

提示用户重启Claude Code。

重要 - 所有更新后都需要重启

Claude Code在会话开始时缓存技能路径。即使更新成功,也需要重启才能加载新技能:

⚠️  需要重启

插件成功更新到vX.Y.Z。
Claude Code在会话开始时缓存技能路径。

要使用新/更新的技能:
1. 关闭Claude Code
2. 重新打开Claude Code
3. 运行"nav start"以验证新版本

不重启:
- 旧技能版本继续运行
- 新技能将不可用
- 可能会看到"技能未找到"错误

这是Claude Code的行为,不是Navigator问题。插件文件正确更新,但活动会话继续使用旧版本的缓存技能路径。


第4步:更新项目CLAUDE.md(自动)

插件更新后,自动调用nav-update-claude技能

🔄 与更新的插件同步项目CLAUDE.md...

✓ 使用GitHub上的模板(v4.3.0)
✓ 提取自定义设置
✓ 生成更新的CLAUDE.md

自动发生什么

  1. 检测到新插件版本(例如,v4.3.0)
  2. 从GitHub获取匹配的模板
  3. 保留项目自定义设置
  4. 在当前项目中更新CLAUDE.md
  5. 显示差异以供审查

模板同步的好处

  • ✅ CLAUDE.md始终与安装的插件版本匹配
  • ✅ 无模板漂移(v4.0模板与v4.3插件)
  • ✅ 可以访问预发布模板
  • ✅ 离线回退到捆绑模板

用户操作所需

审查更改并提交:

git add CLAUDE.md
git commit -m "chore: update CLAUDE.md to Navigator v4.3.0"

查看nav-update-claude技能了解详细信息。


第5步:设置令牌监控钩子

安装或更新项目钩子以监控令牌预算:

# 创建.claude目录(如果不存在)
mkdir -p .claude

# 检查settings.json是否存在
if [ -f ".claude/settings.json" ]; then
  # 备份现有设置
  cp .claude/settings.json .claude/settings.json.backup
  echo "✓ 备份现有.claude/settings.json"
fi

# 写入钩子配置
cat > .claude/settings.json << 'EOF'
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit|Bash|Task",
        "hooks": [
          {
            "type": "command",
            "command": "python3 \"${CLAUDE_PLUGIN_DIR}/hooks/monitor-tokens.py\"",
            "timeout": 5
          }
        ]
      }
    ]
  }
}
EOF

echo "✓ 安装令牌监控钩子"

这能实现什么

  • 在每次工具调用后监控上下文使用情况
  • 在70%使用时警告,85%时发出严重警报
  • 在最佳时机建议/nav:compact
  • 防止长时间会话期间上下文崩溃

输出

✓ 安装令牌监控钩子

v4.6.0中的新功能:
  - 自动上下文预算监控
  - 在达到上下限之前警告
  - 在最佳时机建议紧凑

第6步:升级后设置检查

检查新功能是否需要设置

# 检查有设置要求的技能
if [ -f "$NAVIGATOR_PATH/skills/product-design/setup.sh" ]; then
  # 检查venv是否存在
  if [ ! -d "$NAVIGATOR_PATH/skills/product-design/venv" ]; then
    echo "⚠️  product-design技能需要设置"
    NEEDS_SETUP=true
  fi
fi

如果需要设置,显示说明

⚠️  新功能需要设置

product-design技能(v3.4.0+)需要Python依赖项:

**一次性设置**(30秒):
```bash
cd ~/.claude/plugins/marketplaces/jitd-marketplace/skills/product-design
./setup.sh

这将安装

  • 用于直接Figma连接的Python MCP SDK
  • 95%的编排减少
  • 92%的令牌节省

使用后: “从Figma回顾这个设计:[URL]”


**在TodoWrite中记录设置需求**以跟踪。

---

### 第7步:功能发现

**展示**在更新版本中可用的新功能。

**对于v3.3.0更新**:
````markdown
🎉 Navigator v3.3.0更新完成!

## 新功能可用

### visual-regression技能(新)
5分钟内设置Storybook + Chromatic,而不是2-3小时。

**用法**:

“为ProfileCard设置视觉回归” “为Button组件添加Chromatic” “为Input, Card, Modal配置视觉测试”


**它的作用**:
✅ 生成所有变体的Storybook故事
✅ 配置Chromatic/Percy/BackstopJS
✅ 创建CI工作流(GitHub Actions, GitLab CI)
✅ 添加可访问性测试

**完整的设计管道**(v3.2 + v3.3):
1. "从Figma回顾这个设计"(v3.2)
2. 实施组件
3. "设置视觉回归"(v3.3新)
4. CI中的自动视觉测试

### 更新后的技能计数
- **17个总技能**(之前是16)
- 10个核心Navigator技能
- 7个开发技能

### 集成
visual-regression与product-design技能集成,为完整的设计→代码→测试工作流。

## 现在就试试

如果您的项目中有Storybook:

“为[ComponentName]设置视觉回归”


如果您没有Storybook:
```bash
npx storybook init

然后:

"为[ComponentName]设置视觉回归"

文档


---

## 预定义函数

### functions/version_detector.py

**目的**:检测当前和最新的Navigator版本

**用法**:
```bash
python3 functions/version_detector.py
```

**输出**:
```json
{
  "current_version": "3.2.0",
  "latest_version": "3.3.0",
  "update_available": true,
  "release_url": "https://github.com/alekspetrov/navigator/releases/tag/v3.3.0",
  "changes": {
    "new_skills": ["visual-regression"],
    "updated_skills": ["product-design"],
    "new_features": ["多工具VR支持", "CI工作流"],
    "breaking_changes": []
  }
}
```

### functions/plugin_updater.py

**目的**:执行插件更新,带重试逻辑

**用法**:
```bash
python3 functions/plugin_updater.py --target-version 3.3.0
```

**操作**:
1. 执行 `/plugin update navigator`
2. 如果失败,重试卸载/重新安装
3. 验证更新成功
4. 返回状态

### functions/plugin_verifier.py

**目的**:验证更新是否成功完成

**用法**:
```bash
python3 functions/plugin_verifier.py --expected-version 3.3.0
```

**检查**:
- 插件版本与预期匹配
- 新技能在文件系统中存在
- 技能在plugin.json中注册
- 技能可调用(测试调用)

---

## 错误处理

### 更新失败:网络错误

```
❌ 更新失败:无法连接到插件市场

修复:
1. 检查互联网连接
2. 稍后再试
3. 手动更新:/plugin uninstall navigator && /plugin install navigator
```

### 更新失败:权限拒绝

```
❌ 更新失败:权限拒绝

修复:
1. 关闭Claude Code
2. 检查~/.config/claude/plugins/权限
3. 重启Claude Code
4. 再次尝试更新
```

### 验证失败:技能未找到

```
⚠️ 更新完成但新技能未找到

修复:
1. 重启Claude Code(技能重新加载所需)
2. 验证:/plugin list
3. 测试:"为Button设置视觉回归"
```

自动提示用户重启。

### CLAUDE.md更新冲突

```
⚠️ CLAUDE.md更新与您的自定义设置有冲突

选项:
[1] 保留我的自定义设置(合并新功能)
[2] 使用新模板(丢失自定义设置)
[3] 先给我看看差异

回复选择
```

让用户决定如何处理冲突。

---

## 升级路径

### 从v3.0.x到v3.3.0

**变更**:
- +2技能(nav-markers在v3.1,visual-regression在v3.3)
- OpenTelemetry集成(v3.1)
- 产品设计技能(v3.2)
- 视觉回归技能(v3.3)

**破坏性变更**:无(完全向后兼容)

### 从v3.1.x到v3.3.0

**变更**:
- 产品设计技能(v3.2)
- 视觉回归技能(v3.3)
- 更新后的技能计数(17个总技能)

**破坏性变更**:无

### 从v3.2.x到v3.3.0

**变更**:
- 视觉回归技能
- 与product-design工作流集成
- 更新后的技能计数(17个总技能)

**破坏性变更**:无

---

## 升级后清单

升级后验证:
- ✅ `/plugin list`显示新版本
- ✅ CLAUDE.md更新了新模式
- ✅ 新技能自动调用自然语言
- ✅ 现有技能仍然有效
- ✅ 项目配置无冲突

**如果全部检查**:更新成功!

---

## 回滚

如果更新导致问题:

```
"将Navigator回滚到v3.2.0"
```

这将:
1. 卸载当前版本
2. 从市场安装特定版本
3. 更新CLAUDE.md以匹配
4. 验证回滚成功

---

## 集成点

### 与nav-update-claude

插件更新后,自动调用`nav-update-claude`以同步项目配置。

### 与nav-start

更新后,`nav-start`显示会话统计中可用的新功能。

### 与nav-init

如果升级前未初始化项目,建议使用最新功能运行`nav-init`。

---

## 示例

### 示例1:简单更新

```
用户:"更新Navigator"

→ 检测到:v3.2.0 → v3.3.0可用
→ 更新插件
→ 更新CLAUDE.md
→ 显示:"visual-regression技能现在可用"
→ 建议:"为[组件]设置视觉回归"
```

### 示例2:已经是最新

```
用户:"更新Navigator"

→ 检测到:已经是v3.3.0
→ 显示可用的新功能
→ 如果尚未使用,则建议尝试visual-regression
```

### 示例3:需要重启的更新

```
用户:"更新Navigator"

→ 更新插件
→ 验证:技能未找到(需要重启)
→ 提示:"请重启Claude Code以完成更新"
→ 重启后:验证成功
```

---

## 最佳实践

1. **定期更新**:每月检查更新
2. **阅读发布说明**:在使用新功能之前了解新功能
3. **测试新技能**:先在测试项目中尝试新功能
4. **报告问题**:为更新问题提交GitHub问题
5. **备份CLAUDE.md**:更新前保留备份(自动创建)

---

## 版本历史

- **v1.0.0**:初始nav-upgrade技能(Navigator v3.3.1)

---

## 未来增强

- 在`nav-start`上自动检查更新(选择加入)
- CLI中显示变更日志
- 主要版本更新通知
- 破坏性变更的自动迁移脚本

---

**最后更新**:2025-10-21
**技能类型**:核心Navigator
**自动调用**:是