Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

sentry-svelte-sdk

Svelte および SvelteKit アプリケーションへの Sentry SDK の完全なセットアップを行います。「Svelte に Sentry を追加して」「SvelteKit に Sentry を導入して」「`@sentry/sveltekit` をインストールして」といった指示や、エラーモニタリング・トレーシング・セッションリプレイ・ロギングの設定が必要な場合に使用してください。

description の原文を見る

Full Sentry SDK setup for Svelte and SvelteKit. Use when asked to "add Sentry to Svelte", "add Sentry to SvelteKit", "install @sentry/sveltekit", or configure error monitoring, tracing, session replay, or logging for Svelte or SvelteKit applications.

SKILL.md 本文

All Skills > SDK Setup > Svelte SDK

Sentry Svelte SDK

プロジェクトをスキャンし、Svelte と SvelteKit 向けの完全な Sentry セットアップをガイドする実装重視のウィザード。

このスキルを実行する場合

  • ユーザーが Svelte/SvelteKit アプリで「Sentry を追加」または「Sentry をセットアップ」するよう求めた場合
  • ユーザーが Svelte や SvelteKit でエラーモニタリング、トレーシング、セッションリプレイ、またはロギングを希望している場合
  • ユーザーが @sentry/svelte@sentry/sveltekit、または Svelte 向け Sentry SDK に言及した場合

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


Phase 1: 検出

推奨を行う前にプロジェクトを理解するために、以下のコマンドを実行してください:

# フレームワークのタイプを検出
cat package.json | grep -E '"svelte"|"@sveltejs/kit"|"@sentry/svelte"|"@sentry/sveltekit"'

# SvelteKit のインジケータをチェック
ls svelte.config.js svelte.config.ts vite.config.ts vite.config.js 2>/dev/null

# SvelteKit バージョンをチェック(どのセットアップパターンを使用するかを決定)
cat package.json | grep '"@sveltejs/kit"'

# Sentry がすでにインストールされているかを確認
cat package.json | grep '"@sentry/'

# 既存のフックファイルをチェック
ls src/hooks.client.ts src/hooks.client.js src/hooks.server.ts src/hooks.server.js \
   src/instrumentation.server.ts 2>/dev/null

# ロギングライブラリを検出(Node サイド)
cat package.json | grep -E '"pino"|"winston"|"consola"'

# 隣接するディレクトリにバックエンドがあるかを検出(Go、Python、Ruby など)
ls ../backend ../server ../api 2>/dev/null
cat ../go.mod ../requirements.txt ../Gemfile 2>/dev/null | head -3

確認すべきこと:

質問影響
package.json@sveltejs/kit がある?SvelteKit パスと通常の Svelte パスの区別
SvelteKit ≥2.31.0?モダン(instrumentation.server.ts)vs レガシー セットアップ
@sentry/sveltekit がすでに存在?インストールをスキップ、機能設定に進む
vite.config.ts が存在?Vite プラグイン経由のソースマップアップロードが利用可能
バックエンドディレクトリが見つかった?Phase 4 クロスリンク提案をトリガー

Phase 2: 推奨

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

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

  • エラーモニタリング — 常に;クライアントとサーバー上の未処理エラーを自動キャプチャ
  • トレーシング — SvelteKit はクライアント側ナビゲーション スパンとサーバー側リクエスト スパンの両方を備えています;常に推奨
  • セッションリプレイ — ユーザーに公開される SvelteKit アプリに推奨(クライアント側のみ)

オプション(強化された可観測性):

  • ロギングSentry.logger.* 経由の構造化ログ;アプリがサーバー側ロギングを使用または ログからトレースへの相関が必要な場合に推奨

推奨ロジック:

機能推奨される場合...
エラーモニタリング常に — 交渉の余地がないベースライン
トレーシングSvelteKit の場合は常に(クライアント + サーバー);API を呼び出す場合は通常の Svelte の場合
セッションリプレイユーザーに公開されるアプリ、ログインフロー、またはチェックアウトページが存在
ロギングアプリがすでにサーバー側ロギングを使用、または構造化ログ検索が必要

提案:「エラーモニタリング + トレーシング + セッションリプレイのセットアップを推奨します。構造化ロギングも追加しますか?」


Phase 3: ガイド

セットアップ パスを決定

プロジェクトパッケージセットアップの複雑さ
SvelteKit (≥2.31.0)@sentry/sveltekit5 つのファイルを作成/変更
SvelteKit (<2.31.0)@sentry/sveltekit3 つのファイル(hooks.server.ts で初期化)
通常の Svelte (@sveltejs/kit なし)@sentry/svelte単一エントリポイント

Path A: SvelteKit (推奨 — モダン、≥2.31.0)

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

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

npx @sentry/wizard@latest -i sveltekit

ログイン、組織/プロジェクト選択、SDK インストール、クライアント/サーバー フック、Vite プラグイン設定、ソースマップ アップロード、および /sentry-example-page を追加します。

完了したら、戻って 検証 にスキップしてください。

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

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

ステップ 1 — インストール

npm install @sentry/sveltekit --save

ステップ 2 — svelte.config.js — インストルメンテーションを有効化

import adapter from "@sveltejs/adapter-auto";

const config = {
  kit: {
    adapter: adapter(),
    experimental: {
      instrumentation: { server: true },
      tracing: { server: true },
    },
  },
};

export default config;

ステップ 3 — src/instrumentation.server.ts — サーバー側初期化(スタートアップ時に 1 度実行)

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

Sentry.init({
  dsn: process.env.SENTRY_DSN,
  environment: process.env.SENTRY_ENVIRONMENT,
  release: process.env.SENTRY_RELEASE,

  sendDefaultPii: true,
  tracesSampleRate: 1.0,    // 本番環境では 0.1–0.2 に低下
  enableLogs: true,
});

ステップ 4 — src/hooks.client.ts — クライアント側初期化

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

Sentry.init({
  dsn: import.meta.env.PUBLIC_SENTRY_DSN ?? import.meta.env.VITE_SENTRY_DSN,
  environment: import.meta.env.MODE,

  sendDefaultPii: true,
  tracesSampleRate: 1.0,

  integrations: [
    Sentry.replayIntegration({
      maskAllText: true,
      blockAllMedia: true,
    }),
  ],

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

export const handleError = Sentry.handleErrorWithSentry();

ステップ 5 — src/hooks.server.ts — サーバー フック(モダンセットアップでは初期化なし)

import * as Sentry from "@sentry/sveltekit";
import { sequence } from "@sveltejs/kit/hooks";

export const handleError = Sentry.handleErrorWithSentry();

// sentryHandle() は受信リクエストをインストルメント化し、ルート スパンを作成します
export const handle = Sentry.sentryHandle();

// 他の handle 関数がある場合は、sequence() で構成します:
// export const handle = sequence(Sentry.sentryHandle(), myAuthHandle);

ステップ 6 — vite.config.ts — ソースマップ(SENTRY_AUTH_TOKEN が必要)

import { sveltekit } from "@sveltejs/kit/vite";
import { sentrySvelteKit } from "@sentry/sveltekit";
import { defineConfig } from "vite";

export default defineConfig({
  plugins: [
    // sentrySvelteKit は sveltekit() の前に来る必要があります
    sentrySvelteKit({
      org: process.env.SENTRY_ORG,
      project: process.env.SENTRY_PROJECT,
      authToken: process.env.SENTRY_AUTH_TOKEN,
    }),
    sveltekit(),
  ],
});

.env に追加(コミットしないでください):

SENTRY_AUTH_TOKEN=sntrys_...
SENTRY_ORG=my-org-slug
SENTRY_PROJECT=my-project-slug

Path B: SvelteKit レガシー (<2.31.0 または @sentry/sveltekit <10.8.0)

instrumentation.server.tssvelte.config.js の変更をスキップします。代わりに、Sentry.init()hooks.server.ts に直接入れます:

// src/hooks.server.ts (レガシー — 初期化はここに行く)
import * as Sentry from "@sentry/sveltekit";

Sentry.init({
  dsn: process.env.SENTRY_DSN,
  tracesSampleRate: 1.0,
  enableLogs: true,
});

export const handleError = Sentry.handleErrorWithSentry();
export const handle = Sentry.sentryHandle();

hooks.client.tsvite.config.ts はモダン パスと同じです。


Path C: 通常の Svelte (SvelteKit なし)

インストール:

npm install @sentry/svelte --save

エントリポイントsrc/main.ts または src/main.jsでアプリをマウントする前に設定:

import * as Sentry from "@sentry/svelte";
import App from "./App.svelte";

Sentry.init({
  dsn: import.meta.env.VITE_SENTRY_DSN,
  environment: import.meta.env.MODE,

  sendDefaultPii: true,

  integrations: [
    Sentry.browserTracingIntegration(),
    Sentry.replayIntegration({
      maskAllText: true,
      blockAllMedia: true,
    }),
  ],

  tracesSampleRate: 1.0,
  tracePropagationTargets: ["localhost", /^https:\/\/yourapi\.io/],
  replaysSessionSampleRate: 0.1,
  replaysOnErrorSampleRate: 1.0,
  enableLogs: true,
});

const app = new App({ target: document.getElementById("app")! });
export default app;

オプション: Svelte コンポーネント トラッキング(すべてのコンポーネントにトラッキングを自動注入):

// svelte.config.js
import { withSentryConfig } from "@sentry/svelte";

export default withSentryConfig(
  { compilerOptions: {} },
  { componentTracking: { trackComponents: true } }
);

同意した各機能について

機能を 1 つずつ進めます。参照ファイルをロード、その手順に従い、移動する前に検証します:

機能参照ロードする場合...
エラーモニタリング${SKILL_ROOT}/references/error-monitoring.md常に(ベースライン)
トレーシング${SKILL_ROOT}/references/tracing.mdAPI 呼び出し / 分散トレーシングが必要
セッションリプレイ${SKILL_ROOT}/references/session-replay.mdユーザーに公開されるアプリ
ロギング${SKILL_ROOT}/references/logging.md構造化ログ / ログからトレースへの相関

各機能について: ${SKILL_ROOT}/references/<feature>.md を読み、手順に従い、動作を検証してください。


SvelteKit ファイル サマリー

ファイル目的モダンレガシー
src/instrumentation.server.tsサーバー Sentry.init() — スタートアップ時に 1 度実行✅ 必須
src/hooks.client.tsクライアント Sentry.init() + handleError✅ 必須✅ 必須
src/hooks.server.tshandleError + sentryHandle()(初期化なし)✅ 必須✅ 初期化はここに
svelte.config.jsexperimental.instrumentation.server を有効化✅ 必須
vite.config.tsソースマップ用 sentrySvelteKit() プラグイン✅ 推奨✅ 推奨
.envSENTRY_AUTH_TOKENSENTRY_ORGSENTRY_PROJECT✅ ソースマップ用✅ ソースマップ用

設定リファレンス

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

オプションタイプデフォルト備考
dsnstring必須。 env 変数を使用;空の場合、SDK は無効
environmentstring"production"例:"staging""development"
releasestring例:"my-app@1.2.3" または git SHA
sendDefaultPiibooleanfalseIP アドレスとリクエスト ヘッダーを含む
tracesSampleRatenumber0–1;開発環境では 1.0、本番環境では 0.1–0.2
tracesSamplerfunctionトランザクションごとのサンプリング;tracesSampleRate をオーバーライド
tracePropagationTargets(string|RegExp)[]分散トレーシング ヘッダーを受け取る URL
replaysSessionSampleRatenumber記録されるすべてのセッションの割合(クライアント側のみ)
replaysOnErrorSampleRatenumber記録されるエラー セッションの割合(クライアント側のみ)
enableLogsbooleanfalseSentry.logger.* API を有効化
beforeSendLogfunction送信前にログをフィルタ/変更
debugbooleanfalseコンソールへの詳細 SDK 出力

サーバー側のみのオプション(instrumentation.server.ts / hooks.server.ts

オプションタイプ備考
serverNamestringサーバー イベントのホスト名タグ
includeLocalVariablesbooleanスタック フレームにローカル変数をアタッチ
shutdownTimeoutnumberプロセス終了前にイベントをフラッシュする ms 数(デフォルト: 2000)

アダプター互換性

アダプターサポート
@sveltejs/adapter-auto / adapter-vercel (Node)✅ 完全
@sveltejs/adapter-node✅ 完全
@sveltejs/adapter-cloudflare⚠️ 部分的 — 追加セットアップが必要
Vercel Edge Runtime❌ サポート対象外

検証

セットアップ後、Sentry がデータを受信していることを確認するためにテスト イベントをトリガーします:

<!-- src/routes/sentry-test/+page.svelte -->
<script>
  import * as Sentry from "@sentry/sveltekit";
</script>

<button onclick={() => { throw new Error("Sentry client test"); }}>
  クライアント エラーをテスト
</button>

<button onclick={() => Sentry.captureMessage("Sentry test message", "info")}>
  メッセージをテスト
</button>
// src/routes/sentry-test/+server.ts
export const GET = () => {
  throw new Error("Sentry server test");
};

Sentry ダッシュボードで確認:

  • Issues → 両方のエラーは数秒以内に表示される
  • Traces → ルート ベースのトランザクションを探す
  • Replays → ページ インタラクション後のセッション記録が表示
  • Logs → 構造化ログ エントリ(ロギングが有効な場合)

何も表示されない場合は、Sentry.init()debug: true を設定し、ブラウザ/サーバー コンソールで SDK 出力を確認してください。


Phase 4: クロスリンク

Svelte/SvelteKit セットアップを完了した後、Sentry カバレッジが不足している同じバックエンドをチェックします:

# 隣接するディレクトリでバックエンドを探す
ls ../backend ../server ../api ../go ../python 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

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

バックエンド検出スキルを提案
Go (go.modsentry-go-sdk
Python (requirements.txtpyproject.tomlsentry-python-sdk
Ruby (Gemfilesentry-ruby-sdk
Node.js (Express、Fastify など)@sentry/node を使用 — docs.sentry.io/platforms/javascript/guides/express/ を参照

トラブルシューティング

問題解決策
イベントが表示されないdebug: true を設定、DSN を確認、ブラウザ コンソールで SDK エラーを確認
ソースマップが機能しないnpm run build を実行(dev ではなく)、SENTRY_AUTH_TOKEN が設定されていることを確認
サーバー エラーがキャプチャされないhandleErrorWithSentry()hooks.server.ts からエクスポートされていることを確認
クライアント エラーがキャプチャされないhandleErrorWithSentry()hooks.client.ts からエクスポートされていることを確認
セッション リプレイが記録されないreplayIntegration() がクライアント初期化のみに含まれていることを確認(サーバーではなく)
sentryHandle() + 他のハンドルが構成されないsequence(Sentry.sentryHandle(), myHandle) でラップ
広告ブロッカーがイベントをブロックtunnel: "/sentry-tunnel" を設定、サーバー側リレー エンドポイントを追加
SvelteKit インストルメンテーションがアクティブ化しないsvelte.config.jsexperimental.instrumentation.server: true を確認
Cloudflare アダプター の問題docs.sentry.io/platforms/javascript/guides/sveltekit/ でアダプター固有の注記を確認
wrapLoadWithSentry / wrapServerLoadWithSentry エラーこれらはレガシー ラッパー — 削除してください;sentryHandle() は ≥10.8.0 で load 関数を自動的にインストルメント化

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

詳細情報

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

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

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

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