workflow-automation について
Agent の自動化を堅牢に設計するためのスキルです。n8n、Temporal、Inngest などの基盤とワークフローパターンを扱い、永続実行や要件に応じた選択を重視します。
主な機能
- 01n8n、Temporal、Inngest の比較
- 02逐次・並列ワークフローの解説
- 03オーケストレーター・ワーカー方式
- 04永続実行と障害復旧の説明
- 05外部処理の重複防止と検証
活用シーン
- 01イベント駆動のバックグラウンド処理設計
- 02復旧可能な決済フローの構築
- 03文書分析の並列実行計画
- 04ワークフロー自動化基盤の選定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill workflow-automationインストール後、Claude Code で/workflow-automationを入力して読み込まれたか確認します。
同梱ファイルreferences/detailed-guide.md
詳細
ワークフロー自動化
ワークフロー自動化は、AI エージェントの信頼性を支えるインフラです。 永続的な実行がなければ、10 ステップの決済フロー中にネットワークが不調になると、 資金が失われ、顧客の不満を招きます。永続的な実行があれば、ワークフローは 中断したところから正確に再開します。
このスキルでは、脆弱なスクリプトを本番環境に対応した自動化へと変える プラットフォーム(n8n、Temporal、Inngest)とパターン (逐次実行、並列実行、オーケストレーター・ワーカー)を扱います。
重要なポイント:各プラットフォームで重視するトレードオフは異なります。n8n は 使いやすさ、Temporal は正確性、Inngest は開発者体験を最適化しています。 話題性ではなく、実際のニーズに基づいて選択してください。
信頼性とサンプルの制限
永続性があっても、外部への処理が厳密に 1 回だけ実行されるとは限りません。決済・配送のヘルパーは、安定した操作キーをプロバイダーに渡し、成功したかどうかが不明な場合は照合する必要があります。メールには、アウトボックスまたは重複排除の仕組みが必要です。サンプルは、SDK のシグネチャがバージョンによって異なる、不完全な断片です。インストール済みの型定義に照らして検証し、テスト用アカウントを使用してください。また、ペイロードや認証情報をワークフローの履歴やログに残さないでください。
詳細ガイド
このスキルを実行する前に、詳細ガイドをお読みください。ガイドには、完全な手順と参考資料が記載されています。安全対策、前提条件、検証要件は必須事項として扱ってください。特定の作業に絞る場合は関連するセクションを読み、最初から最後まで作業する場合はガイド全体をお読みください。
Inngest の例(TypeScript)
import { inngest } from "./client";
export const processOrder = inngest.createFunction(
{ id: "process-order" },
{ event: "order/created" },
async ({ event, step }) => {
// Step 1: Validate order
const validated = await step.run("validate-order", async () => {
return validateOrder(event.data.order);
});
// Step 2: Process payment (durable - survives crashes)
const payment = await step.run("process-payment", async () => {
return chargeCard(validated.paymentMethod, validated.total, { idempotencyKey: `order-${event.data.orderId}-payment` });
});
// Step 3: Create shipment
const shipment = await step.run("create-shipment", async () => {
return createShipment(validated.items, validated.address);
});
// Step 4: Send confirmation
await step.run("send-confirmation", async () => {
return sendEmail(validated.email, { payment, shipment });
});
return { success: true, orderId: event.data.orderId };
}
);
Temporal の例(TypeScript)
import { proxyActivities } from '@temporalio/workflow';
import type * as activities from './activities';
const { validateOrder, chargeCard, createShipment, sendEmail } =
proxyActivities<typeof activities>({
startToCloseTimeout: '30 seconds',
retry: {
maximumAttempts: 3,
backoffCoefficient: 2,
}
});
export async function processOrderWorkflow(order: Order): Promise<void> {
const validated = await validateOrder(order);
const payment = await chargeCard(validated.paymentMethod, validated.total, { idempotencyKey: `order-${order.id}-payment` });
const shipment = await createShipment(validated.items, validated.address);
await sendEmail(validated.email, { payment, shipment });
}
Inngest の例
export const analyzeDocument = inngest.createFunction(
{ id: "analyze-document" },
{ event: "document/uploaded" },
async ({ event, step }) => {
// Run analyses in parallel
const [security, performance, compliance] = await Promise.all([
step.run("security-analysis", () =>
analyzeForSecurityIssues(event.data.document)
),
step.run("performance-analysis", () =>
analyzeForPerformance(event.data.document)
),
step.run("compliance-analysis", () =>
analyzeForCompliance(event.data.document)
),
]);
// Aggregate results
const report = await step.run("generate-report", () =>
generateReport({ security, performance, compliance })
);
return report;
}
);
Temporal の例
export async function orchestratorWorkflow(task: ComplexTask) {
// Orchestrator decides what work needs to be done
const plan = await analyzeTask(task);
// Dispatch to specialized worker workflows
const results = await Promise.all(
plan.subtasks.map(subtask => {
switch (subtask.type) {
case 'create':
return executeChild(createWorkerWorkflow, { args: [subtask] });
case 'modify':
return executeChild(modifyWorkerWorkflow, { args: [subtask] });
case 'delete':
return executeChild(deleteWorkerWorkflow, { args: [subtask] });
}
})
);
// Aggregate results
return aggregateResults(results);
}
使用する場面
- ユーザーが workflow について言及している、または示唆している
- ユーザーが automation について言及している、または示唆している
- ユーザーが n8n について言及している、または示唆している
- ユーザーが temporal について言及している、または示唆している
- ユーザーが inngest について言及している、または示唆している
- ユーザーが step function について言及している、または示唆している
- ユーザーが background job について言及している、または示唆している
- ユーザーが durable execution について言及している、または示唆している
- ユーザーが event-driven について言及している、または示唆している
- ユーザーが scheduled task について言及している、または示唆している
- ユーザーが job queue について言及している、または示唆している
- ユーザーが cron について言及している、または示唆している
- ユーザーが trigger について言及している、または示唆している
制限事項
- 上記の説明にある範囲と明確に一致するタスクに限り、このスキルを使用してください。
- 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認してください。