Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

sentry-react-router-framework-sdk

React Router Framework モードへの Sentry SDK フルセットアップを行うスキルです。「React Router Framework に Sentry を追加したい」「`@sentry/react-router` をインストールしたい」といった要望や、React Router v7 フレームワークアプリにエラーモニタリング・トレーシング・プロファイリング・セッションリプレイ・ログ・ユーザーフィードバックを設定したい場合に使用します。

description の原文を見る

Full Sentry SDK setup for React Router Framework mode. Use when asked to "add Sentry to React Router Framework", "install @sentry/react-router", or configure error monitoring, tracing, profiling, session replay, logs, or user feedback for a React Router v7 framework app.

SKILL.md 本文

All Skills > SDK Setup > React Router Framework SDK

Sentry React Router Framework SDK

React Router Framework プロジェクトをスキャンし、クライアントおよびサーバーエントリーポイント全体での完全な Sentry セットアップにガイドする、意見重視のウィザードです。

このスキルを使用する場合

  • ユーザーが「React Router Framework に Sentry を追加する」または「React Router v7 フレームワークモードで Sentry をセットアップする」と指示した場合
  • ユーザーが @sentry/react-router をインストール、または設定したい場合
  • ユーザーが React Router フレームワークエントリーファイル (entry.client.tsxentry.server.tsx) を使用し、トレース/エラーキャプチャを望む場合
  • ユーザーが reactRouterTracingIntegrationsentryOnErrorcreateSentryHandleRequest、または React Router ウィザードセットアップについて質問した場合

重要: この SDK は現在ベータ版です。 React Router 非フレームワーク/データ/宣言型モード (v5/v6/v7) の場合は、代わりに @sentry/react インテグレーションで sentry-react-sdk を使用してください。


フェーズ 1: 検出

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

# React Router Framework インジケーターとバージョンを検出
cat package.json | grep -E '"react-router"|"@react-router/"|"react-router-dev"|"react-router-serve"'

# Sentry パッケージの選択を検出
cat package.json | grep -E '"@sentry/react-router"|"@sentry/react"|"@sentry/profiling-node"'

# エントリーポイントの可視性とサーバー計測ファイルをチェック
ls entry.client.tsx entry.server.tsx instrument.server.mjs react-router.config.ts vite.config.ts 2>/dev/null

# React Router ファイルがまだ隠れているかチェック (フレームワークモードヘルパーコマンド利用可)
cat package.json | grep -E '"reveal"|react-router'

# ランタイムスタートアップスクリプトとインポート戦略を検出
cat package.json | grep -E '"dev"|"start"|NODE_OPTIONS|--import'

# ロギング/プロファイル関連の任意の依存関係を検出
cat package.json | grep -E '"pino"|"winston"|"@sentry/profiling-node"'

# コンパニオンバックエンドディレクトリを検出
ls ../backend ../server ../api 2>/dev/null
cat ../go.mod ../requirements.txt ../Gemfile ../pom.xml 2>/dev/null | head -3

確認する内容:

質問影響
@sentry/react-router が既にインストールされているか?インストールをスキップし、機能セットアップに進む
フレームワークエントリーファイルが公開されているか?手動設定前に npx react-router reveal が必要
代わりに @sentry/react を使用しているか?これはおそらく非フレームワークルーティング; sentry-react-sdk にリダイレクト
react-router.config.ts + Vite config が存在するか?ソースマップアップロードとビルド終了フック設定パス
NODE_OPTIONS --import が利用可能か?推奨サーバー計測スタートアップパス
@sentry/profiling-node が望まれているか/利用可能か?サーバープロファイリングインテグレーションを有効化
バックエンドディレクトリが見つかったか?フェーズ 4 クロスリンク提案をトリガー

フェーズ 2: 推奨

見つかったことに基づいて具体的な推奨事項を提示します。開放的な質問はしないでください — 提案でリードします。

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

  • エラー監視 — 常に; フレームワークフックでクライアントおよびサーバーエラーをキャプチャ
  • トレース — フレームワークアプリでのクライアント/サーバー要求フローの推奨ベースライン
  • セッションリプレイ — ユーザー向けアプリケーション向け推奨

任意 (強化された可視性):

  • プロファイリング@sentry/profiling-node でのサーバーサイドプロファイリング
  • ログ — 構造化 Sentry.logger.* インジェスチョンと相関
  • ユーザーフィードバック — アプリ内フィードバックウィジェット/レポートフロー

推奨ロジック:

機能推奨する場合...
エラー監視常に — 交渉不可能なベースライン
トレースフレームワークアプリで 通常はい ; ルートとリクエストタイミングは高価値
セッションリプレイユーザー向けプロダクトまたは困難な UX デバッグ
プロファイリングサーバーパフォーマンス調査が必要; Node ランタイム互換性が検証されている
ログチームが Sentry でのログ検索とトレース相関を望んでいる
ユーザーフィードバックプロダクト/サポートチームが直接アプリ内問題レポートを必要としている

提案: "エラー監視 + トレース + セッションリプレイを最初に有効化することをお勧めします。プロファイリング、ログ、ユーザーフィードバックも有効化しますか?"


フェーズ 3: ガイド

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

これは自分で実行する必要があります — ウィザードはインタラクティブであり、ブラウザログインが必要になる場合があります:

npx @sentry/wizard@latest -i reactRouter

@sentry/react-router をインストールし、React Router エントリーファイルを公開し、計測ファイルを作成し、ルートエラー処理を更新し、ソースマップアップロードを設定し、検証例を追加します。

完了したら、検証 に進みます。

ユーザーがウィザードセットアップをスキップした場合は、以下の手動セットアップを続行します。


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

パッケージをインストール

npm install @sentry/react-router --save

プロファイリングが必要な場合:

npm install @sentry/profiling-node --save

フレームワークエントリーファイルを公開

npx react-router reveal

entry.client.tsx でクライアントを設定

import * as Sentry from "@sentry/react-router";
import { startTransition, StrictMode } from "react";
import { hydrateRoot } from "react-dom/client";
import { HydratedRouter } from "react-router/dom";

Sentry.init({
  dsn: "___PUBLIC_DSN___",
  sendDefaultPii: true,
  integrations: [
    Sentry.reactRouterTracingIntegration(),
    Sentry.replayIntegration(),
    Sentry.feedbackIntegration({ colorScheme: "system" }),
  ],
  enableLogs: true,
  tracesSampleRate: 1.0,
  tracePropagationTargets: [/^\//, /^https:\/\/yourserver\.io\/api/],
  replaysSessionSampleRate: 0.1,
  replaysOnErrorSampleRate: 1.0,
});

startTransition(() => {
  hydrateRoot(
    document,
    <StrictMode>
      <HydratedRouter onError={Sentry.sentryOnError} />
    </StrictMode>,
  );
});

instrument.server.mjs でサーバーを設定

import * as Sentry from "@sentry/react-router";
import { nodeProfilingIntegration } from "@sentry/profiling-node";

Sentry.init({
  dsn: "___PUBLIC_DSN___",
  sendDefaultPii: true,
  enableLogs: true,
  integrations: [nodeProfilingIntegration()],
  tracesSampleRate: 1.0,
  profileSessionSampleRate: 1.0,
});

entry.server.tsx でサーバーハンドラーをラップ

import * as Sentry from "@sentry/react-router";
import { createReadableStreamFromReadable } from "@react-router/node";
import { renderToPipeableStream } from "react-dom/server";
import { ServerRouter } from "react-router";

const handleRequest = Sentry.createSentryHandleRequest({
  ServerRouter,
  renderToPipeableStream,
  createReadableStreamFromReadable,
});

export default handleRequest;

export const handleError = Sentry.createSentryHandleError({
  logErrors: false,
});

カスタムサーバーロジックの場合は、wrapSentryHandleRequestgetMetaTagTransformer、およびカスタム handleError での手動 Sentry.captureException を使用します。

スタートアップ時にサーバー計測を読み込む

NODE_OPTIONS --import を優先します:

{
  "scripts": {
    "dev": "NODE_OPTIONS='--import ./instrument.server.mjs' react-router dev",
    "start": "NODE_OPTIONS='--import ./instrument.server.mjs' react-router-serve ./build/server/index.js"
  }
}

ランタイムフラグが制限されるプラットフォーム向けのフォールバック:

import "./instrument.server.mjs";

この直接インポート方法は、--import と比較して自動計測が不完全になる場合があります。

ソースマップを設定

vite.config.ts:

import { reactRouter } from "@react-router/dev/vite";
import {
  sentryReactRouter,
  type SentryReactRouterBuildOptions,
} from "@sentry/react-router";
import { defineConfig } from "vite";

const sentryConfig: SentryReactRouterBuildOptions = {
  org: "___ORG_SLUG___",
  project: "___PROJECT_SLUG___",
  authToken: process.env.SENTRY_AUTH_TOKEN,
};

export default defineConfig((config) => {
  return {
    plugins: [reactRouter(), sentryReactRouter(sentryConfig, config)],
  };
});

react-router.config.ts:

import type { Config } from "@react-router/dev/config";
import { sentryOnBuildEnd } from "@sentry/react-router";

export default {
  ssr: true,
  buildEnd: async ({ viteConfig, reactRouterConfig, buildManifest }) => {
    await sentryOnBuildEnd({ viteConfig, reactRouterConfig, buildManifest });
  },
} satisfies Config;

合意された各機能用

機能を 1 つずつ確認します。参照ファイルを読み込み、ステップに従い、進む前に検証します:

機能参照読み込む場合...
エラー監視${SKILL_ROOT}/references/error-monitoring.md常に
トレース${SKILL_ROOT}/references/tracing.mdルート/リクエストパフォーマンス可視性が必要
プロファイリング${SKILL_ROOT}/references/profiling.mdサーバーパフォーマンス分析が必要
セッションリプレイ${SKILL_ROOT}/references/session-replay.mdユーザー向けアプリ
ログ${SKILL_ROOT}/references/logging.md構造化ログ/相関が必要
ユーザーフィードバック${SKILL_ROOT}/references/user-feedback.mdアプリ内フィードバックフローが必要
フレームワーク機能${SKILL_ROOT}/references/react-router-framework-features.mdエントリーファイル、ラッパー、ソースマップ、スタートアップインポート戦略

各機能について: ${SKILL_ROOT}/references/<feature>.md を読み、ステップに従い、動作確認します。


設定リファレンス

キー Sentry.init() オプション

オプションタイプデフォルト注釈
dsnstring必須; 空の場合 SDK は無効
sendDefaultPiibooleanfalseヘッダー/IP 導出ユーザーコンテキストを含める
integrationsIntegration[]SDK デフォルトトレース/リプレイ/フィードバック/プロファイリングインテグレーションを追加
enableLogsbooleanfalseSentry.logger.* インジェスチョンを有効化
tracesSampleRatenumber通常テスト時は 1.0、本番環境では低い値
tracePropagationTargets`(stringRegExp)[]`SDK デフォルト
replaysSessionSampleRatenumber記録されるすべてのセッションの割合
replaysOnErrorSampleRatenumber記録されるエラーセッションの割合
profileSessionSampleRatenumberプロファイル化されたトランザクションの割合 (サーバープロファイリング)
tunnelstring任意の広告ブロッカー回避エンドポイント
debugbooleanfalse詳細な SDK 診断

フレームワーク固有 API

API目的
reactRouterTracingIntegration()フレームワークモード用のクライアント側トレースインテグレーション
sentryOnErrorReact Router HydratedRouter エラーレポートにフック
createSentryHandleRequest(...)フレームワークエントリーサーバー用のサーバーリクエストラッパー
createSentryHandleError(...)サーバーエラーハンドラーラッパー
wrapServerLoader(...) / wrapServerAction(...)サーバーローダー/アクション用の手動ラッピング
sentryReactRouter(...)ソースマップ/ビルド統合用 Vite プラグイン
sentryOnBuildEnd(...)ソースマップ処理用 React Router ビルド終了フック

検証

ウィザード生成パス

ウィザード例が生成された場合、/sentry-example-page を開きテストアクションをトリガーします。

手動エラーテスト

export async function loader() {
  throw new Error("My first Sentry error!");
}

手動トレーステスト

import * as Sentry from "@sentry/react-router";

export async function loader() {
  return Sentry.startSpan(
    { op: "test", name: "My First Test Transaction" },
    () => {
      throw new Error("My first Sentry error!");
    },
  );
}

ログテスト

Sentry.logger.info("User example action completed");
Sentry.logger.warn("Slow operation detected", { operation: "data_fetch", duration: 3500 });
Sentry.logger.error("Validation failed", { field: "email", reason: "Invalid email" });

Sentry で確認:

  • Issues: エラーが表示される
  • Traces: トランザクション/スパンデータが表示される
  • Profiles: プロファイリング有効時にプロファイルが表示される
  • Replays: 有効時にリプレイエントリーが表示される
  • Logs: enableLogs: true 時にログイベントが表示される
  • User Feedback: 有効時に送信が表示される

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

React Router Framework セットアップ完了後:

  1. アプリが実際に非フレームワークルーティング (v5/v6/v7 データ/宣言型と @sentry/react) かどうかを確認します。
  2. そうなら、非フレームワークルーティングインテグレーション用に sentry-react-sdk にリダイレクトします。

次にコンパニオンバックエンドカバレッジをチェック:

ls ../backend ../server ../api ../go ../python 2>/dev/null
cat ../go.mod ../requirements.txt ../pyproject.toml ../Gemfile ../pom.xml 2>/dev/null | head -5
バックエンド検出スキル提案
Gosentry-go-sdk
Pythonsentry-python-sdk
Rubysentry-ruby-sdk
Node バックエンドサービスsentry-node-sdk
Java サービス@sentry/java ドキュメントを使用

トラブルシューティング

問題解決策
entry.client.tsx / entry.server.tsx が見つからないまず npx react-router reveal を実行
クライアントエラーが欠落HydratedRouteronError={Sentry.sentryOnError} が含まれることを確認
サーバーエラーが欠落createSentryHandleRequestcreateSentryHandleError ラッパーを使用
カスタムサーバーハンドラーが Sentry をバイパスwrapSentryHandleRequest とカスタム handleError での手動 captureException を使用
ソースマップがアップロードされないsentryReactRouter プラグイン設定と sentryOnBuildEnd フックを検証
Vite 設定で SENTRY_AUTH_TOKEN が未定義設定で環境変数を読み込むか .env.sentry-build-plugin を使用
サーバー自動計測が不完全スタートアップ時に NODE_OPTIONS='--import ./instrument.server.mjs' を優先
プロファイリングデータが欠落@sentry/profiling-node がインストールされ nodeProfilingIntegration が有効なことを確認
サポートされていない Node 自動計測バージョンを実行ドキュメント通りに計測 API/手動ラッパーを使用
@sentry/react-router で設定された非フレームワークアプリv5/v6/v7 非フレームワークルート用に sentry-react-sdk + @sentry/react に切り替え

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

詳細情報

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

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

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

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