From jutsu-sentry
Sets up Sentry performance monitoring with transactions, spans, distributed tracing from browser to Node.js, and sampling configurations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/jutsu-sentry:performance-monitoringThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Track application performance with transactions, spans, and distributed tracing.
Track application performance with transactions, spans, and distributed tracing.
import * as Sentry from "@sentry/browser";
Sentry.init({
dsn: "...",
tracesSampleRate: 0.2, // 20% of transactions
integrations: [
Sentry.browserTracingIntegration(),
],
});
// Browser: Page loads and navigations
Sentry.init({
integrations: [
Sentry.browserTracingIntegration({
tracePropagationTargets: ["localhost", /^https:\/\/api\.example\.com/],
}),
],
});
const transaction = Sentry.startTransaction({
op: "task",
name: "Process Order",
});
try {
// Your code here
processOrder(order);
transaction.setStatus("ok");
} catch (error) {
transaction.setStatus("internal_error");
throw error;
} finally {
transaction.finish();
}
const transaction = Sentry.startTransaction({ name: "checkout" });
const validationSpan = transaction.startChild({
op: "validation",
description: "Validate cart items",
});
await validateCart(cart);
validationSpan.finish();
const paymentSpan = transaction.startChild({
op: "payment",
description: "Process payment",
});
await processPayment(payment);
paymentSpan.finish();
transaction.finish();
const span = transaction.startChild({
op: "db.query",
description: "SELECT * FROM users WHERE id = ?",
data: {
"db.system": "postgresql",
"db.name": "production",
},
});
// Frontend
Sentry.init({
integrations: [
Sentry.browserTracingIntegration({
tracePropagationTargets: [
"localhost",
/^https:\/\/api\.yoursite\.com/,
],
}),
],
});
// This automatically adds sentry-trace and baggage headers
// Express.js
import * as Sentry from "@sentry/node";
app.use(Sentry.Handlers.requestHandler());
app.use(Sentry.Handlers.tracingHandler());
// The transaction is automatically continued from incoming headers
Sentry.init({
tracesSampleRate: 0.1, // 10% of transactions
});
Sentry.init({
tracesSampler: (samplingContext) => {
// Always sample errors
if (samplingContext.parentSampled !== undefined) {
return samplingContext.parentSampled;
}
// High priority endpoints
if (samplingContext.name.includes("/checkout")) {
return 1.0;
}
// Don't sample health checks
if (samplingContext.name.includes("/health")) {
return 0;
}
// Default rate
return 0.1;
},
});
// Automatically captured with browserTracingIntegration
// LCP, FID, CLS, FCP, TTFB
Sentry.init({
integrations: [
Sentry.browserTracingIntegration({
enableLongTask: true, // Track long tasks
}),
],
});
// Capture custom metrics
Sentry.metrics.increment("button_clicked", 1, {
tags: { button: "checkout" },
});
Sentry.metrics.distribution("cart_value", cart.total, {
unit: "dollar",
tags: { currency: "USD" },
});
Sentry.metrics.gauge("active_users", activeCount);
Sentry.metrics.set("unique_visitors", visitorId);
// Node.js
import * as Sentry from "@sentry/node";
import { nodeProfilingIntegration } from "@sentry/profiling-node";
Sentry.init({
dsn: "...",
integrations: [nodeProfilingIntegration()],
tracesSampleRate: 1.0,
profilesSampleRate: 1.0,
});
npx claudepluginhub thedotmack/han --plugin jutsu-sentrySets up Sentry performance monitoring with transactions, spans, distributed tracing from browser to Node.js, and sampling configurations.
Configures Sentry performance monitoring and distributed tracing with span-based API, dynamic sampling, and profiling. For tracking requests and application performance.
Configures Sentry Tracing (Performance Monitoring) in JavaScript, TypeScript, Python, Ruby, React, Next.js, and Node.js projects. Enables distributed tracing, transaction/span tracking, and sample rate configuration.