trigger-dev
Trigger.devを専門とするスキルで、バックグラウンドジョブ・AIワークフロー・信頼性の高い非同期処理の実装を支援します。TypeScriptファーストな設計と優れた開発者体験を重視した構成で、Trigger.devの機能を最大限に活用できます。
description の原文を見る
Trigger.dev expert for background jobs, AI workflows, and reliable async execution with excellent developer experience and TypeScript-first design.
SKILL.md 本文
Trigger.dev Integration
Trigger.dev expert for background jobs, AI workflows, and reliable async execution with excellent developer experience and TypeScript-first design.
原則
- タスクは基本要素 - 各タスクは独立して再試行可能
- Runsは永続的 - 状態はクラッシュと再起動を生き残る
- Integrationsはファーストクラス - 信頼性のための組み込みAPIラッパーを使用
- ログはデバッグの命綱 - タスク内に積極的にログを記録
- 並行実行はリソースを保護 - 常に制限を設定
- 遅延とスケジュールは組み込み - 外部cronが不要
- AIに対応した設計 - 長時間実行されるAIタスクがそのまま機能
- ローカル開発は本番環境と一致 - CLIを使用
機能
- trigger-dev-tasks
- ai-background-jobs
- integration-tasks
- scheduled-triggers
- webhook-handlers
- long-running-tasks
- task-queues
- batch-processing
対象範囲
- redis-queues -> bullmq-specialist
- pure-event-driven -> inngest
- workflow-orchestration -> temporal-craftsman
- infrastructure -> infra-architect
ツール
コア
- trigger-dev-sdk
- trigger-cli
フレームワーク
- nextjs
- remix
- express
- hono
Integrations
- openai
- anthropic
- resend
- stripe
- slack
- supabase
デプロイメント
- trigger-cloud
- self-hosted
- docker
パターン
基本的なタスクセットアップ
Next.jsプロジェクトでTrigger.devを設定
使用時期: 任意のプロジェクトでTrigger.devを開始する場合
// trigger.config.ts
import { defineConfig } from '@trigger.dev/sdk/v3';
export default defineConfig({
project: 'my-project',
runtime: 'node',
logLevel: 'log',
retries: {
enabledInDev: true,
default: {
maxAttempts: 3,
minTimeoutInMs: 1000,
maxTimeoutInMs: 10000,
factor: 2,
},
},
});
// src/trigger/tasks.ts
import { task, logger } from '@trigger.dev/sdk/v3';
export const helloWorld = task({
id: 'hello-world',
run: async (payload: { name: string }) => {
logger.log('Processing hello world', { payload });
// Simulate work
await new Promise(resolve => setTimeout(resolve, 1000));
return { message: `Hello, ${payload.name}!` };
},
});
// Triggering from your app
import { helloWorld } from '@/trigger/tasks';
// Fire and forget
await helloWorld.trigger({ name: 'World' });
// Wait for result
const handle = await helloWorld.trigger({ name: 'World' });
const result = await handle.wait();
OpenAI Integrationを使用したAIタスク
自動再試行付きの組み込みOpenAI統合を使用
使用時期: AI搭載のバックグラウンドタスクを構築する場合
import { task, logger } from '@trigger.dev/sdk/v3';
import { openai } from '@trigger.dev/openai';
// Trigger.devでOpenAIを構成
const openaiClient = openai.configure({
id: 'openai',
apiKey: process.env.OPENAI_API_KEY,
});
export const generateContent = task({
id: 'generate-content',
retry: {
maxAttempts: 3,
},
run: async (payload: { topic: string; style: string }) => {
logger.log('Generating content', { topic: payload.topic });
// Trigger.devのOpenAI統合を使用 - 自動的に再試行を処理
const completion = await openaiClient.chat.completions.create({
model: 'gpt-4-turbo-preview',
messages: [
{
role: 'system',
content: `You are a ${payload.style} writer.`,
},
{
role: 'user',
content: `Write about: ${payload.topic}`,
},
],
});
const content = completion.choices[0].message.content;
logger.log('Generated content', { length: content?.length });
return { content, tokens: completion.usage?.total_tokens };
},
});
Cronでスケジュールされたタスク
スケジュール実行されるタスク
使用時期: レポート、クリーンアップ、同期などの定期的なジョブの場合
import { schedules, task, logger } from '@trigger.dev/sdk/v3';
export const dailyCleanup = schedules.task({
id: 'daily-cleanup',
cron: '0 2 * * *', // 毎日午前2時
run: async () => {
logger.log('Starting daily cleanup');
// 古いレコードを削除
const deleted = await db.logs.deleteMany({
where: {
createdAt: { lt: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000) },
},
});
logger.log('Cleanup complete', { deletedCount: deleted.count });
return { deleted: deleted.count };
},
});
// 週次レポート
export const weeklyReport = schedules.task({
id: 'weekly-report',
cron: '0 9 * * 1', // 月曜日午前9時
run: async () => {
const stats = await generateWeeklyStats();
await sendReportEmail(stats);
return stats;
},
});
バッチ処理
大規模データセットをバッチで処理
使用時期: レート制限付きで多数のアイテムを処理する必要がある場合
import { task, logger, wait } from '@trigger.dev/sdk/v3';
export const processBatch = task({
id: 'process-batch',
queue: {
concurrencyLimit: 5, // 一度に5つまで実行
},
run: async (payload: { items: string[] }) => {
const results = [];
for (const item of payload.items) {
logger.log('Processing item', { item });
const result = await processItem(item);
results.push(result);
// レート制限を尊重
await wait.for({ seconds: 1 });
}
return { processed: results.length, results };
},
});
// バッチ処理を開始
export const startBatchJob = task({
id: 'start-batch',
run: async (payload: { datasetId: string }) => {
const items = await fetchDataset(payload.datasetId);
// 100項目ごとにチャンクに分割
const chunks = chunkArray(items, 100);
// 並列でバッチタスクをトリガー
const handles = await Promise.all(
chunks.map(chunk => processBatch.trigger({ items: chunk }))
);
logger.log('Started batch processing', {
totalItems: items.length,
batches: chunks.length,
});
return { batches: handles.length };
},
});
Webhookハンドラー
重複排除付きで確実にwebhooksを処理
使用時期: Stripe、GitHubなどからのwebhooksを処理する場合
import { task, logger, idempotencyKeys } from '@trigger.dev/sdk/v3';
export const handleStripeEvent = task({
id: 'handle-stripe-event',
run: async (payload: {
eventId: string;
type: string;
data: any;
}) => {
// Stripe event IDに基づくべき等性
const idempotencyKey = await idempotencyKeys.create(payload.eventId);
if (idempotencyKey.isNew === false) {
logger.log('Duplicate event, skipping', { eventId: payload.eventId });
return { skipped: true };
}
logger.log('Processing Stripe event', {
type: payload.type,
eventId: payload.eventId,
});
switch (payload.type) {
case 'checkout.session.completed':
await handleCheckoutComplete(payload.data);
break;
case 'customer.subscription.updated':
await handleSubscriptionUpdate(payload.data);
break;
}
return { processed: true, type: payload.type };
},
});
シャープエッジ
タスクタイムアウトが明確なエラーなしに実行を終了
重大度: CRITICAL
状況: 長時間実行されるAIタスクまたはバッチプロセスが突然停止。ログにエラーがない。 タスクはダッシュボードで失敗として表示されるが、スタックトレースがない。データが部分的に処理される。
症状:
- エラーメッセージなしでタスクが失敗
- 部分的なデータ処理
- ローカルではうまくいくが、本番環境では失敗
- ダッシュボードに「Task timed out」と表示
なぜこれが問題になるのか: Trigger.devには実行タイムアウトがあります(プランによってデフォルトは異なります)。 超過すると、タスクは実行中に強制終了されます。進捗をログしていない場合、 どこで停止したかがわかりません。これはAIタスクで特に一般的です。 数分かかることがあります。
推奨される修正:
# 明示的なタイムアウトを設定:
export const processDocument = task({
id: 'process-document',
machine: {
preset: 'large-2x', // より多くのリソース = より長い許容時間
},
run: async (payload) => {
logger.log('Starting document processing', { docId: payload.id });
// 各ステップで進捗をログ
logger.log('Step 1: Extracting text');
const text = await extractText(payload.fileUrl);
logger.log('Step 2: Generating embeddings', { textLength: text.length });
const embeddings = await generateEmbeddings(text);
logger.log('Step 3: Storing vectors', { count: embeddings.length });
await storeVectors(embeddings);
logger.log('Completed successfully');
return { processed: true };
},
});
非常に長いタスクの場合、サブタスクに分割:
- 順序付きのステップでtriggerAndWaitを使用
- 各サブタスク独自のタイムアウトを持つ
- 進捗がダッシュボードで表示される
シリアル化不可能なペイロードがサイレント タスク失敗を引き起こす
重大度: CRITICAL
状況: Dateオブジェクト、クラスインスタンス、または循環参照をペイロードで渡す。 タスクはキューに入るが実行されない。または未定義/null値で実行される。
症状:
- ペイロード値がタスクで未定義
- Dateオブジェクトが文字列になる
- クラスメソッドが利用できない
- 「Converting circular structure to JSON」
なぜこれが問題になるのか: Trigger.devはペイロードをJSONにシリアル化します。日付が文字列になり、 クラスインスタンスがメソッドを失い、関数が消えたり、循環参照がスローされたりします。 タスクは送信したデータと異なるデータを受け取ります。
推奨される修正:
# 常にプレーンオブジェクトを使用:
// 不正 - Dateが文字列になる
await myTask.trigger({ createdAt: new Date() });
// 正 - ISO文字列
await myTask.trigger({ createdAt: new Date().toISOString() });
// 不正 - クラスインスタンス
await myTask.trigger({ user: new User(data) });
// 正 - プレーンオブジェクト
await myTask.trigger({ user: { id: data.id, email: data.email } });
// 不正 - 循環参照
const obj = { parent: null };
obj.parent = obj;
await myTask.trigger(obj); // Throws!
タスク内で必要に応じて復元:
run: async (payload: { createdAt: string }) => {
const date = new Date(payload.createdAt);
// ...
}
環境変数がTrigger.dev cloudに同期されない
重大度: CRITICAL
状況: タスクはローカルではうまくいくが、本番環境では失敗。Vercelに存在する環境変数は Trigger.devではundefinedです。APIコールが失敗し、データベース接続が失敗します。
症状:
- 「Environment variable not found」
- 本番環境のタスクで401を返すAPIコール
- dev では動作するが、本番環境では失敗
- タスクでデータベース接続エラー
なぜこれが問題になるのか: Trigger.devはVercel/Railway デプロイメント から独立した独自のクラウドでタスクを実行します。 環境変数は両方の場所で設定する必要があります。自動的には同期されません。
推奨される修正:
# Trigger.devに環境変数を同期:
1. Trigger.dev dashboard にアクセス
2. Project Settings > Environment Variables
3. 必要なすべての環境変数を追加
# または CLI を使用:
# .env.trigger ファイルを作成
DATABASE_URL=postgres://...
OPENAI_API_KEY=sk-...
STRIPE_SECRET_KEY=sk_live_...
# Trigger.dev にプッシュ
npx trigger.dev@latest env push
一般的な不足している変数:
- DATABASE_URL
- OPENAI_API_KEY / ANTHROPIC_API_KEY
- STRIPE_SECRET_KEY
- Service API keys
- Internal service URLs
ステージング環境でテスト:
Trigger.dev には別の環境があります - ステージング環境も設定してください
CLI とパッケージ間の SDK バージョン不一致
重大度: HIGH
状況: @trigger.dev/sdk を更新したが、CLI の更新を忘れた。またはその逆。 タスクが登録に失敗。奇妙な型エラー。Dev サーバーがクラッシュします。
症状:
- タスクがダッシュボードに表示されない
- trigger.config.ts の型エラー
- 「Failed to register task」
- Dev サーバーが起動時にクラッシュ
なぜこれが問題になるのか: Trigger.dev SDK と CLI は互換性のあるバージョンである必要があります。 バージョン間の互換性を破る変更により登録が失敗します。CLI が生成する型は SDK と一致する必要があります。
推奨される修正:
# 常に一緒に更新:
# SDK と CLI の両方を更新
npm install @trigger.dev/sdk@latest
npx trigger.dev@latest dev
# または同じバージョンに固定
npm install @trigger.dev/sdk@3.3.0
npx trigger.dev@3.3.0 dev
バージョンを確認:
npx trigger.dev@latest --version
npm list @trigger.dev/sdk
CI/CD では:
- run: npm install @trigger.dev/sdk@${{ env.TRIGGER_VERSION }}
- run: npx trigger.dev@${{ env.TRIGGER_VERSION }} deploy
タスク再試行が重複する副作用を引き起こす
重大度: HIGH
状況: タスクがメールを送信し、次のステップで失敗。再試行がメールを再度送信。 顧客は3つの同じメールを受け取ります。または3つのStripe charges。または3つのSlackメッセージ。
症状:
- 再試行時の重複メール
- 同じ注文に対する複数チャージ
- 重複したwebhook配信
- データが複数回挿入される
なぜこれが問題になるのか: Trigger.dev は失敗したタスクを最初からやり直します。タスクが失敗ポイント前に 副作用がある場合、それらは再度実行されます。べき等性がないと、重複を作成します。
推奨される修正:
# べき等性キーを使用:
import { task, idempotencyKeys } from '@trigger.dev/sdk/v3';
export const sendOrderEmail = task({
id: 'send-order-email',
run: async (payload: { orderId: string }) => {
// すでに送信されているかを確認
const key = await idempotencyKeys.create(`email-${payload.orderId}`);
if (!key.isNew) {
logger.log('Email already sent, skipping');
return { skipped: true };
}
await sendEmail(payload.orderId);
return { sent: true };
},
});
代替案: データベースで追跡
const existing = await db.emailLogs.findUnique({
where: { orderId_type: { orderId, type: 'order_confirmation' } }
});
if (existing) {
logger.log('Already sent');
return;
}
await sendEmail(orderId);
await db.emailLogs.create({ data: { orderId, type: 'order_confirmation' } });
高い並行実行が下流のサービスを圧倒する
重大度: HIGH
状況: 1000個のタスクがバースト状態でトリガーされます。すべてが OpenAI API に同時にヒット。 レート制限を受けます。すべて失敗。再試行。レート制限を受けます。悪循環。
症状:
- レート制限エラー(429)
- データベース接続プール枯渇
- APIが「too many requests」を返す
- 大量のタスク失敗
なぜこれが問題になるのか: Trigger.dev は多くの並行タスクを処理するようにスケーリングします。しかし、 下流のAPI(OpenAI、データベース、外部サービス)にはレート制限があります。 並行実行制御がないと、それらを圧倒します。
推奨される修正:
# キュー並行実行制限を設定:
export const callOpenAI = task({
id: 'call-openai',
queue: {
concurrencyLimit: 10, // 一度に10個まで実行
},
run: async (payload) => {
// 並行実行制限で保護
return await openai.chat.completions.create(payload);
},
});
レート制限API の場合:
export const callRateLimitedAPI = task({
id: 'call-api',
queue: {
concurrencyLimit: 5,
},
retry: {
maxAttempts: 5,
minTimeoutInMs: 5000, // 再試行前に待機
factor: 2, // 指数バックオフ
},
run: async (payload) => {
// コール間に遅延を追加
await wait.for({ milliseconds: 200 });
return await externalAPI.call(payload);
},
});
保守的に開始:
- 外部API: 5-10
- データベース: 20-50
- 監視に基づいて増加
trigger.config.ts がプロジェクトルートにない
重大度: HIGH
状況: npx trigger.dev dev を実行しているが、CLI がコンフィグを見つけられない。 またはコンフィグが存在しますが、間違った場所にあります(monorepo の問題)。
症状:
- 「Could not find trigger.config.ts」
- タスクが検出されない
- ダッシュボードにタスクリストが空
- 1つのパッケージでは機能するが、別のパッケージではそうではない
なぜこれが問題になるのか: CLI は現在の作業ディレクトリで trigger.config.ts を探します。 monorepo では、ルートではなくパッケージディレクトリから実行する必要があります。 間違った場所 = タスクが検出されない。
推奨される修正:
# コンフィグはパッケージルートにある必要があります:
my-app/
├── trigger.config.ts <- ここ
├── package.json
├── src/
│ └── trigger/
│ └── tasks.ts
monorepo では:
monorepo/
├── apps/
│ └── web/
│ ├── trigger.config.ts <- ここ、monorepo ルートではなく
│ ├── package.json
│ └── src/trigger/
# パッケージディレクトリから実行
cd apps/web && npx trigger.dev dev
コンフィグの場所を指定:
npx trigger.dev dev --config ./apps/web/trigger.config.ts
ループ内の wait.for がメモリの問題を引き起こす
重大度: MEDIUM
状況: wait.for を使用して数千のアイテムを処理。タスクメモリが増加。 最終的にメモリで強制終了されます。
症状:
- メモリのためにタスクが強制終了
- スロータスク実行
- 「State blob too large」エラー
- 小さなバッチでは機能するが、大規模では失敗
なぜこれが問題になるのか: 各 wait.for はチェックポイント状態を作成します。数千のイテレーションを 持つループでは、これが蓄積されます。タスクの状態ブロブはメモリ制限に 達するまで大きくなります。
推奨される修正:
# 個別の wait ではなくバッチ処理:
// 不正 - アイテムごとに待機
for (const item of items) {
await processItem(item);
await wait.for({ milliseconds: 100 }); // 1000 waits = bloated state
}
// 正 - バッチ処理
const chunks = chunkArray(items, 50);
for (const chunk of chunks) {
await Promise.all(chunk.map(processItem));
await wait.for({ milliseconds: 500 }); // 20 waits のみ
}
非常に大規模なデータセットの場合、サブタスクを使用:
export const processAll = task({
id: 'process-all',
run: async (payload: { items: string[] }) => {
const chunks = chunkArray(payload.items, 100);
// 各チャンクは別のタスク
await Promise.all(
chunks.map(chunk =>
processChunk.triggerAndWait({ items: chunk })
)
);
},
});
Trigger.dev integrations ではなく raw SDK を使用
重大度: MEDIUM
状況: OpenAI SDK を直接使用。API コール失敗。自動再試行がない。 レート制限が処理されない。すべての回復力を手動で実装する必要があります。
症状:
- タスク内の手動再試行ロジック
- レート制限エラーが処理されない
- API コールの自動ログがない
- 矛盾したエラー処理
なぜこれが問題になるのか: Trigger.dev integrations は SDK をラップして、自動再試行、レート制限処理、 適切なログを提供します。raw SDK を使用すると、これらの機能を失い、 自分で実装する必要があります。
推奨される修正:
# 利用可能な場合は integrations を使用:
// 不正 - Raw SDK
import OpenAI from 'openai';
const openai = new OpenAI();
// 正 - Trigger.dev integration
import { openai } from '@trigger.dev/openai';
const openaiClient = openai.configure({
id: 'openai',
apiKey: process.env.OPENAI_API_KEY,
});
// 自動再試行とレート制限を備えている
export const generateContent = task({
id: 'generate-content',
run: async (payload) => {
const response = await openaiClient.chat.completions.create({
model: 'gpt-4-turbo-preview',
messages: [{ role: 'user', content: payload.prompt }],
});
return response;
},
});
利用可能な integrations:
- @trigger.dev/openai
- @trigger.dev/anthropic
- @trigger.dev/resend
- @trigger.dev/slack
- @trigger.dev/stripe
Dev サーバーが実行されていない状態でタスクをトリガー
重大度: MEDIUM
状況: task.trigger() を呼び出したが、何も起こりません。エラーもありません。 タスクは無に消えます。Dev サーバーが実行されていませんでした。
症状:
- トリガーが実行されない
- ダッシュボードにタスクがない
- エラーなし、ただ沈黙
- 本番環境では機能するが、dev では機能しない
なぜこれが問題になるのか: 開発では、タスクはローカル dev サーバー(npx trigger.dev dev)を通じて実行されます。 実行されていない場合、トリガーはキューイングされるか、設定に応じて無音で失敗します。 本番環境は異なります。
推奨される修正:
# 開発中は常に dev サーバーを実行:
# ターミナル 1: アプリ
npm run dev
# ターミナル 2: Trigger.dev dev サーバー
npx trigger.dev dev
Dev サーバーが接続されていることを確認:
- 「Connected to Trigger.dev」と表示される必要があります
- タスクはコンソールに表示される必要があります
- ダッシュボードはタスク登録を表示します
package.json の場合:
{
"scripts": {
"dev": "next dev",
"trigger:dev": "trigger.dev dev",
"dev:all": "concurrently \"npm run dev\" \"npm run trigger:dev\""
}
}
バリデーションチェック
ログなしのタスク
重大度: WARNING
メッセージ: タスクにログがありません。本番環境でのデバッグのために logger.log() 呼び出しを追加してください。
修正アクション: '@trigger.dev/sdk/v3' から { logger } をインポートしてログステートメントを追加
エラーハンドリングなしのタスク
重大度: ERROR
メッセージ: タスクに明示的なエラーハンドリングがありません。ハンドルされないエラーは不明確な失敗を引き起こす可能性があります。
修正アクション: タスクロジックを try/catch でラップしてコンテキストを使用してエラーをログします
並行実行制限なしのタスク
重大度: WARNING
メッセージ: タスクに並行実行制限がありません。高い負荷は下流のサービスを圧倒する可能性があります。
修正アクション: api と データベースを保護するために queue: { concurrencyLimit: 10 } を追加
トリガーペイロード内の Date オブジェクト
重大度: ERROR
メッセージ: Date オブジェクトは文字列にシリアル化されます。代わりに ISO 文字列形式を使用します。
修正アクション: new Date() の代わりに date.toISOString() を使用
トリガーペイロード内のクラスインスタンス
重大度: ERROR
メッセージ: クラスインスタンスはシリアル化時にメソッドを失います。プレーンオブジェクトを使用します。
修正アクション: トリガー前にクラスインスタンスをプレーンオブジェクトに変換
明示的な ID のないタスク
重大度: ERROR
メッセージ: タスクは登録用に明示的な id プロパティを持つ必要があります。
修正アクション: タスク定義に id: 'my-task-name' を追加
Trigger.dev API キーがハードコード
重大度: CRITICAL
メッセージ: Trigger.dev API キーはハードコードすべきではありません - TRIGGER_SECRET_KEY 環境変数を使用
修正アクション: ハードコードされたキーを削除して process.env.TRIGGER_SECRET_KEY を使用
Integration ではなく raw OpenAI SDK を使用
重大度: WARNING
メッセージ: 自動再試行とレート制限のために @trigger.dev/openai の使用を検討してください
修正アクション: 以下で置換: import { openai } from '@trigger.dev/openai'
Integration ではなく raw Anthropic SDK を使用
重大度: WARNING
メッセージ: 自動再試行とレート制限のために @trigger.dev/anthropic の使用を検討してください
修正アクション: 以下で置換: import { anthropic } from '@trigger.dev/anthropic'
ループ内の wait.for
重大度: WARNING
メッセージ: ループ内の wait.for は多くのチェックポイントを作成します。代わりにバッチ処理を検討してください。
修正アクション: より少ない wait を使用してアイテムをバッチ処理するか、サブタスクに分割
コラボレーション
デリゲーショントリガー
- redis|bullmq|traditional queue -> bullmq-specialist (マネージドサービスの代わりに Redis キューが必要)
- vercel|deployment|serverless -> vercel-deployment (Trigger.dev にはデプロイメント設定が必要)
- database|postgres|supabase -> supabase-backend (タスクにはデータベースアクセスが必要)
- openai|anthropic|ai model|llm -> llm-architect (タスクには AI モデル統合が必要)
- event-driven|event sourcing|fan out -> inngest (純粋なイベント駆動型モデルが必要)
AI バックグラウンド処理
スキル: trigger-dev、llm-architect、nextjs-app-router、supabase-backend
ワークフロー:
1. ユーザーが UI からトリガー(nextjs-app-router)
2. タスクをキューイング(trigger-dev)
3. AI 処理(llm-architect)
4. 結果を保存(supabase-backend)
Webhook 処理パイプライン
スキル: trigger-dev、stripe-integration、email-systems、supabase-backend
ワークフロー:
1. Webhook を受信(stripe-integration)
2. タスクをトリガー(trigger-dev)
3. データベースを更新(supabase-backend)
4. 通知を送信(email-systems)
バッチデータ処理
スキル: trigger-dev、supabase-backend、backend
ワークフロー:
1. バッチジョブをトリガー(backend)
2. データをチャンク化して処理(trigger-dev)
3. 結果を集約(supabase-backend)
スケジュール済みレポート
スキル: trigger-dev、supabase-backend、email-systems
ワークフロー:
1. Cron がタスクをトリガー(trigger-dev)
2. データを集約(supabase-backend)
3. レポートを生成して送信(email-systems)
関連スキル
うまく機能する: nextjs-app-router、vercel-deployment、ai-agents-architect、llm-architect、email-systems、stripe-integration
使用時期
- ユーザーが以下を言及または暗示: trigger.dev
- ユーザーが以下を言及または暗示: trigger dev
- ユーザーが以下を言及または暗示: バックグラウンドタスク
- ユーザーが以下を言及または暗示: AI バックグラウンドジョブ
- ユーザーが以下を言及または暗示: 長時間実行タスク
- ユーザーが以下を言及または暗示: 統合タスク
- ユーザーが以下を言及または暗示: スケジュール済みタスク
制限事項
- 上記で説明された対象範囲が明確に一致する場合にのみこのスキルを使用してください。
- 出力を環境固有の検証、テスト、またはエキスパートレビューの代わりにしないでください。
- 必要な入力、権限、安全性の境界、または成功基準が不足している場合は停止して明確化を求めてください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- sickn33
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/sickn33/antigravity-awesome-skills / ライセンス: 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出力のデバッグに対応しています。