Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
"name": "Comet ML",
"url": "https://comet.com"
},
"homepage": "https://github.com/comet-ml/opik-claude-plugin",
"repository": "https://github.com/comet-ml/opik-claude-plugin",
"homepage": "https://github.com/comet-ml/opik-claude-code-plugin",
"repository": "https://github.com/comet-ml/opik-claude-code-plugin",
"license": "Apache-2.0",
"keywords": [
"opik",
Expand Down
6 changes: 3 additions & 3 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"name": "opik",
"version": "0.3.1",
"description": "LLM observability tooling for agent development and Claude Code",
"version": "0.4.0",
"description": "Opik tracing for Claude Code sessions, plus the Opik agent skills: instrument, diagnose, explain, test, compare, evaluate, online-eval, optimize",
Comment thread
aswynz marked this conversation as resolved.
"author": {
"name": "Comet ML",
"url": "https://comet.com"
},
"repository": "https://github.com/comet-ml/opik-claude-plugin",
"repository": "https://github.com/comet-ml/opik-claude-code-plugin",
"license": "Apache-2.0",
"keywords": [
"opik",
Expand Down
26 changes: 26 additions & 0 deletions .github/workflows/skills-drift.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: skills-drift

# Fails if the vendored skills under skills/ have drifted from their source of truth
# (comet-ml/opik-mcp at the CANON_REF pinned in scripts/sync-shared-skills.sh).
# Fix: edit upstream, merge, bump CANON_REF, re-run the script, commit.

on:
pull_request:
paths: ["skills/**", "scripts/sync-shared-skills.sh", ".github/workflows/skills-drift.yml"]
push:
branches: [main]

jobs:
drift:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Re-vendor at the pinned ref and check for drift
run: |
bash scripts/sync-shared-skills.sh
if ! git diff --quiet -- skills || [ -n "$(git status --porcelain -- skills)" ]; then
echo "::error::Vendored skills differ from comet-ml/opik-mcp at the pinned CANON_REF."
git --no-pager status --porcelain -- skills
exit 1
fi
echo "no drift"
5 changes: 2 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,7 @@ opik-claude-code-plugin/
│ └── opik-logger-* # Compiled binaries (darwin/linux, amd64/arm64)
├── src/
│ └── *.go # Go source for the tracing logger
├── skills/
│ └── agent-ops/ # LLM observability skill + references
├── skills/ # vendored from comet-ml/opik-mcp — do not hand-edit (skills/SHARED.md)
├── agents/
│ └── agent-reviewer.md # Agent code review agent
├── commands/
Expand All @@ -69,7 +68,7 @@ opik-claude-code-plugin/

## Contributing Skills

Skills live in `skills/` as directories containing a `SKILL.md` file and optional `references/` directory.
Skills live in `skills/` as directories containing a `SKILL.md` file and optional `references/` directory. **They are vendored from [`comet-ml/opik-mcp`](https://github.com/comet-ml/opik-mcp)** — propose skill changes there, then bump `CANON_REF` in `scripts/sync-shared-skills.sh` and re-run it here.

```
skills/
Expand Down
28 changes: 19 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,14 +175,23 @@ The command ensures tracing starts at your entry point (critical for replay capa

## Skills

### `/opik:agent-ops` - LLM Observability Knowledge
### Opik skills (vendored from `comet-ml/opik-mcp`)

Comprehensive guidance on:
- Opik setup and configuration
- Tracing with Python/TypeScript SDKs
- 80+ framework integrations (LangChain, CrewAI, OpenAI, Anthropic, etc.)
- Evaluation with 41 built-in metrics
- Production monitoring, guardrails, and debugging
The plugin ships the Opik skill pack — the same skills published as [`opik-skills`](https://github.com/comet-ml/opik-skills). Claude loads them by task:

| Skill | Use for |
| --- | --- |
| `opik` | SDK reference — span types, integrations, threads, the prompt library |
| `opik-instrument` | "add opik tracing", "instrument my code" — and verify a real trace lands |
| `opik-diagnose` | "what is broken in production", "which traces need attention" |
| `opik-explain` | "why did this trace fail", "debug this trace" |
| `opik-test` | "turn this trace into a test", "make sure this doesn't happen again" |
| `opik-compare` | "did my fix work", "which cases regressed" |
| `opik-evaluate` | "evaluate my agent", "build an eval", "write an LLM judge" |
| `opik-online-eval` | "score production traces", "take this judge live" |
| `opik-optimize` | "optimize this prompt", "run the prompt optimizer" |

They are vendored at a pinned `opik-mcp` commit (see `skills/SHARED.md`); edit them upstream, not here.
Comment thread
aswynz marked this conversation as resolved.

## Agents

Expand Down Expand Up @@ -210,8 +219,9 @@ opik-claude-code-plugin/
│ └── opik-logger-* # Compiled binaries (darwin/linux, amd64/arm64)
├── src/
│ └── *.go # Go source code
├── skills/
│ └── agent-ops/ # Observability skill + references
├── skills/ # Opik skill pack, vendored from comet-ml/opik-mcp (see skills/SHARED.md)
│ ├── opik/
│ ├── opik-instrument/ … opik-optimize/
├── agents/
│ └── agent-reviewer.md # Agent review agent
├── commands/
Expand Down
2 changes: 1 addition & 1 deletion commands/instrument.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Add tracing to the user's code so their LLM application is observable in Opik.
Use the Skill tool to load BOTH of these skills before doing anything else:

1. **`opik`** — Opik SDK reference: all integrations, tracing patterns, span types, code snippets
2. **`agent-ops`** — Agent architecture patterns, evaluation, what to trace and why
2. **`opik-instrument`** — the end-to-end routine: detect the framework, add the minimum tracing, run a safe path, verify a real trace lands

Load them both now. Do not proceed until both are loaded.

Expand Down
38 changes: 38 additions & 0 deletions scripts/sync-shared-skills.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
# Vendor the shared Opik skills from their source of truth (OPIK-7471).
#
# The skills under skills/ are OWNED by comet-ml/opik-mcp (src/opik_mcp/skills) and
# published from there as the opik-skills pack. Do not hand-edit them here — edit the
# source, get it merged, then bump CANON_REF and re-run this script. The drift check
# in .github/workflows/skills-drift.yml fails a pull request whose vendored copy
# differs from the pinned source.
#
# Usage: bash scripts/sync-shared-skills.sh # at the pinned ref
# CANON_REF=<commit-or-tag> bash scripts/sync-shared-skills.sh
set -euo pipefail

CANON_REPO="${CANON_REPO:-https://github.com/comet-ml/opik-mcp.git}"
CANON_REF="${CANON_REF:-0baa5aecf0224701473efd968be4aa5a166ba99f}" # opik-mcp main after #191 (nine skills)
SRC="src/opik_mcp/skills"
DEST="skills"
# Every skill the pack ships. Order matches the published index.
SHARED=(opik opik-compare opik-diagnose opik-evaluate opik-explain opik-instrument opik-online-eval opik-optimize opik-test)

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
git clone --quiet --filter=blob:none "$CANON_REPO" "$tmp" # blobs fetched lazily on checkout
git -C "$tmp" checkout --quiet "$CANON_REF"

for s in "${SHARED[@]}"; do
if [ ! -d "$tmp/$SRC/$s" ]; then
# SHARED and CANON_REF disagree. Carrying on would leave the stale vendored copy in
# place and the drift check would pass over it, so this is an error, not a warning.
echo "error: '$s' is in SHARED but not in opik-mcp@$CANON_REF — drop it from SHARED or bump the pin" >&2
exit 1
fi
rm -rf "${DEST:?}/$s"
# Same exclusions as the published pack: evals/ is development tooling.
rsync -a --exclude evals --exclude __pycache__ "$tmp/$SRC/$s/" "$DEST/$s/"
echo "synced $s"
done
echo "Done. Vendored ${#SHARED[@]} skills from opik-mcp@$CANON_REF"
14 changes: 14 additions & 0 deletions skills/SHARED.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# These skills are vendored — do not hand-edit them

Everything under `skills/` is **vendored from the source of truth**,
[`comet-ml/opik-mcp`](https://github.com/comet-ml/opik-mcp) (`src/opik_mcp/skills`,
OPIK-7471) — the same files published as the `opik-skills` pack. Edit them there, get
the change merged, then bump `CANON_REF` in `scripts/sync-shared-skills.sh` and re-run:

```bash
bash scripts/sync-shared-skills.sh
```

`.github/workflows/skills-drift.yml` fails a pull request whose vendored copy differs
from the pinned source. This repo still owns everything else: `commands/`, `agents/`,
`hooks/`, and the session logger.
106 changes: 0 additions & 106 deletions skills/agent-ops/SKILL.md

This file was deleted.

Loading
Loading