{"id":19246,"date":"2026-03-02T23:19:00","date_gmt":"2026-03-02T23:19:00","guid":{"rendered":"https:\/\/www.comet.com\/site\/?p=19246"},"modified":"2026-03-13T16:19:00","modified_gmt":"2026-03-13T16:19:00","slug":"opik-claude-code-plugin","status":"publish","type":"post","link":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/","title":{"rendered":"Announcing the Opik Claude Code Plugin: Automatically Configure Observability for Complex Agentic Systems"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-1024x576.png\" alt=\"\" class=\"wp-image-19257\" srcset=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-1024x576.png 1024w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-300x169.png 300w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-768x432.png 768w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-1536x864.png 1536w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-2048x1152.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Agent observability shouldn\u2019t be a side project. But in practice, it is. When teams have to choose between shipping features fast or wiring up tracing, logging, and evals, observability almost always loses.<\/p>\n\n\n\n<p>It\u2019s an interesting challenge for our engineering team here at Comet. We created Opik to help fellow engineers test, iterate on, and scale their AI features and agentic systems, because traditional unit testing, integration testing, and APM observability don\u2019t work well with nondeterministic LLM outputs. And as part of a fast-growing startup serving many <a href=\"https:\/\/www.comet.com\/site\/customers\/\">enterprise customers<\/a>, our engineering team in turn has adopted AI tools like Claude Code and built internal agentic systems to help solve problems, improve Opik, and increase velocity.&nbsp;<\/p>\n\n\n\n<p>The complexity and capability of truly agentic systems \u2014 those that can choose and operate multiple tools, navigate open-ended workflows without human oversight, and even expand and modify themselves \u2014 has exploded. These systems create an even greater need for observability, both for performance optimization and behavioral oversight. They also add complexity to the setup process for <a href=\"https:\/\/www.comet.com\/site\/blog\/llm-tracing\/\">LLM tracing<\/a> functions that let you log, inspect, and improve the steps in your system.&nbsp;<\/p>\n\n\n\n<p>In other words, agentic complexity makes it hard to know what to trace and how to organize your logs, and the sheer volume of data makes it hard to know where to look for issues and what to improve. And if you\u2019re building your agents with an AI code assistant, it\u2019s hard to then get that code assistant to apply the insights your observability platform surfaces.&nbsp;<\/p>\n\n\n\n<p>With these challenges in mind, we created the Opik Claude Code Plugin. You no longer need to carry the burden of implementing agent observability and following configuration best practices by yourself. Claude Code, powered by the Opik <a href=\"https:\/\/github.com\/comet-ml\/opik-claude-code-plugin\/blob\/main\/agents\/agent-reviewer.md\" target=\"_blank\" rel=\"noreferrer noopener\">plugin<\/a>, can do it for you, following the best practices our team has developed while dogfooding Opik for our own Claude-assisted agent development needs. It packages the battle-tested workflow the Comet team uses internally to (1) drive Claude Code effectively and (2) build reliable <a href=\"https:\/\/www.comet.com\/site\/blog\/ai-agents\/\">AI agents<\/a> fast.<\/p>\n\n\n\n<p><strong>The plugin centers on three capabilities:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Auto-instrumentation<\/strong> \u2014 Add Opik tracing to existing Python or JavaScript agents with minimal manual effort, anchoring traces correctly at the entry point and wiring providers automatically.<\/li>\n\n\n\n<li><strong>Agent best practices<\/strong> \u2014 Apply a structured review and improvement pass that enforces best-practice architectural patterns around <a href=\"https:\/\/www.comet.com\/site\/blog\/llm-observability\/\">LLM observability<\/a>, evaluation, reliability, and security.<\/li>\n\n\n\n<li><strong>Claude Code tracing<\/strong> \u2014 Provide full visibility into what Claude Code is doing while it modifies your system, so changes are inspectable and replayable rather than opaque.<\/li>\n<\/ul>\n\n\n\n<p><strong>TLDR:&nbsp;<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Here\u2019s the <a href=\"https:\/\/github.com\/comet-ml\/opik-claude-code-plugin\" target=\"_blank\" rel=\"noreferrer noopener\">repo<\/a><\/li>\n\n\n\n<li>Install via Claude Code: <code>\/plugin marketplace add comet-ml\/opik-claude-code-plugin<\/code><\/li>\n\n\n\n<li>Ask Claude how to use it<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-auto-instrumentation\">Auto-Instrumentation<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Try it: <code>\/opik:instrument<\/code><\/p>\n<\/blockquote>\n\n\n\n<p>Prompting Claude to \u201cadd observability to this repo\u201d seems simple enough. But in practice, that only works on toy examples.<\/p>\n\n\n\n<p>Real agents don\u2019t expose clean seams: just tracking every function would be a mess. Understanding what to track and how to structure it requires following the actual execution flow and breaking it into logical spans that align with behavior, not just code boundaries.<\/p>\n\n\n\n<p>Enterprise agents make this harder. There\u2019s complex business logic layered over time, real tech debt, and external systems woven into the execution path. In this setting, instrumentation isn\u2019t just about logging.<\/p>\n\n\n\n<p>We built the <a href=\"https:\/\/github.com\/comet-ml\/adversarial-benchmark-agent\" target=\"_blank\" rel=\"noreferrer noopener\">Adversarial Benchmark Agent<\/a> (code-named Babadook) to test auto-instrumentation under the most challenging conditions. It\u2019s a fully functional multi-step research agent, but intentionally structured around the kinds of edge cases and technical debt we repeatedly see in the wild.<\/p>\n\n\n\n<p>We ran <code>\/opik:instrument<\/code> against it with zero context.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"387\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-plugin-demo-1024x387.png\" alt=\"\" class=\"wp-image-19247\" srcset=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-plugin-demo-1024x387.png 1024w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-plugin-demo-300x113.png 300w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-plugin-demo-768x290.png 768w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-plugin-demo-1536x581.png 1536w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-plugin-demo.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In roughly 95% of cases it produced the correct trace structure on the first attempt.<\/p>\n\n\n\n<p>The important detail isn\u2019t that instrumentation was added. It\u2019s that the trace reflects the logical steps of the agent\u2014search, summarize, synthesize\u2014rather than the incidental structure of the codebase. That alignment is what makes observability usable instead of just verbose.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Technical Details<\/h3>\n\n\n\n<p>Babadook was intentionally structured to make instrumentation non-trivial. It reflects the kinds of structural complexity that accumulate in production systems.<\/p>\n\n\n\n<p>A representative sample:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Pattern <\/strong><\/td><td><strong>Why It\u2019s Difficult<\/strong><\/td><\/tr><tr><td>Dynamic imports and lazy module loading<\/td><td>No static import to scan or rewrite<\/td><\/tr><tr><td>Registry\/factory-based provider wiring<\/td><td>No visible <code>OpenAI() \/ Anthropic()<\/code> construction in top-level code<\/td><\/tr><tr><td>Lazy client creation (<code>cached_property<\/code>, descriptors)<\/td><td>Client doesn\u2019t exist at import time<\/td><\/tr><tr><td>Proxy objects wrapping SDK clients<\/td><td>Underlying calls are obscured behind indirection<\/td><\/tr><tr><td>Environment-driven provider switching<\/td><td>Backend determined at runtime<\/td><\/tr><tr><td>Async generators yielding intermediate results<\/td><td>Decorators don\u2019t reliably anchor trace context<\/td><\/tr><tr><td>Multiple entry points<\/td><td>No obvious single <code>main()<\/code> to instrument<\/td><\/tr><tr><td>Python \u2192 TypeScript subprocess boundary<\/td><td>LLM calls occur outside the primary runtime<\/td><\/tr><tr><td>Fake instrumentation already present<\/td><td>Appears instrumented but produces no structured traces<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>This enabled us to treat <code>\/opik:instrument<\/code> as a skill and optimize it. Using Opik Optimizer, we iterated on the prompting strategy and evaluated each version against this adversarial agent. Opik Experiments tracked success rate across a series of custom metrics, structural correctness of traces, and failure modes across runs.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"400\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-example-1024x400.png\" alt=\"\" class=\"wp-image-19248\" srcset=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-example-1024x400.png 1024w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-example-300x117.png 300w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-example-768x300.png 768w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-example-1536x600.png 1536w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-example.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>When applied to Babadook, the optimized skill:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Identified the true orchestration function shared across entry points and anchored a single root trace there<\/li>\n\n\n\n<li>Replaced the fake tracking implementation without changing call sites<\/li>\n\n\n\n<li>Wrapped dynamically constructed OpenAI and Anthropic clients at their actual creation points<\/li>\n\n\n\n<li>Injected LangChain and LangGraph callbacks rather than attempting to wrap internals<\/li>\n\n\n\n<li>Enabled CrewAI tracking at the correct lifecycle moment<\/li>\n\n\n\n<li>Recursively instrumented a Google ADK agent constructed at runtime<\/li>\n\n\n\n<li>Propagated trace context across the Python \u2192 TypeScript subprocess boundary, linking embedding spans back to the parent search step<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"417\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-instrumentation-example-1024x417.png\" alt=\"\" class=\"wp-image-19249\" srcset=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-instrumentation-example-1024x417.png 1024w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-instrumentation-example-300x122.png 300w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-instrumentation-example-768x313.png 768w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-instrumentation-example-1536x626.png 1536w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-plugin-instrumentation-example.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The result is a trace that corresponds to how the agent actually executes in production, even when the codebase makes that execution path difficult to see.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Agent Best Practices as-a-Skill<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Try it: <code>Review my agent for best practices and anti-patterns<\/code><\/p>\n<\/blockquote>\n\n\n\n<p>Once instrumentation makes an agent visible, the next problem is keeping it correct as it evolves. In real codebases, architecture drift is the default: complex business logic accretes, tech debt spreads, external dependencies creep into the execution path, and your feature throughput is limited by tech debt.<\/p>\n\n\n\n<p>We packaged our internal patterns into a single capability. It consists of multiple entry points that reference each other and can be invoked independently.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><code>agent-ops<\/code> skill<\/strong> \u2014 Encodes the lifecycle we expect production agents to follow: observability first, then evaluation, then optimization. It frames changes in terms of measurable improvement rather than ad hoc fixes.<\/li>\n\n\n\n<li><strong><code>opik<\/code> skill<\/strong> \u2014 Enforces the conventions that make traces and evaluations reliable: trace from input, stable span boundaries and types, and capture of config, feature flags, and model versions so execution can be replayed deterministically.<\/li>\n\n\n\n<li><strong><code>agent-reviewer<\/code> subagent<\/strong> \u2014 An independent auditor that reviews agent code against a concrete checklist: idempotency and retry safety, isolation and dry-run capability, security and prompt-injection risk, tool design quality, memory and resource limits, guardrails, and observability correctness.<\/li>\n<\/ol>\n\n\n\n<p>The practical effect is that \u201cbest practices\u201d can be an automatable checklist as opposed to a function of how experienced the developer is. You can run it any time the agent changes and get structured output: severity-ranked issues, specific locations, and recommended fixes, backed by experiments and evaluations that show whether the system actually improved.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Claude Code Tracing<\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Try it: <code>\/opik:trace-claude-code start<\/code><\/p>\n<\/blockquote>\n\n\n\n<p>The final capability is tracing Claude Code itself.<\/p>\n\n\n\n<p>Each Claude Code turn becomes an Opik trace. Tool calls and responses become spans. Subagent invocations are nested under their parent task span. You can see what Claude did, in what order, and what it produced at each step, instead of treating the agent as a black box.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"609\" src=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-trace-claude-code-1024x609.png\" alt=\"\" class=\"wp-image-19250\" srcset=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-trace-claude-code-1024x609.png 1024w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-trace-claude-code-300x178.png 300w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-trace-claude-code-768x456.png 768w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-trace-claude-code-1536x913.png 1536w, https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-trace-claude-code.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>This is driven by hooks, so it captures the workflow without getting in your way:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>User submits a prompt \u2192 create a trace<\/li>\n\n\n\n<li>Claude uses tools \u2192 create spans<\/li>\n\n\n\n<li>Claude finishes \u2192 end the trace<\/li>\n<\/ul>\n\n\n\n<p>In practice, this is the fastest way to answer the questions that matter: where Claude is getting stuck, which tools it is leaning on, and what each step costs in tokens and dollars. We used this internally to understand <a href=\"https:\/\/www.comet.com\/site\/blog\/optimize-ai-ide-cost\/\">how our developers were using Claude Code<\/a> and to reduce waste at the team level.<\/p>\n\n\n\n<p>It\u2019s also useful beyond plugin development. You can use it to track headless Claude Code agents (like our autonomous developer support agent, <a href=\"https:\/\/github.com\/comet-ml\/opik\/issues\/3411#issuecomment-3953432362\">Ollie<\/a>), or to give engineering leaders a real view into AI dev spend and what it is buying you.<\/p>\n\n\n\n<p>Together, these three capabilities turn Claude Code from a coding assistant into a structured agent engineering workflow.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Takeaways<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Observability should not compete with feature work.<\/strong> If adding tracing requires manual effort, it will lose. Automating it removes the tradeoff.<\/li>\n\n\n\n<li><strong>Correct structure matters more than raw logging.<\/strong> A trace is only useful if it reflects the logical steps of the agent, not just the shape of the codebase.<\/li>\n\n\n\n<li><strong>Best practices should be runnable, not aspirational.<\/strong> Agent-ops, Opik conventions, and the agent-reviewer turn reliability and security into an executable checklist.<\/li>\n\n\n\n<li><strong>Claude Code should not be a black box.<\/strong> Tracing Claude itself exposes cost, token usage, tool selection patterns, and inefficiencies in real time.<\/li>\n\n\n\n<li><strong>AI development is a system.<\/strong> You can instrument agents, instrument the tool building them, and evaluate both. That\u2019s how you reduce drift, control cost, and improve throughput without guessing.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Agent observability shouldn\u2019t be a side project. But in practice, it is. When teams have to choose between shipping features fast or wiring up tracing, logging, and evals, observability almost always loses. It\u2019s an interesting challenge for our engineering team here at Comet. We created Opik to help fellow engineers test, iterate on, and scale [&hellip;]<\/p>\n","protected":false},"author":132,"featured_media":19257,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"customer_name":"","customer_description":"","customer_industry":"","customer_technologies":"","customer_logo":"","footnotes":""},"categories":[23,65,9,7],"tags":[],"coauthors":[361],"class_list":["post-19246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-integrations","category-llmops","category-product","category-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Opik Claude Code Plugin: Auto-Configure Agent Observability<\/title>\n<meta name=\"description\" content=\"Learn how to use the Opik Claude Code Plugin to set up LLM trace logging for complex agentic systems, with the Comet engineering team&#039;s internal best practices built in.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Announcing the Opik Claude Code Plugin: Automatically Configure Observability for Complex Agentic Systems\" \/>\n<meta property=\"og:description\" content=\"Learn how to use the Opik Claude Code Plugin to set up LLM trace logging for complex agentic systems, with the Comet engineering team&#039;s internal best practices built in.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/\" \/>\n<meta property=\"og:site_name\" content=\"Comet\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cometdotml\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-02T23:19:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-13T16:19:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1440\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Collin Cunningham\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Cometml\" \/>\n<meta name=\"twitter:site\" content=\"@Cometml\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Collin Cunningham\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Opik Claude Code Plugin: Auto-Configure Agent Observability","description":"Learn how to use the Opik Claude Code Plugin to set up LLM trace logging for complex agentic systems, with the Comet engineering team's internal best practices built in.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/","og_locale":"en_US","og_type":"article","og_title":"Announcing the Opik Claude Code Plugin: Automatically Configure Observability for Complex Agentic Systems","og_description":"Learn how to use the Opik Claude Code Plugin to set up LLM trace logging for complex agentic systems, with the Comet engineering team's internal best practices built in.","og_url":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/","og_site_name":"Comet","article_publisher":"https:\/\/www.facebook.com\/cometdotml","article_published_time":"2026-03-02T23:19:00+00:00","article_modified_time":"2026-03-13T16:19:00+00:00","og_image":[{"width":2560,"height":1440,"url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-scaled.png","type":"image\/png"}],"author":"Collin Cunningham","twitter_card":"summary_large_image","twitter_creator":"@Cometml","twitter_site":"@Cometml","twitter_misc":{"Written by":"Collin Cunningham","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/#article","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/"},"author":{"name":"Mike Ranellone","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/b0df8d0db9a521af425e33f561b39c6a"},"headline":"Announcing the Opik Claude Code Plugin: Automatically Configure Observability for Complex Agentic Systems","datePublished":"2026-03-02T23:19:00+00:00","dateModified":"2026-03-13T16:19:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/"},"wordCount":1501,"commentCount":0,"publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/#primaryimage"},"thumbnailUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-scaled.png","articleSection":["Integrations","LLMOps","Product","Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/","url":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/","name":"Opik Claude Code Plugin: Auto-Configure Agent Observability","isPartOf":{"@id":"https:\/\/www.comet.com\/site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/#primaryimage"},"image":{"@id":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/#primaryimage"},"thumbnailUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-scaled.png","datePublished":"2026-03-02T23:19:00+00:00","dateModified":"2026-03-13T16:19:00+00:00","description":"Learn how to use the Opik Claude Code Plugin to set up LLM trace logging for complex agentic systems, with the Comet engineering team's internal best practices built in.","breadcrumb":{"@id":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/#primaryimage","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-scaled.png","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2026\/03\/opik-claude-code-observability-plugin-scaled.png","width":2560,"height":1440},{"@type":"BreadcrumbList","@id":"https:\/\/www.comet.com\/site\/blog\/opik-claude-code-plugin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.comet.com\/site\/"},{"@type":"ListItem","position":2,"name":"Announcing the Opik Claude Code Plugin: Automatically Configure Observability for Complex Agentic Systems"}]},{"@type":"WebSite","@id":"https:\/\/www.comet.com\/site\/#website","url":"https:\/\/www.comet.com\/site\/","name":"Comet","description":"Build Better Models Faster","publisher":{"@id":"https:\/\/www.comet.com\/site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.comet.com\/site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.comet.com\/site\/#organization","name":"Comet ML, Inc.","alternateName":"Comet","url":"https:\/\/www.comet.com\/site\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/logo\/image\/","url":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/01\/logo_comet_square.png","contentUrl":"https:\/\/www.comet.com\/site\/wp-content\/uploads\/2025\/01\/logo_comet_square.png","width":310,"height":310,"caption":"Comet ML, Inc."},"image":{"@id":"https:\/\/www.comet.com\/site\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/cometdotml","https:\/\/x.com\/Cometml","https:\/\/www.youtube.com\/channel\/UCmN63HKvfXSCS-UwVwmK8Hw"]},{"@type":"Person","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/b0df8d0db9a521af425e33f561b39c6a","name":"Mike Ranellone","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.comet.com\/site\/#\/schema\/person\/image\/f3d00b8d32dc8a46ea04b9a2ad465d29","url":"https:\/\/secure.gravatar.com\/avatar\/56dc2f32e4fc99604d8c4344d1a10237e5298fd2609bbc8d79d5ef1ab5b2e3a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56dc2f32e4fc99604d8c4344d1a10237e5298fd2609bbc8d79d5ef1ab5b2e3a1?s=96&d=mm&r=g","caption":"Mike Ranellone"},"sameAs":["https:\/\/www.comet.com\/"],"url":"https:\/\/www.comet.com\/site\/blog\/author\/mikercomet-com\/"}]}},"_links":{"self":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/19246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/users\/132"}],"replies":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/comments?post=19246"}],"version-history":[{"count":3,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/19246\/revisions"}],"predecessor-version":[{"id":19292,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/posts\/19246\/revisions\/19292"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/media\/19257"}],"wp:attachment":[{"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/media?parent=19246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/categories?post=19246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/tags?post=19246"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.comet.com\/site\/wp-json\/wp\/v2\/coauthors?post=19246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}