jeremylongshore/claude-code-plugins-plus-skills
apollo-pack
plugins/saas-packs/apollo-pack/skills/apollo-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/apollo-pack/skills/apollo-upgrade-migration/SKILL.md -a claude-code --skill apollo-upgrade-migrationInstallation paths:
.claude/skills/apollo-upgrade-migration/# Apollo Upgrade Migration
## Overview
Plan and execute safe upgrades for Apollo.io API integrations, handling breaking changes and deprecated endpoints.
## Pre-Upgrade Assessment
### Check Current API Usage
```bash
# Find all Apollo API calls in codebase
grep -r "api.apollo.io" --include="*.ts" --include="*.js" -l
# List unique endpoints used
grep -roh "api.apollo.io/v[0-9]*/[a-z_/]*" --include="*.ts" --include="*.js" | sort -u
# Check for deprecated patterns
grep -rn "deprecated\|legacy" --include="*.ts" src/lib/apollo/
```
### Audit Script
```typescript
// scripts/apollo-audit.ts
import { readFileSync, readdirSync } from 'fs';
import { join } from 'path';
interface AuditResult {
file: string;
line: number;
pattern: string;
severity: 'warning' | 'error';
message: string;
}
const DEPRECATED_PATTERNS = [
{
pattern: /\/v1\/contacts\//,
message: 'Use /v1/people/ instead of /v1/contacts/',
severity: 'error' as const,
},
{
pattern: /organization_name/,
message: 'Use q_organization_domains instead of organization_name',
severity: 'warning' as const,
},
{
pattern: /\.then\s*\(/,
message: 'Consider using async/await for cleaner code',
severity: 'warning' as const,
},
];
function auditFile(filePath: string): AuditResult[] {
const content = readFileSync(filePath, 'utf-8');
const lines = content.split('\n');
const results: AuditResult[] = [];
lines.forEach((line, index) => {
for (const { pattern, message, severity } of DEPRECATED_PATTERNS) {
if (pattern.test(line)) {
results.push({
file: filePath,
line: index + 1,
pattern: pattern.source,
severity,
message,
});
}
}
});
return results;
}
function auditDirectory(dir: string): AuditResult[] {
const results: AuditResult[] = [];
function walkDir(currentDir: string) {
const files = readdirSync(currentDir, { withFileTypes: true });
for (const file of file