Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 0品質スコア 50/100

sentry-nextjs-sdk

Next.jsアプリケーションにSentry SDKを完全導入するスキルです。「SentryをNext.jsに追加して」「@sentry/nextjsをインストールして」と依頼された場合や、エラーモニタリング・トレーシング・セッションリプレイ・ロギング・プロファイリング・AIモニタリング・cronの設定が必要な際に使用します。App RouterおよびPages RouterのNext.js 13以降に対応しています。

description の原文を見る

Full Sentry SDK setup for Next.js. Use when asked to "add Sentry to Next.js", "install @sentry/nextjs", or configure error monitoring, tracing, session replay, logging, profiling, AI monitoring, or crons for Next.js applications. Supports Next.js 13+ with App Router and Pages Router.

SKILL.md 本文

All Skills > SDK Setup > Next.js SDK

Sentry Next.js SDK

Next.js プロジェクトをスキャンして、3つのランタイム(ブラウザ、Node.js サーバー、Edge)全体での完全な Sentry セットアップをガイドする意見的なウィザードです。

このスキルを呼び出すタイミング

  • ユーザーが「Next.js に Sentry を追加する」または「Next.js アプリに Sentry をセットアップする」とリクエストしている
  • ユーザーが @sentry/nextjs をインストールまたは構成したい
  • ユーザーが Next.js でエラーモニタリング、トレーシング、セッションリプレイ、ログ、またはプロファイリングを望んでいる
  • ユーザーが instrumentation.tswithSentryConfig()、または global-error.tsx について質問している
  • ユーザーがサーバーアクション、サーバーコンポーネントエラー、またはエッジランタイムエラーをキャプチャしたい

注記: 以下の SDK バージョンと API は、執筆時点での現在の Sentry ドキュメント(@sentry/nextjs ≥8.28.0)を反映しています。 実装前に必ず docs.sentry.io/platforms/javascript/guides/nextjs/ で確認してください。


フェーズ 1: 検出

推奨事項を行う前に、プロジェクトを理解するために以下のコマンドを実行します:

# Next.js バージョンと既存 Sentry を検出
cat package.json | grep -E '"next"|"@sentry/'

# ルータータイプ(App Router vs Pages Router)を検出
ls src/app app src/pages pages 2>/dev/null

# 既存 Sentry 設定ファイルを確認
ls instrumentation.ts instrumentation-client.ts sentry.server.config.ts sentry.edge.config.ts 2>/dev/null
ls src/instrumentation.ts src/instrumentation-client.ts 2>/dev/null

# next.config を確認
ls next.config.ts next.config.js next.config.mjs 2>/dev/null

# 既存エラーバウンダリを確認
find . -name "global-error.tsx" -o -name "_error.tsx" 2>/dev/null | grep -v node_modules

# ビルドツールを確認
cat package.json | grep -E '"turbopack"|"webpack"'

# ログライブラリを確認
cat package.json | grep -E '"pino"|"winston"|"bunyan"'

# コンパニオンバックエンドを確認
ls ../backend ../server ../api 2>/dev/null
cat ../go.mod ../requirements.txt ../Gemfile 2>/dev/null | head -3

決定すること:

質問影響
Next.js のバージョン?13+ が必須;Turbopack サポートには 15+ が必要
App Router または Pages Router?必要なエラーバウンダリファイルを決定(global-error.tsx vs _error.tsx
@sentry/nextjs は既にありますか?インストールをスキップ、機能設定に進む
既存の instrumentation.ts はありますか?置き換えるのではなく Sentry をマージする
Turbopack を使用していますか?withSentryConfig のツリーシェーキングは webpack のみ
ログライブラリを検出しましたか?Sentry Logs インテグレーションをお勧めします
バックエンドディレクトリが見つかりましたか?フェーズ 4 のクロスリンク提案をトリガー

フェーズ 2: 推奨

見つけたものに基づいて具体的な推奨事項を提示します。オープンエンドの質問はしないでください — 提案をリードしてください:

推奨(コアカバレッジ):

  • エラーモニタリング — 常に;サーバーエラー、クライアントエラー、サーバーアクション、ハンドルされない Promise 拒否をキャプチャします
  • トレーシング — サーバー側リクエストトレーシング + すべてのランタイムでのクライアント側ナビゲーションスパン
  • セッションリプレイ — ユーザー向けアプリに推奨;エラー周辺のセッションを記録します

オプション(強化されたオブザーバビリティ):

  • ログSentry.logger.* を経由した構造化ログ;pino/winston またはログ検索が必要な場合に推奨
  • プロファイリング — 継続的プロファイリング;Document-Policy: js-profiling ヘッダが必要です
  • AI モニタリング — OpenAI、Vercel AI SDK、Anthropic;AI/LLM 呼び出しが検出された場合に推奨
  • クロン — 逃したまたは失敗したスケジュールされたジョブを検出;クロンパターンが検出された場合に推奨
  • メトリクスSentry.metrics.* を経由したカスタムメトリクス;カスタム KPI またはビジネスメトリクスが必要な場合に推奨

推奨ロジック:

機能推奨タイミング...
エラーモニタリング常に — 非交渉のベースライン
トレーシング常に Next.js の場合 — サーバールートトレーシング + クライアントナビゲーションは高価値
セッションリプレイユーザー向けアプリ、ログインフロー、またはチェックアウトページ
ログアプリが構造化ログを使用するか、ログ対トレース相関が必要な場合
プロファイリングパフォーマンス重視アプリ;クライアントが Document-Policy: js-profiling を設定する場合
AI モニタリングアプリが OpenAI、Vercel AI SDK、または Anthropic を呼び出す場合
クロンアプリが Vercel Cron ジョブ、スケジュールされた API ルート、または node-cron の使用がある場合
メトリクスアプリが Sentry.metrics.* を経由したカスタムカウンター、ゲージ、またはヒストグラムが必要な場合

提案する:「エラーモニタリング + トレーシング + セッションリプレイのセットアップをお勧めします。ログまたはプロファイリングも追加したいですか?」


フェーズ 3: ガイド

オプション 1: ウィザード(推奨)

これは自分で実行する必要があります — ウィザードはブラウザでログインを開くため、エージェントが処理できない対話的入力が必要です。ターミナルにコピー&ペーストしてください:

npx @sentry/wizard@latest -i nextjs

ログイン、org/プロジェクト選択、SDK インストール、設定ファイル(instrumentation-client.tssentry.server.config.tssentry.edge.config.tsinstrumentation.ts)、next.config.ts ラッピング、ソースマップアップロード、/sentry-example-page の追加を処理します。

完了後、戻ってきて 検証 に進んでください。

ユーザーがウィザードをスキップした場合、以下の「オプション 2(手動セットアップ)」に進みます。


オプション 2: 手動セットアップ

インストール

npm install @sentry/nextjs --save

instrumentation-client.ts を作成 — ブラウザ / クライアントランタイム

古いドキュメントは sentry.client.config.ts を使用していました — 現在のパターンは instrumentation-client.ts です。

import * as Sentry from "@sentry/nextjs";

Sentry.init({
  dsn: process.env.NEXT_PUBLIC_SENTRY_DSN ?? "___PUBLIC_DSN___",

  sendDefaultPii: true,

  // 開発環境では 100%、本番環境では 10%
  tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,

  // セッションリプレイ: 全セッションの 10%、エラーのあるセッションの 100%
  replaysSessionSampleRate: 0.1,
  replaysOnErrorSampleRate: 1.0,

  enableLogs: true,

  integrations: [
    Sentry.replayIntegration(),
    // オプション: ユーザーフィードバックウィジェット
    // Sentry.feedbackIntegration({ colorScheme: "system" }),
  ],
});

// App Router ナビゲーション遷移にフック(App Router のみ)
export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;

sentry.server.config.ts を作成 — Node.js サーバーランタイム

import * as Sentry from "@sentry/nextjs";

Sentry.init({
  dsn: process.env.SENTRY_DSN ?? "___DSN___",

  sendDefaultPii: true,
  tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,

  // スタックフレームにローカル変数値をアタッチ
  includeLocalVariables: true,

  enableLogs: true,
});

sentry.edge.config.ts を作成 — エッジランタイム

import * as Sentry from "@sentry/nextjs";

Sentry.init({
  dsn: process.env.SENTRY_DSN ?? "___DSN___",

  sendDefaultPii: true,
  tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,

  enableLogs: true,
});

instrumentation.ts を作成 — サーバー側登録フック

Next.js < 14.0.4 では next.configexperimental.instrumentationHook: true が必要です。14.0.4+ では安定しています。

import * as Sentry from "@sentry/nextjs";

export async function register() {
  if (process.env.NEXT_RUNTIME === "nodejs") {
    await import("./sentry.server.config");
  }

  if (process.env.NEXT_RUNTIME === "edge") {
    await import("./sentry.edge.config");
  }
}

// すべてのハンドルされないサーバー側リクエストエラーを自動的にキャプチャします
// @sentry/nextjs >= 8.28.0 が必要です
export const onRequestError = Sentry.captureRequestError;

ランタイムディスパッチ:

NEXT_RUNTIME読み込まれる設定ファイル
"nodejs"sentry.server.config.ts
"edge"sentry.edge.config.ts
(クライアントバンドル)instrumentation-client.ts (Next.js が直接処理)

App Router: app/global-error.tsx を作成

これはルートレイアウトと React レンダリングエラーをキャッチします:

"use client";

import * as Sentry from "@sentry/nextjs";
import NextError from "next/error";
import { useEffect } from "react";

export default function GlobalError({
  error,
}: {
  error: Error & { digest?: string };
}) {
  useEffect(() => {
    Sentry.captureException(error);
  }, [error]);

  return (
    <html>
      <body>
        <NextError statusCode={0} />
      </body>
    </html>
  );
}

Pages Router: pages/_error.tsx を更新

import * as Sentry from "@sentry/nextjs";
import type { NextPageContext } from "next";
import NextErrorComponent from "next/error";

type ErrorProps = { statusCode: number };

export default function CustomError({ statusCode }: ErrorProps) {
  return <NextErrorComponent statusCode={statusCode} />;
}

CustomError.getInitialProps = async (ctx: NextPageContext) => {
  await Sentry.captureUnderscoreErrorException(ctx);
  return NextErrorComponent.getInitialProps(ctx);
};

next.config.tswithSentryConfig() でラップ

import type { NextConfig } from "next";
import { withSentryConfig } from "@sentry/nextjs";

const nextConfig: NextConfig = {
  // 既存の Next.js 設定
};

export default withSentryConfig(nextConfig, {
  org: "___ORG_SLUG___",
  project: "___PROJECT_SLUG___",

  // ソースマップアップロード認証トークン(以下の「ソースマップ」セクションを参照)
  authToken: process.env.SENTRY_AUTH_TOKEN,

  // より良いスタックトレース解決のためにより広いセットのクライアントソースファイルをアップロード
  widenClientFileUpload: true,

  // 広告ブロッカーをバイパスするためにプロキシ API ルートを作成
  tunnelRoute: "/monitoring",

  // CI 以外の出力を抑制
  silent: !process.env.CI,
});

トンネルルートをミドルウェアから除外

middleware.ts がある場合、認証またはリダイレクトロジックからトンネルパスを除外します:

// middleware.ts
export const config = {
  matcher: [
    // 監視ルート、Next.js インターナル、静的ファイルを除外
    "/((?!monitoring|_next/static|_next/image|favicon.ico).*)",
  ],
};

ソースマップセットアップ

ソースマップは本番環境のスタックトレースを読みやすくします — ソースマップなしでは、ミニ化されたコードが表示されます。本番環境アプリではこれは必須です。

ステップ 1: Sentry 認証トークンを生成

sentry.io/settings/auth-tokens/ に移動して、project:releases および org:read スコープを持つトークンを作成します。

ステップ 2: 環境変数を設定

# .env.sentry-build-plugin  (このファイルを gitignore する)
SENTRY_AUTH_TOKEN=sntrys_eyJ...

または CI シークレットで設定:

SENTRY_AUTH_TOKEN=sntrys_eyJ...
SENTRY_ORG=my-org        # next.config で設定されている場合はオプション
SENTRY_PROJECT=my-project # next.config で設定されている場合はオプション

ステップ 3: .gitignore に追加

.env.sentry-build-plugin

ステップ 4: authTokennext.config.ts で接続されていることを確認

withSentryConfig(nextConfig, {
  org: "my-org",
  project: "my-project",
  authToken: process.env.SENTRY_AUTH_TOKEN, // .env.sentry-build-plugin または CI env から読み込む
  widenClientFileUpload: true,
});

ソースマップは next build のたびに自動的にアップロードされます。


合意された各機能の場合

対応するリファレンスファイルをロードして、その手順に従います:

機能リファレンスファイル読み込みタイミング...
エラーモニタリングreferences/error-monitoring.md常に(ベースライン) — App Router エラーバウンダリ、Pages Router _error.tsx、サーバーアクションラッピング
トレーシングreferences/tracing.mdサーバー側リクエストトレーシング、クライアントナビゲーション、分散トレーシング、tracePropagationTargets
セッションリプレイreferences/session-replay.mdユーザー向けアプリ;プライバシーマスキング、キャンバス記録、ネットワークキャプチャ
ログreferences/logging.md構造化ログ、Sentry.logger.*、ログ対トレース相関
プロファイリングreferences/profiling.md継続的プロファイリング、Document-Policy ヘッダ、nodeProfilingIntegration
AI モニタリングreferences/ai-monitoring.mdアプリが OpenAI、Vercel AI SDK、または Anthropic を使用する場合
クロンreferences/crons.mdVercel Cron、スケジュールされた API ルート、node-cron
メトリクスreferences/metrics.mdSentry.metrics.* を経由したカスタムカウンター、ゲージ、分布

各機能について:リファレンスファイルを読み、その手順に正確に従い、次に進む前に検証します。


検証

ウィザードまたは手動セットアップの後、Sentry が機能していることを確認します:

// サーバーアクションまたは API ルートに一時的に追加してから削除
import * as Sentry from "@sentry/nextjs";

throw new Error("Sentry test error — delete me");
// または
Sentry.captureException(new Error("Sentry test error — delete me"));

その後、Sentry Issues ダッシュボード をチェック — エラーは ~30 秒以内に表示されるはずです。

検証チェックリスト:

チェック方法
クライアントエラーがキャプチャされたクライアントコンポーネントでスロー、Sentry で検証
サーバーエラーがキャプチャされたサーバーアクションまたは API ルートでスロー
エッジエラーがキャプチャされたミドルウェアまたはエッジルートハンドラーでスロー
ソースマップが機能しているスタックトレースが読み可能なファイル名を表示することを確認
セッションリプレイが機能しているSentry ダッシュボードの「Replays」タブをチェック

設定リファレンス

Sentry.init() オプション

オプションタイプデフォルト注記
dsnstring必須。クライアントには NEXT_PUBLIC_SENTRY_DSN、サーバーには SENTRY_DSN を使用
tracesSampleRatenumber0–1;開発環境は 1.0、本番環境は 0.1 推奨
replaysSessionSampleRatenumber0.1記録される全セッションの割合
replaysOnErrorSampleRatenumber1.0記録されるエラーセッションの割合
sendDefaultPiibooleanfalseイベントに IP、リクエストヘッダを含める
includeLocalVariablesbooleanfalseローカル変数値をスタックフレームにアタッチ(サーバーのみ)
enableLogsbooleanfalseSentry Logs プロダクトを有効化
environmentstring自動"production""staging" など
releasestring自動コミット SHA またはバージョンタグに設定
debugbooleanfalseSDK アクティビティをコンソールにログ

withSentryConfig() オプション

オプションタイプ注記
orgstringSentry 組織スラッグ
projectstringSentry プロジェクトスラッグ
authTokenstringソースマップアップロードトークン(SENTRY_AUTH_TOKEN
widenClientFileUploadbooleanより良いスタックトレースのためにより多くのクライアントファイルをアップロード
tunnelRoutestring広告ブロッカーをバイパスするための API ルートパス(例 "/monitoring"
silentbooleanビルド出力を抑制(!process.env.CI 推奨)
webpack.treeshake.*objectSDK 機能をツリーシェーク(webpack のみ、Turbopack ではない)

環境変数

変数ランタイム目的
NEXT_PUBLIC_SENTRY_DSNクライアントブラウザ Sentry init 用の DSN(公開)
SENTRY_DSNサーバー / エッジサーバー/エッジ Sentry init 用の DSN
SENTRY_AUTH_TOKENビルドソースマップアップロード認証トークン(シークレット)
SENTRY_ORGビルドOrg スラッグ(設定の org の代替)
SENTRY_PROJECTビルドプロジェクトスラッグ(設定の project の代替)
SENTRY_RELEASEサーバーリリースバージョン文字列(git から自動検出)
NEXT_RUNTIMEサーバー / エッジ"nodejs" または "edge"(Next.js が内部的に設定)

フェーズ 4: クロスリンク

Next.js セットアップが完了した後、コンパニオンサービスをチェック:

# 隣接ディレクトリ内のバックエンドサービスを確認
ls ../backend ../server ../api ../services 2>/dev/null

# バックエンド言語インジケーターを確認
cat ../go.mod 2>/dev/null | head -3
cat ../requirements.txt ../pyproject.toml 2>/dev/null | head -3
cat ../Gemfile 2>/dev/null | head -3
cat ../pom.xml ../build.gradle 2>/dev/null | head -3

バックエンドが見つかった場合、マッチングする SDK スキルを提案:

バックエンド検出スキルを提案
Go (go.mod)sentry-go-sdk
Python (requirements.txt, pyproject.toml)sentry-python-sdk
Ruby (Gemfile)sentry-ruby-sdk
Java/Kotlin (pom.xml, build.gradle)docs.sentry.io/platforms/java/ を参照
Node.js (Express、Fastify、Hapi)@sentry/nodedocs.sentry.io/platforms/javascript/guides/express/ を参照

フロントエンドとバックエンドを同じ DSN またはリンクされたプロジェクトで接続すると、分散トレーシングが有効になります — ブラウザ、Next.js サーバー、バックエンド API にまたがるスタックトレースが単一のトレースビューに表示されます。


トラブルシューティング

問題原因解決策
イベントが表示されないDSN が設定されていないか debug: false がエラーを隠している一時的に debug: true を設定;ブラウザネットワークタブで sentry.io へのリクエストを確認
スタックトレースがミニ化されたコードを表示ソースマップがアップロードされていないSENTRY_AUTH_TOKEN が設定されていることを確認;next build を実行してビルド出力の「Source Maps」を確認
onRequestError が動作していないSDK バージョン < 8.28.0アップグレード:npm install @sentry/nextjs@latest
エッジランタイムエラーがないsentry.edge.config.ts が読み込まれていないNEXT_RUNTIME === "edge" のときに instrumentation.ts がこれをインポートしていることを確認
トンネルルートが 404 を返すtunnelRoute は設定されているが Next.js ルートがないプラグインが自動作成するはず;tunnelRoute を追加後に next build を実行したことを確認
withSentryConfig ツリーシェーキングでビルドが壊れるTurbopack が使用されているツリーシェーキングオプションは webpack でのみ機能;Turbopack 使用時に webpack.treeshake オプションを削除
global-error.tsx がエラーをキャッチしていない"use client" ディレクティブが不足している"use client"global-error.tsx の最初の行に追加
セッションリプレイが記録されていないクライアント init に replayIntegration() がないinstrumentation-client.tsintegrationsSentry.replayIntegration() を追加

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
getsentry
リポジトリ
getsentry/sentry-for-ai
ライセンス
MIT
最終更新
不明

Source: https://github.com/getsentry/sentry-for-ai / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: getsentry · getsentry/sentry-for-ai · ライセンス: MIT