원클릭으로
telemetry
Telemetry and observability conventions. Apply when adding tracing, logging, metrics, or instrumentation to Rust code.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Telemetry and observability conventions. Apply when adding tracing, logging, metrics, or instrumentation to Rust code.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use `mdvs search` for any content lookup in a markdown directory — semantic / hybrid / SQL-filtered, beats Grep / Glob for finding by meaning. `mdvs init` infers a schema from existing markdown, `mdvs check` validates frontmatter, `mdvs update` evolves the schema as the KB grows. Activate whenever the project contains markdown with frontmatter, whether or not `mdvs.toml` exists yet.
Release process for mdvs. Use when the user asks to make a release (patch, minor, major, or release candidate).
Use when the user asks to commit, commit and push, or make a git commit. Covers branching, commit workflow, conventional commits, TODO updates, and push/PR rules.
Use when writing, modifying, or removing Rust code in the mdvs codebase. Covers implementation workflow, testing, verification, and downstream updates (specs, example_kb, mdbook).
mdBook documentation conventions. Apply when writing, editing, or reviewing pages in book/src/. Covers content rules, example verification, tone, and structure.
GitHub Issues + Project tracking. Use when creating, updating, or querying issues and managing the project board.
| name | telemetry |
| description | Telemetry and observability conventions. Apply when adding tracing, logging, metrics, or instrumentation to Rust code. |
If the project has a dedicated telemetry/observability spec or conventions document, read it first — it takes precedence over the generic guidance below.
| Level | When to Use | Example |
|---|---|---|
error! | Unrecoverable failures requiring operator attention | External service call failed permanently |
warn! | Recoverable issues, degraded operation | Retry triggered, fallback activated |
info! | Lifecycle events, operational milestones | Server started, connection established |
debug! | Internal state useful during development | State machine transition details |
trace! | Per-frame, hot-path data (high volume) | Frame encoded, bytes serialized |
Not all code deserves the same instrumentation level. Choose based on the crate's role:
trace! only, no spans. Spans add overhead that matters here.trace! only if anything at all.#[instrument] + spans.#[instrument] Rulesskip sensitive fields: tokens, keys, passwords, raw payloadslevel — default is INFO, use level = "debug" or level = "trace" for noisy functionsAlways use named fields, never string interpolation:
// Good: named fields — searchable, parseable
trace!(payload_bytes = payload.len(), frame_bytes = buf.len(), "frame encoded");
// Bad: string interpolation — opaque to log aggregators
trace!("frame encoded, payload={}, frame={}", payload.len(), buf.len());
For request/message processing pipelines, use a three-tier span pattern:
This gives visibility into where time is spent and enables per-hop latency analysis.
tracing over log — structured spans enable distributed tracingtrace! levelDisplay for user-facing context, Debug for developer diagnostics