jeremylongshore/claude-code-plugins-plus-skills
apollo-pack
plugins/saas-packs/apollo-pack/skills/apollo-migration-deep-dive/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-migration-deep-dive/SKILL.md -a claude-code --skill apollo-migration-deep-diveInstallation paths:
.claude/skills/apollo-migration-deep-dive/# Apollo Migration Deep Dive
## Overview
Comprehensive guide for migrating to Apollo.io from other CRMs and data sources, including data mapping, validation, and rollback strategies.
## Migration Planning
### Pre-Migration Assessment
```typescript
// scripts/migration-assessment.ts
interface MigrationAssessment {
source: {
system: string;
recordCount: number;
dataQuality: DataQualityReport;
fieldMapping: FieldMappingAnalysis;
};
target: {
apolloPlan: string;
creditBudget: number;
apiLimits: APILimits;
};
risk: {
level: 'low' | 'medium' | 'high';
factors: string[];
mitigations: string[];
};
timeline: {
estimatedDuration: string;
phases: Phase[];
};
}
async function assessMigration(sourceConfig: any): Promise<MigrationAssessment> {
// Analyze source data
const sourceAnalysis = await analyzeSourceData(sourceConfig);
// Check Apollo capacity
const apolloCapacity = await checkApolloCapacity();
// Calculate risks
const risks = calculateRisks(sourceAnalysis, apolloCapacity);
// Estimate timeline
const timeline = estimateTimeline(sourceAnalysis, apolloCapacity);
return {
source: sourceAnalysis,
target: apolloCapacity,
risk: risks,
timeline,
};
}
async function analyzeSourceData(config: any): Promise<SourceAnalysis> {
const records = await fetchSourceRecords(config);
return {
system: config.system,
recordCount: records.length,
dataQuality: {
emailValid: records.filter(r => isValidEmail(r.email)).length / records.length,
emailPresent: records.filter(r => r.email).length / records.length,
phonePresent: records.filter(r => r.phone).length / records.length,
companyPresent: records.filter(r => r.company).length / records.length,
duplicates: findDuplicates(records).length,
},
fieldMapping: analyzeFields(records),
};
}
```
### Field Mapping
```typescript
// src/migration/field-mapper.ts
interface FieldMapping {
so