本文へ移動
cccskills
無料GitHub で公開

temps-best-practices

Best-practices reference for preparing and instrumenting applications on Temps. Covers the app runtime contract (`.temps.yaml` health, HOST/PORT, readiness, SIGTERM, replicas, migrations) and production observability (errors, traces, metrics, logs, analytics, privacy, sampling, cardinality, credential boundaries). Use whenever building or reviewing an app for Temps, configuring health checks, adding telemetry, diagnosing missing/noisy signals, or checking OTLP/Sentry/analytics ingestion. Triggers include "temps best practices", "prepare this app for Temps", ".temps.yaml health", "temps health check", "ignore health checks in otel", "temps observability", "wire up telemetry", and "instrument this app for temps". Prefer focused setup skills for a single SDK. Use temps-cli for executing deploy and resource-management commands.

インストール方法を見る

含まれるファイル(9)

  • SKILL.md11.2 KB
  • evals/evals.json3.8 KB
  • references/analytics.md9.9 KB
  • references/error-tracking.md6.4 KB
  • references/logs.md3.4 KB
  • references/metrics.md3.3 KB
  • references/opentelemetry-traces.md16.4 KB
  • references/runtime-contract.md7.1 KB
  • references/telemetry-hygiene.md6.9 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Temps Best Practices

Best practices for application code that runs on Temps. This skill owns the runtime contract and production observability; use temps-cli for platform operations.

Required workflow

  1. For any deployable application, read references/runtime-contract.md.
  2. When any telemetry or replay is enabled, read references/telemetry-hygiene.md.
  3. Read only the reference for each observability pillar in scope.
  4. Determine the deployment source. For repository builds, inspect and merge .temps.yaml; for image/static deployments, inspect the deployment health-path override because no repository config is available.
  5. Run the runtime and telemetry verification checklists before considering the work complete.

Runtime contract summary

Every web application should expose a dedicated health endpoint. Repository builds configure it in .temps.yaml under the project's effective Temps Root Directory / Docker build context:

health:
  path: /healthz

Use health.path; do not rely on the currently parsed-but-unapplied status, interval, timeout, or retries fields. If OpenTelemetry server tracing is enabled, exclude the exact health path from incoming spans and routine access-log/request-metric noise. Keep the route, .temps.yaml, and filters synchronized.

Image and static deployments cannot read .temps.yaml; set the same route through their deployment health_check_path / CLI --health-check-path override instead.

Also require the app to read PORT, bind to HOST/0.0.0.0, align a custom image's EXPOSE, handle SIGTERM, flush telemetry, and exit inside Temps' 10-second shutdown window. See the runtime reference for readiness semantics, scale-to-zero caveats, replicas, migrations, stdout/stderr, and cron authentication.

Observability

Temps replaces Sentry + Datadog/Honeycomb + PostHog with one ingestion surface. This section is the map across all five pillars — use it to decide which pillar a signal belongs in, and to find the concrete endpoint/auth/gotcha details for each. It complements, not replaces, the narrower setup skills:

  • add-error-tracking — step-by-step Sentry SDK init per language/framework
  • add-react-analytics — step-by-step @temps-sdk/react-analytics hook usage

Quickstart: wire up any app end to end

Goal: an app in any language gets runtime health, error tracking, and traces working safely.

Temps auto-injects exporter destinations and credentials; it does not install or initialize an SDK. Apps deployed through Temps receive these variables at Docker build time and container runtime, but application instrumentation still has to be installed, initialized, filtered, and verified:

Env varWhat it's forClient-safe?
SENTRY_DSNServer-side/generic error-tracking DSNServer by default
NEXT_PUBLIC_SENTRY_DSN / NUXT_PUBLIC_SENTRY_DSN / VITE_SENTRY_DSN / PUBLIC_SENTRY_DSN / REACT_APP_SENTRY_DSNFramework-specific public Sentry write keyYes
SENTRY_RELEASECommit SHA; leave release unset in Sentry.init() so the SDK reads itServer/build metadata
OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_PROTOCOLOTLP destination and http/protobuf protocolEndpoint is non-secret
OTEL_EXPORTER_OTLP_HEADERSDeployment-token authorization for OTLPNo — server only
OTEL_SERVICE_NAME, OTEL_SERVICE_VERSIONStable service and release metadataNon-secret

Build-time availability does not make a server credential browser-safe. Never expose OTEL_EXPORTER_OTLP_HEADERS, TEMPS_API_TOKEN, dt_, or tk_ through a public-prefixed variable or client bundle. Browser/mobile OTLP must use an authenticated backend or collector; see references/telemetry-hygiene.md.

This auto-injection is scoped to apps deployed through Temps. It does not apply to: an app running elsewhere and only sending telemetry to a self-hosted Temps instance, or to Temps' own console/dashboard (which is built by its own CI, not through this deploy pipeline — self-referential, since Temps doesn't deploy itself as a project on itself). For those cases, get the real credential from the dashboard and wire it through whatever env var / build-arg / secrets mechanism that project's own build system already uses:

  • Error tracking DSN: Error Tracking → DSN & Setup (https://<public_key>@<temps-host>/<project_id>)
  • A server-side deployment token (dt_...) or API key (tk_...) for OTLP: Project Settings → API Keys

Never hardcode a token or endpoint into source, a Dockerfile, or CI config. Do not ask the user for a token so it can be committed. A Sentry DSN public key is designed for client writes, but should still come from the platform's supported configuration path.

Either way, the app-side steps are the same:

  1. Runtime: apply references/runtime-contract.md.
  2. Hygiene: establish credential boundaries, redaction, cardinality, batching, sampling, and shutdown using references/telemetry-hygiene.md.
  3. Error tracking: follow add-error-tracking, leaving release metadata environment-driven.
  4. Traces: install and initialize the official OpenTelemetry SDK/agent using references/opentelemetry-traces.md. Auto-injected env vars only configure export.
  5. Verify runtime and telemetry behavior before considering the app production-ready.

The five pillars

PillarWhat it's forReference
Error trackingUncaught exceptions, handled errors, stack traces, source mapsreferences/error-tracking.md
Traces (OTLP)Distributed request spans, AI/gen_ai call chains, latency breakdownsreferences/opentelemetry-traces.md
Metrics (OTLP)Counters/gauges/histograms — request rates, queue depth, custom business metricsreferences/metrics.md
Logs (OTLP)Structured log records correlated to tracesreferences/logs.md
AnalyticsPage views, custom product events, session replay, Web Vitalsreferences/analytics.md

Read the specific reference file(s) for the pillar(s) in play — don't load all five unless doing a full-stack instrumentation pass.

Cross-pillar production rules live in references/telemetry-hygiene.md, not duplicated in every pillar.

Deciding which pillar a signal belongs in

  • "This threw/crashed" → error tracking, not a log line. Logs are for structured record-keeping, not exception capture.
  • "How long did this request/DB call/LLM call take, and what did it call downstream?" → traces. If it's a single number you want to alert on or chart over time (not per-request), that's a metric instead.
  • "I want to count/aggregate something over time" (requests/sec, cache hit rate, custom business counter) → metrics, not traces. Don't create a span just to record a number.
  • "A user did X in the product" → analytics event, not a log or a trace attribute.
  • "I need to debug what happened at a point in time, correlated to a trace" → OTEL logs with trace_id/span_id attributes set, so they join with the trace in the dashboard.

Shared ingestion facts across pillars

Temps OTLP ingestion shares a rate-limit/quota model, but token support differs by signal:

  • tk_ API key: server-side; needs X-Temps-Project-Id.
  • dt_ deployment token: server-side and project/environment scoped. Prefer the header-based endpoint so Temps resolves attribution from the token. Do not expose it to a browser.
  • si_ integration token: supported for infrastructure metrics ingestion, not general traces/logs.
  • Sentry-compatible ingestion: uses the DSN public key rather than these machine tokens.
  • Auth header: Authorization: Bearer <token> or X-Temps-Api-Key: <token>. Some OTLP exporters URL-encode the header as Bearer%20<token> — Temps accepts that too.
  • Rate limit: 1000 req/60s per token by default (TEMPS_OTEL_RATE_LIMIT, TEMPS_OTEL_RATE_LIMIT_WINDOW_SECS — server-side config, not something the app sets).
  • Storage quota: off by default; a self-hosted instance can opt in via TEMPS_OTEL_QUOTA_GB. If ingestion suddenly starts 413'ing, that's the likely cause.
  • Endpoint shape: prefer header-based POST /api/otel/v1/{traces|metrics|logs} with attribution resolved from the token. Path-based endpoints exist, but should not be used to override a deployment token's intended deployment attribution.

Definition of done

  1. Runtime: app listens on the injected port/interface; the health route is configured through .temps.yaml for repository builds or the deployment override for image/static deploys; SIGTERM drains and exits within 10 seconds.
  2. Health noise: repeated health requests succeed without routine server spans, access logs, or request metrics; a normal route remains observable.
  3. Error tracking: a deliberate test error appears in Error Tracking → Error Groups with the expected release and no sensitive data.
  4. Traces: a normal request appears in Observe → Traces, uses a route-template name, propagates context downstream, and has a sane duration_ms.
  5. Metrics: names and bounded labels pass validation; no user/session/request identifiers create cardinality explosions.
  6. Logs: a structured log inside an active span joins the correct trace and contains no secrets.
  7. Analytics: browser events are treated as untrusted; an authoritative test conversion comes from authenticated server code.
  8. Replay: recording is consent-gated, masked, path-restricted, and inspected with synthetic sensitive values.
  9. Client bundle: built assets contain no dt_, tk_, TEMPS_API_TOKEN, or OTLP authorization header.

If a signal never appears, check whether the SDK was actually initialized, then endpoint/protocol, token type/header, rate limit, and quota.

Everything else

Beyond the runtime health contract and observability guidance above, deployment, service/database provisioning, environment variables, domains, monitoring config, backups, and CI/CD automation are all reached through the Temps CLI (bunx @temps-sdk/cli). Use the temps-cli skill for those operations.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Add a custom domain to a Temps project and provision an automatic SSL/TLS certificate via Let's Encrypt, driven entirely from the `@temps-sdk/cli` CLI. Handles subdomains, apex domains, HTTP-01 and DNS-01 challenges, and wildcard domains. Use when the user wants to: (1) Add a custom domain to their Temps app, (2) Set up HTTPS/SSL for a deployment, (3) Point their own domain at a Temps project, (4) Add a wildcard domain, (5) Configure DNS for Temps. Triggers: "add custom domain", "point my domain at temps", "set up ssl", "https for my app", "wildcard domain", "add domain to project".

日本語の概要は準備中です。原文の説明を表示しています。

gotempsh/temps8362026年10月11日 更新

Add Temps error tracking to applications using the Sentry-compatible SDK. Temps exposes a Sentry-compatible DSN that works with the official Sentry SDK for each language/framework — no code changes beyond initialization are required. Use when the user wants to: (1) Add error tracking to any app (React, Next.js, Vue, Svelte, Angular, Node.js, Python, Go, Rust, Ruby, Java, PHP, .NET, React Native, Flutter), (2) Wire up uncaught exception and unhandled promise rejection capture, (3) Configure session replay for errors, (4) Upload source maps for readable stack traces, (5) Report releases and environments, (6) Capture custom errors/messages. Triggers: "add error tracking", "add sentry", "track exceptions", "report errors", "temps error tracking", "wire up error monitoring".

日本語の概要は準備中です。原文の説明を表示しています。

gotempsh/temps8362026年10月11日 更新

Integrate the Temps Node.js SDKs for server-side platform access, KV storage, and Blob storage. Use when the user wants to: (1) Call the Temps platform API from Node.js (deployments, projects, analytics, session replay, etc.), (2) Use Temps KV (key-value) storage, (3) Use Temps Blob storage for files, (4) Server-side integration with a Temps project, (5) Backend access to Temps resources. Triggers: "temps node sdk", "temps kv", "temps blob", "backend integration", "node.js temps", "@temps-sdk/node-sdk".

日本語の概要は準備中です。原文の説明を表示しています。

gotempsh/temps8362026年10月11日 更新

Add Temps analytics to React applications with comprehensive tracking capabilities including page views, custom events, scroll tracking, engagement monitoring, session recording, and Web Vitals performance metrics. Use when the user wants to: (1) Add analytics to a React app (Next.js App Router, Next.js Pages Router, Vite, Create React App, or Remix), (2) Track user events or interactions, (3) Monitor scroll depth or element visibility, (4) Add session recording/replay, (5) Track Web Vitals or performance metrics, (6) Measure user engagement or time on page, (7) Set up product analytics or telemetry. Triggers: "add analytics", "track events", "session recording", "web vitals", "user tracking", "temps analytics", "react analytics".

日本語の概要は準備中です。原文の説明を表示しています。

gotempsh/temps8362026年10月11日 更新

Add privacy-aware session recording and replay to React applications using the Temps SDK. Captures user interactions for playback while respecting privacy through input masking, element blocking, and GDPR-compliant consent flows. Use when the user wants to: (1) Add session recording to their app, (2) Implement session replay functionality, (3) Record user sessions for debugging, (4) Add privacy-compliant screen recording, (5) Debug user issues with visual replay, (6) Implement rrweb-based recording, (7) Set up GDPR-compliant session capture. Triggers: "session recording", "session replay", "record sessions", "user replay", "screen recording", "rrweb", "session capture".

日本語の概要は準備中です。原文の説明を表示しています。

gotempsh/temps8362026年10月11日 更新

Deploy applications to the Temps platform with automatic framework detection, Dockerfile generation, and container orchestration. Supports Next.js, Vite, React, Node.js, Python, Go, Rust, Java, and C# applications. Use when the user wants to: (1) Deploy their app to Temps, (2) Set up CI/CD with Temps, (3) Configure deployment settings, (4) Create a Dockerfile for Temps, (5) Deploy a containerized application, (6) Set up automatic deployments from Git. Triggers: "deploy to temps", "temps deployment", "push to temps", "containerize for temps", "temps ci/cd".

日本語の概要は準備中です。原文の説明を表示しています。

gotempsh/temps8362026年10月11日 更新

gotempsh のスキルをすべて見る

このスキルの問題を報告する