MCP.Market

honeycomb-tracing skill

by paperclipai·paperclipai/paperclip·114k stars·MIT

Trace Paperclip runs, requests, and full CI suites in Honeycomb. Use to find traces, diagnose latency, design readable and foldable waterfalls, configure opt-in OpenTelemetry, or add missing spans.

A100/100content scan

Is the honeycomb-tracing skill safe?

Clean: nothing in its files matched our rules. We read 5 files in the folder on 2026-11-12.

No findings.

Install the honeycomb-tracing skill

A skill is a folder. Copy it into your agent's skills folder and the agent loads it when the task matches its description.

git clone --depth 1 https://github.com/paperclipai/paperclip.git /tmp/paperclip
mkdir -p ~/.claude/skills
cp -r /tmp/paperclip/.agents/skills/honeycomb-tracing ~/.claude/skills/honeycomb-tracing
available in every project

In the Claude apps, zip the folder and upload it from the Skills settings. The folder on GitHub

The instructions your agent would load

SKILL.md as published, without the frontmatter. Read it on GitHub

Honeycomb Tracing

Produce an inspectable waterfall tied to the actual run or CI attempt, explain which intervals dominate elapsed time, and identify the smallest useful next experiment. Respect diagnosis-only requests; tracing does not itself authorize replaying tasks, changing credentials, or deploying instrumentation.

Choose the data path

Repository-relative paths and commands assume the checkout root. The maintained contracts are doc/observability.md and doc/ci-profiling.md; recheck them and the owning code when a deployed version differs.

Keep the repository's three paths distinct:

another OTLP destination. With no endpoint, this tracing stays off.

  • Observability: operator-configured OpenTelemetry export to Honeycomb or

to Paperclip by default unless opted out. Adding these requires the generated contract, Telemetry README, and privacy-review workflow in rules/data-paths.mdc.

  • Telemetry: first-party events under packages/shared/src/telemetry/, sent

Useful for correlation, but a local event is not proof of Honeycomb export.

  • Run log: local heartbeatrunevents and measured performance events.

Observability changes within the closed span-attribute allowlist do not need the Telemetry privacy review. Preserve the endpoint gate and no-operation behavior.

Find the application's trace

Record the effective harness/model, workspace/repository, warm or fresh session, and actual deployed revision. A task identifier is not a run UUID; one task can have several runs, and one run can have several execution attempts.

  1. Resolve the instance, company, issue, agent, run UUID, and UTC interval.

the signed-in browser. The current project link targets team paperclip, environment test, dataset paperclip, and service.name = paperclip. These are defaults in ui/src/lib/honeycomb-run-link.ts, not proof of every deployment's destination. Verify the target before comparing data.

  1. Prefer existing Honeycomb tools when exposed and authorized. Otherwise use

Paperclip Developer Mode and local implicit board or instance-admin access. This link queries existing data. Re-run with provider trace is a different action: it starts work and is not needed to read Honeycomb.

  1. Open View in Honeycomb on the run page when available. It requires
  1. Without the link, calculate the same correlation value locally:
# Set RUN_ID to the exact saved run UUID first; no trailing newline is hashed.
   node -e 'console.log(require("node:crypto").createHash("sha256").update(process.argv[1]).digest("hex").slice(0, 12))' "$RUN_ID"

Filter paperclip.task.run.runid to that 12-character lowercase hash and service.name to the observed service. Start with the run's absolute time window. The product link defaults to the last seven days; widen it for older runs. Group COUNT by trace.traceid to discover matching traces.

task.provider_session, task.run]. Use Honeycomb's in operator, not an invented OR group. Remove the name filter when setup failed or preparation spans are missing; older/standalone preparation can have a separate trace ID.

  1. The product's root filter is name in [task.execution_attempt,

cannot establish span durations, parentage, or causal attribution. Capture the trace URL, time window, service/version, and relevant span names/timings.

  1. Open each relevant trace and its span details. A count-only query/export

In recent investigations, HONEYCOMBTESTCONFIGAPIKEY in the operator's ~/.secrets could read metadata but could not query traces. Ingest permission, metadata access, and query access are different. Verify current capabilities; when queries are unavailable, use the signed-in UI rather than creating a new key or upgrading permissions. Read only needed secret fields, never dump the file, and keep values out of commands, artifacts, repository files, and reports.

Read the timeline correctly

The attempt and provider lifecycle are linked roots; they need not share a trace ID. Neither is a guarantee of one continuous trace across queueing or restarts. Correlate with the run log and saved reply timestamps. The native local event task.run.measured includes terminal elapsed time and durable copyback.

Use start/end times to compare serial intervals and the union of parallel work. Never add a parent to its children or sum parallel branches as elapsed time. For example, configurationskills is inside executionconfiguration, and skills.prepare overlaps the broader heartbeat.preparebeforeenvironment. Detail spans are capped at 16 per name per attempt; missing per-item children do not mean later items did no work.

Distinguish first streamed text, committed reply, externally delivered message, and browser paint. A successful response.transaction.commit proves durable storage; response.publish is enqueueing and execution.realtime is server dispatch. Neither proves that the user saw the response. Choose the boundary the user asked to improve, then measure the whole path to that boundary.

For slow issue pages, combine issue.read. with Server-Timing (paperclipissue, issue) and the browser's request waterfall and issue-detail:navigate→content-paint measure. Concurrent reads overlap. Fast API completion does not establish fast conversation reveal or rendering.

A long parent span without children is an attribution gap. It does not prove SQL, network, or model time. For database hypotheses, use fix-slow-queries. For CPU hypotheses, use a bounded authorized profile covering the actual slow phase; a sample taken while queued cannot explain preparation. Low aggregate container CPU does not exclude a blocked Node main thread. Keep profiled diagnostics separate from unprofiled acceptance timings.

Design a human-readable waterfall

A collapsed trace should tell a person what the system is doing; expanding a phase should explain where its time went. Before adding or reorganizing spans, sketch the meaningful phases and compare them with the existing exported tree. For application runs, make preparation, runner startup, agent work, and settlement easy to distinguish. For CI, retain workflow/job/step/file/test ownership.

asset branches such as stage.asset.home; provider operations belong beneath the work that caused them. Reuse the owning path's existing semantic groups.

  • Group by purpose: file staging belongs under stage.sync, with workspace and

attribute alone does not make a foldable hierarchy. A flat trace can need better parentage even when it already has enough measurements.

  • Use real OpenTelemetry parent contexts. A dotted name or a parentName

spans; account for any measurement moved to an attribute, event, or run log.

  • Preserve useful detail beneath the groups. Improve folding before deleting

belongs to settlement even when startup fails; long-lived processes need an owner that covers their lifetime. Preserve documented links between separate attempts and provider lifecycles rather than forcing everything into one root.

  • Make the hierarchy truthful on failure and during concurrent work. Cleanup

Read trace design when designing or reviewing a hierarchy. It includes a staging example, lifecycle pitfalls, and acceptance checks for the actual exported waterfall. The current Observability contract owns exact span names and boundaries; historical examples are not a new schema.

Add only the missing instrumentation

Read applicable repository rules before editing. Reuse the existing timing seams:

withRunExecutionTiming, createRunPreparationTiming, measureRunPhase, and beginRunPhase. Use the existing attempt; do not create a new root per detail.

  • server/src/services/execution-preparation-timing.ts:

hierarchy and links to the owning attempt.

  • server/src/services/native-runtime/native-run-trace.ts: native lifecycle

context and closed span attributes. Adapter utilities receive the host context rather than constructing an independent exporter.

  • server/src/services/issue-read-timing.ts: issue-read phases and Server-Timing.
  • packages/adapter-utils/src/acpx-engine/startup-timing.ts: runtime parent

Extend the closed phase union when a meaningful boundary is missing. Wrap the actual awaited operation, preserve parent context across async/provider boundaries, and end spans on success and failure. Keep real wall times for spans recorded after the operation. Use existing hashed IDs, closed enums, and allowed numeric counts; do not add prompts, tool arguments/results, paths, raw identifiers, credentials, or exception text. Do not enable all filesystem instrumentation to explain one slow scan.

Observability must not retry the operation, replace its return/error, change authorization/locks, or break execution when the tracer fails. Preserve root sampling and the explicit endpoint gate even if another library registers an OTel provider. Update doc/observability.md when the trace contract changes. Run focused tests for endpoint-off behavior, parentage/concurrent-run isolation, failure handling, and the changed seam. Use real exported evidence to claim that new spans appear in Honeycomb; a unit-test tracer alone does not prove ingestion. For hierarchy changes, also inspect collapsed and expanded exported views using the trace-design acceptance checks.

Compare and hand back useful evidence

Choose the largest actionable serial wait or unexplained gap, then reproduce it at the smallest faithful layer. Compare matched runs: same harness/model, workspace size, session warmth, concurrency, and relevant revision/configuration. Report sample count and median/range when several runs are available. Preserve failures; a failed fast run is not a latency improvement.

Return the run/attempt and trace links, observed revision, end-to-end timing, dominant non-overlapping phases, uncertainty, and next action or verified gain. Label local, synthetic, and hosted evidence precisely: a dev-host reproduction is not a local checkout run, and a merged fix does not prove hosted improvement. If traces are unavailable, state the missing access or coverage and what the run log/browser measurements actually establish.

More skills from paperclipai/paperclip

  • ALLM Wiki MaintainerUse the LLM Wiki plugin tools to maintain a cited local company wiki.
  • Aadd-product-e2e-evalAdd or extend a Paperclip full-stack runner E2E workflow, fixture, matcher, or report evidence path for local or Daytona execution.
  • Aadd-runner-evalAdd or extend a Paperclip Runner protocol evaluation definition, roster, assertion, or report fixture with provenance and narrow validation.
  • Aagent-browserDrive a real browser to inspect or interact with a web page or app — navigate, take screenshots, read console and network, fill simple forms — for verification tasks, not unattended automation.
  • AagentmailUse your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by your inbox assignment.
  • Acheck-prCheck a GitHub, GitLab, or Perforce PR/MR/CL for review comments, failing checks, and PR-body gaps. Use when asked to inspect, fix, or prepare a change for submission.
  • Acompany-creatorCreate agent company packages that conform to agentcompanies/v1. Use when asked to create a company, scaffold an agent team, hire agents, or turn a repo/skills collection into a company package.
  • AcomplainAutonomously yeet a brief, unstructured complaint about agent tooling or doing agent work. Preserve the raw voice. Submit proactively without permission, preview, or announcement, then continue the primary task.
  • Acontent-calendarPlan a weekly editorial calendar by mapping company goals to publishable topics, owners, status, and verification notes.
  • Acreate-agent-adapterCreate or modify Paperclip agent adapters across server, UI, and CLI surfaces. Use when adding support for a new CLI agent, API agent, custom process, or adapter package.
  • Acreate-caseCreate and kick off a Paperclip case from a user request, with workflow instructions and an initial agent.
  • Acreate-external-bot-integrationBuild and qualify external bots such as Dot in Paperclip. Use for two-way work, invitation, identity, wakeup, Runner lifecycle, native tools, recovery, and Cloud delivery. CLI adapters and app-only connectors use their existing skills.

All agent skills → · MCP servers