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

sentry-tanstack-start-sdk

TanStack Start React アプリに Sentry SDK を完全セットアップします。「TanStack Start に Sentry を追加したい」「`@sentry/tanstackstart-react` をインストールしたい」といった場合や、エラーモニタリング・トレーシング・セッションリプレイ・ログ・ユーザーフィードバックの設定が必要なときに使用してください。

description の原文を見る

Full Sentry SDK setup for TanStack Start React. Use when asked to "add Sentry to TanStack Start", "install @sentry/tanstackstart-react", or configure error monitoring, tracing, session replay, logs, or user feedback in a TanStack Start React app.

SKILL.md 本文

All Skills > SDK Setup > TanStack Start React SDK

Sentry TanStack Start React SDK

TanStack Start React プロジェクトをスキャンし、ブラウザとサーバーランタイム向けの完全な Sentry セットアップをガイドする意見的なウィザード。

このスキルを呼び出すべき場合

  • ユーザーが TanStack Start React アプリで「Sentry を追加」または「Sentry をセットアップ」と依頼した場合
  • ユーザーが @sentry/tanstackstart-react をインストールまたは設定したい場合
  • ユーザーが TanStack Start React でエラー監視、トレーシング、セッションリプレイ、ログ、またはユーザーフィードバックが必要な場合
  • ユーザーが sentryTanstackStartwrapFetchWithSentryinstrument.server.mjs、または TanStack Start ミドルウェア計装について質問した場合

注意: このSDKは現在アルファ版であり、TanStack Start 1.0 RC と互換性があるとドキュメントされています。 実装する前に必ず docs.sentry.io/platforms/javascript/guides/tanstackstart-react/ で確認してください。


フェーズ 1: 検出

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

# Detect TanStack Start / Router and existing Sentry
cat package.json | grep -E '"@tanstack/react-start"|"@tanstack/react-router"|"@sentry/tanstackstart-react"'

# Check if Sentry is already present
cat package.json | grep '"@sentry/'

# Detect key files used by the TanStack Start setup
ls src/router.tsx src/start.ts src/server.ts instrument.server.mjs vite.config.ts vite.config.js 2>/dev/null

# Check whether source map upload credentials are configured
cat .env .env.local .env.sentry-build-plugin 2>/dev/null | grep "SENTRY_AUTH_TOKEN"

# Detect deployment hints in scripts
cat package.json | grep -E '"dev"|"build"|"start"|NODE_OPTIONS|--import'

# Detect logging libraries
cat package.json | grep -E '"pino"|"winston"|"loglevel"'

# Detect companion backend directories
ls ../backend ../server ../api 2>/dev/null
cat ../go.mod ../requirements.txt ../Gemfile ../pom.xml 2>/dev/null | head -3

確認すべき事項:

質問影響
@tanstack/react-start が存在するか?このスキルが正しいセットアップパスであることを確認
@sentry/tanstackstart-react が既にインストールされているか?インストールをスキップしてフィーチャーチューニングへ進む
src/router.tsx が存在するか?クライアント側の Sentry.init の配置
src/start.ts が存在するか?サーバー側エラーのグローバルミドルウェアセットアップ
src/server.ts が存在するか?サーバーエントリ計装の配置
instrument.server.mjs が存在するか?ランタイムスタートアップ計装パス
vite.config.ts が存在するか?sentryTanstackStart プラグインとソースマップを追加
SENTRY_AUTH_TOKEN が設定されているか?ソースマップアップロードの準備完了
バックエンドディレクトリが見つかったか?フェーズ 4 のクロスリンク提案をトリガー

フェーズ 2: 推奨

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

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

  • エラー監視 — 常に;ハンドルされていないクライアント・サーバー側エラーを捕捉
  • トレーシング — ブラウザとサーバー全体のリクエストとルートタイミング可視化に高価値
  • セッションリプレイ — ユーザー向けアプリに推奨

オプション(拡張可視化):

  • ログ — 構造化ログ検索とログからトレースへの関連付けが必要な場合に推奨
  • ユーザーフィードバック — プロダクトチームがアプリ内問題レポートを希望する場合に推奨

推奨ロジック:

フィーチャー推奨するタイミング
エラー監視常に — 譲歩できないベースライン
トレーシングTanStack Start では通常はい;ルート + フェッチ計装は即座に価値を提供
セッションリプレイユーザー向けアプリ、ログインフロー、チェックアウトフロー、または再現困難なUXバグ
ログ既存のロギング戦略、サポートワークフロー、またはトレース/ログ関連付けのニーズ
ユーザーフィードバックチームがアプリを離れずに直接ユーザーレポートを希望

提案:「エラー監視 + トレーシング + セッションリプレイをお勧めします。ログとユーザーフィードバックも有効にしましょうか?」


フェーズ 3: ガイド

インストール

npm install @sentry/tanstackstart-react --save

src/router.tsx でクライアント側 Sentry を設定

ルータファクトリ内で Sentry を初期化し、ブラウザにゲートします:

import * as Sentry from "@sentry/tanstackstart-react";
import { createRouter } from "@tanstack/react-router";

export const getRouter = () => {
  const router = createRouter();

  if (!router.isServer) {
    Sentry.init({
      dsn: "___PUBLIC_DSN___",
      sendDefaultPii: true,

      integrations: [
        Sentry.tanstackRouterBrowserTracingIntegration(router),
        Sentry.replayIntegration(),
        Sentry.feedbackIntegration({
          colorScheme: "system",
        }),
      ],

      enableLogs: true,
      tracesSampleRate: 1.0,
      replaysSessionSampleRate: 0.1,
      replaysOnErrorSampleRate: 1.0,
    });
  }

  return router;
};

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

プロジェクトルートに instrument.server.mjs を作成します:

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

Sentry.init({
  dsn: "___PUBLIC_DSN___",
  sendDefaultPii: true,
  enableLogs: true,
  tracesSampleRate: 1.0,
});

vite.config.ts で Vite プラグインを設定

sentryTanstackStart は最後のプラグインである必要があります:

import { defineConfig } from "vite";
import { sentryTanstackStart } from "@sentry/tanstackstart-react/vite";
import { tanstackStart } from "@tanstack/react-start/plugin/vite";

export default defineConfig({
  plugins: [
    tanstackStart(),
    sentryTanstackStart({
      org: "___ORG_SLUG___",
      project: "___PROJECT_SLUG___",
      authToken: process.env.SENTRY_AUTH_TOKEN,
    }),
  ],
});

トークンが .env に保存されている場合は、Vite 設定で loadEnv を使用して読み込んでからプラグインに渡します。

src/server.ts でサーバーエントリポイントを計装

フェッチハンドラを wrapFetchWithSentry でラップします:

import { wrapFetchWithSentry } from "@sentry/tanstackstart-react";
import handler, { createServerEntry } from "@tanstack/react-start/server-entry";

export default createServerEntry(
  wrapFetchWithSentry({
    fetch(request: Request) {
      return handler.fetch(request);
    },
  }),
);

src/start.ts にグローバルサーバーミドルウェアを追加

これらのミドルウェアはサーバー側のリクエストと関数エラーを捕捉します:

import {
  sentryGlobalFunctionMiddleware,
  sentryGlobalRequestMiddleware,
} from "@sentry/tanstackstart-react";
import { createStart } from "@tanstack/react-start";

export const startInstance = createStart(() => {
  return {
    requestMiddleware: [sentryGlobalRequestMiddleware],
    functionMiddleware: [sentryGlobalFunctionMiddleware],
  };
});

Sentry ミドルウェアは各配列の最初に来る必要があります。

ランタイムスタートアップパターン

1つのランタイムメソッドを選択します:

ランタイムパターン使用する場合注記
--import フラグNode のスタートアップフラグを制御できる場合本番環境監視に推奨
src/server.ts での直接インポートホストがスタートアップフラグを制限している場合(例:サーバーレスホスト)ネイティブ Node API への計装に限定

--import の例:

{
  "scripts": {
    "dev": "NODE_OPTIONS='--import ./instrument.server.mjs' vite dev --port 3000",
    "build": "vite build && cp instrument.server.mjs .output/server",
    "start": "node --import ./.output/server/instrument.server.mjs .output/server/index.mjs"
  }
}

直接インポートフォールバック(src/server.ts の先頭):

import "../instrument.server.mjs";

合意された各フィーチャーに対して

フィーチャーを1つずつ進め、リファレンスファイルを読み込み、手順に従って、次に進む前に確認します:

フィーチャーリファレンス読み込むタイミング
エラー監視${SKILL_ROOT}/references/error-monitoring.md常に
トレーシング${SKILL_ROOT}/references/tracing.mdルート/API パフォーマンス可視化が必要な場合
セッションリプレイ${SKILL_ROOT}/references/session-replay.mdユーザー向けアプリ
ログ${SKILL_ROOT}/references/logging.md構造化ログと相関付けが必要な場合
ユーザーフィードバック${SKILL_ROOT}/references/user-feedback.mdアプリ内フィードバック収集が必要な場合
TanStack Start フィーチャー${SKILL_ROOT}/references/tanstackstart-features.mdサーバーエントリ、Vite プラグイン、ソースマップ、ランタイムスタートアップ

各フィーチャーについて: ${SKILL_ROOT}/references/<feature>.md を読み、手順に従い、動作を確認してください。


設定リファレンス

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

オプションデフォルト注記
dsnstring必須;空の場合 SDK は無効
sendDefaultPiibooleanfalseリクエストヘッダーと IP 由来のユーザーコンテキストを送信
integrationsIntegration[]SDK デフォルトTanStack Router トレーシング、リプレイ、フィードバックを必要に応じて含める
enableLogsbooleanfalseSentry.logger.* API を有効化
tracesSampleRatenumber開発では 1.0、本番ではより低い値
replaysSessionSampleRatenumber記録するすべてのセッションの割合
replaysOnErrorSampleRatenumber記録するエラーセッションの割合
tunnelstringオプション:広告ブロッカー回避エンドポイント
debugbooleanfalseSDK 診断ログ

TanStack Start 固有の API

API目的
tanstackRouterBrowserTracingIntegration(router)ブラウザナビゲーションのトレーシング
wrapFetchWithSentry(...)サーバーリクエストトレーシング + フェッチハンドラのエラー捕捉
sentryGlobalRequestMiddlewareリクエストレベルのサーバー側エラーを捕捉
sentryGlobalFunctionMiddlewareサーバー関数エラーを捕捉
sentryTanstackStart({...})ソースマップとミドルウェア計装用の Vite プラグイン

検証

テストイベントをトリガーして Sentry がデータを受信することを確認します。

イシューテスト(フロントエンド)

<button
  type="button"
  onClick={() => {
    throw new Error("Sentry Test Error");
  }}
>
  Break the world
</button>

トレーシングテスト(フロントエンド + API ルート)

<button
  type="button"
  onClick={async () => {
    await Sentry.startSpan({ name: "Example Frontend Span", op: "test" }, async () => {
      const res = await fetch("/api/sentry-example");
      if (!res.ok) {
        throw new Error("Sentry Example Frontend Error");
      }
    });
  }}
>
  Break the world
</button>

ログテスト

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 で確認します:

  • イシュー: フロントエンド/サーバーエラーが表示されているか
  • トレース: ブラウザとサーバースパンが表示されているか
  • リプレイ: 有効な場合、セッションリプレイが表示されているか
  • ログ: enableLogs: true の場合、ログ行が表示されているか
  • ユーザーフィードバック: フィードバック統合が有効な場合、送信が表示されているか

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

TanStack Start セットアップを完了した後、Sentry が設定されていないコンパニオンバックエンドが存在するかどうかを確認します:

ls ../backend ../server ../api ../go ../python 2>/dev/null
cat ../go.mod ../requirements.txt ../pyproject.toml ../Gemfile ../pom.xml 2>/dev/null | head -5

Sentry が設定されていないバックエンドが存在する場合は、対応するスキルを提案します:

検出されたバックエンドスキルを提案
Go (go.mod)sentry-go-sdk
Python (requirements.txt, pyproject.toml)sentry-python-sdk
Ruby (Gemfile)sentry-ruby-sdk
Java (pom.xml, build.gradle)@sentry/java ドキュメントを使用
Node.js バックエンドサービスsentry-node-sdk

トラブルシューティング

問題解決策
イベントが表示されないdebug: true を設定し、DSN を確認し、クライアント/サーバー初期化ファイルの両方が実行されていることを確認
サーバートレースがないsrc/server.tswrapFetchWithSentry を使用していることと、ランタイムが instrument.server.mjs を読み込んでいることを確認
ルートハンドラからサーバーエラーが見つからないsentryGlobalRequestMiddlewaresentryGlobalFunctionMiddleware が配列の最初にあることを確認
ソースマップが解決されないSENTRY_AUTH_TOKENsentryTanstackStart 設定の orgproject を確認
Vite 設定で SENTRY_AUTH_TOKEN が未定義loadEnv(mode, process.cwd(), "") または .env.sentry-build-plugin を使用
リプレイが記録されないreplayIntegration()integrations にあることを確認し、サンプルレートがゼロでないことを確認
フィードバックウィジェットが見えないfeedbackIntegration() が設定されていることを確認し、CSS z-index の競合を確認
Sentry にログがないenableLogs: true を設定し、Sentry.logger.* API を使用
直接インポートセットアップがライブラリスパンを見落とす可能な場合は --import スタートアップを優先;直接インポートはネイティブ Node 計装のみに対応
SSR レンダリング例外が自動捕捉されないエラーバウンダリ/フォールバックハンドラで Sentry.captureException で手動キャプチャ

ライセンス: 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