maple-telemetry-conventions

Enforce OpenTelemetry instrumentation conventions across TypeScript, Rust, and Python services.

1.6k|107|Updated Feb 15, 2026
One-click install
npx skills add https://github.com/MapleTechLabs/maple --skill maple-telemetry-conventions-mapletechlabs
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: maple-telemetry-conventions
Source: https://github.com/MapleTechLabs/maple/tree/main/.agents/skills/maple-telemetry-conventions
Command: npx skills add https://github.com/MapleTechLabs/maple --skill maple-telemetry-conventions-mapletechlabs

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Inconsistent OpenTelemetry attribute keys, span status codes, and resource attributes across Maple's TypeScript, Rust, and future Python services break Tinybird materialized view pre-extractions, dashboard filters, and service map rendering, leading to missing observability data and incorrect analytics.

Core Features & Use Cases

  • Cross-language attribute conventions: Canonical spellings for custom span attributes including the maple.* vendor namespace, query.*, cache.*, tenant.*, and db.* groups, with parallel implementation snippets for TypeScript (Effect), Rust (tracing), and Python.
  • Load-bearing observability rules: Title Case span status codes, dual-emit deployment environment resource attributes, Tinybird MV pre-extracted column alignment, and mandatory loop-prevention guard requirements that are critical for dashboard accuracy and trace volume stability.
  • Use cases: Adding instrumentation to new code paths, reviewing PRs that touch observability-related files, configuring OTLP exporters and tracer providers, and adding new Tinybird MV columns without breaking existing dashboards.

Quick Start

Use this skill to validate that your new WarehouseQueryService span emits all required canonical attributes and uses the correct Title Case status code before merging your instrumentation PR.

Frequently Asked Questions about maple-telemetry-conventions

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why do my Tinybird materialized views break after adding new OpenTelemetry span attributes?

OpenTelemetry span status codes must use Title Case to prevent dashboard filter mismatches and service map rendering errors. Inconsistent status code spellings across TypeScript, Rust, and Python services break Tinybird materialized view extractions and lead to missing observability data.

How do I configure OTLP exporters and resource attributes for multi-language OpenTelemetry instrumentation?

The maple.* vendor namespace groups custom span attributes alongside query.*, cache.*, tenant.*, and db.* groups. Using these canonical spellings across TypeScript, Rust, and Python codebases prevents broken Tinybird materialized view pre-extractions and dashboard filter mismatches.

Can I use this OpenTelemetry convention to validate a WarehouseQueryService span before merging?

Mandatory loop-prevention guard requirements must be preserved when wiring queries through WarehouseQueryService in TypeScript, Rust, and Python. This loop-prevention guard preservation is critical for maintaining trace volume stability and preventing observability feedback loops.

What are the canonical OpenTelemetry attribute namespaces for Maple services?

Canonical OpenTelemetry attribute namespaces include the maple.* vendor namespace, query.*, cache.*, tenant.*, and db.* groups. Applying parallel implementation snippets for TypeScript, Rust, and Python ensures language-agnostic attribute key spellings across the codebase.