skills/laminar/SKILL.md
Instrument code with Laminar tracing, run the Laminar CLI, query trace data with SQL, debug agents with record/replay, and migrate from other observability tools. Use when a user mentions Laminar, lmnr, the @lmnr-ai/lmnr or lmnr SDK, lmnr-cli, adding LLM/agent tracing or spans to a TypeScript or Python codebase, viewing traces in the Laminar UI, querying spans/traces, debugging an agent under LMNR_DEBUG (recording runs, replaying cached LLM calls, annotating debug sessions), or moving from Langfuse, LangSmith, Helicone, or OpenTelemetry to Laminar.
npx skillsauth add lmnr-ai/laminar-skills laminarInstall 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.
Laminar is an observability platform for LLM and agent applications. You instrument code so production runs become traces (trees of spans), then explore them in the UI or query them with SQL. This skill covers the SDKs (@lmnr-ai/lmnr for TypeScript, lmnr for Python), the lmnr-cli command-line tool, and the SQL Query API.
Read this before instrumenting anything — it drives every decision below.
LLM, TOOL, DEFAULT, etc.). Types drive UI behavior — the transcript view is high-signal and focuses on LLM and TOOL spans.userId, sessionId, metadata, tags); and privacy controls so secrets/PII are never recorded.Cardinality rule (applies everywhere): never put dynamic IDs (request IDs, user IDs, document IDs) in span names or tags. Span names and tags stay stable and low-cardinality; identifiers go in metadata or the dedicated userId/sessionId fields.
Read only the reference file(s) for the task at hand. Each is self-contained.
| The user wants to... | Read |
|----------------------|------|
| Add Laminar tracing to a TypeScript/JS/Node/Next.js codebase | references/instrumentation-typescript.md |
| Add Laminar tracing to a Python codebase | references/instrumentation-python.md |
| Use lmnr-cli / lmnr CLI (sql, datasets, debugger, eval, cursor rules) | references/cli.md |
| Query spans/traces/events with SQL API | references/sql-query-api.md |
| Migrate from Langfuse / LangSmith / Helicone / OpenTelemetry | references/migration.md |
| Debug an agent: record under LMNR_DEBUG, replay cached LLM calls, annotate sessions | references/debugging.md |
The cross-cutting concepts shared by both SDKs — span context propagation, tags, metadata, sessions, privacy controls, custom LLM cost tracking, flushing — live in the two instrumentation files (one per language) so each is complete on its own.
Copy this checklist and track progress:
- [ ] 1. Detect runtime (TS vs Python) and the package manager (lockfile-based).
- [ ] 2. Install the SDK with the detected package manager.
- [ ] 3. Wire LMNR_PROJECT_API_KEY from env; add it to .env.example/README (never commit secrets).
- [ ] 4. Call Laminar.initialize() once, at the earliest safe startup point.
- [ ] 5. Confirm auto-instrumentation captures the LLM/tool libraries in use.
- [ ] 6. Add first-party spans (observe / @observe) around orchestration; set user/session/metadata/tags early.
- [ ] 7. Apply privacy controls to sensitive inputs/outputs.
- [ ] 8. Run one representative flow; verify the trace tree, transcript view, and filters in the UI.
Ground rules:
LMNR_PROJECT_API_KEY, or mint one automatically with the CLI setup command references/cli.mdbaseUrl/base_url (or LMNR_BASE_URL); local defaults are HTTP port 8000 and gRPC port 8001. The CLI uses --base-url http://localhost --port 8000.For instrumentation tasks, confirm in the UI: a single root span per trace boundary, child spans nested correctly, the transcript view reads cleanly (LLM/TOOL spans present), and tags/metadata are filterable. If traces are slow or missing in a short-lived script, flush — see the per-language reference.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.