[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-apache-doris-img-gen":3,"mdc-90hyjg-key":50,"related-repo-apache-doris-img-gen":505,"related-org-apache-doris-img-gen":561},{"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},"doris-img-gen","generate Apache Doris whiteboard illustrations","Create Apache Doris article illustrations in the Doris hand-drawn whiteboard style, using a randomly selected Pip, Dori, or Flux mascot only when a task, guide, operator, diagnosis, or anthropomorphic narrative benefits from a character. Use when the user invokes $doris-img-gen or asks for a Doris technical article illustration, concept visual, infographic, architecture diagram, process diagram, or mascot-assisted explanatory graphic.",{"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},"Graphics","graphics","tag",{"name":17,"slug":18,"type":15},"Creative","creative",{"name":20,"slug":21,"type":15},"Design","design",129,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-website","2026-08-23T04:00:20.57994",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\u002Fdoris-img-gen","---\nname: doris-img-gen\ndescription: Create Apache Doris article illustrations in the Doris hand-drawn whiteboard style, using a randomly selected Pip, Dori, or Flux mascot only when a task, guide, operator, diagnosis, or anthropomorphic narrative benefits from a character. Use when the user invokes $doris-img-gen or asks for a Doris technical article illustration, concept visual, infographic, architecture diagram, process diagram, or mascot-assisted explanatory graphic.\n---\n\n# Doris Article Illustration Generator\n\nCreate technically clear, visually consistent illustrations for Apache Doris articles. Treat the text after `$doris-img-gen` as the primary content brief.\n\n## Prepare\n\n1. Read `references\u002Fvisual-style.md` completely before generating an image.\n2. Extract the requested concepts, relationships, sequence, labels, and layout constraints. Preserve them; do not invent technical facts, metrics, components, or product claims.\n3. If the request refers to an article, section, or local draft, read the relevant passage before composing the illustration.\n4. Keep all in-image wording in English by default. Use the user's exact quoted labels when supplied. Keep labels short and render each label exactly once.\n\n## Decide Whether to Use a Mascot\n\nApply the **semantic-role test**: include a mascot only when it performs a meaningful action that can be stated as a verb in the image.\n\nInclude one mascot when the scene needs:\n\n- an operator starting or running a task;\n- an investigator searching, observing, comparing, or diagnosing;\n- a guide teaching or walking readers through a process;\n- a central actor already present in the requested narrative;\n- a human-like moment that makes an abstract idea easier to understand.\n\nOmit the mascot when the image is primarily:\n\n- architecture, topology, data flow, or component relationships;\n- a chart, table, query plan, dashboard, or factual comparison;\n- a compact process whose clarity would be reduced by a character;\n- a scene where the mascot would be decorative rather than explanatory.\n\nNever add a mascot only to fill space. Use one mascot by default. Use more than one only when interaction among roles is itself part of the requested content.\n\nAn explicit user request for a character always overrides random selection.\n\nTreat the character roles as personality and prop hints, not fixed assignment rules:\n\n- **Pip — The Query Runner:** purple triangular character; can run, launch, point, inspect, or guide.\n- **Dori — The Core Engine:** cyan capsule character; can compute, operate, inspect, compare, or guide.\n- **Flux — The Data Explorer:** mint-green diagonal capsule character; can search, investigate, connect, inspect, or guide.\n\n### Randomize Mascot Selection\n\nAfter applying the semantic-role test, count only the images that need a mascot and do not already have a user-specified character. Randomize those slots by running the bundled selector once from the skill directory:\n\n```bash\npython3 scripts\u002Fselect_mascot.py --count \u003Cnumber-of-unspecified-mascot-slots>\n```\n\nAssign the returned names to the mascot-bearing images in output order. For a single image, omit `--count` or pass `--count 1`.\n\nThe selector creates a fresh system-random order on every invocation. In a batch, it uses every character once before reshuffling and avoids the same character on adjacent slots. Use its output exactly: do not replace or rerun a valid result because another mascot seems more suitable for the scene. Do not run the selector for images that fail the semantic-role test.\n\nInspect `assets\u002Fmeet-d-crew.jpg` with an image-viewing tool whenever a mascot will appear. Use it as the identity reference and preserve the selected character's silhouette, body color, face, and simple black limbs. Translate the character into the illustration style instead of copying the reference card layout or its surrounding text.\n\n## Compose the Image Prompt\n\nBuild a structured prompt with these fields:\n\n```text\nUse case: infographic-diagram\nAsset type: Apache Doris technical article illustration\nPrimary request: \u003Ccontent and relationships from the user's brief>\nScene\u002Fbackdrop: \u003Conly what is needed to explain the content>\nSubject: \u003Cmain concepts, icons, arrows, and the mascot's action if included>\nStyle\u002Fmedium: \u003Cthe canonical style from references\u002Fvisual-style.md>\nComposition\u002Fframing: landscape 1200 x 630 with a clear reading order and generous margins\nText (verbatim): \u003Cexact English labels, or \"No text\">\nColor palette: \u003Cthe canonical palette from references\u002Fvisual-style.md>\nConstraints: technically faithful; readable labels; consistent icon scale; clear arrow direction; no extra text; no watermark; no photorealism; no 3D\nAvoid: decorative clutter; dense paragraphs; tiny labels; unrelated logos; mascot use without a semantic role\n```\n\nIf using the D-Crew reference, add:\n\n```text\nInput images: Image N is the D-Crew identity reference. Use only the selected mascot; do not reproduce the reference poster, logo lockup, cards, headings, or descriptive copy.\nCharacter consistency: preserve the selected mascot's recognizable geometry, color, face, and limbs; render it with the same hand-drawn marker linework as the rest of the illustration.\n```\n\nIf the user also supplies a composition reference, identify each input image by number and role. Preserve the composition's information architecture without copying irrelevant artifacts.\n\n## Generate and Review\n\n1. Use the built-in image-generation tool by default.\n2. For a new image without a mascot or other supplied image reference, omit all reference-image parameters.\n3. When using a local mascot or composition reference, pass the required local files through `referenced_image_paths` and describe each image's role explicitly.\n4. Save the final image in the user's project or requested destination as a PNG with a descriptive filename.\n5. Inspect the result at full resolution. Verify:\n   - all requested concepts and relationships are present;\n   - arrow directions and process order are correct;\n   - every label is English, legible, and spelled correctly;\n   - no unrequested wording appears;\n   - the mascot decision adds meaning, and the chosen character follows the random rotation or the user's explicit request;\n   - the image follows the canonical palette, background, linework, and dimensions.\n6. If any verification fails, refine the smallest necessary area and inspect again.\n\n## Invocation Examples\n\n```text\n$doris-img-gen Show a query diagnosis loop with the exact labels \"Hypothesis\", \"Evidence\", \"Observation\", and \"Elimination\". A data investigator reviews profile, plan, chart, and checklist evidence.\n```\n\n```text\n$doris-img-gen Draw a left-to-right Doris data flow from client to FE to BE to object storage. Use no mascot and no text beyond the component labels.\n```\n",{"data":51,"body":52},{"name":4,"description":6},{"type":53,"children":54},"root",[55,64,79,86,119,125,138,143,172,177,200,205,210,215,248,255,260,316,337,342,355,361,366,376,381,390,395,401,475,481,490,499],{"type":56,"tag":57,"props":58,"children":60},"element","h1",{"id":59},"doris-article-illustration-generator",[61],{"type":62,"value":63},"text","Doris Article Illustration Generator",{"type":56,"tag":65,"props":66,"children":67},"p",{},[68,70,77],{"type":62,"value":69},"Create technically clear, visually consistent illustrations for Apache Doris articles. Treat the text after ",{"type":56,"tag":71,"props":72,"children":74},"code",{"className":73},[],[75],{"type":62,"value":76},"$doris-img-gen",{"type":62,"value":78}," as the primary content brief.",{"type":56,"tag":80,"props":81,"children":83},"h2",{"id":82},"prepare",[84],{"type":62,"value":85},"Prepare",{"type":56,"tag":87,"props":88,"children":89},"ol",{},[90,104,109,114],{"type":56,"tag":91,"props":92,"children":93},"li",{},[94,96,102],{"type":62,"value":95},"Read ",{"type":56,"tag":71,"props":97,"children":99},{"className":98},[],[100],{"type":62,"value":101},"references\u002Fvisual-style.md",{"type":62,"value":103}," completely before generating an image.",{"type":56,"tag":91,"props":105,"children":106},{},[107],{"type":62,"value":108},"Extract the requested concepts, relationships, sequence, labels, and layout constraints. Preserve them; do not invent technical facts, metrics, components, or product claims.",{"type":56,"tag":91,"props":110,"children":111},{},[112],{"type":62,"value":113},"If the request refers to an article, section, or local draft, read the relevant passage before composing the illustration.",{"type":56,"tag":91,"props":115,"children":116},{},[117],{"type":62,"value":118},"Keep all in-image wording in English by default. Use the user's exact quoted labels when supplied. Keep labels short and render each label exactly once.",{"type":56,"tag":80,"props":120,"children":122},{"id":121},"decide-whether-to-use-a-mascot",[123],{"type":62,"value":124},"Decide Whether to Use a Mascot",{"type":56,"tag":65,"props":126,"children":127},{},[128,130,136],{"type":62,"value":129},"Apply the ",{"type":56,"tag":131,"props":132,"children":133},"strong",{},[134],{"type":62,"value":135},"semantic-role test",{"type":62,"value":137},": include a mascot only when it performs a meaningful action that can be stated as a verb in the image.",{"type":56,"tag":65,"props":139,"children":140},{},[141],{"type":62,"value":142},"Include one mascot when the scene needs:",{"type":56,"tag":144,"props":145,"children":146},"ul",{},[147,152,157,162,167],{"type":56,"tag":91,"props":148,"children":149},{},[150],{"type":62,"value":151},"an operator starting or running a task;",{"type":56,"tag":91,"props":153,"children":154},{},[155],{"type":62,"value":156},"an investigator searching, observing, comparing, or diagnosing;",{"type":56,"tag":91,"props":158,"children":159},{},[160],{"type":62,"value":161},"a guide teaching or walking readers through a process;",{"type":56,"tag":91,"props":163,"children":164},{},[165],{"type":62,"value":166},"a central actor already present in the requested narrative;",{"type":56,"tag":91,"props":168,"children":169},{},[170],{"type":62,"value":171},"a human-like moment that makes an abstract idea easier to understand.",{"type":56,"tag":65,"props":173,"children":174},{},[175],{"type":62,"value":176},"Omit the mascot when the image is primarily:",{"type":56,"tag":144,"props":178,"children":179},{},[180,185,190,195],{"type":56,"tag":91,"props":181,"children":182},{},[183],{"type":62,"value":184},"architecture, topology, data flow, or component relationships;",{"type":56,"tag":91,"props":186,"children":187},{},[188],{"type":62,"value":189},"a chart, table, query plan, dashboard, or factual comparison;",{"type":56,"tag":91,"props":191,"children":192},{},[193],{"type":62,"value":194},"a compact process whose clarity would be reduced by a character;",{"type":56,"tag":91,"props":196,"children":197},{},[198],{"type":62,"value":199},"a scene where the mascot would be decorative rather than explanatory.",{"type":56,"tag":65,"props":201,"children":202},{},[203],{"type":62,"value":204},"Never add a mascot only to fill space. Use one mascot by default. Use more than one only when interaction among roles is itself part of the requested content.",{"type":56,"tag":65,"props":206,"children":207},{},[208],{"type":62,"value":209},"An explicit user request for a character always overrides random selection.",{"type":56,"tag":65,"props":211,"children":212},{},[213],{"type":62,"value":214},"Treat the character roles as personality and prop hints, not fixed assignment rules:",{"type":56,"tag":144,"props":216,"children":217},{},[218,228,238],{"type":56,"tag":91,"props":219,"children":220},{},[221,226],{"type":56,"tag":131,"props":222,"children":223},{},[224],{"type":62,"value":225},"Pip — The Query Runner:",{"type":62,"value":227}," purple triangular character; can run, launch, point, inspect, or guide.",{"type":56,"tag":91,"props":229,"children":230},{},[231,236],{"type":56,"tag":131,"props":232,"children":233},{},[234],{"type":62,"value":235},"Dori — The Core Engine:",{"type":62,"value":237}," cyan capsule character; can compute, operate, inspect, compare, or guide.",{"type":56,"tag":91,"props":239,"children":240},{},[241,246],{"type":56,"tag":131,"props":242,"children":243},{},[244],{"type":62,"value":245},"Flux — The Data Explorer:",{"type":62,"value":247}," mint-green diagonal capsule character; can search, investigate, connect, inspect, or guide.",{"type":56,"tag":249,"props":250,"children":252},"h3",{"id":251},"randomize-mascot-selection",[253],{"type":62,"value":254},"Randomize Mascot Selection",{"type":56,"tag":65,"props":256,"children":257},{},[258],{"type":62,"value":259},"After applying the semantic-role test, count only the images that need a mascot and do not already have a user-specified character. Randomize those slots by running the bundled selector once from the skill directory:",{"type":56,"tag":261,"props":262,"children":267},"pre",{"className":263,"code":264,"language":265,"meta":266,"style":266},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python3 scripts\u002Fselect_mascot.py --count \u003Cnumber-of-unspecified-mascot-slots>\n","bash","",[268],{"type":56,"tag":71,"props":269,"children":270},{"__ignoreMap":266},[271],{"type":56,"tag":272,"props":273,"children":276},"span",{"class":274,"line":275},"line",1,[277,283,289,294,300,305,311],{"type":56,"tag":272,"props":278,"children":280},{"style":279},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[281],{"type":62,"value":282},"python3",{"type":56,"tag":272,"props":284,"children":286},{"style":285},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[287],{"type":62,"value":288}," scripts\u002Fselect_mascot.py",{"type":56,"tag":272,"props":290,"children":291},{"style":285},[292],{"type":62,"value":293}," --count",{"type":56,"tag":272,"props":295,"children":297},{"style":296},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[298],{"type":62,"value":299}," \u003C",{"type":56,"tag":272,"props":301,"children":302},{"style":285},[303],{"type":62,"value":304},"number-of-unspecified-mascot-slot",{"type":56,"tag":272,"props":306,"children":308},{"style":307},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[309],{"type":62,"value":310},"s",{"type":56,"tag":272,"props":312,"children":313},{"style":296},[314],{"type":62,"value":315},">\n",{"type":56,"tag":65,"props":317,"children":318},{},[319,321,327,329,335],{"type":62,"value":320},"Assign the returned names to the mascot-bearing images in output order. For a single image, omit ",{"type":56,"tag":71,"props":322,"children":324},{"className":323},[],[325],{"type":62,"value":326},"--count",{"type":62,"value":328}," or pass ",{"type":56,"tag":71,"props":330,"children":332},{"className":331},[],[333],{"type":62,"value":334},"--count 1",{"type":62,"value":336},".",{"type":56,"tag":65,"props":338,"children":339},{},[340],{"type":62,"value":341},"The selector creates a fresh system-random order on every invocation. In a batch, it uses every character once before reshuffling and avoids the same character on adjacent slots. Use its output exactly: do not replace or rerun a valid result because another mascot seems more suitable for the scene. Do not run the selector for images that fail the semantic-role test.",{"type":56,"tag":65,"props":343,"children":344},{},[345,347,353],{"type":62,"value":346},"Inspect ",{"type":56,"tag":71,"props":348,"children":350},{"className":349},[],[351],{"type":62,"value":352},"assets\u002Fmeet-d-crew.jpg",{"type":62,"value":354}," with an image-viewing tool whenever a mascot will appear. Use it as the identity reference and preserve the selected character's silhouette, body color, face, and simple black limbs. Translate the character into the illustration style instead of copying the reference card layout or its surrounding text.",{"type":56,"tag":80,"props":356,"children":358},{"id":357},"compose-the-image-prompt",[359],{"type":62,"value":360},"Compose the Image Prompt",{"type":56,"tag":65,"props":362,"children":363},{},[364],{"type":62,"value":365},"Build a structured prompt with these fields:",{"type":56,"tag":261,"props":367,"children":371},{"className":368,"code":370,"language":62,"meta":266},[369],"language-text","Use case: infographic-diagram\nAsset type: Apache Doris technical article illustration\nPrimary request: \u003Ccontent and relationships from the user's brief>\nScene\u002Fbackdrop: \u003Conly what is needed to explain the content>\nSubject: \u003Cmain concepts, icons, arrows, and the mascot's action if included>\nStyle\u002Fmedium: \u003Cthe canonical style from references\u002Fvisual-style.md>\nComposition\u002Fframing: landscape 1200 x 630 with a clear reading order and generous margins\nText (verbatim): \u003Cexact English labels, or \"No text\">\nColor palette: \u003Cthe canonical palette from references\u002Fvisual-style.md>\nConstraints: technically faithful; readable labels; consistent icon scale; clear arrow direction; no extra text; no watermark; no photorealism; no 3D\nAvoid: decorative clutter; dense paragraphs; tiny labels; unrelated logos; mascot use without a semantic role\n",[372],{"type":56,"tag":71,"props":373,"children":374},{"__ignoreMap":266},[375],{"type":62,"value":370},{"type":56,"tag":65,"props":377,"children":378},{},[379],{"type":62,"value":380},"If using the D-Crew reference, add:",{"type":56,"tag":261,"props":382,"children":385},{"className":383,"code":384,"language":62,"meta":266},[369],"Input images: Image N is the D-Crew identity reference. Use only the selected mascot; do not reproduce the reference poster, logo lockup, cards, headings, or descriptive copy.\nCharacter consistency: preserve the selected mascot's recognizable geometry, color, face, and limbs; render it with the same hand-drawn marker linework as the rest of the illustration.\n",[386],{"type":56,"tag":71,"props":387,"children":388},{"__ignoreMap":266},[389],{"type":62,"value":384},{"type":56,"tag":65,"props":391,"children":392},{},[393],{"type":62,"value":394},"If the user also supplies a composition reference, identify each input image by number and role. Preserve the composition's information architecture without copying irrelevant artifacts.",{"type":56,"tag":80,"props":396,"children":398},{"id":397},"generate-and-review",[399],{"type":62,"value":400},"Generate and Review",{"type":56,"tag":87,"props":402,"children":403},{},[404,409,414,427,432,470],{"type":56,"tag":91,"props":405,"children":406},{},[407],{"type":62,"value":408},"Use the built-in image-generation tool by default.",{"type":56,"tag":91,"props":410,"children":411},{},[412],{"type":62,"value":413},"For a new image without a mascot or other supplied image reference, omit all reference-image parameters.",{"type":56,"tag":91,"props":415,"children":416},{},[417,419,425],{"type":62,"value":418},"When using a local mascot or composition reference, pass the required local files through ",{"type":56,"tag":71,"props":420,"children":422},{"className":421},[],[423],{"type":62,"value":424},"referenced_image_paths",{"type":62,"value":426}," and describe each image's role explicitly.",{"type":56,"tag":91,"props":428,"children":429},{},[430],{"type":62,"value":431},"Save the final image in the user's project or requested destination as a PNG with a descriptive filename.",{"type":56,"tag":91,"props":433,"children":434},{},[435,437],{"type":62,"value":436},"Inspect the result at full resolution. Verify:\n",{"type":56,"tag":144,"props":438,"children":439},{},[440,445,450,455,460,465],{"type":56,"tag":91,"props":441,"children":442},{},[443],{"type":62,"value":444},"all requested concepts and relationships are present;",{"type":56,"tag":91,"props":446,"children":447},{},[448],{"type":62,"value":449},"arrow directions and process order are correct;",{"type":56,"tag":91,"props":451,"children":452},{},[453],{"type":62,"value":454},"every label is English, legible, and spelled correctly;",{"type":56,"tag":91,"props":456,"children":457},{},[458],{"type":62,"value":459},"no unrequested wording appears;",{"type":56,"tag":91,"props":461,"children":462},{},[463],{"type":62,"value":464},"the mascot decision adds meaning, and the chosen character follows the random rotation or the user's explicit request;",{"type":56,"tag":91,"props":466,"children":467},{},[468],{"type":62,"value":469},"the image follows the canonical palette, background, linework, and dimensions.",{"type":56,"tag":91,"props":471,"children":472},{},[473],{"type":62,"value":474},"If any verification fails, refine the smallest necessary area and inspect again.",{"type":56,"tag":80,"props":476,"children":478},{"id":477},"invocation-examples",[479],{"type":62,"value":480},"Invocation Examples",{"type":56,"tag":261,"props":482,"children":485},{"className":483,"code":484,"language":62,"meta":266},[369],"$doris-img-gen Show a query diagnosis loop with the exact labels \"Hypothesis\", \"Evidence\", \"Observation\", and \"Elimination\". A data investigator reviews profile, plan, chart, and checklist evidence.\n",[486],{"type":56,"tag":71,"props":487,"children":488},{"__ignoreMap":266},[489],{"type":62,"value":484},{"type":56,"tag":261,"props":491,"children":494},{"className":492,"code":493,"language":62,"meta":266},[369],"$doris-img-gen Draw a left-to-right Doris data flow from client to FE to BE to object storage. Use no mascot and no text beyond the component labels.\n",[495],{"type":56,"tag":71,"props":496,"children":497},{"__ignoreMap":266},[498],{"type":62,"value":493},{"type":56,"tag":500,"props":501,"children":502},"style",{},[503],{"type":62,"value":504},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":506,"total":560},[507,523,535,541],{"slug":508,"name":508,"fn":509,"description":510,"org":511,"tags":512,"stars":22,"repoUrl":23,"updatedAt":522},"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},[513,516,519],{"name":514,"slug":515,"type":15},"Deployment","deployment",{"name":517,"slug":518,"type":15},"Documentation","documentation",{"name":520,"slug":521,"type":15},"Technical Writing","technical-writing","2026-08-23T03:34:43.915261",{"slug":524,"name":524,"fn":525,"description":526,"org":527,"tags":528,"stars":22,"repoUrl":23,"updatedAt":534},"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},[529,530,533],{"name":517,"slug":518,"type":15},{"name":531,"slug":532,"type":15},"SEO","seo",{"name":520,"slug":521,"type":15},"2026-07-12T08:32:44.549641",{"slug":4,"name":4,"fn":5,"description":6,"org":536,"tags":537,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[538,539,540],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":13,"slug":14,"type":15},{"slug":542,"name":542,"fn":543,"description":544,"org":545,"tags":546,"stars":22,"repoUrl":23,"updatedAt":559},"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},[547,550,553,556],{"name":548,"slug":549,"type":15},"Communications","communications",{"name":551,"slug":552,"type":15},"Reporting","reporting",{"name":554,"slug":555,"type":15},"Slack","slack",{"name":557,"slug":558,"type":15},"Writing","writing","2026-07-12T08:32:45.997147",4,{"items":562,"total":727},[563,582,600,614,628,641,654,667,685,696,706,717],{"slug":564,"name":565,"fn":566,"description":567,"org":568,"tags":569,"stars":579,"repoUrl":580,"updatedAt":581},"computer-use","Computer Use","operate local desktop applications","Use when the user asks to inspect or operate a local desktop application UI, including reading windows, clicking controls, filling forms, using menus, scrolling lists, moving windows, or waiting for dialogs. Trigger for requests such as \"operate this app\", \"do this in TextEdit\u002FCalculator\u002FSettings\", \"look at the current window\", or \"click\u002Ftype\u002Fscroll\"; prefer Browser tools for web pages and non-GUI tools for files or terminal work.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[570,573,576],{"name":571,"slug":572,"type":15},"Automation","automation",{"name":574,"slug":575,"type":15},"Desktop","desktop",{"name":577,"slug":578,"type":15},"MCP","mcp",1580,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fmaka","2026-08-20T03:52:55.588112",{"slug":583,"name":583,"fn":584,"description":585,"org":586,"tags":587,"stars":597,"repoUrl":598,"updatedAt":599},"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},[588,591,594],{"name":589,"slug":590,"type":15},"Data Analysis","data-analysis",{"name":592,"slug":593,"type":15},"Python","python",{"name":595,"slug":596,"type":15},"SQL","sql",593,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fdatafusion-python","2026-07-12T08:36:04.957626",{"slug":601,"name":601,"fn":602,"description":603,"org":604,"tags":605,"stars":611,"repoUrl":612,"updatedAt":613},"flink-agents-dev","build and debug Apache Flink agents","Use when building, scaffolding, modifying, debugging, converting, or verifying Apache Flink Agents applications, including Flink Agents YAML, Workflow Agent, ReAct Agent, Actions, Resources, MCP servers, vector stores, runtime skills, Python, or Java. Do not use for ordinary Flink jobs that do not use Flink Agents.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[606,609,610],{"name":607,"slug":608,"type":15},"Agents","agents",{"name":571,"slug":572,"type":15},{"name":577,"slug":578,"type":15},421,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fflink-agents","2026-08-07T05:03:37.315408",{"slug":615,"name":615,"fn":616,"description":617,"org":618,"tags":619,"stars":625,"repoUrl":626,"updatedAt":627},"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},[620,622,624],{"name":621,"slug":28,"type":15},"Analytics",{"name":623,"slug":31,"type":15},"Database",{"name":595,"slug":596,"type":15},344,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fskywalking-banyandb","2026-07-12T08:31:01.294423",{"slug":629,"name":629,"fn":630,"description":631,"org":632,"tags":633,"stars":625,"repoUrl":626,"updatedAt":640},"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},[634,637],{"name":635,"slug":636,"type":15},"Build","build",{"name":638,"slug":639,"type":15},"Engineering","engineering","2026-07-12T08:31:06.373309",{"slug":642,"name":642,"fn":643,"description":644,"org":645,"tags":646,"stars":625,"repoUrl":626,"updatedAt":653},"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},[647,650],{"name":648,"slug":649,"type":15},"GitHub","github",{"name":651,"slug":652,"type":15},"Pull Requests","pull-requests","2026-07-12T08:31:03.792415",{"slug":655,"name":655,"fn":656,"description":657,"org":658,"tags":659,"stars":625,"repoUrl":626,"updatedAt":666},"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},[660,663],{"name":661,"slug":662,"type":15},"Go","go",{"name":664,"slug":665,"type":15},"Node.js","node-js","2026-07-12T08:31:02.555555",{"slug":668,"name":668,"fn":669,"description":670,"org":671,"tags":672,"stars":682,"repoUrl":683,"updatedAt":684},"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},[673,676,679],{"name":674,"slug":675,"type":15},"Data Modeling","data-modeling",{"name":677,"slug":678,"type":15},"Java","java",{"name":680,"slug":681,"type":15},"ORM","orm",343,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fcayenne","2026-08-10T04:19:27.571948",{"slug":686,"name":686,"fn":687,"description":688,"org":689,"tags":690,"stars":682,"repoUrl":683,"updatedAt":695},"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},[691,692,693,694],{"name":623,"slug":31,"type":15},{"name":677,"slug":678,"type":15},{"name":680,"slug":681,"type":15},{"name":595,"slug":596,"type":15},"2026-07-19T05:40:33.655062",{"slug":697,"name":697,"fn":698,"description":699,"org":700,"tags":701,"stars":682,"repoUrl":683,"updatedAt":705},"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},[702,703,704],{"name":623,"slug":31,"type":15},{"name":677,"slug":678,"type":15},{"name":680,"slug":681,"type":15},"2026-07-19T06:03:49.112969",{"slug":707,"name":707,"fn":708,"description":709,"org":710,"tags":711,"stars":682,"repoUrl":683,"updatedAt":716},"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},[712,713,714,715],{"name":674,"slug":675,"type":15},{"name":623,"slug":31,"type":15},{"name":677,"slug":678,"type":15},{"name":680,"slug":681,"type":15},"2026-07-22T05:35:32.342548",{"slug":718,"name":718,"fn":719,"description":720,"org":721,"tags":722,"stars":682,"repoUrl":683,"updatedAt":726},"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},[723,724,725],{"name":674,"slug":675,"type":15},{"name":677,"slug":678,"type":15},{"name":680,"slug":681,"type":15},"2026-07-12T08:32:37.199428",115]