environment-setup-guide
Guide developers through setting up development environments with proper tools, dependencies, and configurations
lindy-migration-deep-dive
Advanced migration strategies for Lindy AI integrations. Use when migrating from other platforms, consolidating agents, or performing major architecture changes. Trigger with phrases like "lindy migration", "migrate to lindy", "lindy platform migration", "switch to lindy".
Full skill instructions
Advanced migration strategies for moving to or upgrading Lindy AI integrations.
Assessment Phase:
// migration/assess.ts
interface MigrationAssessment {
sourceAgents: number;
sourceWorkflows: number;
complexity: 'simple' | 'moderate' | 'complex';
estimatedDuration: string;
risks: string[];
}
async function assessMigration(source: any): Promise<MigrationAssessment> {
// Analyze existing system
const agents = await source.getAgents();
const workflows = await source.getWorkflows();
const complexity = agents.length > 10 || workflows.length > 5
? 'complex'
: agents.length > 3
? 'moderate'
: 'simple';
return {
sourceAgents: agents.length,
sourceWorkflows: workflows.length,
complexity,
estimatedDuration: complexity === 'complex' ? '2-4 weeks' : '1 week',
risks: [
'Feature parity gaps',
'Data format differences',
'Integration rewiring',
],
};
}
Before:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Agent A │ │ Agent B │ │ Agent C │
│ (Support) │ │ (Support) │ │ (Support) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
└───────────────┴───────────────┘
│
(Duplicated logic)
After:
┌─────────────────────────────────────────────┐
│ Unified Support Agent │
│ (Consolidated logic, shared context) │
└─────────────────────────────────────────────┘
// migration/consolidate.ts
async function consolidateAgents(agentIds: string[]) {
const lindy = new Lindy({ apiKey: process.env.LINDY_API_KEY });
// Collect all instructions
const agents = await Promise.all(
agentIds.map(id => lindy.agents.get(id))
);
// Merge instructions
const mergedInstructions = agents
.map(a => `## ${a.name}\n${a.instructions}`)
.join('\n\n');
// Collect all tools
const allTools = [...new Set(agents.flatMap(a => a.tools))];
// Create consolidated agent
const consolidated = await lindy.agents.create({
name: 'Unified Support Agent',
instructions: `
You are a unified support agent combining multiple specializations.
${mergedInstructions}
Use the appropriate section based on the user's query.
`,
tools: allTools,
});
console.log(`Consolidated ${agents.length} agents into: ${consolidated.id}`);
return consolidated;
}
// migration/multi-env.ts
interface MigrationPlan {
phases: MigrationPhase[];
rollbackCheckpoints: string[];
}
interface MigrationPhase {
name: string;
environment: 'development' | 'staging' | 'production';
steps: string[];
duration: string;
successCriteria: string[];
}
const migrationPlan: MigrationPlan = {
phases: [
{
name: 'Development Migration',
environment: 'development',
steps: [
'Export agents from source',
'Transform to Lindy format',
'Import to Lindy dev',
'Run integration tests',
'Fix any issues',
],
duration: '1 week',
successCriteria: [
'All agents imported',
'Integration tests passing',
'No critical errors in logs',
],
},
{
name: 'Staging Migration',
environment: 'staging',
steps: [
'Deploy to staging',
'Run load tests',
'Parallel run with source',
'Compare outputs',
'Fix discrepancies',
],
duration: '1 week',
successCriteria: [
'Load tests passing',
'Output parity > 95%',
'Latency within SLA',
],
},
{
name: 'Production Migration',
environment: 'production',
steps: [
'Deploy to production (canary)',
'Gradually shift traffic',
'Monitor metrics',
'Complete cutover',
'Decommission source',
],
duration: '2 weeks',
successCriteria: [
'No increase in errors',
'Latency within SLA',
'User satisfaction maintained',
],
},
],
rollbackCheckpoints: [
'After dev import',
'After staging deployment',
'After 25% traffic shift',
'After 50% traffic shift',
],
};
// migration/data.ts
interface DataMigration {
source: string;
destination: string;
transform: (data: any) => any;
}
async function migrateData(config: DataMigration) {
const lindy = new Lindy({ apiKey: process.env.LINDY_API_KEY });
// Export from source
console.log('Exporting from source...');
const sourceData = await exportFromSource(config.source);
// Transform data
console.log('Transforming data...');
const transformedData = sourceData.map(config.transform);
// Validate transformed data
console.log('Validating...');
const validationErrors = validateData(transformedData);
if (validationErrors.length > 0) {
throw new Error(`Validation failed: ${validationErrors.join(', ')}`);
}
// Import to Lindy
console.log('Importing to Lindy...');
for (const item of transformedData) {
await lindy.agents.create(item);
}
console.log(`Migrated ${transformedData.length} items`);
}
// Transform functions for different sources
const transforms = {
openai: (agent: any) => ({
name: agent.name,
instructions: agent.instructions,
tools: mapOpenAITools(agent.tools),
}),
langchain: (agent: any) => ({
name: agent.name,
instructions: agent.prompt_template,
tools: mapLangChainTools(agent.tools),
}),
custom: (agent: any) => ({
name: agent.title,
instructions: agent.system_prompt,
tools: agent.enabled_tools || [],
}),
};
// migration/rollback.ts
interface RollbackState {
checkpoint: string;
timestamp: Date;
agentSnapshots: Map<string, any>;
automationSnapshots: Map<string, any>;
}
class RollbackManager {
private states: RollbackState[] = [];
private lindy: Lindy;
constructor() {
this.lindy = new Lindy({ apiKey: process.env.LINDY_API_KEY });
}
async createCheckpoint(name: string): Promise<void> {
console.log(`Creating checkpoint: ${name}`);
const agents = await this.lindy.agents.list();
const automations = await this.lindy.automations.list();
const state: RollbackState = {
checkpoint: name,
timestamp: new Date(),
agentSnapshots: new Map(agents.map(a => [a.id, a])),
automationSnapshots: new Map(automations.map(a => [a.id, a])),
};
this.states.push(state);
console.log(`Checkpoint created with ${agents.length} agents`);
}
async rollback(checkpointName: string): Promise<void> {
const state = this.states.find(s => s.checkpoint === checkpointName);
if (!state) {
throw new Error(`Checkpoint not found: ${checkpointName}`);
}
console.log(`Rolling back to: ${checkpointName}`);
// Delete new agents
const currentAgents = await this.lindy.agents.list();
for (const agent of currentAgents) {
if (!state.agentSnapshots.has(agent.id)) {
await this.lindy.agents.delete(agent.id);
}
}
// Restore modified agents
for (const [id, snapshot] of state.agentSnapshots) {
await this.lindy.agents.update(id, snapshot);
}
console.log(`Rollback to ${checkpointName} complete`);
}
}
[ ] Source system documented
[ ] Migration plan approved
[ ] Rollback procedures tested
[ ] Data transformation validated
[ ] Feature parity confirmed
[ ] Integration tests created
[ ] Load tests passed
[ ] Parallel run completed
[ ] Cutover window scheduled
[ ] Monitoring enhanced
[ ] Support team briefed
| Issue | Cause | Solution |
|---|---|---|
| Data loss | Transform error | Validate before import |
| Parity gap | Feature difference | Document and workaround |
| Rollback fail | Incomplete checkpoint | Create full snapshots |
#!/bin/bash
# migrate-to-lindy.sh
echo "Starting Lindy migration..."
# Phase 1: Assessment
npm run migration:assess
# Phase 2: Export
npm run migration:export
# Phase 3: Transform
npm run migration:transform
# Phase 4: Validate
npm run migration:validate
# Phase 5: Import (with checkpoint)
npm run migration:checkpoint create pre-import
npm run migration:import
# Phase 6: Test
npm run migration:test
echo "Migration complete!"
This completes the Flagship tier skills. Consider reviewing Standard and Pro skills for comprehensive coverage.
Guide developers through setting up development environments with proper tools, dependencies, and configurations
Implement Exa lint rules, policy enforcement, and automated guardrails. Use when setting up code quality rules for Exa integrations, implementing pre-commit hooks, or configuring CI policy checks for Exa best practices. Trigger with phrases like "exa policy", "exa lint", "exa guardrails", "exa be...
Configure CI/CD pipelines for Documenso integrations. Use when setting up automated testing, deployment pipelines, or continuous integration for Documenso projects. Trigger with phrases like "documenso CI", "documenso GitHub Actions", "documenso pipeline", "documenso automated testing".
Build check model availability and implement fallback chains. Use when building resilient systems or handling model outages. Trigger with phrases like 'openrouter availability', 'openrouter fallback', 'openrouter model down', 'openrouter health check'.
Configure Langfuse enterprise organization management and access control. Use when implementing team access controls, configuring organization settings, or setting up role-based permissions for Langfuse projects. Trigger with phrases like "langfuse RBAC", "langfuse teams", "langfuse organization"...
Execute compliance and security auditing for Cursor usage. Triggers on "cursor compliance", "cursor audit", "cursor security review", "cursor soc2", "cursor gdpr". Use when analyzing or auditing cursor compliance audit. Trigger with phrases like "cursor compliance audit", "cursor audit", "cursor".
Configure Apollo.io CI/CD integration. Use when setting up automated testing, continuous integration, or deployment pipelines for Apollo integrations. Trigger with phrases like "apollo ci", "apollo github actions", "apollo pipeline", "apollo ci/cd", "apollo automated tests".
Create robust Python automation with full logging and safety checks. Use when tasks need complex data processing, authenticated API work, conditional file operations, or error handling beyond simple shell commands.
Configure PostHog across development, staging, and production environments. Use when setting up multi-environment deployments, configuring per-environment secrets, or implementing environment-specific PostHog configurations. Trigger with phrases like "posthog environments", "posthog staging", "po...
Expert in designing and building autonomous AI agents. Masters tool use, memory systems, planning strategies, and multi-agent orchestration. Use when: build agent, AI agent, autonomous agent, tool use, function calling.
Validate insecure deserialization checker operations. Auto-activating skill for Security Fundamentals. Triggers on: insecure deserialization checker, insecure deserialization checker Part of the Security Fundamentals skill category. Use when working with insecure deserialization checker functiona...
Manage path traversal finder operations. Auto-activating skill for Security Fundamentals. Triggers on: path traversal finder, path traversal finder Part of the Security Fundamentals skill category. Use when working with path traversal finder functionality. Trigger with phrases like "path traversa...
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience