.claude/skills/ts-betterstack/SKILL.md
Expert guidance for Better Stack (formerly Better Uptime + Logtail), the observability platform combining uptime monitoring, log management, incident response, and status pages. Helps developers set up comprehensive monitoring with alerting, on-call schedules, and public status pages.
npx skillsauth add eliferjunior/Claude betterstackInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Better Stack (formerly Better Uptime + Logtail), the observability platform combining uptime monitoring, log management, incident response, and status pages. Helps developers set up comprehensive monitoring with alerting, on-call schedules, and public status pages.
// Better Stack monitors HTTP endpoints, TCP ports, DNS, SSL, and more.
// Configure via dashboard or Terraform.
// Terraform configuration for uptime monitors
resource "betteruptime_monitor" "api" {
url = "https://api.example.com/health"
monitor_type = "status"
check_frequency = 30 // Check every 30 seconds
request_headers = [{
name = "Authorization"
value = "Bearer ${var.health_check_token}"
}]
// Alert if response doesn't contain expected string
expected_status_codes = [200]
// Regions to check from (catch regional outages)
regions = ["us", "eu", "asia"]
// Escalation policy
policy_id = betteruptime_escalation_policy.default.id
}
resource "betteruptime_monitor" "database" {
url = "tcp://db.example.com:5432"
monitor_type = "tcp"
check_frequency = 60
policy_id = betteruptime_escalation_policy.default.id
}
resource "betteruptime_monitor" "ssl_cert" {
url = "https://example.com"
monitor_type = "ssl"
// Alert 30 days before SSL certificate expires
ssl_expiration = 30
policy_id = betteruptime_escalation_policy.default.id
}
// Send structured logs to Better Stack
import { Logtail } from "@logtail/node";
const logtail = new Logtail(process.env.LOGTAIL_SOURCE_TOKEN!);
// Structured logging with context
logtail.info("Order processed", {
orderId: "ord_abc123",
userId: "usr_456",
amount: 99.99,
duration_ms: 245,
region: "us-east-1",
});
logtail.error("Payment failed", {
orderId: "ord_def789",
error: "Card declined",
stripe_error_code: "card_declined",
retryable: true,
});
// Pino integration (recommended for production)
import pino from "pino";
const logger = pino(
pino.transport({
target: "@logtail/pino",
options: { sourceToken: process.env.LOGTAIL_SOURCE_TOKEN },
})
);
logger.info({ orderId: "ord_123", userId: "usr_456" }, "Order created");
# Escalation policy configuration (via API or dashboard)
# Step 1: Notify on-call engineer via Slack + push notification
# Step 2: After 5 min unacknowledged → call on-call engineer
# Step 3: After 10 min unacknowledged → escalate to team lead
# Step 4: After 15 min unacknowledged → page entire engineering team
# On-call schedule: weekly rotation
# Week 1: engineer-a
# Week 2: engineer-b
# Week 3: engineer-c
# Override: any engineer can take over via Slack command
// Better Stack provides hosted status pages with:
// - Custom domain (status.yourcompany.com)
// - Automatic incident creation from monitor alerts
// - Manual incident updates
// - Subscriber notifications (email, SMS, webhook)
// - Historical uptime (90-day, 365-day)
// - Maintenance windows
// API: Create an incident programmatically
const response = await fetch("https://uptime.betterstack.com/api/v2/incidents", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BETTERSTACK_API_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
requester_email: "[email protected]",
name: "Elevated API Latency",
summary: "API response times are elevated due to database migration. No data loss expected.",
description: "We are performing a planned database migration. Some requests may take longer than usual.",
status_page_ids: ["12345"],
}),
});
// Monitor cron jobs and background tasks
// Better Stack provides heartbeat URLs — if not pinged within the expected interval, it alerts.
// In your cron job:
async function dailyReport() {
try {
await generateReport();
await sendReportEmail();
// Ping heartbeat on success
await fetch("https://uptime.betterstack.com/api/v1/heartbeat/abc123");
} catch (error) {
// Don't ping heartbeat — Better Stack will alert after the expected interval
console.error("Daily report failed:", error);
}
}
# Node.js logging
npm install @logtail/node
npm install @logtail/pino # Pino transport
# CLI
brew install betterstack/tap/better-uptime
# Terraform provider
terraform {
required_providers {
betteruptime = {
source = "BetterStackHQ/better-uptime"
}
}
}
User request:
I have a Node.js API and a React frontend running in Docker. Set up Betterstack for monitoring/deployment.
The agent creates the necessary configuration files based on patterns like # Escalation policy configuration (via API or dashboard), sets up the integration with the existing Docker setup, configures appropriate defaults for a Node.js + React stack, and provides verification commands to confirm everything is working.
User request:
Betterstack is showing errors in our log management. Here are the logs: [error output]
The agent analyzes the error output, identifies the root cause by cross-referencing with common Betterstack issues, applies the fix (updating configuration, adjusting resource limits, or correcting syntax), and verifies the resolution with appropriate health checks.
development
Expert guidance for Fireworks AI, the platform for running open-source LLMs (Llama, Mixtral, Qwen, etc.) with enterprise-grade speed and reliability. Helps developers integrate Fireworks' inference API, fine-tune models, and deploy custom model endpoints with function calling and structured output support.
development
Convert any website into clean, structured data with Firecrawl — API-first web scraping service. Use when someone asks to "turn a website into markdown", "scrape website for LLM", "Firecrawl", "extract website content as clean text", "crawl and convert to structured data", or "scrape website for RAG". Covers single-page scraping, full-site crawling, structured extraction, and LLM-ready output.
tools
Expert guidance for Firebase, Google's platform for building and scaling web and mobile applications. Helps developers set up authentication, Firestore/Realtime Database, Cloud Functions, hosting, storage, and analytics using Firebase's SDK and CLI.
development
When the user needs to build file upload functionality for a web application. Use when the user mentions "file upload," "image upload," "upload endpoint," "multipart upload," "presigned URL," "S3 upload," "file validation," "upload to cloud storage," or "accept user files." Handles upload endpoints, file validation (type, size, magic bytes), cloud storage integration, and upload status tracking. For image/video processing after upload, see media-transcoder.