jeremylongshore/claude-code-plugins-plus-skills
juicebox-pack
plugins/saas-packs/juicebox-pack/skills/juicebox-upgrade-migration/SKILL.md
January 22, 2026
Select agents to install to:
npx add-skill https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/main/plugins/saas-packs/juicebox-pack/skills/juicebox-upgrade-migration/SKILL.md -a claude-code --skill juicebox-upgrade-migrationInstallation paths:
.claude/skills/juicebox-upgrade-migration/# Juicebox Upgrade Migration
## Overview
Plan and execute safe Juicebox SDK version upgrades with minimal disruption.
## Prerequisites
- Current SDK version identified
- Changelog reviewed
- Test environment available
## Instructions
### Step 1: Assess Current State
```bash
# Check current SDK version
npm list @juicebox/sdk
# Check for available updates
npm outdated @juicebox/sdk
# Review changelog
curl -s https://api.github.com/repos/juicebox-ai/sdk-js/releases/latest | jq '.body'
```
### Step 2: Review Breaking Changes
```typescript
// Common breaking changes between versions
// v1.x -> v2.x Migration
// OLD (v1.x)
const client = new JuiceboxClient(apiKey);
const results = await client.search(query);
// NEW (v2.x)
const client = new JuiceboxClient({ apiKey });
const results = await client.search.people({ query });
```
### Step 3: Create Migration Script
```typescript
// scripts/migrate-juicebox.ts
/**
* Migration: v1.x -> v2.x
*
* Breaking changes:
* 1. Client constructor now takes options object
* 2. search() renamed to search.people()
* 3. Result structure changed
*/
// Step 1: Update imports
// OLD: import JuiceboxClient from '@juicebox/sdk';
// NEW: import { JuiceboxClient } from '@juicebox/sdk';
// Step 2: Update client initialization
function migrateClientInit(code: string): string {
return code.replace(
/new JuiceboxClient\((\w+)\)/g,
'new JuiceboxClient({ apiKey: $1 })'
);
}
// Step 3: Update method calls
function migrateSearchCalls(code: string): string {
return code.replace(
/client\.search\(([^)]+)\)/g,
'client.search.people({ query: $1 })'
);
}
// Step 4: Update result handling
function migrateResultAccess(code: string): string {
return code.replace(
/results\.data/g,
'results.profiles'
);
}
```
### Step 4: Staged Rollout
```typescript
// lib/feature-flags.ts
export class JuiceboxVersionManager {
private useNewVersion: boolean;
constructor() {
this.useNewVersion = process.env.JUICEBOX_