Agent skill

Opik Docs Writer

by comet-ml in comet-ml/opik

Guides writing Fern MDX pages for the Opik documentation site, including frontmatter, structure, components, navigation entries and release-note routing.

Apache-2.0Auto-check passedDevelopment

Install Opik Docs Writer

skills CLI
$ npx skills add comet-ml/opik --skill write-docs -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install comet-ml/opik write-docs --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/comet-ml/opik.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/write-docs .claude/skills/write-docs && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
write-docs
GitHub stars
22k
Token cost
~3.2k tokens
SKILL.md length
1,230 words
Files
1
Skills in repo
19
Repo updated
First seen
Licence
Apache-2.0

At a glance

Guides writing Fern MDX pages for the Opik documentation site, including frontmatter, structure, components, navigation entries and release-note routing.

  • Adding a new page under the Opik Fern docs folder
  • SKILL.md covers Where new pages live, Frontmatter template, Style and voice and Fern MDX components, plus 12 more sections
  • Calls npm and pip; reaches comet.com; needs API_KEY
  • Updating an existing docs page and its frontmatter

What it does

Opik's docs are built with Fern from MDX files under apps/opik-documentation/documentation/fern. New pages go in the docs-v2 folder, and each one must be registered under the right section in fern/docs.yml, because routing does not follow the folder layout.

Pages open with YAML frontmatter where title and headline are required and the og fields are strongly recommended, and the title is never repeated as an H1 in the body. The style guide asks for second-person, imperative prose, one or two sentences before the first heading, short paragraphs, concept pages that start with the why, how-to pages that start with context, and a Next steps section linking related pages.

Beyond page authoring, the skill routes release notes and changelog entries to the right surface and helps draft pull request descriptions. Examples show Tabs for SDK or language choices, with a language attribute so Fern remembers the reader's last pick across the site.

When your agent uses it

  • Adding a new page under the Opik Fern docs folder
  • Updating an existing docs page and its frontmatter
  • Choosing where a release note or changelog entry belongs
  • Drafting a pull request description for a docs change

Example prompts

  • “Write a docs page for the new tracing decorator and register it in the navigation.”
  • “Add SDK tabs to the quickstart so readers can pick their language.”
  • “Draft the PR description for this docs update and tell me which changelog surface to use.”

Requirements

  • A checkout of the Opik repository

What it can do on your machine

Read from SKILL.md and the folder at commit 8e3f6e5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • comet.com

    Also links to:

    • buildwithfern.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Opik Docs Writer loads about 3.2k tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 1,230 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~67
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from comet-ml/opik at commit 8e3f6e5, republished under its Apache-2.0 licence (© comet-ml). 1,230 words, ~3,198 tokens.

Download SKILL.mdSave it as .claude/skills/write-docs/SKILL.md (or your agent's skills folder).
name
write-docs
description
Authoring Fern MDX documentation pages for the Opik docs site, plus release-note and changelog routing. Use when writing or updating pages under apps/opik-documentation/documentation/fern/, drafting PR descriptions, or picking the right changelog surface.

Write Docs

The Opik docs site is built with Fern from MDX sources under apps/opik-documentation/documentation/fern/. There is one content surface: fern/docs-v2/. The old v1 surface (fern/docs/) was removed; every v1 URL now redirects to its Opik 2 equivalent through the redirects: list in fern/docs.yml.

Where new pages live

  • Create the file at apps/opik-documentation/documentation/fern/docs-v2/<section>/<page-name>.mdx.
  • Register it in fern/docs.yml under the right section: block in navigation:.
  • Routing is not implied by folder layout. Always check navigation: in fern/docs.yml.

Frontmatter template

Every page uses YAML frontmatter. title and headline are required; the og:* fields are strongly recommended for SEO/social sharing and are present on every page. Do not repeat title as an inline # H1 in the body — Fern renders it from frontmatter.

yaml
---
title: Page Title
headline: Page Title | Opik Documentation
og:title: Page Title — Opik
og:description: One-line summary used for social sharing and previews
og:site_name: Opik Documentation
---

subtitle: ... is an optional field used on concept/overview pages to add a secondary line. Landing/overview pages may also set layout: overview.

Style and voice

Pull examples from existing pages when unsure — fern/docs-v2/tracing/advanced/log_traces.mdx, fern/docs-v2/tracing/concepts.mdx, and fern/docs-v2/quickstart.mdx are good anchors.

  • Person: "you" and imperative voice. Professional but approachable.
  • Opening: one or two intro sentences before the first ## heading. No inline H1.
  • Headings: ## for top-level sections, ### for subsections. Never introduce an inline # — that collides with the frontmatter title.
  • Paragraphs: keep them short (2–4 sentences). Mix prose with bullet lists for features, options, and prerequisites.
  • Page shape:
    • Concept pages start with the why, then definitions.
    • How-to pages start with brief context, then the task steps.
    • Overview/landing pages lead with a short pitch and a <CardGroup> of links.
  • End with "## Next steps" linking to 2–4 related pages when useful.

Fern MDX components

All examples below are taken from real pages in the repo.

<Tabs> / <Tab> — SDK, language, or environment choice

Use when the whole section varies (not just a code block). Attach language="..." so Fern groups tabs across the site by the reader's last choice.

mdx
<Tabs>
  <Tab value="Python SDK" title="Python SDK" language="python">
    ```bash
    pip install opik
    ```
  </Tab>
  <Tab value="Typescript SDK" title="Typescript SDK" language="typescript">
    ```bash
    npm install opik
    ```
  </Tab>
  <Tab value="OpenTelemetry" title="OpenTelemetry">
    ...
  </Tab>
</Tabs>
<Steps> / <Step> — walkthroughs

For quickstarts, installs, and any sequential procedure. title on each <Step> is optional.

mdx
<Steps>
  <Step title="Install the Opik skill">
    ```bash
    npx skills add comet-ml/opik-skills
    ```
  </Step>
  <Step title="Run the integration">
    Once the skill is installed, you can add tracing using the following prompt:
    ```
    Instrument my agent with Opik using the /opik-instrument command.
    ```
  </Step>
</Steps>
<CodeBlocks> — multi-language code, identical surrounding prose

Prefer this over <Tabs> when only the code varies.

mdx
<CodeBlocks>
  ```python title="Python"
  import opik
  opik.configure()
ts
import Opik from "opik";
const client = new Opik();
</CodeBlocks>
```
<CardGroup> / <Card> — landing and integration grids
mdx
<CardGroup cols={3}>
  <Card title="LangChain" href="/integrations/langchain" icon={<img src="/img/tracing/langchain.svg" />} iconPosition="left"/>
  <Card title="LlamaIndex" href="/integrations/llama_index" icon={<img src="/img/tracing/llamaindex.svg" />} iconPosition="left"/>
  <Card title="Anthropic" href="/integrations/anthropic" icon={<img src="/img/tracing/anthropic.svg" />} iconPosition="left"/>
</CardGroup>
<AccordionGroup> / <Accordion> — FAQs and expandable advanced topics
mdx
<AccordionGroup>
  <Accordion title="Why use the optimizer?">
    The Agent Optimizer provides a unified interface...
  </Accordion>
</AccordionGroup>
<Frame> — image wrapper (always wrap images)
mdx
<Frame>
  <img src="/img/tracing/introduction.png" />
</Frame>
Callouts: <Tip>, <Note>, <Warning>, <Info>, <Callout>

Pick by intent, not aesthetics:

  • <Tip> — cross-references, shortcuts, "If you're just getting started, see..."
  • <Note> — clarifications and recommendations that aren't risky
  • <Warning> — breaking changes, footguns, prerequisites that will break things
  • <Info> — informational, interchangeable with <Note> in practice
  • <Callout> — catch-all when none of the above fits
mdx
<Tip>
  If you are just getting started with Opik, we recommend first checking out the [Quickstart](/quickstart) guide.
</Tip>

<Warning>
  Note that the authorization header value does not include the `Bearer ` prefix.
</Warning>

Code examples

  • Use <CodeBlocks> for multi-language blocks; use <Tabs> when surrounding prose also varies.
  • Install commands are inline bash blocks (pip install opik, npm install opik).
  • There is no snippet-include system. All code is written inline in MDX.
  • Use placeholders for credentials: <API_KEY>, <TOKEN>, <your-api-key>. Never commit real keys.

Images

  • Store under apps/opik-documentation/documentation/fern/img/<section>/....
  • Reference from MDX as /img/<section>/<file>.png (path is rooted at the docs base).
  • Never put new assets in static/img/ — that folder is legacy and only kept for external integrations.
  • Always wrap with <Frame>. Captions are not a repo convention.

Root-relative, slug-based paths only (/section/page).

  • Never link internal docs pages with full https://www.comet.com/docs/opik/... URLs. Full URLs bypass the Fern preview build, and they 404 in the link checker when the target page ships in the same PR. Use the root-relative slug path instead.
  • No file-relative paths (../foo) either.
  • Build the path from navigation: in fern/docs.yml, including every nested section: slug. Example: the "Manage datasets" page sits inside an advanced section, so the path is /evaluation/advanced/manage_datasets, not /evaluation/manage_datasets.
mdx
[Python SDK](/reference/python-sdk/overview)
[Log traces](/tracing/advanced/log_traces)
[Integrations overview](/integrations/overview)

In-page anchors use the heading slug: [Concepts](#concepts).

Routing: adding a page to docs.yml

Add a page entry under the correct section: in navigation: (keep the YAML at 2-space indent):

yaml
- page: Page Title
  path: ./docs-v2/section/page-name.mdx
  slug: page-name

File naming

  • Kebab-case for new files: getting-started.mdx, log-traces.mdx.
  • When editing an existing section that uses snake_case, match neighbors rather than renaming. Renames require redirect entries in docs.yml.

Local verification

bash
cd apps/opik-documentation/documentation
npm install          # first time only
npm run dev          # live-reload preview

Open the rendered page and confirm:

  • Frontmatter renders (title shows, no stray H1 in body).
  • Every MDX component resolves (no raw <Tabs> tags visible).
  • Every link works (no 404s, no Broken link warnings in the terminal).
  • Images load.

Changelog routing

Pick the changelog target by scope — do not default everything to one surface.

  • apps/opik-documentation/documentation/fern/docs-v2/self-host/changelog.mdx — self-hosted deployment changelog shown at /docs/opik/self-host/changelog. Breaking, critical, or security-impacting changes only. (The former repo-root CHANGELOG.md was removed; its content lives on this page now.)
  • apps/opik-documentation/documentation/fern/docs-v2/changelog/*.mdx — general product release notes shown at /docs/opik/changelog. One dated .mdx per entry.
  • apps/opik-documentation/documentation/fern/docs-v2/development/optimization-runs/changelog.mdx — Agent Optimizer version updates (e.g. sdks/opik_optimizer releases like 3.1.0).
  • Liquibase changelog.xml files are migration manifests, not user-facing release notes. Do not put prose there.
  • When unsure, confirm the surface from fern/docs.yml before editing.
Show full SKILL.md (482 more words)Show less
Changelog entry template
markdown
### [VERSION] - [DATE]

#### New Features
- **Feature Name**: Brief description

#### Improvements
- **Improvement**: What changed and why

#### Bug Fixes
- **Fix**: What was broken (#issue)

#### Breaking Changes
- **Change**: What breaks, migration steps

Feature documentation checklist

When documenting a new feature, cover:

  • User impact — What capability does this add? How do users access it?
  • Technical changes — API endpoints and params, SDK methods, config or env vars, migrations.
  • Breaking changes — What breaks and the migration path, if any.

Keep it user-facing: avoid implementation detail unless it affects how someone uses the feature.

PR description template

Use the repository template at .github/pull_request_template.md — read the FULL file before drafting (the required sections continue past the first screen). CI (.github/workflows/pr-lint.yml) fails any PR whose description is missing one of these exact headings:

  • ## Details
  • ## Change checklist
  • ## Issues
  • ## Testing
  • ## Documentation

Also fill in the template's ## AI-WATERMARK section (yes/no; if yes: Tools, Model(s), Scope, Human verification). Never invent a different structure such as ## Summary / ## Test Plan.

A section that does not apply gets N/A — never delete a heading.

## Details — style

Write what changes for a user. A reviewer reads the diff for the code; this section tells them what is different when they use the product.

  • Short. Most PRs need 3–10 bullets. If it runs longer, the section is doing the diff's job — cut it.
  • Bullets, not prose paragraphs. One behavior per bullet. Nest one level for sub-cases.
  • Authoritative. State what happens: "The run is scored once." Not "This should now mean that the run will be scored once."
  • No fluff. No motivation paragraph, no "this PR …", no approach summary, no benefits list, no restating the diff.
  • Observable behavior first. What the UI shows, what the API returns, what gets scored, stored or logged. Name a class, method or file only when the behavior makes no sense without it.

Pick the shape that fits the change — do not force one:

  • Before / After bullet lists when a behavior changed and the contrast is the point.
  • A flat bullet list for a new capability, where there is no "before".
  • One or two lines when users cannot see the change (refactor, dependency bump) — say what is unchanged and what improved, then stop.

Internationalized READMEs

readme_CN.md, readme_ES.md, readme_FR.md, readme_DE.md are AI machine-translated from the English README.md.

  • Each non-English README has a blockquote notice at the top warning that it is AI-translated and welcoming improvements. Keep it.
  • When the English README changes meaningfully, re-translate the affected files. Do not hand-edit translated READMEs for content changes — update the English source and re-translate.

Forbidden and discouraged

  • No real API keys, tokens, or workspace IDs in examples — always placeholders.
  • Do not put new images outside fern/img/. static/img/ is legacy-only and cannot be deleted because of external integrations.
  • Do not infer URL paths from folder layout — always consult navigation: in fern/docs.yml.
  • Do not add an inline # H1 inside the body — the frontmatter title already provides it.

Key files

  • apps/opik-documentation/documentation/fern/docs.yml — site config: tabs, navigation: routing, and redirects:. Edit navigation: when adding pages.
  • apps/opik-documentation/documentation/fern/docs-v2/ — target directory for new pages.
  • apps/opik-documentation/documentation/fern/img/ — image storage.
  • apps/opik-documentation/AGENTS.md — docs-module contribution rules.
  • .github/release-drafter.yml — release notes template.

© comet-ml, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/write-docs of comet-ml/opik.

Open the folder on GitHubat commit 8e3f6e5

Compare with similar skills

Opik Docs Writer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Opik Docs Writer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Opik Docs Writer this skillcomet-ml/opik22k—~3.2kAutomated safety check: PassApache-2.0
Markdown WriterDevolutions/devolutions-gateway162—~290Automated safety check: PassApache-2.0
Markdown Proaiskillstore/marketplace430—~2.5kAutomated safety check: PassNone
Docs GuardamElnagdy/guard-skills1.3k—~2.1kAutomated safety check: PassMIT
Content Modelguardana/guardana129—~1.2kAutomated safety check: PassApache-2.0
Changelogcloudposse/atmos1.4k—~2.7kAutomated safety check: PassApache-2.0

Similar skills

  • Markdown Writer

    Devolutions/devolutions-gateway

    Write clean, readable Markdown with concise prose and maintainable source formatting.

    162 GitHub stars~290 tokensUpdated today
    DevelopmentAuto-check passed
  • Markdown Pro

    aiskillstore/marketplace

    Professional Markdown documentation skill for creating polished README files, changelogs, contribution guides, and technical documentation.

    430 GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Docs Guard

    amElnagdy/guard-skills

    Checks generated or edited documentation against the source code, flagging invented symbols, outdated samples and unverifiable claims before publishing.

    1.3k GitHub stars~2.1k tokensUpdated 3 mo ago
    DevelopmentAuto-check passed
  • Content Model

    guardana/guardana

    Route wording work to GPT (codex CLI) or Gemini (agy CLI) instead of writing it with Claude — landing-page copy, a readability rewrite of a README or docs page, attack and judge prompts for a rule…

    129 GitHub stars~1.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Changelog

    cloudposse/atmos

    Blog post authoring for Atmos: MDX template, frontmatter, website/blog/tags.yml and authors.yml rules, problem-first framing, backtick-opening ban, optional cast embeds, and no-Go-internals leakage.

    1.4k GitHub stars~2.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Tabler Docs Writer

    tabler/tabler

    Writes and updates Tabler documentation pages in simple English following the repository's page schema, and flags new components that have no docs yet.

    42k GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check passed

More from comet-ml/opik

All 19 skills in this repo
  • Checklist for wiring a new linter into Opik's Code Quality pipeline: the four files to edit, the silent-failure gotchas and the pass/fail verification loop.

    22k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Shows how to add product analytics events to Opik's frontend, Java backend and Python SDK, all reporting through Segment to PostHog with an opik_ name prefix.

    22k GitHub stars~4.4k tokensUpdated today
    Auto-check passed
  • Investigates a failed Opik end-to-end test from CI, TestOps or a local run, decides regression versus flake, and proposes a fix without editing tests.

    22k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Rules for writing PR descriptions, changelog entries and feature documentation in the Opik repository, including the exact headings that CI requires.

    22k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Turns a code change into one committed, passing Playwright end-to-end spec by resolving the change scope and handing authoring to a companion skill.

    22k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Starts, rebuilds, and troubleshoots the Opik local dev stack, including an optional Comet Platform integration mode for the Opik team.

    22k GitHub stars~734 tokensUpdated today
    Auto-check passed

Questions about Opik Docs Writer

What does Opik Docs Writer do?

Guides writing Fern MDX pages for the Opik documentation site, including frontmatter, structure, components, navigation entries and release-note routing. Opik's docs are built with Fern from MDX files under apps/opik-documentation/documentation/fern.yml, because routing does not follow the folder layout.

When should I use Opik Docs Writer?

Opik Docs Writer fits situations like: adding a new page under the Opik Fern docs folder; updating an existing docs page and its frontmatter; choosing where a release note or changelog entry belongs; drafting a pull request description for a docs change.

How do I install Opik Docs Writer in Claude Code?

Run `npx skills add comet-ml/opik --skill write-docs -a claude-code`. Or copy the skill folder (.agents/skills/write-docs in comet-ml/opik) into .claude/skills/write-docs in your project. Claude Code loads it when a task matches its description.

How do I install Opik Docs Writer in Codex?

Run `npx skills add comet-ml/opik --skill write-docs -a codex`. Or copy the skill folder (.agents/skills/write-docs in comet-ml/opik) into .agents/skills/write-docs in your project. Codex loads it when a task matches its description.

Can I use Opik Docs Writer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add comet-ml/opik --skill write-docs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-docs, .gemini/skills/write-docs, .github/skills/write-docs and .opencode/skills/write-docs in your project.

What does Opik Docs Writer need to run?

Going by SKILL.md and its folder, Opik Docs Writer needs the command-line tools its instructions call (npm and pip) and credentials named API_KEY. Our summary lists: A checkout of the Opik repository.

Does Opik Docs Writer access the network?

SKILL.md names 2 domains. In commands or code: comet.com; the agent is likely to contact it when it follows the instructions. As links in the text: buildwithfern.com. This is read from the text; nothing was executed.

Is Opik Docs Writer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Opik Docs Writer use?

Opik Docs Writer is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Opik Docs Writer use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Opik Docs Writer?

Skills that share tags, products or a category with Opik Docs Writer: Markdown Writer (Devolutions/devolutions-gateway, 162 stars), Markdown Pro (aiskillstore/marketplace, 430 stars), Docs Guard (amElnagdy/guard-skills, 1.3k stars) and Content Model (guardana/guardana, 129 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Opik Docs Writer?

comet-ml (a GitHub organization) maintains it in comet-ml/opik, which has 22,443 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 8, 2026.

Source: comet-ml/opik on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.