lindy-migration-deep-dive
Lindy AI統合のための高度な移行戦略を提供します。他のプラットフォームからの移行、エージェントの統合、または大規模なアーキテクチャ変更を行う際に利用できます。「lindy migration」「migrate to lindy」「lindy platform migration」「switch to lindy」といったフレーズで起動します。
description の原文を見る
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".
SKILL.md 本文
Lindy Migration Deep Dive
概要
Lindy AI インテグレーションへの移行またはアップグレードのための高度な移行戦略です。
前提条件
- ソースプラットフォームのドキュメント
- ターゲット Lindy 環境の準備完了
- 移行スケジュールの承認
- ロールバック計画の定義
移行シナリオ
シナリオ 1: カスタム AI から Lindy へ
評価フェーズ:
// 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',
],
};
}
シナリオ 2: エージェント統合
移行前:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Agent A │ │ Agent B │ │ Agent C │
│ (Support) │ │ (Support) │ │ (Support) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
└───────────────┴───────────────┘
│
(Duplicated logic)
移行後:
┌─────────────────────────────────────────────┐
│ 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;
}
シナリオ 3: マルチ環境移行
// 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`);
}
}
移行チェックリスト
[ ] ソースシステムのドキュメント化完了
[ ] 移行計画の承認完了
[ ] ロールバック手順のテスト完了
[ ] データ変換の検証完了
[ ] 機能互換性の確認完了
[ ] 統合テストの作成完了
[ ] ロードテストの実施完了
[ ] 並行稼働の完了
[ ] カットオーバーウィンドウのスケジュール完了
[ ] 監視の強化完了
[ ] サポートチームのブリーフィング完了
出力
- 移行評価
- 統合戦略
- マルチ環境計画
- データ変換
- ロールバック手順
エラーハンドリング
| 問題 | 原因 | 解決方法 |
|---|---|---|
| データ損失 | 変換エラー | インポート前に検証する |
| 互換性ギャップ | 機能差異 | ドキュメント化し対応する |
| ロールバック失敗 | チェックポイント不完全 | 完全なスナップショットを作成する |
例
完全な移行スクリプト
#!/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!"
リソース
次のステップ
これで Flagship ティアのスキルが完成します。包括的なカバレッジについては、Standard および Pro スキルの確認を検討してください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- Brmbobo
- リポジトリ
- Brmbobo/Web2podcast
- ライセンス
- MIT
- 最終更新
- 2026/1/26
Source: https://github.com/Brmbobo/Web2podcast / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。