Markdown Writer
Devolutions/devolutions-gateway
Write clean, readable Markdown with concise prose and maintainable source formatting.
Guides writing Fern MDX pages for the Opik documentation site, including frontmatter, structure, components, navigation entries and release-note routing.
$ npx skills add comet-ml/opik --skill write-docs -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install comet-ml/opik write-docs --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "write-docs" agent skill from https://github.com/comet-ml/opik/tree/main/.agents/skills/write-docs into .claude/skills/write-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-docs", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/comet-ml/opik/tree/main/.agents/skills/write-docsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add comet-ml/opik --skill write-docs -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install comet-ml/opik write-docs --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/comet-ml/opik.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/write-docs .agents/skills/write-docs && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "write-docs" agent skill from https://github.com/comet-ml/opik/tree/main/.agents/skills/write-docs into .agents/skills/write-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-docs", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add comet-ml/opik --skill write-docs -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install comet-ml/opik write-docs --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/comet-ml/opik.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/write-docs .cursor/skills/write-docs && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "write-docs" agent skill from https://github.com/comet-ml/opik/tree/main/.agents/skills/write-docs into .cursor/skills/write-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-docs", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/comet-ml/opik.git --path .agents/skills/write-docs--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add comet-ml/opik --skill write-docs -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install comet-ml/opik write-docs --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/comet-ml/opik.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/write-docs .gemini/skills/write-docs && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "write-docs" agent skill from https://github.com/comet-ml/opik/tree/main/.agents/skills/write-docs into .gemini/skills/write-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-docs", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install comet-ml/opik write-docsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add comet-ml/opik --skill write-docs -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/comet-ml/opik.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/write-docs .github/skills/write-docs && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "write-docs" agent skill from https://github.com/comet-ml/opik/tree/main/.agents/skills/write-docs into .github/skills/write-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-docs", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add comet-ml/opik --skill write-docs -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install comet-ml/opik write-docs --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/comet-ml/opik.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/write-docs .opencode/skills/write-docs && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "write-docs" agent skill from https://github.com/comet-ml/opik/tree/main/.agents/skills/write-docs into .opencode/skills/write-docs/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "write-docs", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
write-docsGuides 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. 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.
Read from SKILL.md and the folder at commit 8e3f6e5. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
npmpipFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
comet.comAlso links to:
buildwithfern.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
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.
.claude/skills/write-docs/SKILL.md (or your agent's skills folder).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.
apps/opik-documentation/documentation/fern/docs-v2/<section>/<page-name>.mdx.fern/docs.yml under the right section: block in navigation:.navigation: in fern/docs.yml.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.
---
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.
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.
## heading. No inline H1.## for top-level sections, ### for subsections. Never introduce an inline # — that collides with the frontmatter title.<CardGroup> of links.All examples below are taken from real pages in the repo.
<Tabs> / <Tab> — SDK, language, or environment choiceUse 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.
<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> — walkthroughsFor quickstarts, installs, and any sequential procedure. title on each <Step> is optional.
<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 prosePrefer this over <Tabs> when only the code varies.
<CodeBlocks>
```python title="Python"
import opik
opik.configure()import Opik from "opik";
const client = new Opik();</CodeBlocks>
```
<CardGroup> / <Card> — landing and integration grids<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<AccordionGroup>
<Accordion title="Why use the optimizer?">
The Agent Optimizer provides a unified interface...
</Accordion>
</AccordionGroup><Frame> — image wrapper (always wrap images)<Frame>
<img src="/img/tracing/introduction.png" />
</Frame><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<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><CodeBlocks> for multi-language blocks; use <Tabs> when surrounding prose also varies.pip install opik, npm install opik).<API_KEY>, <TOKEN>, <your-api-key>. Never commit real keys.apps/opik-documentation/documentation/fern/img/<section>/..../img/<section>/<file>.png (path is rooted at the docs base).static/img/ — that folder is legacy and only kept for external integrations.<Frame>. Captions are not a repo convention.Root-relative, slug-based paths only (/section/page).
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.../foo) either.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.[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).
docs.ymlAdd a page entry under the correct section: in navigation: (keep the YAML at 2-space indent):
- page: Page Title
path: ./docs-v2/section/page-name.mdx
slug: page-namegetting-started.mdx, log-traces.mdx.docs.yml.cd apps/opik-documentation/documentation
npm install # first time only
npm run dev # live-reload previewOpen the rendered page and confirm:
<Tabs> tags visible).Broken link warnings in the terminal).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).changelog.xml files are migration manifests, not user-facing release notes. Do not put prose there.fern/docs.yml before editing.### [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 stepsWhen documenting a new feature, cover:
Keep it user-facing: avoid implementation detail unless it affects how someone uses the feature.
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## DocumentationAlso 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 — styleWrite 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.
Pick the shape that fits the change — do not force one:
readme_CN.md, readme_ES.md, readme_FR.md, readme_DE.md are AI machine-translated from the English README.md.
fern/img/. static/img/ is legacy-only and cannot be deleted because of external integrations.navigation: in fern/docs.yml.# H1 inside the body — the frontmatter title already provides it.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
Just SKILL.md in .agents/skills/write-docs of comet-ml/opik.
Open the folder on GitHubat commit 8e3f6e5
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Opik Docs Writer this skillcomet-ml/opik | 22k | — | ~3.2k | Automated safety check: Pass | Apache-2.0 | |
| Markdown WriterDevolutions/devolutions-gateway | 162 | — | ~290 | Automated safety check: Pass | Apache-2.0 | |
| Markdown Proaiskillstore/marketplace | 430 | — | ~2.5k | Automated safety check: Pass | None | |
| Docs GuardamElnagdy/guard-skills | 1.3k | — | ~2.1k | Automated safety check: Pass | MIT | |
| Content Modelguardana/guardana | 129 | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Changelogcloudposse/atmos | 1.4k | — | ~2.7k | Automated safety check: Pass | Apache-2.0 |
Devolutions/devolutions-gateway
Write clean, readable Markdown with concise prose and maintainable source formatting.
aiskillstore/marketplace
Professional Markdown documentation skill for creating polished README files, changelogs, contribution guides, and technical documentation.
amElnagdy/guard-skills
Checks generated or edited documentation against the source code, flagging invented symbols, outdated samples and unverifiable claims before publishing.
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…
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.
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.
comet-ml/opik
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.
comet-ml/opik
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.
comet-ml/opik
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.
comet-ml/opik
Rules for writing PR descriptions, changelog entries and feature documentation in the Opik repository, including the exact headings that CI requires.
comet-ml/opik
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.
comet-ml/opik
Starts, rebuilds, and troubleshoots the Opik local dev stack, including an optional Comet Platform integration mode for the Opik team.
Categories
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.