[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-apache-add-release":3,"mdc--p23qr4-key":50,"related-repo-apache-add-release":1589,"related-org-apache-add-release":1629},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":45,"sourceUrl":48,"mdContent":49},"add-release","update Apache Doris website release information","Publish a new Apache Doris Core or Doris ecosystem release on the Doris website. Use when updating download data, bilingual release notes, the Doris Core release index, release navigation, or ecosystem release pages. Confirm the component and release metadata first because Core and ecosystem releases use different files and validation paths.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"apache","Apache Software Foundation","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fapache.png",[12,16,19],{"name":13,"slug":14,"type":15},"Documentation","documentation","tag",{"name":17,"slug":18,"type":15},"Deployment","deployment",{"name":20,"slug":21,"type":15},"Technical Writing","technical-writing",129,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-website","2026-07-19T05:38:47.44971",null,442,[28,8,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"analytics","big-data","data-warehousing","database","datalake","dbms","distributed-system","doris","hadoop","hive","hudi","iceberg","mpp","olap","ssb","tpch","vectorized",{"repoUrl":23,"stars":22,"forks":26,"topics":46,"description":47},[28,8,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"Apache Doris Website","https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-website\u002Ftree\u002FHEAD\u002Fdoc-tools\u002Fskills\u002Fadd-release","---\nname: add-release\ndescription: Publish a new Apache Doris Core or Doris ecosystem release on the Doris website. Use when updating download data, bilingual release notes, the Doris Core release index, release navigation, or ecosystem release pages. Confirm the component and release metadata first because Core and ecosystem releases use different files and validation paths.\n---\n\n# Add Doris Release\n\nPublish release information to \u002Fdownload\u002F and \u002Freleases\u002F from the doris-website repository root. Keep the change focused, preserve user work already in the tree, and do not commit unless the release manager asks.\n\n## Operating Rules\n\n- Treat the current repository structure, AGENTS.md, sidebarsReleases.json, and src\u002Fconstant\u002Fdownload.data.ts as authoritative. If an example in this skill conflicts with the repository, follow the repository and report the drift.\n- Inspect nearby releases for the same component before editing. Match their paths, frontmatter, ordering, terminology, and data shape.\n- Confirm public artifacts rather than deriving filenames only from the public version.\n- Update English and zh-CN together whenever both website mirrors exist, unless the release manager explicitly narrows the locale scope.\n- Keep release-note issue references and section structure aligned between languages.\n- Do not run yarn typecheck or yarn build when the release manager says no compile, no compilation, or equivalent. Still run the non-compilation checks.\n\n## Preflight\n\nRead these sources before choosing a workflow:\n\n- AGENTS.md\n- src\u002Fconstant\u002Fdownload.data.ts\n- sidebarsReleases.json\n- releasenotes\u002Fall-release.md\n- releasenotes\u002Fcore.md\n- i18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fall-release.md\n- i18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fcore.md\n- One recent release for the same component in both locales\n- Recent git history for the same files when repository intent remains unclear\n\nAlso run git status --short before editing. Existing unrelated modifications and untracked files belong to the user and must remain untouched.\n\n## Confirmation Gate\n\nCollect all missing release decisions in one concise confirmation instead of asking one field at a time. Do not ask again for values the user has already supplied.\n\nUse this template:\n\n    Please confirm:\n    - Component: \u003Ccanonical component ID>\n    - Public release version: \u003Cversion shown on the website>\n    - Release date: \u003CYYYY-MM-DD>\n    - Release-note source: \u003CGitHub issue, PR, Markdown, or upstream page>\n    - Website scope: \u003C\u002Fdownload\u002F, \u002Freleases\u002F, or both>\n    - Locales: \u003CEnglish, zh-CN, or both>\n    - Position: \u003CLatest, Prev, Earlier, or historical>\n    - Source filename version: \u003Cplain version or RC-suffixed version>\n    - Source directory and binary origin: \u003CURLs, if nonstandard>\n\nCanonical component IDs:\n\n| Component ID | Website surface | Typical artifact directory |\n| --- | --- | --- |\n| doris-core | Core downloads, per-version notes, Core index, release sidebar | https:\u002F\u002Fdist.apache.org\u002Frepos\u002Fdist\u002Frelease\u002Fdoris\u002F\u003Cseries>\u002F\u003Cversion>\u002F |\n| doris-flink-connector | Flink ecosystem page and TOOL_VERSIONS when present | https:\u002F\u002Fdownloads.apache.org\u002Fdoris\u002Fflink-connector\u002F\u003Cversion>\u002F |\n| doris-spark-connector | Spark ecosystem page and TOOL_VERSIONS when present | https:\u002F\u002Fdownloads.apache.org\u002Fdoris\u002Fspark-connector\u002F\u003Cversion>\u002F |\n| doris-kafka-connector | Kafka ecosystem page and TOOL_VERSIONS when present | https:\u002F\u002Fdownloads.apache.org\u002Fdoris\u002Fkafka-connector\u002F\u003Cversion>\u002F |\n| doris-streamloader | Streamloader ecosystem page and download data when present | Verify from the release directory |\n| doris-operator | Operator ecosystem page, images, and charts when applicable | Verify from the release announcement |\n| doris-mcp-server | MCP Server ecosystem page | Verify package locations |\n| doris-skills | Doris Skills ecosystem page | Verify package locations |\n| doris-cli | Doris CLI ecosystem page | Verify package locations |\n| other-ecosystem | A new or less common ecosystem page | Confirm page, sidebar, and artifact locations |\n\nNever infer doris-core only because a version has three numeric segments.\n\n## Choose the Workflow\n\n- Use the Doris Core workflow only for doris-core.\n- Use the ecosystem workflow for every other component.\n- If the component has no established website surface, stop after discovery and ask the release manager to confirm the intended page, navigation, and download behavior.\n\n## Doris Core Workflow\n\n### Distinguish the Two Version Values\n\nKeep these values separate throughout the change:\n\n- Public release version: the version shown in titles, links, VersionEnum, labels, sidebar IDs, binary filenames, and release-note paths, such as 4.1.3.\n- Source filename version: the segment used by the published source tarball, which may include an RC suffix such as 4.1.3-rc02.\n\nThe version field inside each architecture row in download.data.ts controls the source filename rendered by the download UI. Never replace an RC-suffixed source filename with the public version unless that exact plain source tarball exists.\n\n### Discover and Verify Artifacts\n\nInspect the official release directory before editing. Prefer the stable dist.apache.org release repository when downloads.apache.org has not synchronized yet:\n\n    https:\u002F\u002Fdist.apache.org\u002Frepos\u002Fdist\u002Frelease\u002Fdoris\u002F\u003Cseries>\u002F\u003Cpublic-version>\u002F\n\nRecord the exact source tarball filename and derive the source filename version from it. Verify this complete matrix:\n\n| Artifact | Required files |\n| --- | --- |\n| Source | apache-doris-\u003Csource-version>-src.tar.gz, .asc, .sha512 |\n| x64 binary | apache-doris-\u003Cpublic-version>-bin-x64.tar.gz, .asc, .sha512 |\n| x64 no-AVX2 binary | apache-doris-\u003Cpublic-version>-bin-x64-noavx2.tar.gz, .asc, .sha512 |\n| ARM64 binary | apache-doris-\u003Cpublic-version>-bin-arm64.tar.gz, .asc, .sha512 |\n\nThis is twelve URLs: three source artifacts and nine binary artifacts. A directory listing alone is insufficient. Check every URL and follow redirects. A small ranged GET may be used when a server rejects HEAD.\n\nIf the canonical downloads mirror is delayed but dist.apache.org already serves the official release, use the working dist.apache.org directory in download.data.ts and record that choice in the handoff.\n\n### Files to Update\n\nA normal bilingual Core release that updates both website surfaces touches:\n\n    src\u002Fconstant\u002Fdownload.data.ts\n    releasenotes\u002Fv\u003Cseries>\u002Frelease-\u003Cpublic-version>.md\n    i18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fv\u003Cseries>\u002Frelease-\u003Cpublic-version>.md\n    releasenotes\u002Fcore.md\n    i18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fcore.md\n    sidebarsReleases.json\n\nreleasenotes\u002Fall-release.md and its zh-CN mirror are project indexes. They route readers to Doris Core and ecosystem pages. Do not add individual Core versions to them and do not modify them for a routine Core patch release.\n\n### Update Download Data\n\nEdit src\u002Fconstant\u002Fdownload.data.ts.\n\nUpdate VersionEnum only as confirmed:\n\n- Latest: the headline current release.\n- Prev: the stable previous release line shown beside Latest.\n- Earlier: the older supported line.\n- Historical: no VersionEnum change.\n\nAdd the public version to both structures:\n\n- DORIS_VERSIONS drives the quick-download selector.\n- ALL_VERSIONS drives the all-releases form.\n\nIn both structures, add x64, x64-noavx2, and arm64 rows. Each row must contain the binary gz, asc, sha512, source directory, and exact source filename version.\n\nKeep patch releases newest-first within their series. Audit the entire target series in both arrays, not only the new entry. Every target-series version in DORIS_VERSIONS must exist in ALL_VERSIONS and vice versa. Fix a discovered omission when it is clearly a data drift in the requested release scope; mention it explicitly in the handoff.\n\nDo not broadly reformat download.data.ts.\n\n### Add Bilingual Release Notes\n\nCreate:\n\n    releasenotes\u002Fv\u003Cseries>\u002Frelease-\u003Cpublic-version>.md\n    i18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fv\u003Cseries>\u002Frelease-\u003Cpublic-version>.md\n\nUse the repository JSON-inside-dashes frontmatter shape. At minimum:\n\n- title contains the public version\n- language is en or zh-CN as appropriate\n- description contains the public version\n\nUse the approved release-note source as the content authority. Preserve its section order, heading levels, bullet order, issue numbers, code spans, and acknowledgments. Remove only source-page navigation that is not part of the release itself, such as a backlink telling GitHub readers to visit a previous release. Make only small, obvious whitespace or Markdown corrections; do not invent features or rewrite technical claims.\n\nFor the translation:\n\n- Translate prose and headings, not product names, code, SQL, configuration keys, paths, or issue numbers.\n- Preserve the issue-reference sequence exactly.\n- Preserve the heading-level sequence and bullet count.\n- Check that every English item has one corresponding zh-CN item.\n- Keep frontmatter valid JSON and remove trailing whitespace.\n\n### Update the Core Index\n\nEdit both Core history pages:\n\n    releasenotes\u002Fcore.md\n    i18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fcore.md\n\nIn each file:\n\n- Update the relevant tip entry when the release is Latest, Prev, or Earlier.\n- Add the dated per-version link to the chronological list.\n- Use the confirmed YYYY-MM-DD release date.\n- Keep the chronological list reverse-sorted by date.\n- Keep English and zh-CN links, dates, and positioning aligned.\n\n### Update Release Navigation\n\nEdit sidebarsReleases.json:\n\n- Find Doris Core and the matching v\u003Cseries> category.\n- Add v\u003Cseries>\u002Frelease-\u003Cpublic-version>.\n- Place the new patch version first in its series.\n- Add a new series category only when it does not already exist.\n- Preserve valid JSON and unrelated ordering.\n\n## Ecosystem Component Workflow\n\nThe bundled validator currently targets Doris Core. Use this workflow and the manual checklist for ecosystem components.\n\nMost established ecosystem releases update:\n\n    releasenotes\u002Fecosystem\u002F\u003Ccomponent-page>.md\n    i18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fecosystem\u002F\u003Ccomponent-page>.md\n\nSome also update src\u002Fconstant\u002Fdownload.data.ts. Update sidebarsReleases.json only when adding a new ecosystem page; individual ecosystem versions normally remain sections within one component page.\n\nDo not update Core per-version notes, releasenotes\u002Fcore.md, its zh-CN mirror, or Core VersionEnum values for an ecosystem release unless the release manager explicitly requests a cross-surface change.\n\nComponent profiles:\n\n| Component | Release page | Download data | Extra checks |\n| --- | --- | --- | --- |\n| Flink Connector | ecosystem\u002Fdoris-flink-connector.md | ToolsEnum.Flink | Runtime compatibility matrix; exact .tgz or .tar.gz suffix |\n| Spark Connector | ecosystem\u002Fdoris-spark-connector.md | ToolsEnum.Spark | Spark and Scala compatibility; Maven coordinates |\n| Kafka Connector | ecosystem\u002Fdoris-kafka-connector.md | ToolsEnum.Kafka | Kafka Connect compatibility; plugin package layout |\n| Streamloader | ecosystem\u002Fdoris-streamloader.md | ToolsEnum.StreamLoader when present | Platform binaries, checksums, usage examples |\n| Doris Operator | ecosystem\u002Fdoris-operator.md | Usually none | Controller image, Helm chart, CRD compatibility |\n| MCP Server | ecosystem\u002Fdoris-mcp-server.md | Usually none | Package installation and supported Doris versions |\n| Doris Skills | ecosystem\u002Fdoris-skills.md | Usually none | Installation source and supported environments |\n| Doris CLI | ecosystem\u002Fdoris-cli.md | Usually none | Platform packages and install commands |\n\nFor an existing page:\n\n- Add the newest version section near the top.\n- Preserve the page frontmatter and anchors.\n- Update English and zh-CN with matching facts, links, compatibility data, and issue references.\n- Verify every official artifact or package link directly.\n\nFor a new page:\n\n- Copy the nearest ecosystem page structure.\n- Add both locales when expected.\n- Add one sidebar entry under Doris Ecosystem.\n- Check inbound links, route IDs, frontmatter, and stable URLs.\n\nWhen updating TOOL_VERSIONS:\n\n- Verify the exact source filename and directory.\n- Preserve the existing Option shape.\n- Keep versions newest-first.\n- Do not add a Core VersionEnum entry.\n\n## Validation\n\n### Tier 0: Always Run\n\nRun the validator tests:\n\n    node --test doc-tools\u002Fskills\u002Fadd-release\u002Fscripts\u002Fvalidate-release.test.mjs\n\nFor Doris Core, run the bundled validator with the confirmed values:\n\n    node doc-tools\u002Fskills\u002Fadd-release\u002Fscripts\u002Fvalidate-release.mjs --component doris-core --version \u003Cpublic-version> --series \u003Cseries> --source-version \u003Csource-version> --release-date \u003CYYYY-MM-DD> --position \u003Clatest|prev|earlier|historical> --source-dir \u003Cofficial-source-directory>\n\nThe validator checks:\n\n- Both release-note files, JSON frontmatter, and trailing whitespace\n- English and zh-CN heading levels, bullet counts, and issue-reference sequences\n- Both core.md indexes, release date, link, and reverse chronology\n- That both all-release.md project indexes still route to core.md and remain untouched\n- sidebarsReleases.json parseability and newest-first placement\n- VersionEnum positioning\n- Target-series ordering and drift between DORIS_VERSIONS and ALL_VERSIONS\n- All six architecture rows, source filename version, source directory, and binary filenames\n- The full twelve-artifact URL matrix\n\nUse --skip-links only when external link verification is explicitly out of scope, and disclose the skipped check. --skip-git-routing is intended for isolated test fixtures, not routine release work.\n\nAlso run:\n\n    node -e \"JSON.parse(require('fs').readFileSync('sidebarsReleases.json', 'utf8'))\"\n    git diff --check\n    git status --short\n\ngit diff and git diff --check do not cover untracked release-note files. Inspect every path shown by git status, and ensure the new files are included in the validator run. Review the final tracked diff plus the full contents of every new untracked file.\n\nFor ecosystem releases, manually verify:\n\n- Exact changed-file scope for the confirmed component\n- English and zh-CN structure and facts\n- Frontmatter and route IDs\n- Download data ordering and field completeness when touched\n- Every source, signature, checksum, package, image, or chart link\n- Sidebar JSON when touched\n- Untracked new files\n\n### Tier 1: Type Check\n\nWhen compilation checks are allowed and download data or TypeScript changed, run:\n\n    yarn typecheck\n\n### Tier 2: Full Site Build\n\nWhen the release manager requests full validation, or routing and rendering risk warrants it, run:\n\n    yarn build\n\nIf the release manager says not to compile, skip both Tier 1 and Tier 2. Tier 0 still applies. State exactly which tiers ran and which were skipped.\n\nDo not claim validation passed unless the corresponding command completed successfully in the current worktree.\n\n## Final Review and Handoff\n\nBefore reporting completion:\n\n- Re-read the request and compare it with the exact changed-file set.\n- Confirm the public version, source filename version, release date, scope, locales, and positioning.\n- Confirm all artifact checks and note any mirror choice.\n- Confirm DORIS_VERSIONS and ALL_VERSIONS are aligned for the target series.\n- Confirm Core history is in core.md, not all-release.md.\n- Confirm no unrelated files were modified.\n\nReport:\n\n- Component and version\n- Files changed, including newly created untracked files\n- Release-note source\n- Public version versus source filename version\n- Release date, position, website scope, and locales\n- Artifact validation result\n- Tier 0, Tier 1, and Tier 2 results or explicit skips\n- Any repaired pre-existing data drift, such as a missing ALL_VERSIONS entry\n- Any remaining limitation or manual follow-up\n\nDo not commit, push, publish externally, or open a pull request unless the release manager asks.\n",{"data":51,"body":52},{"name":4,"description":6},{"type":53,"children":54},"root",[55,64,70,77,112,118,123,171,176,182,187,192,205,210,462,467,473,491,497,504,509,522,527,533,538,547,552,645,650,655,661,666,675,680,686,691,696,719,724,737,742,747,752,758,763,772,777,795,800,805,833,839,844,853,858,886,892,897,940,946,951,956,965,970,975,980,1193,1198,1221,1226,1249,1254,1277,1283,1289,1294,1303,1308,1317,1322,1370,1375,1380,1389,1394,1399,1437,1443,1448,1457,1463,1468,1477,1482,1487,1493,1498,1531,1536,1584],{"type":56,"tag":57,"props":58,"children":60},"element","h1",{"id":59},"add-doris-release",[61],{"type":62,"value":63},"text","Add Doris Release",{"type":56,"tag":65,"props":66,"children":67},"p",{},[68],{"type":62,"value":69},"Publish release information to \u002Fdownload\u002F and \u002Freleases\u002F from the doris-website repository root. Keep the change focused, preserve user work already in the tree, and do not commit unless the release manager asks.",{"type":56,"tag":71,"props":72,"children":74},"h2",{"id":73},"operating-rules",[75],{"type":62,"value":76},"Operating Rules",{"type":56,"tag":78,"props":79,"children":80},"ul",{},[81,87,92,97,102,107],{"type":56,"tag":82,"props":83,"children":84},"li",{},[85],{"type":62,"value":86},"Treat the current repository structure, AGENTS.md, sidebarsReleases.json, and src\u002Fconstant\u002Fdownload.data.ts as authoritative. If an example in this skill conflicts with the repository, follow the repository and report the drift.",{"type":56,"tag":82,"props":88,"children":89},{},[90],{"type":62,"value":91},"Inspect nearby releases for the same component before editing. Match their paths, frontmatter, ordering, terminology, and data shape.",{"type":56,"tag":82,"props":93,"children":94},{},[95],{"type":62,"value":96},"Confirm public artifacts rather than deriving filenames only from the public version.",{"type":56,"tag":82,"props":98,"children":99},{},[100],{"type":62,"value":101},"Update English and zh-CN together whenever both website mirrors exist, unless the release manager explicitly narrows the locale scope.",{"type":56,"tag":82,"props":103,"children":104},{},[105],{"type":62,"value":106},"Keep release-note issue references and section structure aligned between languages.",{"type":56,"tag":82,"props":108,"children":109},{},[110],{"type":62,"value":111},"Do not run yarn typecheck or yarn build when the release manager says no compile, no compilation, or equivalent. Still run the non-compilation checks.",{"type":56,"tag":71,"props":113,"children":115},{"id":114},"preflight",[116],{"type":62,"value":117},"Preflight",{"type":56,"tag":65,"props":119,"children":120},{},[121],{"type":62,"value":122},"Read these sources before choosing a workflow:",{"type":56,"tag":78,"props":124,"children":125},{},[126,131,136,141,146,151,156,161,166],{"type":56,"tag":82,"props":127,"children":128},{},[129],{"type":62,"value":130},"AGENTS.md",{"type":56,"tag":82,"props":132,"children":133},{},[134],{"type":62,"value":135},"src\u002Fconstant\u002Fdownload.data.ts",{"type":56,"tag":82,"props":137,"children":138},{},[139],{"type":62,"value":140},"sidebarsReleases.json",{"type":56,"tag":82,"props":142,"children":143},{},[144],{"type":62,"value":145},"releasenotes\u002Fall-release.md",{"type":56,"tag":82,"props":147,"children":148},{},[149],{"type":62,"value":150},"releasenotes\u002Fcore.md",{"type":56,"tag":82,"props":152,"children":153},{},[154],{"type":62,"value":155},"i18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fall-release.md",{"type":56,"tag":82,"props":157,"children":158},{},[159],{"type":62,"value":160},"i18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fcore.md",{"type":56,"tag":82,"props":162,"children":163},{},[164],{"type":62,"value":165},"One recent release for the same component in both locales",{"type":56,"tag":82,"props":167,"children":168},{},[169],{"type":62,"value":170},"Recent git history for the same files when repository intent remains unclear",{"type":56,"tag":65,"props":172,"children":173},{},[174],{"type":62,"value":175},"Also run git status --short before editing. Existing unrelated modifications and untracked files belong to the user and must remain untouched.",{"type":56,"tag":71,"props":177,"children":179},{"id":178},"confirmation-gate",[180],{"type":62,"value":181},"Confirmation Gate",{"type":56,"tag":65,"props":183,"children":184},{},[185],{"type":62,"value":186},"Collect all missing release decisions in one concise confirmation instead of asking one field at a time. Do not ask again for values the user has already supplied.",{"type":56,"tag":65,"props":188,"children":189},{},[190],{"type":62,"value":191},"Use this template:",{"type":56,"tag":193,"props":194,"children":198},"pre",{"className":195,"code":197,"language":62},[196],"language-text","Please confirm:\n- Component: \u003Ccanonical component ID>\n- Public release version: \u003Cversion shown on the website>\n- Release date: \u003CYYYY-MM-DD>\n- Release-note source: \u003CGitHub issue, PR, Markdown, or upstream page>\n- Website scope: \u003C\u002Fdownload\u002F, \u002Freleases\u002F, or both>\n- Locales: \u003CEnglish, zh-CN, or both>\n- Position: \u003CLatest, Prev, Earlier, or historical>\n- Source filename version: \u003Cplain version or RC-suffixed version>\n- Source directory and binary origin: \u003CURLs, if nonstandard>\n",[199],{"type":56,"tag":200,"props":201,"children":203},"code",{"__ignoreMap":202},"",[204],{"type":62,"value":197},{"type":56,"tag":65,"props":206,"children":207},{},[208],{"type":62,"value":209},"Canonical component IDs:",{"type":56,"tag":211,"props":212,"children":213},"table",{},[214,238],{"type":56,"tag":215,"props":216,"children":217},"thead",{},[218],{"type":56,"tag":219,"props":220,"children":221},"tr",{},[222,228,233],{"type":56,"tag":223,"props":224,"children":225},"th",{},[226],{"type":62,"value":227},"Component ID",{"type":56,"tag":223,"props":229,"children":230},{},[231],{"type":62,"value":232},"Website surface",{"type":56,"tag":223,"props":234,"children":235},{},[236],{"type":62,"value":237},"Typical artifact directory",{"type":56,"tag":239,"props":240,"children":241},"tbody",{},[242,278,304,330,356,374,392,410,427,444],{"type":56,"tag":219,"props":243,"children":244},{},[245,251,256],{"type":56,"tag":246,"props":247,"children":248},"td",{},[249],{"type":62,"value":250},"doris-core",{"type":56,"tag":246,"props":252,"children":253},{},[254],{"type":62,"value":255},"Core downloads, per-version notes, Core index, release sidebar",{"type":56,"tag":246,"props":257,"children":258},{},[259,267],{"type":56,"tag":260,"props":261,"children":265},"a",{"href":262,"rel":263},"https:\u002F\u002Fdist.apache.org\u002Frepos\u002Fdist\u002Frelease\u002Fdoris\u002F",[264],"nofollow",[266],{"type":62,"value":262},{"type":56,"tag":268,"props":269,"children":270},"series",{},[271,273],{"type":62,"value":272},"\u002F",{"type":56,"tag":274,"props":275,"children":276},"version",{},[277],{"type":62,"value":272},{"type":56,"tag":219,"props":279,"children":280},{},[281,286,291],{"type":56,"tag":246,"props":282,"children":283},{},[284],{"type":62,"value":285},"doris-flink-connector",{"type":56,"tag":246,"props":287,"children":288},{},[289],{"type":62,"value":290},"Flink ecosystem page and TOOL_VERSIONS when present",{"type":56,"tag":246,"props":292,"children":293},{},[294,300],{"type":56,"tag":260,"props":295,"children":298},{"href":296,"rel":297},"https:\u002F\u002Fdownloads.apache.org\u002Fdoris\u002Fflink-connector\u002F",[264],[299],{"type":62,"value":296},{"type":56,"tag":274,"props":301,"children":302},{},[303],{"type":62,"value":272},{"type":56,"tag":219,"props":305,"children":306},{},[307,312,317],{"type":56,"tag":246,"props":308,"children":309},{},[310],{"type":62,"value":311},"doris-spark-connector",{"type":56,"tag":246,"props":313,"children":314},{},[315],{"type":62,"value":316},"Spark ecosystem page and TOOL_VERSIONS when present",{"type":56,"tag":246,"props":318,"children":319},{},[320,326],{"type":56,"tag":260,"props":321,"children":324},{"href":322,"rel":323},"https:\u002F\u002Fdownloads.apache.org\u002Fdoris\u002Fspark-connector\u002F",[264],[325],{"type":62,"value":322},{"type":56,"tag":274,"props":327,"children":328},{},[329],{"type":62,"value":272},{"type":56,"tag":219,"props":331,"children":332},{},[333,338,343],{"type":56,"tag":246,"props":334,"children":335},{},[336],{"type":62,"value":337},"doris-kafka-connector",{"type":56,"tag":246,"props":339,"children":340},{},[341],{"type":62,"value":342},"Kafka ecosystem page and TOOL_VERSIONS when present",{"type":56,"tag":246,"props":344,"children":345},{},[346,352],{"type":56,"tag":260,"props":347,"children":350},{"href":348,"rel":349},"https:\u002F\u002Fdownloads.apache.org\u002Fdoris\u002Fkafka-connector\u002F",[264],[351],{"type":62,"value":348},{"type":56,"tag":274,"props":353,"children":354},{},[355],{"type":62,"value":272},{"type":56,"tag":219,"props":357,"children":358},{},[359,364,369],{"type":56,"tag":246,"props":360,"children":361},{},[362],{"type":62,"value":363},"doris-streamloader",{"type":56,"tag":246,"props":365,"children":366},{},[367],{"type":62,"value":368},"Streamloader ecosystem page and download data when present",{"type":56,"tag":246,"props":370,"children":371},{},[372],{"type":62,"value":373},"Verify from the release directory",{"type":56,"tag":219,"props":375,"children":376},{},[377,382,387],{"type":56,"tag":246,"props":378,"children":379},{},[380],{"type":62,"value":381},"doris-operator",{"type":56,"tag":246,"props":383,"children":384},{},[385],{"type":62,"value":386},"Operator ecosystem page, images, and charts when applicable",{"type":56,"tag":246,"props":388,"children":389},{},[390],{"type":62,"value":391},"Verify from the release announcement",{"type":56,"tag":219,"props":393,"children":394},{},[395,400,405],{"type":56,"tag":246,"props":396,"children":397},{},[398],{"type":62,"value":399},"doris-mcp-server",{"type":56,"tag":246,"props":401,"children":402},{},[403],{"type":62,"value":404},"MCP Server ecosystem page",{"type":56,"tag":246,"props":406,"children":407},{},[408],{"type":62,"value":409},"Verify package locations",{"type":56,"tag":219,"props":411,"children":412},{},[413,418,423],{"type":56,"tag":246,"props":414,"children":415},{},[416],{"type":62,"value":417},"doris-skills",{"type":56,"tag":246,"props":419,"children":420},{},[421],{"type":62,"value":422},"Doris Skills ecosystem page",{"type":56,"tag":246,"props":424,"children":425},{},[426],{"type":62,"value":409},{"type":56,"tag":219,"props":428,"children":429},{},[430,435,440],{"type":56,"tag":246,"props":431,"children":432},{},[433],{"type":62,"value":434},"doris-cli",{"type":56,"tag":246,"props":436,"children":437},{},[438],{"type":62,"value":439},"Doris CLI ecosystem page",{"type":56,"tag":246,"props":441,"children":442},{},[443],{"type":62,"value":409},{"type":56,"tag":219,"props":445,"children":446},{},[447,452,457],{"type":56,"tag":246,"props":448,"children":449},{},[450],{"type":62,"value":451},"other-ecosystem",{"type":56,"tag":246,"props":453,"children":454},{},[455],{"type":62,"value":456},"A new or less common ecosystem page",{"type":56,"tag":246,"props":458,"children":459},{},[460],{"type":62,"value":461},"Confirm page, sidebar, and artifact locations",{"type":56,"tag":65,"props":463,"children":464},{},[465],{"type":62,"value":466},"Never infer doris-core only because a version has three numeric segments.",{"type":56,"tag":71,"props":468,"children":470},{"id":469},"choose-the-workflow",[471],{"type":62,"value":472},"Choose the Workflow",{"type":56,"tag":78,"props":474,"children":475},{},[476,481,486],{"type":56,"tag":82,"props":477,"children":478},{},[479],{"type":62,"value":480},"Use the Doris Core workflow only for doris-core.",{"type":56,"tag":82,"props":482,"children":483},{},[484],{"type":62,"value":485},"Use the ecosystem workflow for every other component.",{"type":56,"tag":82,"props":487,"children":488},{},[489],{"type":62,"value":490},"If the component has no established website surface, stop after discovery and ask the release manager to confirm the intended page, navigation, and download behavior.",{"type":56,"tag":71,"props":492,"children":494},{"id":493},"doris-core-workflow",[495],{"type":62,"value":496},"Doris Core Workflow",{"type":56,"tag":498,"props":499,"children":501},"h3",{"id":500},"distinguish-the-two-version-values",[502],{"type":62,"value":503},"Distinguish the Two Version Values",{"type":56,"tag":65,"props":505,"children":506},{},[507],{"type":62,"value":508},"Keep these values separate throughout the change:",{"type":56,"tag":78,"props":510,"children":511},{},[512,517],{"type":56,"tag":82,"props":513,"children":514},{},[515],{"type":62,"value":516},"Public release version: the version shown in titles, links, VersionEnum, labels, sidebar IDs, binary filenames, and release-note paths, such as 4.1.3.",{"type":56,"tag":82,"props":518,"children":519},{},[520],{"type":62,"value":521},"Source filename version: the segment used by the published source tarball, which may include an RC suffix such as 4.1.3-rc02.",{"type":56,"tag":65,"props":523,"children":524},{},[525],{"type":62,"value":526},"The version field inside each architecture row in download.data.ts controls the source filename rendered by the download UI. Never replace an RC-suffixed source filename with the public version unless that exact plain source tarball exists.",{"type":56,"tag":498,"props":528,"children":530},{"id":529},"discover-and-verify-artifacts",[531],{"type":62,"value":532},"Discover and Verify Artifacts",{"type":56,"tag":65,"props":534,"children":535},{},[536],{"type":62,"value":537},"Inspect the official release directory before editing. Prefer the stable dist.apache.org release repository when downloads.apache.org has not synchronized yet:",{"type":56,"tag":193,"props":539,"children":542},{"className":540,"code":541,"language":62},[196],"https:\u002F\u002Fdist.apache.org\u002Frepos\u002Fdist\u002Frelease\u002Fdoris\u002F\u003Cseries>\u002F\u003Cpublic-version>\u002F\n",[543],{"type":56,"tag":200,"props":544,"children":545},{"__ignoreMap":202},[546],{"type":62,"value":541},{"type":56,"tag":65,"props":548,"children":549},{},[550],{"type":62,"value":551},"Record the exact source tarball filename and derive the source filename version from it. Verify this complete matrix:",{"type":56,"tag":211,"props":553,"children":554},{},[555,571],{"type":56,"tag":215,"props":556,"children":557},{},[558],{"type":56,"tag":219,"props":559,"children":560},{},[561,566],{"type":56,"tag":223,"props":562,"children":563},{},[564],{"type":62,"value":565},"Artifact",{"type":56,"tag":223,"props":567,"children":568},{},[569],{"type":62,"value":570},"Required files",{"type":56,"tag":239,"props":572,"children":573},{},[574,593,611,628],{"type":56,"tag":219,"props":575,"children":576},{},[577,582],{"type":56,"tag":246,"props":578,"children":579},{},[580],{"type":62,"value":581},"Source",{"type":56,"tag":246,"props":583,"children":584},{},[585,587],{"type":62,"value":586},"apache-doris-",{"type":56,"tag":588,"props":589,"children":590},"source-version",{},[591],{"type":62,"value":592},"-src.tar.gz, .asc, .sha512",{"type":56,"tag":219,"props":594,"children":595},{},[596,601],{"type":56,"tag":246,"props":597,"children":598},{},[599],{"type":62,"value":600},"x64 binary",{"type":56,"tag":246,"props":602,"children":603},{},[604,605],{"type":62,"value":586},{"type":56,"tag":606,"props":607,"children":608},"public-version",{},[609],{"type":62,"value":610},"-bin-x64.tar.gz, .asc, .sha512",{"type":56,"tag":219,"props":612,"children":613},{},[614,619],{"type":56,"tag":246,"props":615,"children":616},{},[617],{"type":62,"value":618},"x64 no-AVX2 binary",{"type":56,"tag":246,"props":620,"children":621},{},[622,623],{"type":62,"value":586},{"type":56,"tag":606,"props":624,"children":625},{},[626],{"type":62,"value":627},"-bin-x64-noavx2.tar.gz, .asc, .sha512",{"type":56,"tag":219,"props":629,"children":630},{},[631,636],{"type":56,"tag":246,"props":632,"children":633},{},[634],{"type":62,"value":635},"ARM64 binary",{"type":56,"tag":246,"props":637,"children":638},{},[639,640],{"type":62,"value":586},{"type":56,"tag":606,"props":641,"children":642},{},[643],{"type":62,"value":644},"-bin-arm64.tar.gz, .asc, .sha512",{"type":56,"tag":65,"props":646,"children":647},{},[648],{"type":62,"value":649},"This is twelve URLs: three source artifacts and nine binary artifacts. A directory listing alone is insufficient. Check every URL and follow redirects. A small ranged GET may be used when a server rejects HEAD.",{"type":56,"tag":65,"props":651,"children":652},{},[653],{"type":62,"value":654},"If the canonical downloads mirror is delayed but dist.apache.org already serves the official release, use the working dist.apache.org directory in download.data.ts and record that choice in the handoff.",{"type":56,"tag":498,"props":656,"children":658},{"id":657},"files-to-update",[659],{"type":62,"value":660},"Files to Update",{"type":56,"tag":65,"props":662,"children":663},{},[664],{"type":62,"value":665},"A normal bilingual Core release that updates both website surfaces touches:",{"type":56,"tag":193,"props":667,"children":670},{"className":668,"code":669,"language":62},[196],"src\u002Fconstant\u002Fdownload.data.ts\nreleasenotes\u002Fv\u003Cseries>\u002Frelease-\u003Cpublic-version>.md\ni18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fv\u003Cseries>\u002Frelease-\u003Cpublic-version>.md\nreleasenotes\u002Fcore.md\ni18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fcore.md\nsidebarsReleases.json\n",[671],{"type":56,"tag":200,"props":672,"children":673},{"__ignoreMap":202},[674],{"type":62,"value":669},{"type":56,"tag":65,"props":676,"children":677},{},[678],{"type":62,"value":679},"releasenotes\u002Fall-release.md and its zh-CN mirror are project indexes. They route readers to Doris Core and ecosystem pages. Do not add individual Core versions to them and do not modify them for a routine Core patch release.",{"type":56,"tag":498,"props":681,"children":683},{"id":682},"update-download-data",[684],{"type":62,"value":685},"Update Download Data",{"type":56,"tag":65,"props":687,"children":688},{},[689],{"type":62,"value":690},"Edit src\u002Fconstant\u002Fdownload.data.ts.",{"type":56,"tag":65,"props":692,"children":693},{},[694],{"type":62,"value":695},"Update VersionEnum only as confirmed:",{"type":56,"tag":78,"props":697,"children":698},{},[699,704,709,714],{"type":56,"tag":82,"props":700,"children":701},{},[702],{"type":62,"value":703},"Latest: the headline current release.",{"type":56,"tag":82,"props":705,"children":706},{},[707],{"type":62,"value":708},"Prev: the stable previous release line shown beside Latest.",{"type":56,"tag":82,"props":710,"children":711},{},[712],{"type":62,"value":713},"Earlier: the older supported line.",{"type":56,"tag":82,"props":715,"children":716},{},[717],{"type":62,"value":718},"Historical: no VersionEnum change.",{"type":56,"tag":65,"props":720,"children":721},{},[722],{"type":62,"value":723},"Add the public version to both structures:",{"type":56,"tag":78,"props":725,"children":726},{},[727,732],{"type":56,"tag":82,"props":728,"children":729},{},[730],{"type":62,"value":731},"DORIS_VERSIONS drives the quick-download selector.",{"type":56,"tag":82,"props":733,"children":734},{},[735],{"type":62,"value":736},"ALL_VERSIONS drives the all-releases form.",{"type":56,"tag":65,"props":738,"children":739},{},[740],{"type":62,"value":741},"In both structures, add x64, x64-noavx2, and arm64 rows. Each row must contain the binary gz, asc, sha512, source directory, and exact source filename version.",{"type":56,"tag":65,"props":743,"children":744},{},[745],{"type":62,"value":746},"Keep patch releases newest-first within their series. Audit the entire target series in both arrays, not only the new entry. Every target-series version in DORIS_VERSIONS must exist in ALL_VERSIONS and vice versa. Fix a discovered omission when it is clearly a data drift in the requested release scope; mention it explicitly in the handoff.",{"type":56,"tag":65,"props":748,"children":749},{},[750],{"type":62,"value":751},"Do not broadly reformat download.data.ts.",{"type":56,"tag":498,"props":753,"children":755},{"id":754},"add-bilingual-release-notes",[756],{"type":62,"value":757},"Add Bilingual Release Notes",{"type":56,"tag":65,"props":759,"children":760},{},[761],{"type":62,"value":762},"Create:",{"type":56,"tag":193,"props":764,"children":767},{"className":765,"code":766,"language":62},[196],"releasenotes\u002Fv\u003Cseries>\u002Frelease-\u003Cpublic-version>.md\ni18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fv\u003Cseries>\u002Frelease-\u003Cpublic-version>.md\n",[768],{"type":56,"tag":200,"props":769,"children":770},{"__ignoreMap":202},[771],{"type":62,"value":766},{"type":56,"tag":65,"props":773,"children":774},{},[775],{"type":62,"value":776},"Use the repository JSON-inside-dashes frontmatter shape. At minimum:",{"type":56,"tag":78,"props":778,"children":779},{},[780,785,790],{"type":56,"tag":82,"props":781,"children":782},{},[783],{"type":62,"value":784},"title contains the public version",{"type":56,"tag":82,"props":786,"children":787},{},[788],{"type":62,"value":789},"language is en or zh-CN as appropriate",{"type":56,"tag":82,"props":791,"children":792},{},[793],{"type":62,"value":794},"description contains the public version",{"type":56,"tag":65,"props":796,"children":797},{},[798],{"type":62,"value":799},"Use the approved release-note source as the content authority. Preserve its section order, heading levels, bullet order, issue numbers, code spans, and acknowledgments. Remove only source-page navigation that is not part of the release itself, such as a backlink telling GitHub readers to visit a previous release. Make only small, obvious whitespace or Markdown corrections; do not invent features or rewrite technical claims.",{"type":56,"tag":65,"props":801,"children":802},{},[803],{"type":62,"value":804},"For the translation:",{"type":56,"tag":78,"props":806,"children":807},{},[808,813,818,823,828],{"type":56,"tag":82,"props":809,"children":810},{},[811],{"type":62,"value":812},"Translate prose and headings, not product names, code, SQL, configuration keys, paths, or issue numbers.",{"type":56,"tag":82,"props":814,"children":815},{},[816],{"type":62,"value":817},"Preserve the issue-reference sequence exactly.",{"type":56,"tag":82,"props":819,"children":820},{},[821],{"type":62,"value":822},"Preserve the heading-level sequence and bullet count.",{"type":56,"tag":82,"props":824,"children":825},{},[826],{"type":62,"value":827},"Check that every English item has one corresponding zh-CN item.",{"type":56,"tag":82,"props":829,"children":830},{},[831],{"type":62,"value":832},"Keep frontmatter valid JSON and remove trailing whitespace.",{"type":56,"tag":498,"props":834,"children":836},{"id":835},"update-the-core-index",[837],{"type":62,"value":838},"Update the Core Index",{"type":56,"tag":65,"props":840,"children":841},{},[842],{"type":62,"value":843},"Edit both Core history pages:",{"type":56,"tag":193,"props":845,"children":848},{"className":846,"code":847,"language":62},[196],"releasenotes\u002Fcore.md\ni18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fcore.md\n",[849],{"type":56,"tag":200,"props":850,"children":851},{"__ignoreMap":202},[852],{"type":62,"value":847},{"type":56,"tag":65,"props":854,"children":855},{},[856],{"type":62,"value":857},"In each file:",{"type":56,"tag":78,"props":859,"children":860},{},[861,866,871,876,881],{"type":56,"tag":82,"props":862,"children":863},{},[864],{"type":62,"value":865},"Update the relevant tip entry when the release is Latest, Prev, or Earlier.",{"type":56,"tag":82,"props":867,"children":868},{},[869],{"type":62,"value":870},"Add the dated per-version link to the chronological list.",{"type":56,"tag":82,"props":872,"children":873},{},[874],{"type":62,"value":875},"Use the confirmed YYYY-MM-DD release date.",{"type":56,"tag":82,"props":877,"children":878},{},[879],{"type":62,"value":880},"Keep the chronological list reverse-sorted by date.",{"type":56,"tag":82,"props":882,"children":883},{},[884],{"type":62,"value":885},"Keep English and zh-CN links, dates, and positioning aligned.",{"type":56,"tag":498,"props":887,"children":889},{"id":888},"update-release-navigation",[890],{"type":62,"value":891},"Update Release Navigation",{"type":56,"tag":65,"props":893,"children":894},{},[895],{"type":62,"value":896},"Edit sidebarsReleases.json:",{"type":56,"tag":78,"props":898,"children":899},{},[900,910,925,930,935],{"type":56,"tag":82,"props":901,"children":902},{},[903,905],{"type":62,"value":904},"Find Doris Core and the matching v",{"type":56,"tag":268,"props":906,"children":907},{},[908],{"type":62,"value":909}," category.",{"type":56,"tag":82,"props":911,"children":912},{},[913,915],{"type":62,"value":914},"Add v",{"type":56,"tag":268,"props":916,"children":917},{},[918,920],{"type":62,"value":919},"\u002Frelease-",{"type":56,"tag":606,"props":921,"children":922},{},[923],{"type":62,"value":924},".",{"type":56,"tag":82,"props":926,"children":927},{},[928],{"type":62,"value":929},"Place the new patch version first in its series.",{"type":56,"tag":82,"props":931,"children":932},{},[933],{"type":62,"value":934},"Add a new series category only when it does not already exist.",{"type":56,"tag":82,"props":936,"children":937},{},[938],{"type":62,"value":939},"Preserve valid JSON and unrelated ordering.",{"type":56,"tag":71,"props":941,"children":943},{"id":942},"ecosystem-component-workflow",[944],{"type":62,"value":945},"Ecosystem Component Workflow",{"type":56,"tag":65,"props":947,"children":948},{},[949],{"type":62,"value":950},"The bundled validator currently targets Doris Core. Use this workflow and the manual checklist for ecosystem components.",{"type":56,"tag":65,"props":952,"children":953},{},[954],{"type":62,"value":955},"Most established ecosystem releases update:",{"type":56,"tag":193,"props":957,"children":960},{"className":958,"code":959,"language":62},[196],"releasenotes\u002Fecosystem\u002F\u003Ccomponent-page>.md\ni18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-releases\u002Fcurrent\u002Fecosystem\u002F\u003Ccomponent-page>.md\n",[961],{"type":56,"tag":200,"props":962,"children":963},{"__ignoreMap":202},[964],{"type":62,"value":959},{"type":56,"tag":65,"props":966,"children":967},{},[968],{"type":62,"value":969},"Some also update src\u002Fconstant\u002Fdownload.data.ts. Update sidebarsReleases.json only when adding a new ecosystem page; individual ecosystem versions normally remain sections within one component page.",{"type":56,"tag":65,"props":971,"children":972},{},[973],{"type":62,"value":974},"Do not update Core per-version notes, releasenotes\u002Fcore.md, its zh-CN mirror, or Core VersionEnum values for an ecosystem release unless the release manager explicitly requests a cross-surface change.",{"type":56,"tag":65,"props":976,"children":977},{},[978],{"type":62,"value":979},"Component profiles:",{"type":56,"tag":211,"props":981,"children":982},{},[983,1009],{"type":56,"tag":215,"props":984,"children":985},{},[986],{"type":56,"tag":219,"props":987,"children":988},{},[989,994,999,1004],{"type":56,"tag":223,"props":990,"children":991},{},[992],{"type":62,"value":993},"Component",{"type":56,"tag":223,"props":995,"children":996},{},[997],{"type":62,"value":998},"Release page",{"type":56,"tag":223,"props":1000,"children":1001},{},[1002],{"type":62,"value":1003},"Download data",{"type":56,"tag":223,"props":1005,"children":1006},{},[1007],{"type":62,"value":1008},"Extra checks",{"type":56,"tag":239,"props":1010,"children":1011},{},[1012,1035,1058,1081,1104,1127,1149,1171],{"type":56,"tag":219,"props":1013,"children":1014},{},[1015,1020,1025,1030],{"type":56,"tag":246,"props":1016,"children":1017},{},[1018],{"type":62,"value":1019},"Flink Connector",{"type":56,"tag":246,"props":1021,"children":1022},{},[1023],{"type":62,"value":1024},"ecosystem\u002Fdoris-flink-connector.md",{"type":56,"tag":246,"props":1026,"children":1027},{},[1028],{"type":62,"value":1029},"ToolsEnum.Flink",{"type":56,"tag":246,"props":1031,"children":1032},{},[1033],{"type":62,"value":1034},"Runtime compatibility matrix; exact .tgz or .tar.gz suffix",{"type":56,"tag":219,"props":1036,"children":1037},{},[1038,1043,1048,1053],{"type":56,"tag":246,"props":1039,"children":1040},{},[1041],{"type":62,"value":1042},"Spark Connector",{"type":56,"tag":246,"props":1044,"children":1045},{},[1046],{"type":62,"value":1047},"ecosystem\u002Fdoris-spark-connector.md",{"type":56,"tag":246,"props":1049,"children":1050},{},[1051],{"type":62,"value":1052},"ToolsEnum.Spark",{"type":56,"tag":246,"props":1054,"children":1055},{},[1056],{"type":62,"value":1057},"Spark and Scala compatibility; Maven coordinates",{"type":56,"tag":219,"props":1059,"children":1060},{},[1061,1066,1071,1076],{"type":56,"tag":246,"props":1062,"children":1063},{},[1064],{"type":62,"value":1065},"Kafka Connector",{"type":56,"tag":246,"props":1067,"children":1068},{},[1069],{"type":62,"value":1070},"ecosystem\u002Fdoris-kafka-connector.md",{"type":56,"tag":246,"props":1072,"children":1073},{},[1074],{"type":62,"value":1075},"ToolsEnum.Kafka",{"type":56,"tag":246,"props":1077,"children":1078},{},[1079],{"type":62,"value":1080},"Kafka Connect compatibility; plugin package layout",{"type":56,"tag":219,"props":1082,"children":1083},{},[1084,1089,1094,1099],{"type":56,"tag":246,"props":1085,"children":1086},{},[1087],{"type":62,"value":1088},"Streamloader",{"type":56,"tag":246,"props":1090,"children":1091},{},[1092],{"type":62,"value":1093},"ecosystem\u002Fdoris-streamloader.md",{"type":56,"tag":246,"props":1095,"children":1096},{},[1097],{"type":62,"value":1098},"ToolsEnum.StreamLoader when present",{"type":56,"tag":246,"props":1100,"children":1101},{},[1102],{"type":62,"value":1103},"Platform binaries, checksums, usage examples",{"type":56,"tag":219,"props":1105,"children":1106},{},[1107,1112,1117,1122],{"type":56,"tag":246,"props":1108,"children":1109},{},[1110],{"type":62,"value":1111},"Doris Operator",{"type":56,"tag":246,"props":1113,"children":1114},{},[1115],{"type":62,"value":1116},"ecosystem\u002Fdoris-operator.md",{"type":56,"tag":246,"props":1118,"children":1119},{},[1120],{"type":62,"value":1121},"Usually none",{"type":56,"tag":246,"props":1123,"children":1124},{},[1125],{"type":62,"value":1126},"Controller image, Helm chart, CRD compatibility",{"type":56,"tag":219,"props":1128,"children":1129},{},[1130,1135,1140,1144],{"type":56,"tag":246,"props":1131,"children":1132},{},[1133],{"type":62,"value":1134},"MCP Server",{"type":56,"tag":246,"props":1136,"children":1137},{},[1138],{"type":62,"value":1139},"ecosystem\u002Fdoris-mcp-server.md",{"type":56,"tag":246,"props":1141,"children":1142},{},[1143],{"type":62,"value":1121},{"type":56,"tag":246,"props":1145,"children":1146},{},[1147],{"type":62,"value":1148},"Package installation and supported Doris versions",{"type":56,"tag":219,"props":1150,"children":1151},{},[1152,1157,1162,1166],{"type":56,"tag":246,"props":1153,"children":1154},{},[1155],{"type":62,"value":1156},"Doris Skills",{"type":56,"tag":246,"props":1158,"children":1159},{},[1160],{"type":62,"value":1161},"ecosystem\u002Fdoris-skills.md",{"type":56,"tag":246,"props":1163,"children":1164},{},[1165],{"type":62,"value":1121},{"type":56,"tag":246,"props":1167,"children":1168},{},[1169],{"type":62,"value":1170},"Installation source and supported environments",{"type":56,"tag":219,"props":1172,"children":1173},{},[1174,1179,1184,1188],{"type":56,"tag":246,"props":1175,"children":1176},{},[1177],{"type":62,"value":1178},"Doris CLI",{"type":56,"tag":246,"props":1180,"children":1181},{},[1182],{"type":62,"value":1183},"ecosystem\u002Fdoris-cli.md",{"type":56,"tag":246,"props":1185,"children":1186},{},[1187],{"type":62,"value":1121},{"type":56,"tag":246,"props":1189,"children":1190},{},[1191],{"type":62,"value":1192},"Platform packages and install commands",{"type":56,"tag":65,"props":1194,"children":1195},{},[1196],{"type":62,"value":1197},"For an existing page:",{"type":56,"tag":78,"props":1199,"children":1200},{},[1201,1206,1211,1216],{"type":56,"tag":82,"props":1202,"children":1203},{},[1204],{"type":62,"value":1205},"Add the newest version section near the top.",{"type":56,"tag":82,"props":1207,"children":1208},{},[1209],{"type":62,"value":1210},"Preserve the page frontmatter and anchors.",{"type":56,"tag":82,"props":1212,"children":1213},{},[1214],{"type":62,"value":1215},"Update English and zh-CN with matching facts, links, compatibility data, and issue references.",{"type":56,"tag":82,"props":1217,"children":1218},{},[1219],{"type":62,"value":1220},"Verify every official artifact or package link directly.",{"type":56,"tag":65,"props":1222,"children":1223},{},[1224],{"type":62,"value":1225},"For a new page:",{"type":56,"tag":78,"props":1227,"children":1228},{},[1229,1234,1239,1244],{"type":56,"tag":82,"props":1230,"children":1231},{},[1232],{"type":62,"value":1233},"Copy the nearest ecosystem page structure.",{"type":56,"tag":82,"props":1235,"children":1236},{},[1237],{"type":62,"value":1238},"Add both locales when expected.",{"type":56,"tag":82,"props":1240,"children":1241},{},[1242],{"type":62,"value":1243},"Add one sidebar entry under Doris Ecosystem.",{"type":56,"tag":82,"props":1245,"children":1246},{},[1247],{"type":62,"value":1248},"Check inbound links, route IDs, frontmatter, and stable URLs.",{"type":56,"tag":65,"props":1250,"children":1251},{},[1252],{"type":62,"value":1253},"When updating TOOL_VERSIONS:",{"type":56,"tag":78,"props":1255,"children":1256},{},[1257,1262,1267,1272],{"type":56,"tag":82,"props":1258,"children":1259},{},[1260],{"type":62,"value":1261},"Verify the exact source filename and directory.",{"type":56,"tag":82,"props":1263,"children":1264},{},[1265],{"type":62,"value":1266},"Preserve the existing Option shape.",{"type":56,"tag":82,"props":1268,"children":1269},{},[1270],{"type":62,"value":1271},"Keep versions newest-first.",{"type":56,"tag":82,"props":1273,"children":1274},{},[1275],{"type":62,"value":1276},"Do not add a Core VersionEnum entry.",{"type":56,"tag":71,"props":1278,"children":1280},{"id":1279},"validation",[1281],{"type":62,"value":1282},"Validation",{"type":56,"tag":498,"props":1284,"children":1286},{"id":1285},"tier-0-always-run",[1287],{"type":62,"value":1288},"Tier 0: Always Run",{"type":56,"tag":65,"props":1290,"children":1291},{},[1292],{"type":62,"value":1293},"Run the validator tests:",{"type":56,"tag":193,"props":1295,"children":1298},{"className":1296,"code":1297,"language":62},[196],"node --test doc-tools\u002Fskills\u002Fadd-release\u002Fscripts\u002Fvalidate-release.test.mjs\n",[1299],{"type":56,"tag":200,"props":1300,"children":1301},{"__ignoreMap":202},[1302],{"type":62,"value":1297},{"type":56,"tag":65,"props":1304,"children":1305},{},[1306],{"type":62,"value":1307},"For Doris Core, run the bundled validator with the confirmed values:",{"type":56,"tag":193,"props":1309,"children":1312},{"className":1310,"code":1311,"language":62},[196],"node doc-tools\u002Fskills\u002Fadd-release\u002Fscripts\u002Fvalidate-release.mjs --component doris-core --version \u003Cpublic-version> --series \u003Cseries> --source-version \u003Csource-version> --release-date \u003CYYYY-MM-DD> --position \u003Clatest|prev|earlier|historical> --source-dir \u003Cofficial-source-directory>\n",[1313],{"type":56,"tag":200,"props":1314,"children":1315},{"__ignoreMap":202},[1316],{"type":62,"value":1311},{"type":56,"tag":65,"props":1318,"children":1319},{},[1320],{"type":62,"value":1321},"The validator checks:",{"type":56,"tag":78,"props":1323,"children":1324},{},[1325,1330,1335,1340,1345,1350,1355,1360,1365],{"type":56,"tag":82,"props":1326,"children":1327},{},[1328],{"type":62,"value":1329},"Both release-note files, JSON frontmatter, and trailing whitespace",{"type":56,"tag":82,"props":1331,"children":1332},{},[1333],{"type":62,"value":1334},"English and zh-CN heading levels, bullet counts, and issue-reference sequences",{"type":56,"tag":82,"props":1336,"children":1337},{},[1338],{"type":62,"value":1339},"Both core.md indexes, release date, link, and reverse chronology",{"type":56,"tag":82,"props":1341,"children":1342},{},[1343],{"type":62,"value":1344},"That both all-release.md project indexes still route to core.md and remain untouched",{"type":56,"tag":82,"props":1346,"children":1347},{},[1348],{"type":62,"value":1349},"sidebarsReleases.json parseability and newest-first placement",{"type":56,"tag":82,"props":1351,"children":1352},{},[1353],{"type":62,"value":1354},"VersionEnum positioning",{"type":56,"tag":82,"props":1356,"children":1357},{},[1358],{"type":62,"value":1359},"Target-series ordering and drift between DORIS_VERSIONS and ALL_VERSIONS",{"type":56,"tag":82,"props":1361,"children":1362},{},[1363],{"type":62,"value":1364},"All six architecture rows, source filename version, source directory, and binary filenames",{"type":56,"tag":82,"props":1366,"children":1367},{},[1368],{"type":62,"value":1369},"The full twelve-artifact URL matrix",{"type":56,"tag":65,"props":1371,"children":1372},{},[1373],{"type":62,"value":1374},"Use --skip-links only when external link verification is explicitly out of scope, and disclose the skipped check. --skip-git-routing is intended for isolated test fixtures, not routine release work.",{"type":56,"tag":65,"props":1376,"children":1377},{},[1378],{"type":62,"value":1379},"Also run:",{"type":56,"tag":193,"props":1381,"children":1384},{"className":1382,"code":1383,"language":62},[196],"node -e \"JSON.parse(require('fs').readFileSync('sidebarsReleases.json', 'utf8'))\"\ngit diff --check\ngit status --short\n",[1385],{"type":56,"tag":200,"props":1386,"children":1387},{"__ignoreMap":202},[1388],{"type":62,"value":1383},{"type":56,"tag":65,"props":1390,"children":1391},{},[1392],{"type":62,"value":1393},"git diff and git diff --check do not cover untracked release-note files. Inspect every path shown by git status, and ensure the new files are included in the validator run. Review the final tracked diff plus the full contents of every new untracked file.",{"type":56,"tag":65,"props":1395,"children":1396},{},[1397],{"type":62,"value":1398},"For ecosystem releases, manually verify:",{"type":56,"tag":78,"props":1400,"children":1401},{},[1402,1407,1412,1417,1422,1427,1432],{"type":56,"tag":82,"props":1403,"children":1404},{},[1405],{"type":62,"value":1406},"Exact changed-file scope for the confirmed component",{"type":56,"tag":82,"props":1408,"children":1409},{},[1410],{"type":62,"value":1411},"English and zh-CN structure and facts",{"type":56,"tag":82,"props":1413,"children":1414},{},[1415],{"type":62,"value":1416},"Frontmatter and route IDs",{"type":56,"tag":82,"props":1418,"children":1419},{},[1420],{"type":62,"value":1421},"Download data ordering and field completeness when touched",{"type":56,"tag":82,"props":1423,"children":1424},{},[1425],{"type":62,"value":1426},"Every source, signature, checksum, package, image, or chart link",{"type":56,"tag":82,"props":1428,"children":1429},{},[1430],{"type":62,"value":1431},"Sidebar JSON when touched",{"type":56,"tag":82,"props":1433,"children":1434},{},[1435],{"type":62,"value":1436},"Untracked new files",{"type":56,"tag":498,"props":1438,"children":1440},{"id":1439},"tier-1-type-check",[1441],{"type":62,"value":1442},"Tier 1: Type Check",{"type":56,"tag":65,"props":1444,"children":1445},{},[1446],{"type":62,"value":1447},"When compilation checks are allowed and download data or TypeScript changed, run:",{"type":56,"tag":193,"props":1449,"children":1452},{"className":1450,"code":1451,"language":62},[196],"yarn typecheck\n",[1453],{"type":56,"tag":200,"props":1454,"children":1455},{"__ignoreMap":202},[1456],{"type":62,"value":1451},{"type":56,"tag":498,"props":1458,"children":1460},{"id":1459},"tier-2-full-site-build",[1461],{"type":62,"value":1462},"Tier 2: Full Site Build",{"type":56,"tag":65,"props":1464,"children":1465},{},[1466],{"type":62,"value":1467},"When the release manager requests full validation, or routing and rendering risk warrants it, run:",{"type":56,"tag":193,"props":1469,"children":1472},{"className":1470,"code":1471,"language":62},[196],"yarn build\n",[1473],{"type":56,"tag":200,"props":1474,"children":1475},{"__ignoreMap":202},[1476],{"type":62,"value":1471},{"type":56,"tag":65,"props":1478,"children":1479},{},[1480],{"type":62,"value":1481},"If the release manager says not to compile, skip both Tier 1 and Tier 2. Tier 0 still applies. State exactly which tiers ran and which were skipped.",{"type":56,"tag":65,"props":1483,"children":1484},{},[1485],{"type":62,"value":1486},"Do not claim validation passed unless the corresponding command completed successfully in the current worktree.",{"type":56,"tag":71,"props":1488,"children":1490},{"id":1489},"final-review-and-handoff",[1491],{"type":62,"value":1492},"Final Review and Handoff",{"type":56,"tag":65,"props":1494,"children":1495},{},[1496],{"type":62,"value":1497},"Before reporting completion:",{"type":56,"tag":78,"props":1499,"children":1500},{},[1501,1506,1511,1516,1521,1526],{"type":56,"tag":82,"props":1502,"children":1503},{},[1504],{"type":62,"value":1505},"Re-read the request and compare it with the exact changed-file set.",{"type":56,"tag":82,"props":1507,"children":1508},{},[1509],{"type":62,"value":1510},"Confirm the public version, source filename version, release date, scope, locales, and positioning.",{"type":56,"tag":82,"props":1512,"children":1513},{},[1514],{"type":62,"value":1515},"Confirm all artifact checks and note any mirror choice.",{"type":56,"tag":82,"props":1517,"children":1518},{},[1519],{"type":62,"value":1520},"Confirm DORIS_VERSIONS and ALL_VERSIONS are aligned for the target series.",{"type":56,"tag":82,"props":1522,"children":1523},{},[1524],{"type":62,"value":1525},"Confirm Core history is in core.md, not all-release.md.",{"type":56,"tag":82,"props":1527,"children":1528},{},[1529],{"type":62,"value":1530},"Confirm no unrelated files were modified.",{"type":56,"tag":65,"props":1532,"children":1533},{},[1534],{"type":62,"value":1535},"Report:",{"type":56,"tag":78,"props":1537,"children":1538},{},[1539,1544,1549,1554,1559,1564,1569,1574,1579],{"type":56,"tag":82,"props":1540,"children":1541},{},[1542],{"type":62,"value":1543},"Component and version",{"type":56,"tag":82,"props":1545,"children":1546},{},[1547],{"type":62,"value":1548},"Files changed, including newly created untracked files",{"type":56,"tag":82,"props":1550,"children":1551},{},[1552],{"type":62,"value":1553},"Release-note source",{"type":56,"tag":82,"props":1555,"children":1556},{},[1557],{"type":62,"value":1558},"Public version versus source filename version",{"type":56,"tag":82,"props":1560,"children":1561},{},[1562],{"type":62,"value":1563},"Release date, position, website scope, and locales",{"type":56,"tag":82,"props":1565,"children":1566},{},[1567],{"type":62,"value":1568},"Artifact validation result",{"type":56,"tag":82,"props":1570,"children":1571},{},[1572],{"type":62,"value":1573},"Tier 0, Tier 1, and Tier 2 results or explicit skips",{"type":56,"tag":82,"props":1575,"children":1576},{},[1577],{"type":62,"value":1578},"Any repaired pre-existing data drift, such as a missing ALL_VERSIONS entry",{"type":56,"tag":82,"props":1580,"children":1581},{},[1582],{"type":62,"value":1583},"Any remaining limitation or manual follow-up",{"type":56,"tag":65,"props":1585,"children":1586},{},[1587],{"type":62,"value":1588},"Do not commit, push, publish externally, or open a pull request unless the release manager asks.",{"items":1590,"total":1628},[1591,1597,1609],{"slug":4,"name":4,"fn":5,"description":6,"org":1592,"tags":1593,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1594,1595,1596],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"slug":1598,"name":1598,"fn":1599,"description":1600,"org":1601,"tags":1602,"stars":22,"repoUrl":23,"updatedAt":1608},"doris-doc-optimize","optimize Apache Doris user documentation","Restructure and SEO\u002FGEO-optimize an existing Apache Doris user documentation file (`.md` \u002F `.mdx`), primarily under `i18n\u002Fzh-CN\u002Fdocusaurus-plugin-content-docs-next\u002Fcurrent\u002F` or `docs-next\u002F`. The skill reorganizes the doc from a user-scenario perspective, applies tables and lists for parameters \u002F scenarios \u002F FAQs, fixes formatting (4-space indent, code-block language tags, blank lines, Chinese\u002FEnglish spacing, command-concatenation bugs), validates every external link with `curl` and every `\u002Fimages\u002F...` reference against `static\u002F`, and updates the frontmatter `description` + `keywords` per the bundled `.\u002Freferences\u002Fseo-geo.md` guide — all without changing the original meaning or dropping any technical content (commands, parameters, YAML, sample outputs, images are preserved verbatim). Use this skill whenever the user points at a single Doris doc file and asks to \"优化这篇文档\", \"重新组织这篇文档\", \"帮我优化文档结构\", \"对这篇文章进行 SEO 优化\", \"按 SEO\u002FGEO 优化这篇文档\", \"调整一下这篇文档的结构\", \"把这篇文档润色一下\", \"optimize this doc\", \"restructure this doc\", \"polish this doc\", or anything similar — even if the user only says \"make this doc better\" or \"这篇文档读起来不顺\" while pointing at a Doris doc path. Do NOT use this skill for translating between languages (use `doris-translate-zh-to-en` instead), writing a brand-new doc from scratch (use `doris-feature-card` or `doc-coauthoring`), or pure link-checking without restructure (use `check-md-links` instead).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1603,1604,1607],{"name":13,"slug":14,"type":15},{"name":1605,"slug":1606,"type":15},"SEO","seo",{"name":20,"slug":21,"type":15},"2026-07-12T08:32:44.549641",{"slug":1610,"name":1610,"fn":1611,"description":1612,"org":1613,"tags":1614,"stars":22,"repoUrl":23,"updatedAt":1627},"weekly-report-slack","generate Slack reports from community updates","Generate an English Slack-ready post from an Apache Doris weekly community report MDX file. Use when the user invokes `$weekly-report-slack path\u002Fto\u002Freport.mdx` or asks to turn a Doris weekly report, especially `src\u002Fpages\u002Fcommunity-report\u002F_reports\u002FYYYY-MM-DD.mdx`, into the standard Slack announcement format with date range, summary paragraph, highlights, and report link.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1615,1618,1621,1624],{"name":1616,"slug":1617,"type":15},"Communications","communications",{"name":1619,"slug":1620,"type":15},"Reporting","reporting",{"name":1622,"slug":1623,"type":15},"Slack","slack",{"name":1625,"slug":1626,"type":15},"Writing","writing","2026-07-12T08:32:45.997147",3,{"items":1630,"total":1783},[1631,1649,1663,1676,1689,1702,1720,1731,1741,1752,1762,1772],{"slug":1632,"name":1632,"fn":1633,"description":1634,"org":1635,"tags":1636,"stars":1646,"repoUrl":1647,"updatedAt":1648},"datafusion-python","write Apache DataFusion Python code","Use when the user is writing datafusion-python (Apache DataFusion Python bindings) DataFrame or SQL code. Covers imports, data loading, DataFrame operations, expression building, SQL-to-DataFrame mappings, idiomatic patterns, and common pitfalls.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1637,1640,1643],{"name":1638,"slug":1639,"type":15},"Data Analysis","data-analysis",{"name":1641,"slug":1642,"type":15},"Python","python",{"name":1644,"slug":1645,"type":15},"SQL","sql",593,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fdatafusion-python","2026-07-12T08:36:04.957626",{"slug":1650,"name":1650,"fn":1651,"description":1652,"org":1653,"tags":1654,"stars":1660,"repoUrl":1661,"updatedAt":1662},"bydbql","generate and execute BanyanDB BydbQL queries","Generate, validate, and optionally execute read-only BanyanDB BydbQL for STREAM, MEASURE, TRACE, and PROPERTY resources. Use when the user asks to query BanyanDB, translate natural language to BydbQL, inspect BanyanDB schema or data, validate BydbQL, or fetch raw BanyanDB records.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1655,1657,1659],{"name":1656,"slug":28,"type":15},"Analytics",{"name":1658,"slug":31,"type":15},"Database",{"name":1644,"slug":1645,"type":15},344,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fskywalking-banyandb","2026-07-12T08:31:01.294423",{"slug":1664,"name":1664,"fn":1665,"description":1666,"org":1667,"tags":1668,"stars":1660,"repoUrl":1661,"updatedAt":1675},"compiling","compile and build BanyanDB projects","Compile and build the SkyWalking BanyanDB project. Use when the user asks to compile, build, or generate code for this project.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1669,1672],{"name":1670,"slug":1671,"type":15},"Build","build",{"name":1673,"slug":1674,"type":15},"Engineering","engineering","2026-07-12T08:31:06.373309",{"slug":1677,"name":1677,"fn":1678,"description":1679,"org":1680,"tags":1681,"stars":1660,"repoUrl":1661,"updatedAt":1688},"gh-pull-request","create GitHub pull requests for BanyanDB","Create a GitHub pull request for SkyWalking BanyanDB. Use when the user asks to create a PR, submit changes, or open a pull request.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1682,1685],{"name":1683,"slug":1684,"type":15},"GitHub","github",{"name":1686,"slug":1687,"type":15},"Pull Requests","pull-requests","2026-07-12T08:31:03.792415",{"slug":1690,"name":1690,"fn":1691,"description":1692,"org":1693,"tags":1694,"stars":1660,"repoUrl":1661,"updatedAt":1701},"vendor-update","update Go and Node.js vendor dependencies","Upgrade Go\u002FNode.js vendor dependencies and sync tool versions. Use whenever the user says \"upgrade dependencies\", \"update vendors\", \"vendor update\", \"run vendor-upgrade\", \"bump dependencies\", \"update packages\", or asks to run the `vendor-update` Make target. This skill also checks `scripts\u002Fbuild\u002Fversion.mk` after upgrading to see if any tracked tool versions need updating too, and removes stale binaries from `bin\u002F` when versions change.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1695,1698],{"name":1696,"slug":1697,"type":15},"Go","go",{"name":1699,"slug":1700,"type":15},"Node.js","node-js","2026-07-12T08:31:02.555555",{"slug":1703,"name":1703,"fn":1704,"description":1705,"org":1706,"tags":1707,"stars":1717,"repoUrl":1718,"updatedAt":1719},"cayenne-cgen","generate Cayenne entity Java classes","Use this skill whenever the user wants to (re)generate Cayenne entity Java classes from a DataMap. Trigger on phrases like 'generate Java classes', 'regenerate entities', 'run cgen', 'create the entity classes', 'why is the Artist class missing fields', 'where did the `_Abstract*` classes come from', 'sync the entity classes with the model', or any request to materialize Java from the DataMap. Also trigger as a follow-up after modeling changes (someone added an entity, attribute, or relationship and now the Java side is stale). This skill exclusively uses the `mcp__cayenne__cgen_run` MCP tool — it does NOT use `mvn cayenne:cgen` or the Gradle cgen task.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1708,1711,1714],{"name":1709,"slug":1710,"type":15},"Data Modeling","data-modeling",{"name":1712,"slug":1713,"type":15},"Java","java",{"name":1715,"slug":1716,"type":15},"ORM","orm",343,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fcayenne","2026-07-12T08:32:33.575211",{"slug":1721,"name":1721,"fn":1722,"description":1723,"org":1724,"tags":1725,"stars":1717,"repoUrl":1718,"updatedAt":1730},"cayenne-db-import","import database schema into Cayenne DataMaps","Use this skill when the user wants to import database schema metadata into a Cayenne DataMap — the *model\u002Fmapping only*, not names or Java classes. Trigger on phrases like 'reverse engineer the database', 'import the schema', 'generate a DataMap from my DB', 'add the new tables from the DB into the model', 'import the customer table', 'create entities from these tables', or any request to read database metadata to populate or update a DataMap's XML. This is for *full schema* or *bulk table* import; one-off a-la-carte entity additions belong in the cayenne-modeling skill. IMPORTANT — scope: this imports the mapping ONLY; it does not clean up the Object-layer names or (re)generate Java classes. When the user wants their whole project brought in line with the DB ('sync my project with the database', 'my schema changed, update everything', 'update my entities\u002Fclasses from the DB'), that is the end-to-end `cayenne-full-db-sync` skill, which runs this import and then name cleanup and class generation. To regenerate classes alone use `cayenne-cgen`. The skill runs reverse engineering directly via the `mcp__cayenne__dbimport_run` MCP tool when a DBConnector is already configured; otherwise it opens the CayenneModeler GUI via `mcp__cayenne__open_project` to configure the connection first.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1726,1727,1728,1729],{"name":1658,"slug":31,"type":15},{"name":1712,"slug":1713,"type":15},{"name":1715,"slug":1716,"type":15},{"name":1644,"slug":1645,"type":15},"2026-07-19T05:40:33.655062",{"slug":1732,"name":1732,"fn":1733,"description":1734,"org":1735,"tags":1736,"stars":1717,"repoUrl":1718,"updatedAt":1740},"cayenne-full-db-sync","synchronize Cayenne projects with database","Use this skill when the user wants to bring their WHOLE Cayenne project in line with the database in one shot — the mapping, the Object-layer names, and the generated Java classes together. This is the end-to-end 'sync with the DB' workflow, and it orchestrates three skills in order: `cayenne-db-import` (import schema metadata into the DataMap) → `cayenne-model-naming` (polish the just-imported names) → `cayenne-cgen` (regenerate Java classes). Trigger on holistic phrases like 'sync my project with the database', 'sync with the DB', 'my schema changed, update everything', 'update my entities\u002Fclasses from the database', 'reverse engineer and regenerate the classes', 'import the new tables and rebuild the entities', 'full DB sync', 'bring the model and classes up to date with the DB'. The distinguishing signal is scope: the user wants the whole project (mapping + names + Java code), not just one stage. For the *model\u002Fmapping only* (no name cleanup, no class generation) use `cayenne-db-import`; to (re)generate classes alone use `cayenne-cgen`; to clean names alone use `cayenne-model-naming`. Uses the `mcp__cayenne__dbimport_run` and `mcp__cayenne__cgen_run` MCP tools via the sub-skills; does NOT use Maven or Gradle goals.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1737,1738,1739],{"name":1658,"slug":31,"type":15},{"name":1712,"slug":1713,"type":15},{"name":1715,"slug":1716,"type":15},"2026-07-19T06:03:49.112969",{"slug":1742,"name":1742,"fn":1743,"description":1744,"org":1745,"tags":1746,"stars":1717,"repoUrl":1718,"updatedAt":1751},"cayenne-model-naming","clean up Cayenne object-layer names","Use this skill to clean up Object-layer names in a Cayenne DataMap — ObjEntity, ObjAttribute, and ObjRelationship names, plus DbRelationship names (the first-class unit of relationship cleanup — every FK has one whether or not an ObjRelationship was generated; the ObjRelationship name is synced to it when one exists) — so they read as descriptive, consistent Java. Trigger on phrases like 'clean up the model names', 'fix the entity names', 'these names look ugly', 'make the names descriptive', 'normalize the ObjEntity\u002Fattribute\u002Frelationship names', 'why is this relationship called team1', 'rename entities to be consistent', 'the import produced Gametype instead of GameType'. Invoke it on an explicit user request, or as a manual follow-up after a `cayenne-db-import` to polish the just-imported additions — it is never triggered automatically. IMPORTANT: this is a LIGHT polish pass — CayenneModeler's reverse-engineering already produces good names for the common case; only improve the specific things its deterministic algorithm cannot (run-together names with no separators like `gametype`, meaningless numbered names like `team1` from multiple relationships between two tables, and a common entity prefix that leaks into relationship names like `aaOrders`). Do NOT rewrite names that are already correct. This is Obj-layer naming polish; for structural model edits use `cayenne-modeling`, and for regenerating classes afterward use `cayenne-cgen`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1747,1748,1749,1750],{"name":1709,"slug":1710,"type":15},{"name":1658,"slug":31,"type":15},{"name":1712,"slug":1713,"type":15},{"name":1715,"slug":1716,"type":15},"2026-07-22T05:35:32.342548",{"slug":1753,"name":1753,"fn":1754,"description":1755,"org":1756,"tags":1757,"stars":1717,"repoUrl":1718,"updatedAt":1761},"cayenne-modeler","manage Cayenne projects with CayenneModeler","Use this skill when the user explicitly wants to open CayenneModeler (the GUI) on a Cayenne project, or when the modeling task is inherently visual — reverse engineering (delegated to cayenne-db-import), bulk relationship layout, multi-entity visual refactoring. Trigger on phrases like 'open the Modeler', 'open in CayenneModeler', 'launch the GUI', 'edit visually', 'show me the project in the Modeler'. Do NOT trigger as a fallback for ordinary a-la-carte XML edits — those belong in the cayenne-modeling skill, which is faster and doesn't require the user to context-switch.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1758,1759,1760],{"name":1709,"slug":1710,"type":15},{"name":1712,"slug":1713,"type":15},{"name":1715,"slug":1716,"type":15},"2026-07-12T08:32:37.199428",{"slug":1763,"name":1763,"fn":1764,"description":1765,"org":1766,"tags":1767,"stars":1717,"repoUrl":1718,"updatedAt":1771},"cayenne-modeling","edit and extend Cayenne ORM models","Use this skill whenever the user wants to edit, inspect, or extend the Cayenne ORM model in a project — adding or modifying entities, attributes, relationships, embeddables, named queries, stored procedures, or DataNodes. Trigger on phrases like 'add an ObjEntity', 'add a DbEntity', 'add a relationship', 'expose this column as an attribute', 'create a new DataMap', 'add a named query', 'create an embeddable', 'add a stored procedure', 'change the attribute type', 'mark this column as nullable', 'rename this entity', or any mention of a Cayenne `*.map.xml` or `cayenne-*.xml` file. Also trigger when the user references modeling concepts (ObjEntity, DbEntity, ObjAttribute, DbAttribute, ObjRelationship, DbRelationship, Embeddable, dbEntityName, deleteRule, db-attribute-path, db-relationship-path, defaultPackage) in the context of a Cayenne-using app. This is the *primary* skill for a-la-carte ORM model manipulation — direct XML edits, not the Modeler GUI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1768,1769,1770],{"name":1658,"slug":31,"type":15},{"name":1712,"slug":1713,"type":15},{"name":1715,"slug":1716,"type":15},"2026-07-19T05:40:32.6889",{"slug":1773,"name":1773,"fn":1774,"description":1775,"org":1776,"tags":1777,"stars":1717,"repoUrl":1718,"updatedAt":1782},"cayenne-query","write and modify Cayenne database queries","Use this skill whenever the user wants to write or modify a Cayenne query — fetching entities by criteria, joining, prefetching to avoid N+1, ordering, paginating, aggregating, or running raw SQL through Cayenne. Trigger on phrases like 'query for X', 'fetch all artists where ...', 'write an ObjectSelect', 'use SQLSelect', 'use SelectById', 'add a prefetch', 'get distinct values', 'count rows', 'find by ID', 'load by primary key', 'build a Cayenne expression', 'why am I getting N+1', 'how do I paginate', 'select a single column', 'select columns into a DTO', 'named query in the DataMap'. Do NOT trigger for modeling changes (use cayenne-modeling) or runtime bootstrap (use cayenne-runtime).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1778,1779,1780,1781],{"name":1658,"slug":31,"type":15},{"name":1712,"slug":1713,"type":15},{"name":1715,"slug":1716,"type":15},{"name":1644,"slug":1645,"type":15},"2026-07-12T08:32:35.072322",108]