docs: add quickstart, update MDL docs, replace skills with CLI-based skills#1518
Conversation
- Remove base_object data source (not in wren project format) - Mark ref_sql as supported with separate .sql file pattern - Update view structure to per-directory metadata.yml format - Add cached, description, properties fields and explicit column defaults Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move old MCP server-based skills to skills-archive/ and promote cli-skills/ (wren-generate-mdl, wren-usage) to skills/ with fresh infra: index.json, versions.json, install.sh, check-versions.sh, plugin config, README, SKILLS.md, and AUTHORING.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 11
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/mdl/view.md (1)
59-69:⚠️ Potential issue | 🟡 MinorInconsistency:
base_objectstill listed as Model data source.Line 63 lists
base_objectas a Model data source option, butdocs/mdl/model.mdwas updated to removebase_object(onlytable_referenceandref_sqlare now supported).📝 Suggested fix
| | Model | View | |-|-------|------| -| Data source | Physical table, `ref_sql`, or `base_object` | SQL `statement` | +| Data source | `table_reference` or `ref_sql` | SQL `statement` |🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/mdl/view.md` around lines 59 - 69, The Model vs View table still lists `base_object` as a Model data source; update the Model column entries to match the current model spec by removing `base_object` and ensuring only `table_reference` and `ref_sql` are listed (or otherwise reflect the same supported options as `docs/mdl/model.md`), so change the cell that currently reads "Physical table, `ref_sql`, or `base_object`" to the correct supported sources (e.g., "Physical table, `ref_sql`, or `table_reference`") and verify the rest of the table remains consistent with `model.md`.
🧹 Nitpick comments (5)
skills-archive/check-versions.sh (2)
2-4: Comment is misleading — script is self-locating.The header comment says "skills/versions.json and skills/index.json" but the script actually uses
SCRIPT_DIRto operate on whatever directory contains the script. This is correct behavior, but the comment should reflect that it validates the files in its own directory.📝 Suggested fix
#!/usr/bin/env bash -# Verify that skills/versions.json and skills/index.json both match +# Verify that versions.json and index.json (in this script's directory) both match # the version in each skill's SKILL.md frontmatter. # Exits non-zero if any mismatch is found.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills-archive/check-versions.sh` around lines 2 - 4, Update the misleading header comment so it accurately describes that the script operates on the directory containing the script (using the SCRIPT_DIR variable) rather than hardcoding "skills/"; state that it verifies that versions.json and index.json located next to the script match the SKILL.md frontmatter for each skill and that the script exits non-zero on mismatch; reference SCRIPT_DIR, versions.json, index.json, and SKILL.md in the comment so future readers understand the self-locating behavior.
17-17: Consider checking for python3 availability before use.The script uses
python3for JSON parsing but doesn't check if it's installed. Whileset -euo pipefailwill cause the script to fail, an explicit check with a clear error message would improve user experience.📝 Suggested addition after line 10
if ! command -v python3 &>/dev/null; then echo "ERROR: python3 is required but not found" >&2 exit 1 fi🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills-archive/check-versions.sh` at line 17, Add an explicit runtime check for python3 before the script invokes it to parse JSON: verify python3 is present (e.g., using command -v python3) and emit a clear error to stderr and exit non‑zero if missing; place this check early in the script before the usage that assigns to versions_version (which runs python3 to read VERSIONS_JSON) so the script fails with a helpful message rather than a cryptic crash.skills-archive/AUTHORING.md (1)
32-33: Archive retainscompatibilityfield while active skills removed it.The
skills/AUTHORING.mdremoved thecompatibilityfield from the frontmatter template, but the archive version retains it. This is acceptable since archived skills may have different requirements, but worth noting for consistency awareness.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills-archive/AUTHORING.md` around lines 32 - 33, Remove the obsolete frontmatter key "compatibility" from the archived AUTHORING.md template so it matches the active skills template; edit the archived frontmatter block and delete the compatibility line (the "compatibility" field) or, if you intentionally want to preserve it, add a brief comment in that archived template explaining why archived skills retain different requirements.docs/wren_project.md (1)
149-174: Document precedence rule explicitly in a callout.The text mentions "the
.sqlfile takes precedence if both exist" but this critical rule could be missed. Consider adding a visible callout or note box.✏️ Suggested improvement
-**ref_sql** — defines the model via a SQL query. SQL can be inline in `metadata.yml` or in a separate `ref_sql.sql` file (the `.sql` file takes precedence if both exist): +**ref_sql** — defines the model via a SQL query. SQL can be inline in `metadata.yml` or in a separate `ref_sql.sql` file: + +> **Precedence:** If both inline `ref_sql` and `ref_sql.sql` exist, the `.sql` file wins.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/wren_project.md` around lines 149 - 174, Add a prominent callout/note that explicitly states the precedence rule: when both an inline ref_sql in metadata.yml and a separate ref_sql.sql file exist for a model (e.g., model name examples like revenue_summary), the external ref_sql.sql file takes precedence; also mention that using both table_reference and ref_sql in the same model is a validation error. Place this callout near the ref_sql examples and reference the filenames (metadata.yml and ref_sql.sql) and the conflicting option name table_reference so readers can immediately see the rule.docs/quickstart.md (1)
170-177: Clarifycatalogandschemaearly in the YAML example.The note explaining that
catalogandschemaare Wren Engine namespaces (not database settings) is helpful. Consider moving the comment directly above the fields rather than after the code block to catch users before they misinterpret the values.✏️ Suggested improvement
```yaml schema_version: 2 name: jaffle_shop version: "1.0" -# catalog and schema are Wren Engine's internal namespace for this MDL project. -# They are NOT your database's native catalog/schema. Keep the defaults. +# `catalog` and `schema` below are Wren Engine's internal namespace, +# NOT your database's native catalog/schema. Keep the defaults. catalog: wren schema: public data_source: duckdb</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@docs/quickstart.mdaround lines 170 - 177, Move and reword the explanatory
comment so it appears immediately above the YAML fields (e.g., schema_version,
name, catalog, schema, data_source) in the example rather than after the code
block; replace the inline comment with a short clarifying line that 'catalog
andschemaare Wren Engine internal namespaces, NOT your database
catalog/schema; keep defaults (wren/public)' so readers see the caveat before
interpreting the catalog and schema fields.</details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against the current code and only fix it if needed.
Inline comments:
In@skills-archive/AUTHORING.md:
- Line 107: The AUTHORS note invokes the wrong script path causing validation of
the active skills directory; update the command in skills-archive/AUTHORING.md
to call the archived-directory checker by replacing "bash
skills/check-versions.sh" with "bash skills-archive/check-versions.sh" so the
check-versions.sh script (which relies on SCRIPT_DIR) validates the SKILL.md
frontmatter, versions.json and index.json in the skills-archive directory.- Line 116: Update the inaccurate script path in the AUTHORING.md instruction
that currently reads "Runbash skills/check-versions.sh" to point to the
archive copy of the script (e.g., use the archive script path or filename used
by the repo) so the command actually exists; modify the line referencingbash skills/check-versions.shto the correct archive script name/location (keep the
note that it must pass before merging).In
@skills-archive/index.json:
- Line 19: The repository URLs in index.json point to "skills/" but these
entries are archived and should reference "skills-archive/"; update the
"repository" field for each of the 8 skill entries (e.g., the entry containing
"wren-connection-info") by replacing the segment "skills/" with
"skills-archive/" so all repository URLs resolve correctly to the archived skill
locations.In
@skills-archive/install.sh:
- Around line 160-167: The tar extract is pointing at the wrong directory;
change the entries added to extract_paths from
"wren-engine-${BRANCH}/skills/${skill}" to
"wren-engine-${BRANCH}/skills-archive/${skill}" so remote installs target the
actual folder in the repo (keep using SELECTED_SKILLS to populate extract_paths
and keep the existing curl | tar -xz ... --strip-components=2 "$tmpdir"
invocation so strip-components still removes the repo root + skills-archive
component as before).- Around line 180-182: The update hint prints a curl command that references the
wrong path; change the echoed URL in the two echo lines that show the re-run
command so they point to
https://raw.githubusercontent.com/Canner/wren-engine/main/skills-archive/install.sh
instead of .../skills/install.sh (update both occurrences in the echo strings to
keep the installer path consistent).In
@skills-archive/README.md:
- Around line 48-54: Update the "Option 5 — manual copy" section so the cp
commands reference the correct source directory "skills-archive" instead of
"skills": change the examples under the "Option 5 — manual copy" heading (the
two cp command lines shown in the code block) to use paths like cp -r
skills-archive/wren-usage ~/.claude/skills/ and cp -r skills-archive/wren-usage
skills-archive/wren-generate-mdl ... skills-archive/wren-connection-info
~/.claude/skills/ so all source paths point to skills-archive/.- Around line 40-46: Update the path references in the README examples that
currently call "bash skills/install.sh" to point to the archive's installer
("bash skills-archive/install.sh"); replace each occurrence of the sample
commands (e.g., "bash skills/install.sh", "bash skills/install.sh
wren-generate-mdl wren-sql", and "bash skills/install.sh --force
wren-generate-mdl") with the corresponding "bash skills-archive/..." versions so
the README in skills-archive correctly references its own install script.- Around line 88-96: The README's manual update commands ("npx skills add
Canner/wren-engine --skill '*' --agent claude-code" and "npx skills add
Canner/wren-engine --skill wren-generate-mdl --agent claude-code") point at the
active skills repo and will not install archived skills; either replace those
examples with the correct archived-repo path (e.g., the specific archive
repo/owner/name that hosts the archived skills) or explicitly state that
archived skills cannot be installed vianpx skillsand provide an alternative
installation method (manual local install or cloning the archived repo and
runningnpx skills add ./path --skill ...). Ensure you update the two command
examples in the README accordingly and add a short note if archived skills are
unsupported bynpx skills.In
@skills-archive/SKILLS.md:
- Around line 32-35: Replace references to the active skills installer with the
archive installer in SKILLS.md: find occurrences of the command string "bash
skills/install.sh wren-usage" and any other "skills/install.sh" mentions
(notably the blocks around the current lines 34 and 225-233) and change them to
"bash skills-archive/install.sh wren-usage" and "skills-archive/install.sh"
respectively so archived-skill install examples point to the archive installer.In
@skills-archive/wren-generate-mdl/SKILL.md:
- Line 107: Update the broken cross-reference in SKILL.md that points to
skills/wren-project/SKILL.md so it references the archived location
skills-archive/wren-project/SKILL.md; locate the sentence containing
"wren-project" in the SKILL.md file in the wren-generate-mdl skill and replace
the old path with the archived path to ensure the link points to the correct
file.- Around line 15-23: The version-check currently fetches
https://raw.githubusercontent.com/Canner/wren-engine/main/skills/versions.json
and instructs users to update wren-generate-mdl with the shown npx command,
which points to the active CLI-based skill (incompatible with this archived
MCP-based skill). Change the fetched URL to the archive-specific versions file
(e.g., use skills-archive/versions.json) OR add a clear note directly next to
the version check text explaining that using the suggested npx update will
install the newer CLI-based wren-generate-mdl and may break the MCP workflow for
this archived skill; update the message that references the wren-generate-mdl
key and the npx skills add command accordingly so users know the difference.
Outside diff comments:
In@docs/mdl/view.md:
- Around line 59-69: The Model vs View table still lists
base_objectas a
Model data source; update the Model column entries to match the current model
spec by removingbase_objectand ensuring onlytable_referenceandref_sql
are listed (or otherwise reflect the same supported options as
docs/mdl/model.md), so change the cell that currently reads "Physical table,
ref_sql, orbase_object" to the correct supported sources (e.g., "Physical
table,ref_sql, ortable_reference") and verify the rest of the table
remains consistent withmodel.md.
Nitpick comments:
In@docs/quickstart.md:
- Around line 170-177: Move and reword the explanatory comment so it appears
immediately above the YAML fields (e.g., schema_version, name, catalog, schema,
data_source) in the example rather than after the code block; replace the inline
comment with a short clarifying line that 'catalogandschemaare Wren
Engine internal namespaces, NOT your database catalog/schema; keep defaults
(wren/public)' so readers see the caveat before interpreting the catalog and
schema fields.In
@docs/wren_project.md:
- Around line 149-174: Add a prominent callout/note that explicitly states the
precedence rule: when both an inline ref_sql in metadata.yml and a separate
ref_sql.sql file exist for a model (e.g., model name examples like
revenue_summary), the external ref_sql.sql file takes precedence; also mention
that using both table_reference and ref_sql in the same model is a validation
error. Place this callout near the ref_sql examples and reference the filenames
(metadata.yml and ref_sql.sql) and the conflicting option name table_reference
so readers can immediately see the rule.In
@skills-archive/AUTHORING.md:
- Around line 32-33: Remove the obsolete frontmatter key "compatibility" from
the archived AUTHORING.md template so it matches the active skills template;
edit the archived frontmatter block and delete the compatibility line (the
"compatibility" field) or, if you intentionally want to preserve it, add a brief
comment in that archived template explaining why archived skills retain
different requirements.In
@skills-archive/check-versions.sh:
- Around line 2-4: Update the misleading header comment so it accurately
describes that the script operates on the directory containing the script (using
the SCRIPT_DIR variable) rather than hardcoding "skills/"; state that it
verifies that versions.json and index.json located next to the script match the
SKILL.md frontmatter for each skill and that the script exits non-zero on
mismatch; reference SCRIPT_DIR, versions.json, index.json, and SKILL.md in the
comment so future readers understand the self-locating behavior.- Line 17: Add an explicit runtime check for python3 before the script invokes
it to parse JSON: verify python3 is present (e.g., using command -v python3) and
emit a clear error to stderr and exit non‑zero if missing; place this check
early in the script before the usage that assigns to versions_version (which
runs python3 to read VERSIONS_JSON) so the script fails with a helpful message
rather than a cryptic crash.</details> <details> <summary>🪄 Autofix (Beta)</summary> Fix all unresolved CodeRabbit comments on this PR: - [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended) - [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes </details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: defaults **Review profile**: CHILL **Plan**: Pro **Run ID**: `039e8db5-2f9e-4523-af3a-3df67ac7c0ea` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between e22342ddf7c6bb7d81af26cc050e5847b3610c49 and d3e5ed602350abd035792d8e95c9842241a27a52. </details> <details> <summary>📒 Files selected for processing (47)</summary> * `cli-skills/wren-generate-mdl/SKILL.md` * `cli-skills/wren-usage/SKILL.md` * `docs/README.md` * `docs/getting_started_with_claude_code.md` * `docs/mdl/model.md` * `docs/mdl/view.md` * `docs/quickstart.md` * `docs/wren_project.md` * `skills-archive/.claude-plugin/marketplace.json` * `skills-archive/.claude-plugin/plugin.json` * `skills-archive/AUTHORING.md` * `skills-archive/README.md` * `skills-archive/SKILLS.md` * `skills-archive/check-versions.sh` * `skills-archive/index.json` * `skills-archive/install.sh` * `skills-archive/versions.json` * `skills-archive/wren-connection-info/SKILL.md` * `skills-archive/wren-connection-info/references/databases.md` * `skills-archive/wren-connection-info/references/file-sources.md` * `skills-archive/wren-generate-mdl/SKILL.md` * `skills-archive/wren-http-api/SKILL.md` * `skills-archive/wren-http-api/references/response-format.md` * `skills-archive/wren-http-api/references/tools.md` * `skills-archive/wren-http-api/scripts/session.sh` * `skills-archive/wren-mcp-setup/SKILL.md` * `skills-archive/wren-project/SKILL.md` * `skills-archive/wren-quickstart/SKILL.md` * `skills-archive/wren-sql/SKILL.md` * `skills-archive/wren-sql/references/bigquery.md` * `skills-archive/wren-sql/references/correction.md` * `skills-archive/wren-sql/references/datetime.md` * `skills-archive/wren-sql/references/types.md` * `skills-archive/wren-usage/SKILL.md` * `skills/.claude-plugin/marketplace.json` * `skills/.claude-plugin/plugin.json` * `skills/AUTHORING.md` * `skills/README.md` * `skills/SKILLS.md` * `skills/index.json` * `skills/install.sh` * `skills/versions.json` * `skills/wren-generate-mdl/SKILL.md` * `skills/wren-usage/SKILL.md` * `skills/wren-usage/references/memory.md` * `skills/wren-usage/references/wren-sql.md` * `wren/docs/wren_project.md` </details> <details> <summary>💤 Files with no reviewable changes (4)</summary> * docs/getting_started_with_claude_code.md * wren/docs/wren_project.md * cli-skills/wren-usage/SKILL.md * cli-skills/wren-generate-mdl/SKILL.md </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
- Remove base_object from Model vs View table in view.md - Update all skills-archive/ internal paths from skills/ to skills-archive/ (index.json URLs, install.sh tar paths, AUTHORING.md, SKILLS.md, README.md, check-versions.sh comment, SKILL.md version check URLs and cross-references) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
♻️ Duplicate comments (1)
skills-archive/README.md (1)
50-54:⚠️ Potential issue | 🟡 MinorInconsistent paths in manual copy example.
Line 53 mixes
skills-archive/andskills/paths. The first path is correct (skills-archive/wren-usage) but the remaining paths incorrectly referenceskills/instead ofskills-archive/.📝 Proposed fix
```bash cp -r skills-archive/wren-usage ~/.claude/skills/ # or all at once: -cp -r skills-archive/wren-usage skills/wren-generate-mdl skills/wren-project skills/wren-sql skills/wren-mcp-setup skills/wren-connection-info ~/.claude/skills/ +cp -r skills-archive/wren-usage skills-archive/wren-generate-mdl skills-archive/wren-project skills-archive/wren-sql skills-archive/wren-mcp-setup skills-archive/wren-connection-info ~/.claude/skills/</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@skills-archive/README.mdaround lines 50 - 54, The copy example in README.md
mixes paths: change the second cp command so all source paths use
skills-archive/ (e.g., replace skills/wren-generate-mdl, skills/wren-project,
skills/wren-sql, skills/wren-mcp-setup, skills/wren-connection-info with
skills-archive/wren-generate-mdl, skills-archive/wren-project,
skills-archive/wren-sql, skills-archive/wren-mcp-setup,
skills-archive/wren-connection-info) so both lines consistently copy from
skills-archive into ~/.claude/skills/.</details> </blockquote></details> </blockquote></details> <details> <summary>🧹 Nitpick comments (1)</summary><blockquote> <details> <summary>skills-archive/README.md (1)</summary><blockquote> `88-96`: **Clarify that `npx skills` installs from active `skills/`, not archive.** The `npx skills add Canner/wren-engine` commands reference the repository root's skills directory, which now contains the new CLI-based skills (only 2 skills). Users seeking the archived MCP-based skills would get incompatible versions. Consider adding a note clarifying this distinction or adjusting the guidance. <details> <summary>📝 Suggested clarification</summary> ```diff To update manually at any time: +> **Note:** `npx skills` installs from the active `skills/` directory, which contains the newer CLI-based skills. For archived MCP-based skills, use `install.sh` or manual copy instead. + ```bash # Re-add to reinstall the latest version npx skills add Canner/wren-engine --skill '*' --agent claude-code🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@skills-archive/README.md` around lines 88 - 96, The README currently shows commands using "npx skills add Canner/wren-engine" which will install from the repository's active skills/ directory (new CLI-based skills) rather than the archived MCP-based skills; update the README instructions around the npx skills add commands to explicitly state that these commands target the active skills/ directory and will pull CLI-based skills, and then add an explicit note or alternate instructions for installing archived MCP-based skills (or link to the archive location) so users know to use the archive if they need MCP-compatible versions; reference the existing command examples ("npx skills add Canner/wren-engine --skill '*' --agent claude-code" and "npx skills add Canner/wren-engine --skill wren-generate-mdl --agent claude-code") and the repository's skills/ directory when making this clarification.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In `@skills-archive/README.md`:
- Around line 50-54: The copy example in README.md mixes paths: change the
second cp command so all source paths use skills-archive/ (e.g., replace
skills/wren-generate-mdl, skills/wren-project, skills/wren-sql,
skills/wren-mcp-setup, skills/wren-connection-info with
skills-archive/wren-generate-mdl, skills-archive/wren-project,
skills-archive/wren-sql, skills-archive/wren-mcp-setup,
skills-archive/wren-connection-info) so both lines consistently copy from
skills-archive into ~/.claude/skills/.
---
Nitpick comments:
In `@skills-archive/README.md`:
- Around line 88-96: The README currently shows commands using "npx skills add
Canner/wren-engine" which will install from the repository's active skills/
directory (new CLI-based skills) rather than the archived MCP-based skills;
update the README instructions around the npx skills add commands to explicitly
state that these commands target the active skills/ directory and will pull
CLI-based skills, and then add an explicit note or alternate instructions for
installing archived MCP-based skills (or link to the archive location) so users
know to use the archive if they need MCP-compatible versions; reference the
existing command examples ("npx skills add Canner/wren-engine --skill '*'
--agent claude-code" and "npx skills add Canner/wren-engine --skill
wren-generate-mdl --agent claude-code") and the repository's skills/ directory
when making this clarification.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: acd78306-2159-4a64-ac72-39b9448638db
📒 Files selected for processing (10)
docs/mdl/view.mddocs/wren_project.mdskills-archive/AUTHORING.mdskills-archive/README.mdskills-archive/SKILLS.mdskills-archive/check-versions.shskills-archive/index.jsonskills-archive/install.shskills-archive/wren-generate-mdl/SKILL.mdskills-archive/wren-usage/SKILL.md
✅ Files skipped from review due to trivial changes (2)
- skills-archive/index.json
- docs/mdl/view.md
🚧 Files skipped from review as they are similar to previous changes (1)
- skills-archive/check-versions.sh
Summary
docs/README.md) linking all documentationdocs/mdl/model.mdanddocs/mdl/view.mdwithwren_project.md(removebase_object, markref_sqlas supported, use per-directory structure for views, add missing fields)skills-archive/, promote CLI-based skills (wren-generate-mdl,wren-usage) toskills/with full infra (index.json, install.sh, plugin config, etc.)Test plan
bash skills/check-versions.shpassesbash skills/install.shinstalls both skills locally🤖 Generated with Claude Code
Summary by CodeRabbit
Release Notes
New Features
Documentation
Changes