|
1 | | -# Contributing to the Community folder |
| 1 | +# Contributing to the Community index |
2 | 2 |
|
3 | | -This folder showcases work the open-source community has built with Opik. It is |
4 | | -deliberately **lighter-weight than the main repo contract** — the strict |
5 | | -`run.sh` / dry-run / litellm / CI rules in the root |
| 3 | +This folder is a **curated, links-only index** of projects the open-source |
| 4 | +community has built with [Opik](https://www.comet.com/site/products/opik/). |
| 5 | +Your code stays in your own repository — the index just points to it. That |
| 6 | +means no sync issues when you update your project, and contributing takes a |
| 7 | +couple of minutes. |
| 8 | + |
| 9 | +The strict `run.sh` / dry-run / litellm / CI rules in the root |
6 | 10 | [CONTRIBUTING.md](../CONTRIBUTING.md) do **not** apply here. Community entries |
7 | | -are not executed by CI; a maintainer reviews (and, for hosted entries, runs) |
8 | | -them by hand. |
| 11 | +are not executed by CI; a maintainer reviews each submission by hand. |
| 12 | + |
| 13 | +## Add your project |
9 | 14 |
|
10 | | -There is one thing we always require: **proof you actually logged with Opik** — |
11 | | -either Comet cloud or the self-hosted open-source platform. |
| 15 | +1. Add one block to [`projects.yaml`](projects.yaml): |
12 | 16 |
|
13 | | -## Two kinds of entry |
| 17 | + ```yaml |
| 18 | + - title: Your project title |
| 19 | + description: One or two sentences on what you built and how it uses Opik. |
| 20 | + author: your-github-handle |
| 21 | + repo: https://github.com/your-handle/your-project |
| 22 | + ``` |
14 | 23 |
|
15 | | -- **Listed** (default): a folder describing your work with links out to your own |
16 | | - repo/blog/notebook. No code needs to live here. |
17 | | -- **Hosted**: standout, real-world projects we promote into this repo with their |
18 | | - code included. You submit as *listed*; a maintainer sets `hosted: true` and |
19 | | - moves your code in when promoting. We also spotlight promoted work in our |
20 | | - community forums. |
| 24 | +2. Open a PR. That's it — you don't need to run anything. |
21 | 25 |
|
22 | | -## Add your entry |
| 26 | +All four fields are required. Keep `description` under 250 characters, |
| 27 | +`author` a bare GitHub handle (no `@`, no URL), and `repo` an http(s) link. |
| 28 | +Don't edit `README.md` — it is generated from `projects.yaml` automatically |
| 29 | +after your PR merges. |
23 | 30 |
|
24 | | -1. Copy `templates/entry-template/` to `community/<your-handle>_<project>/` |
25 | | - (lowercase, underscores, e.g. `jane_support_agent`). |
26 | | -2. Fill in `meta.yaml` (all fields) and `README.md` (all four sections). |
27 | | -3. Replace `opik-proof.png` with a real screenshot of your Opik traces or |
28 | | - dashboard. |
29 | | -4. If you want it considered for hosting, include your code in the folder — it |
30 | | - must genuinely use Opik (`import opik`, `@opik.track`, ...). |
31 | | -5. Open a PR. A maintainer reviews it. |
| 31 | +## Review bar |
32 | 32 |
|
33 | | -That's it — you don't need to run anything. The showcase index |
34 | | -(`community/README.md`) is regenerated automatically when your entry merges, so |
35 | | -your project appears there without any manual step on your part. |
| 33 | +A maintainer checks that the linked project genuinely uses Opik (e.g. |
| 34 | +`import opik`, `@opik.track`, or Opik dashboards in the docs) and that the |
| 35 | +description is accurate. Entries are **community-contributed and not |
| 36 | +maintainer-verified** — we curate the list, we don't maintain the projects. |
36 | 37 |
|
37 | 38 | ## What the automated check enforces |
38 | 39 |
|
39 | | -`community/_ci/check_entry.py` runs on your PR (a hard gate). It does **not** |
40 | | -run your code. It checks: |
| 40 | +`community/_ci/check_projects.py` runs on your PR (a hard gate). It only |
| 41 | +validates `projects.yaml`: |
| 42 | + |
| 43 | +- Every entry has `title`, `description`, `author`, and `repo` (and no other |
| 44 | + fields). |
| 45 | +- `repo` is an http(s) URL and `author` is a valid GitHub handle. |
| 46 | +- `description` is at most 250 characters. |
| 47 | +- No duplicate titles or repos. |
| 48 | + |
| 49 | +## Promotion |
41 | 50 |
|
42 | | -- `meta.yaml` has all required fields, at least one link, and a valid |
43 | | - `opik_platform`. |
44 | | -- `README.md` has all four sections filled in (no leftover `TODO`). |
45 | | -- `opik-proof.png` exists and is referenced from your README. |
46 | | -- No `.env` file or hardcoded API keys are committed. |
47 | | -- Hosted entries contain code that uses Opik. |
48 | | -- The folder name is `lowercase_with_underscores`. |
| 51 | +Standout projects that meet the standards of the verified buckets |
| 52 | +(`integrations/`, `guides/`, `use-cases/`, `scripts/`) may be invited into the |
| 53 | +main repo — the root [CONTRIBUTING.md](../CONTRIBUTING.md) contract applies |
| 54 | +there. |
0 commit comments