[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-qwen-qwen-mm-plugins-freecad":3,"mdc-ee7z0s-key":37,"related-org-qwen-qwen-mm-plugins-freecad":707,"related-repo-qwen-qwen-mm-plugins-freecad":890},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"qwen-mm-plugins-freecad","model parts and assemblies in FreeCAD","Use whenever a task involves parametric CAD in FreeCAD — modeling parts and assemblies, editing object properties, technical drawings, importing\u002Fexporting STEP\u002FSTL\u002FOBJ\u002FDXF, PDF\u002FExcel reports from a model, or finite-element (FEM\u002FCalculiX) analysis. Requires a running FreeCAD instance with the FreeCADMCP addon (see Prerequisite).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"qwen","Qwen","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fqwen.png","QwenLM",[13,17,20,23],{"name":14,"slug":15,"type":16},"CAD","cad","tag",{"name":18,"slug":19,"type":16},"3D","3d",{"name":21,"slug":22,"type":16},"Engineering","engineering",{"name":24,"slug":25,"type":16},"Design","design",54,"https:\u002F\u002Fgithub.com\u002FQwenLM\u002FQwen-MM-Plugins","2026-08-05T05:58:40.567406",null,0,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Make any agent harness multimodal-native.","https:\u002F\u002Fgithub.com\u002FQwenLM\u002FQwen-MM-Plugins\u002Ftree\u002FHEAD\u002Fsrc\u002Fcapabilities\u002Ffreecad\u002Fskill","---\nname: qwen-mm-plugins-freecad\ndescription: Use whenever a task involves parametric CAD in FreeCAD — modeling parts and assemblies, editing object properties, technical drawings, importing\u002Fexporting STEP\u002FSTL\u002FOBJ\u002FDXF, PDF\u002FExcel reports from a model, or finite-element (FEM\u002FCalculiX) analysis. Requires a running FreeCAD instance with the FreeCADMCP addon (see Prerequisite).\n---\n\nYou build parametric CAD content in FreeCAD by creating\u002Fediting document objects and, when needed, writing Python — against a **running** FreeCAD instance.\n\n## Prerequisite: a live FreeCAD + addon (started for you on first use)\n\nThese tools are a **thin client**: they talk XML-RPC to a **running** FreeCAD carrying the FreeCADMCP\naddon (bundled in this plugin), and do **not** launch FreeCAD while serving. Normally you start\nnothing — just call a tool.\n\n- **Default (plugin install):** `QWEN_MM_AUTOLAUNCH=1` is preset, so the **first tool call** brings\n  FreeCAD up itself: it auto-installs the pinned FreeCAD 1.1.x if missing (Linux-x86_64, rootless,\n  FUSE-free AppImage, ~1 GB one-time), copies the bundled addon into your FreeCAD Mod dir, and starts\n  it on `$FREECAD_RPC_HOST:$FREECAD_RPC_PORT` (default `localhost:9875`). Just call a tool such as\n  `get_objects`; the **first** call may take a couple of minutes while it downloads (expected), later\n  calls are instant.\n- **Don't shell out to `qwen-mm-plugins-freecad --launch-app` under a plugin install** — that console\n  entry lives inside the uvx environment, not your shell PATH (`command not found`). Use it only from\n  a source checkout, or for a manual \u002F GUI start:\n  ```bash\n  python3 src\u002Fcapabilities\u002Ffreecad\u002Fqwen_mm_plugins_freecad --launch-app        # headless (xvfb)\n  python3 src\u002Fcapabilities\u002Ffreecad\u002Fqwen_mm_plugins_freecad --launch-app --gui  # real display\n  ```\n\nAuto-launch can't cover a few things: (1) auto-download is **Linux-x86_64 only** — elsewhere install\nFreeCAD yourself (`apt install freecad`, or extract an AppImage and set `FREECAD_BINARY=\u003CAppRun>`);\n(2) a headless box needs a virtual display (`apt install xvfb`, needs root); (3) FEM needs the\nCalculiX solver (`ccx`) on PATH. If a tool reports it can't connect, it's almost always one of the\nfirst two — the error message spells out which; from a checkout, `... --check-system` lists every\nmissing system tool. Set `FREECAD_ONLY_TEXT_FEEDBACK=1` to drop the screenshot most tools attach.\n\n## Asset creation strategy\n\nWhen creating content in FreeCAD, follow these steps:\n\n0. Before starting any task, always use `get_objects` to confirm the current state of the document (and `list_documents` \u002F `create_document` as needed).\n1. **Utilize the parts library**: check available parts with `get_parts_list`; if the required part exists, use `insert_part_from_library` to insert it.\n2. **If the part isn't in the library**: create basic shapes (`Part::Box`, `Part::Cylinder`, `Part::Sphere`, `Draft::*`, `PartDesign::*`, …) with `create_object`, then refine detailed properties with `edit_object`.\n3. Always assign clear, descriptive names to objects.\n4. Explicitly set position, scale, and rotation (Placement) via `create_object`\u002F`edit_object` to ensure correct spatial relationships.\n5. After editing an object, **verify** the properties actually applied using `get_object`.\n6. For detailed customization or specialized operations, use `execute_code` to run custom Python.\n\nOnly fall back to basic creation methods when: the asset isn't in the parts library, a basic shape is explicitly requested, or a complex shape requires custom scripting.\n\n## execute_code vs execute_code_async\n\n- **`execute_code`** runs on FreeCAD's GUI thread — the safe default for anything that touches documents, document objects, `FreeCADGui`, the active view, selection, `recompute()`, or save.\n- **`execute_code_async`** runs in a background thread — ONLY for long, pure OCCT\u002FCPU computations that do NOT touch the GUI or the document tree. Pattern: fetch shapes with `execute_code`, stash intermediates in a module-level Python variable, run the heavy compute async, then apply results back via `execute_code`.\n\n## Visual verification\n\nUse `get_view` (Isometric\u002FFront\u002FTop\u002F…) to inspect geometry, and re-check with `get_object` after edits. Most mutating tools already return a screenshot unless `FREECAD_ONLY_TEXT_FEEDBACK` is set.\n\n## FEM (finite-element) analysis\n\n`run_fem_analysis` runs the CalculiX solver on a `Fem::AnalysisPython` container. Prerequisites in the document: a solid geometry, a `Fem::MaterialCommon`, a `Fem::FemMeshGmsh` referencing the geometry, and at least one `Fem::ConstraintFixed` + one `Fem::ConstraintForce`\u002F`ConstraintPressure` — all added to the analysis (create them via `create_object`). CalculiX (`ccx`) must be installed. Returns max von Mises stress, max\u002Fmin displacement, and node count.\n\n## Output files\n\nSave the final `.FCStd` and any generated outputs (images, PDFs, Excel, STEP\u002FSTL\u002FOBJ\u002FDXF exports) to the `exports\u002F` directory unless the task specifies otherwise.\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,58,65,90,244,304,310,315,492,497,503,562,568,596,602,674,680,701],{"type":43,"tag":44,"props":45,"children":46},"element","p",{},[47,50,56],{"type":48,"value":49},"text","You build parametric CAD content in FreeCAD by creating\u002Fediting document objects and, when needed, writing Python — against a ",{"type":43,"tag":51,"props":52,"children":53},"strong",{},[54],{"type":48,"value":55},"running",{"type":48,"value":57}," FreeCAD instance.",{"type":43,"tag":59,"props":60,"children":62},"h2",{"id":61},"prerequisite-a-live-freecad-addon-started-for-you-on-first-use",[63],{"type":48,"value":64},"Prerequisite: a live FreeCAD + addon (started for you on first use)",{"type":43,"tag":44,"props":66,"children":67},{},[68,70,75,77,81,83,88],{"type":48,"value":69},"These tools are a ",{"type":43,"tag":51,"props":71,"children":72},{},[73],{"type":48,"value":74},"thin client",{"type":48,"value":76},": they talk XML-RPC to a ",{"type":43,"tag":51,"props":78,"children":79},{},[80],{"type":48,"value":55},{"type":48,"value":82}," FreeCAD carrying the FreeCADMCP\naddon (bundled in this plugin), and do ",{"type":43,"tag":51,"props":84,"children":85},{},[86],{"type":48,"value":87},"not",{"type":48,"value":89}," launch FreeCAD while serving. Normally you start\nnothing — just call a tool.",{"type":43,"tag":91,"props":92,"children":93},"ul",{},[94,152],{"type":43,"tag":95,"props":96,"children":97},"li",{},[98,103,105,112,114,119,121,127,129,135,137,143,145,150],{"type":43,"tag":51,"props":99,"children":100},{},[101],{"type":48,"value":102},"Default (plugin install):",{"type":48,"value":104}," ",{"type":43,"tag":106,"props":107,"children":109},"code",{"className":108},[],[110],{"type":48,"value":111},"QWEN_MM_AUTOLAUNCH=1",{"type":48,"value":113}," is preset, so the ",{"type":43,"tag":51,"props":115,"children":116},{},[117],{"type":48,"value":118},"first tool call",{"type":48,"value":120}," brings\nFreeCAD up itself: it auto-installs the pinned FreeCAD 1.1.x if missing (Linux-x86_64, rootless,\nFUSE-free AppImage, ~1 GB one-time), copies the bundled addon into your FreeCAD Mod dir, and starts\nit on ",{"type":43,"tag":106,"props":122,"children":124},{"className":123},[],[125],{"type":48,"value":126},"$FREECAD_RPC_HOST:$FREECAD_RPC_PORT",{"type":48,"value":128}," (default ",{"type":43,"tag":106,"props":130,"children":132},{"className":131},[],[133],{"type":48,"value":134},"localhost:9875",{"type":48,"value":136},"). Just call a tool such as\n",{"type":43,"tag":106,"props":138,"children":140},{"className":139},[],[141],{"type":48,"value":142},"get_objects",{"type":48,"value":144},"; the ",{"type":43,"tag":51,"props":146,"children":147},{},[148],{"type":48,"value":149},"first",{"type":48,"value":151}," call may take a couple of minutes while it downloads (expected), later\ncalls are instant.",{"type":43,"tag":95,"props":153,"children":154},{},[155,168,170,176,178],{"type":43,"tag":51,"props":156,"children":157},{},[158,160,166],{"type":48,"value":159},"Don't shell out to ",{"type":43,"tag":106,"props":161,"children":163},{"className":162},[],[164],{"type":48,"value":165},"qwen-mm-plugins-freecad --launch-app",{"type":48,"value":167}," under a plugin install",{"type":48,"value":169}," — that console\nentry lives inside the uvx environment, not your shell PATH (",{"type":43,"tag":106,"props":171,"children":173},{"className":172},[],[174],{"type":48,"value":175},"command not found",{"type":48,"value":177},"). Use it only from\na source checkout, or for a manual \u002F GUI start:\n",{"type":43,"tag":179,"props":180,"children":185},"pre",{"className":181,"code":182,"language":183,"meta":184,"style":184},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python3 src\u002Fcapabilities\u002Ffreecad\u002Fqwen_mm_plugins_freecad --launch-app        # headless (xvfb)\npython3 src\u002Fcapabilities\u002Ffreecad\u002Fqwen_mm_plugins_freecad --launch-app --gui  # real display\n","bash","",[186],{"type":43,"tag":106,"props":187,"children":188},{"__ignoreMap":184},[189,218],{"type":43,"tag":190,"props":191,"children":194},"span",{"class":192,"line":193},"line",1,[195,201,207,212],{"type":43,"tag":190,"props":196,"children":198},{"style":197},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[199],{"type":48,"value":200},"python3",{"type":43,"tag":190,"props":202,"children":204},{"style":203},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[205],{"type":48,"value":206}," src\u002Fcapabilities\u002Ffreecad\u002Fqwen_mm_plugins_freecad",{"type":43,"tag":190,"props":208,"children":209},{"style":203},[210],{"type":48,"value":211}," --launch-app",{"type":43,"tag":190,"props":213,"children":215},{"style":214},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[216],{"type":48,"value":217},"        # headless (xvfb)\n",{"type":43,"tag":190,"props":219,"children":221},{"class":192,"line":220},2,[222,226,230,234,239],{"type":43,"tag":190,"props":223,"children":224},{"style":197},[225],{"type":48,"value":200},{"type":43,"tag":190,"props":227,"children":228},{"style":203},[229],{"type":48,"value":206},{"type":43,"tag":190,"props":231,"children":232},{"style":203},[233],{"type":48,"value":211},{"type":43,"tag":190,"props":235,"children":236},{"style":203},[237],{"type":48,"value":238}," --gui",{"type":43,"tag":190,"props":240,"children":241},{"style":214},[242],{"type":48,"value":243},"  # real display\n",{"type":43,"tag":44,"props":245,"children":246},{},[247,249,254,256,262,264,270,272,278,280,286,288,294,296,302],{"type":48,"value":248},"Auto-launch can't cover a few things: (1) auto-download is ",{"type":43,"tag":51,"props":250,"children":251},{},[252],{"type":48,"value":253},"Linux-x86_64 only",{"type":48,"value":255}," — elsewhere install\nFreeCAD yourself (",{"type":43,"tag":106,"props":257,"children":259},{"className":258},[],[260],{"type":48,"value":261},"apt install freecad",{"type":48,"value":263},", or extract an AppImage and set ",{"type":43,"tag":106,"props":265,"children":267},{"className":266},[],[268],{"type":48,"value":269},"FREECAD_BINARY=\u003CAppRun>",{"type":48,"value":271},");\n(2) a headless box needs a virtual display (",{"type":43,"tag":106,"props":273,"children":275},{"className":274},[],[276],{"type":48,"value":277},"apt install xvfb",{"type":48,"value":279},", needs root); (3) FEM needs the\nCalculiX solver (",{"type":43,"tag":106,"props":281,"children":283},{"className":282},[],[284],{"type":48,"value":285},"ccx",{"type":48,"value":287},") on PATH. If a tool reports it can't connect, it's almost always one of the\nfirst two — the error message spells out which; from a checkout, ",{"type":43,"tag":106,"props":289,"children":291},{"className":290},[],[292],{"type":48,"value":293},"... --check-system",{"type":48,"value":295}," lists every\nmissing system tool. Set ",{"type":43,"tag":106,"props":297,"children":299},{"className":298},[],[300],{"type":48,"value":301},"FREECAD_ONLY_TEXT_FEEDBACK=1",{"type":48,"value":303}," to drop the screenshot most tools attach.",{"type":43,"tag":59,"props":305,"children":307},{"id":306},"asset-creation-strategy",[308],{"type":48,"value":309},"Asset creation strategy",{"type":43,"tag":44,"props":311,"children":312},{},[313],{"type":48,"value":314},"When creating content in FreeCAD, follow these steps:",{"type":43,"tag":316,"props":317,"children":318},"ol",{"start":30},[319,347,373,436,441,460,479],{"type":43,"tag":95,"props":320,"children":321},{},[322,324,329,331,337,339,345],{"type":48,"value":323},"Before starting any task, always use ",{"type":43,"tag":106,"props":325,"children":327},{"className":326},[],[328],{"type":48,"value":142},{"type":48,"value":330}," to confirm the current state of the document (and ",{"type":43,"tag":106,"props":332,"children":334},{"className":333},[],[335],{"type":48,"value":336},"list_documents",{"type":48,"value":338}," \u002F ",{"type":43,"tag":106,"props":340,"children":342},{"className":341},[],[343],{"type":48,"value":344},"create_document",{"type":48,"value":346}," as needed).",{"type":43,"tag":95,"props":348,"children":349},{},[350,355,357,363,365,371],{"type":43,"tag":51,"props":351,"children":352},{},[353],{"type":48,"value":354},"Utilize the parts library",{"type":48,"value":356},": check available parts with ",{"type":43,"tag":106,"props":358,"children":360},{"className":359},[],[361],{"type":48,"value":362},"get_parts_list",{"type":48,"value":364},"; if the required part exists, use ",{"type":43,"tag":106,"props":366,"children":368},{"className":367},[],[369],{"type":48,"value":370},"insert_part_from_library",{"type":48,"value":372}," to insert it.",{"type":43,"tag":95,"props":374,"children":375},{},[376,381,383,389,391,397,398,404,405,411,412,418,420,426,428,434],{"type":43,"tag":51,"props":377,"children":378},{},[379],{"type":48,"value":380},"If the part isn't in the library",{"type":48,"value":382},": create basic shapes (",{"type":43,"tag":106,"props":384,"children":386},{"className":385},[],[387],{"type":48,"value":388},"Part::Box",{"type":48,"value":390},", ",{"type":43,"tag":106,"props":392,"children":394},{"className":393},[],[395],{"type":48,"value":396},"Part::Cylinder",{"type":48,"value":390},{"type":43,"tag":106,"props":399,"children":401},{"className":400},[],[402],{"type":48,"value":403},"Part::Sphere",{"type":48,"value":390},{"type":43,"tag":106,"props":406,"children":408},{"className":407},[],[409],{"type":48,"value":410},"Draft::*",{"type":48,"value":390},{"type":43,"tag":106,"props":413,"children":415},{"className":414},[],[416],{"type":48,"value":417},"PartDesign::*",{"type":48,"value":419},", …) with ",{"type":43,"tag":106,"props":421,"children":423},{"className":422},[],[424],{"type":48,"value":425},"create_object",{"type":48,"value":427},", then refine detailed properties with ",{"type":43,"tag":106,"props":429,"children":431},{"className":430},[],[432],{"type":48,"value":433},"edit_object",{"type":48,"value":435},".",{"type":43,"tag":95,"props":437,"children":438},{},[439],{"type":48,"value":440},"Always assign clear, descriptive names to objects.",{"type":43,"tag":95,"props":442,"children":443},{},[444,446,451,453,458],{"type":48,"value":445},"Explicitly set position, scale, and rotation (Placement) via ",{"type":43,"tag":106,"props":447,"children":449},{"className":448},[],[450],{"type":48,"value":425},{"type":48,"value":452},"\u002F",{"type":43,"tag":106,"props":454,"children":456},{"className":455},[],[457],{"type":48,"value":433},{"type":48,"value":459}," to ensure correct spatial relationships.",{"type":43,"tag":95,"props":461,"children":462},{},[463,465,470,472,478],{"type":48,"value":464},"After editing an object, ",{"type":43,"tag":51,"props":466,"children":467},{},[468],{"type":48,"value":469},"verify",{"type":48,"value":471}," the properties actually applied using ",{"type":43,"tag":106,"props":473,"children":475},{"className":474},[],[476],{"type":48,"value":477},"get_object",{"type":48,"value":435},{"type":43,"tag":95,"props":480,"children":481},{},[482,484,490],{"type":48,"value":483},"For detailed customization or specialized operations, use ",{"type":43,"tag":106,"props":485,"children":487},{"className":486},[],[488],{"type":48,"value":489},"execute_code",{"type":48,"value":491}," to run custom Python.",{"type":43,"tag":44,"props":493,"children":494},{},[495],{"type":48,"value":496},"Only fall back to basic creation methods when: the asset isn't in the parts library, a basic shape is explicitly requested, or a complex shape requires custom scripting.",{"type":43,"tag":59,"props":498,"children":500},{"id":499},"execute_code-vs-execute_code_async",[501],{"type":48,"value":502},"execute_code vs execute_code_async",{"type":43,"tag":91,"props":504,"children":505},{},[506,535],{"type":43,"tag":95,"props":507,"children":508},{},[509,517,519,525,527,533],{"type":43,"tag":51,"props":510,"children":511},{},[512],{"type":43,"tag":106,"props":513,"children":515},{"className":514},[],[516],{"type":48,"value":489},{"type":48,"value":518}," runs on FreeCAD's GUI thread — the safe default for anything that touches documents, document objects, ",{"type":43,"tag":106,"props":520,"children":522},{"className":521},[],[523],{"type":48,"value":524},"FreeCADGui",{"type":48,"value":526},", the active view, selection, ",{"type":43,"tag":106,"props":528,"children":530},{"className":529},[],[531],{"type":48,"value":532},"recompute()",{"type":48,"value":534},", or save.",{"type":43,"tag":95,"props":536,"children":537},{},[538,547,549,554,556,561],{"type":43,"tag":51,"props":539,"children":540},{},[541],{"type":43,"tag":106,"props":542,"children":544},{"className":543},[],[545],{"type":48,"value":546},"execute_code_async",{"type":48,"value":548}," runs in a background thread — ONLY for long, pure OCCT\u002FCPU computations that do NOT touch the GUI or the document tree. Pattern: fetch shapes with ",{"type":43,"tag":106,"props":550,"children":552},{"className":551},[],[553],{"type":48,"value":489},{"type":48,"value":555},", stash intermediates in a module-level Python variable, run the heavy compute async, then apply results back via ",{"type":43,"tag":106,"props":557,"children":559},{"className":558},[],[560],{"type":48,"value":489},{"type":48,"value":435},{"type":43,"tag":59,"props":563,"children":565},{"id":564},"visual-verification",[566],{"type":48,"value":567},"Visual verification",{"type":43,"tag":44,"props":569,"children":570},{},[571,573,579,581,586,588,594],{"type":48,"value":572},"Use ",{"type":43,"tag":106,"props":574,"children":576},{"className":575},[],[577],{"type":48,"value":578},"get_view",{"type":48,"value":580}," (Isometric\u002FFront\u002FTop\u002F…) to inspect geometry, and re-check with ",{"type":43,"tag":106,"props":582,"children":584},{"className":583},[],[585],{"type":48,"value":477},{"type":48,"value":587}," after edits. Most mutating tools already return a screenshot unless ",{"type":43,"tag":106,"props":589,"children":591},{"className":590},[],[592],{"type":48,"value":593},"FREECAD_ONLY_TEXT_FEEDBACK",{"type":48,"value":595}," is set.",{"type":43,"tag":59,"props":597,"children":599},{"id":598},"fem-finite-element-analysis",[600],{"type":48,"value":601},"FEM (finite-element) analysis",{"type":43,"tag":44,"props":603,"children":604},{},[605,611,613,619,621,627,629,635,637,643,645,651,652,658,660,665,667,672],{"type":43,"tag":106,"props":606,"children":608},{"className":607},[],[609],{"type":48,"value":610},"run_fem_analysis",{"type":48,"value":612}," runs the CalculiX solver on a ",{"type":43,"tag":106,"props":614,"children":616},{"className":615},[],[617],{"type":48,"value":618},"Fem::AnalysisPython",{"type":48,"value":620}," container. Prerequisites in the document: a solid geometry, a ",{"type":43,"tag":106,"props":622,"children":624},{"className":623},[],[625],{"type":48,"value":626},"Fem::MaterialCommon",{"type":48,"value":628},", a ",{"type":43,"tag":106,"props":630,"children":632},{"className":631},[],[633],{"type":48,"value":634},"Fem::FemMeshGmsh",{"type":48,"value":636}," referencing the geometry, and at least one ",{"type":43,"tag":106,"props":638,"children":640},{"className":639},[],[641],{"type":48,"value":642},"Fem::ConstraintFixed",{"type":48,"value":644}," + one ",{"type":43,"tag":106,"props":646,"children":648},{"className":647},[],[649],{"type":48,"value":650},"Fem::ConstraintForce",{"type":48,"value":452},{"type":43,"tag":106,"props":653,"children":655},{"className":654},[],[656],{"type":48,"value":657},"ConstraintPressure",{"type":48,"value":659}," — all added to the analysis (create them via ",{"type":43,"tag":106,"props":661,"children":663},{"className":662},[],[664],{"type":48,"value":425},{"type":48,"value":666},"). CalculiX (",{"type":43,"tag":106,"props":668,"children":670},{"className":669},[],[671],{"type":48,"value":285},{"type":48,"value":673},") must be installed. Returns max von Mises stress, max\u002Fmin displacement, and node count.",{"type":43,"tag":59,"props":675,"children":677},{"id":676},"output-files",[678],{"type":48,"value":679},"Output files",{"type":43,"tag":44,"props":681,"children":682},{},[683,685,691,693,699],{"type":48,"value":684},"Save the final ",{"type":43,"tag":106,"props":686,"children":688},{"className":687},[],[689],{"type":48,"value":690},".FCStd",{"type":48,"value":692}," and any generated outputs (images, PDFs, Excel, STEP\u002FSTL\u002FOBJ\u002FDXF exports) to the ",{"type":43,"tag":106,"props":694,"children":696},{"className":695},[],[697],{"type":48,"value":698},"exports\u002F",{"type":48,"value":700}," directory unless the task specifies otherwise.",{"type":43,"tag":702,"props":703,"children":704},"style",{},[705],{"type":48,"value":706},"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":708,"total":889},[709,724,743,759,775,789,803,817,830,844,856,871],{"slug":710,"name":710,"fn":711,"description":712,"org":713,"tags":714,"stars":721,"repoUrl":722,"updatedAt":723},"batch","execute parallel batch operations on files","Execute batch operations on multiple files in parallel. Automatically discovers files, splits into chunks, and processes with parallel worker agents. Use `\u002Fbatch` followed by operation and file pattern.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[715,718],{"name":716,"slug":717,"type":16},"Automation","automation",{"name":719,"slug":720,"type":16},"Concurrency","concurrency",26008,"https:\u002F\u002Fgithub.com\u002FQwenLM\u002Fqwen-code","2026-07-20T05:58:45.650067",{"slug":725,"name":725,"fn":726,"description":727,"org":728,"tags":729,"stars":721,"repoUrl":722,"updatedAt":742},"cua-driver-rs","drive native GUI applications via MCP","Drive a native GUI app (macOS, Windows, Linux) via the cua-driver CLI (default) or MCP server — snapshot its accessibility tree, click\u002Ftype\u002Fscroll by element_index or pixel coords, verify via re-snapshot, all without bringing the target to the foreground. Use when the user asks you to operate, drive, automate, or perform a GUI task in a real application on the host.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[730,733,736,739],{"name":731,"slug":732,"type":16},"Accessibility","accessibility",{"name":734,"slug":735,"type":16},"Browser Automation","browser-automation",{"name":737,"slug":738,"type":16},"Desktop","desktop",{"name":740,"slug":741,"type":16},"MCP","mcp","2026-07-16T05:59:28.687299",{"slug":744,"name":744,"fn":745,"description":746,"org":747,"tags":748,"stars":721,"repoUrl":722,"updatedAt":758},"dataviz","design and validate data visualizations","Design guidance for charts, graphs, dashboards, maps, and data visualizations, including a local palette validator.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[749,752,755],{"name":750,"slug":751,"type":16},"Charts","charts",{"name":753,"slug":754,"type":16},"Dashboards","dashboards",{"name":756,"slug":757,"type":16},"Data Visualization","data-visualization","2026-07-16T05:59:28.31755",{"slug":760,"name":760,"fn":761,"description":762,"org":763,"tags":764,"stars":721,"repoUrl":722,"updatedAt":774},"extension-creator","create Qwen Code extensions","Create, scaffold, customize, validate, and locally test Qwen Code extensions. Use when the user wants a new Qwen Code extension, needs help choosing an extension template, wants to add QWEN.md context, commands, skills, agents, MCP servers, settings, hooks, channels, or LSP servers, or asks how to link and test an extension locally. Invoke with `\u002Fextension-creator` followed by an extension path and optional template name.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[765,768,771],{"name":766,"slug":767,"type":16},"Coding","coding",{"name":769,"slug":770,"type":16},"Documentation","documentation",{"name":772,"slug":773,"type":16},"Plugin Development","plugin-development","2026-07-16T05:59:24.818967",{"slug":776,"name":776,"fn":777,"description":778,"org":779,"tags":780,"stars":721,"repoUrl":722,"updatedAt":788},"loop","run scheduled or self-paced prompt loops","Create a loop that runs a prompt now and follows up either on a fixed schedule or through self-paced wakeups. Usage - \u002Floop check the build, \u002Floop 5m check the build, \u002Floop check the PR every 30m. \u002Floop list to show jobs, \u002Floop clear to cancel all.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[781,782,785],{"name":716,"slug":717,"type":16},{"name":783,"slug":784,"type":16},"Productivity","productivity",{"name":786,"slug":787,"type":16},"Scheduling","scheduling","2026-07-16T05:59:25.50027",{"slug":790,"name":790,"fn":791,"description":792,"org":793,"tags":794,"stars":721,"repoUrl":722,"updatedAt":802},"new-app","build new applications from scratch","Workflow for creating new applications from scratch. Covers requirements gathering, tech stack selection, scaffolding, implementation, and delivery of a functional prototype.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[795,796,799],{"name":21,"slug":22,"type":16},{"name":797,"slug":798,"type":16},"Prototyping","prototyping",{"name":800,"slug":801,"type":16},"Web Development","web-development","2026-07-16T05:59:25.157573",{"slug":804,"name":804,"fn":805,"description":806,"org":807,"tags":808,"stars":721,"repoUrl":722,"updatedAt":816},"qc-helper","provide Qwen Code usage and configuration support","Answer any question about Qwen Code usage, features, configuration, and troubleshooting by referencing the official user documentation. Also helps users view or modify their settings.json. Invoke with `\u002Fqc-helper` followed by a question, e.g. `\u002Fqc-helper how do I configure MCP servers?` or `\u002Fqc-helper change approval mode to yolo`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[809,812,813],{"name":810,"slug":811,"type":16},"Configuration","configuration",{"name":769,"slug":770,"type":16},{"name":814,"slug":815,"type":16},"Reference","reference","2026-07-16T05:59:29.118413",{"slug":818,"name":818,"fn":819,"description":820,"org":821,"tags":822,"stars":721,"repoUrl":722,"updatedAt":829},"review","review code for quality and security","Review changed code for correctness, security, code quality, and performance. Use when the user asks to review code changes, a PR, or specific files. Invoke with `\u002Freview`, `\u002Freview \u003Cpr-number>`, `\u002Freview \u003Cfile-path>`, `\u002Freview \u003Cpr-number> --comment` to post inline comments on the PR, or `\u002Freview --fix` to apply the findings to your working tree. Add `--effort low|medium|high` to trade depth for speed (defaults to high for PRs, medium for local changes).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[823,826],{"name":824,"slug":825,"type":16},"Code Review","code-review",{"name":827,"slug":828,"type":16},"Security","security","2026-08-05T05:37:32.013531",{"slug":831,"name":831,"fn":832,"description":833,"org":834,"tags":835,"stars":721,"repoUrl":722,"updatedAt":843},"simplify","clean up and simplify code changes","Review recent code changes for reuse, code quality, and efficiency, then directly apply straightforward cleanup improvements. Use when the user wants a post-implementation cleanup pass, pre-PR polish, or asks to simplify\u002Frefine recent changes. Invoke with `\u002Fsimplify` or `\u002Fsimplify \u003Cfocus>`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[836,839,840],{"name":837,"slug":838,"type":16},"Code Analysis","code-analysis",{"name":21,"slug":22,"type":16},{"name":841,"slug":842,"type":16},"Performance","performance","2026-07-20T05:58:46.653811",{"slug":845,"name":845,"fn":846,"description":847,"org":848,"tags":849,"stars":721,"repoUrl":722,"updatedAt":855},"stuck","diagnose and debug stuck Qwen Code sessions","Diagnose frozen, stuck, or slow Qwen Code sessions on this machine. Scans for problematic processes, high CPU\u002Fmemory usage, hung subprocesses, and debug logs. Use \u002Fstuck or \u002Fstuck \u003CPID> to focus on a specific process.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[850,853,854],{"name":851,"slug":852,"type":16},"Debugging","debugging",{"name":21,"slug":22,"type":16},{"name":841,"slug":842,"type":16},"2026-07-16T05:59:25.838629",{"slug":857,"name":857,"fn":858,"description":859,"org":860,"tags":861,"stars":868,"repoUrl":869,"updatedAt":870},"open-computer-use","configure Open Computer Use MCP server","Platform-neutral guidance for using Open Computer Use, the open-source Computer Use MCP server and CLI for macOS, Linux, and Windows. Use when an agent needs to install, verify, troubleshoot, configure, or operate Open Computer Use through its native CLI, stdio MCP server, or direct Computer Use tool calls.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[862,863,866,867],{"name":716,"slug":717,"type":16},{"name":864,"slug":865,"type":16},"CLI","cli",{"name":737,"slug":738,"type":16},{"name":740,"slug":741,"type":16},176,"https:\u002F\u002Fgithub.com\u002FQwenLM\u002Fopen-computer-use","2026-07-16T05:59:22.010839",{"slug":872,"name":872,"fn":873,"description":874,"org":875,"tags":876,"stars":886,"repoUrl":887,"updatedAt":888},"auto-pr","automate pull request submission and review","Automated PR submission assistant, including code review, documentation generation, and PR creation",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[877,878,879,880,883],{"name":716,"slug":717,"type":16},{"name":824,"slug":825,"type":16},{"name":769,"slug":770,"type":16},{"name":881,"slug":882,"type":16},"GitHub","github",{"name":884,"slug":885,"type":16},"Pull Requests","pull-requests",136,"https:\u002F\u002Fgithub.com\u002FQwenLM\u002Fqwen-code-examples","2026-07-16T06:00:01.890524",26,{"items":891,"total":962},[892,907,924,943,950],{"slug":893,"name":893,"fn":894,"description":895,"org":896,"tags":897,"stars":26,"repoUrl":27,"updatedAt":906},"qwen-mm-plugins-blender","build and edit 3D scenes in Blender","Use whenever a task involves building or editing a 3D scene or asset in Blender — modeling, characters\u002Fpeople, architecture\u002Finteriors, terrain\u002Flandscapes, props, materials, lighting, or rendering. Covers discovering installed add-ons, using generators, importing and REFINING ready-made assets, and matching the result to the spec. Requires a running Blender instance with the blender-mcp addon (see Prerequisite).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[898,899,902,905],{"name":18,"slug":19,"type":16},{"name":900,"slug":901,"type":16},"Animation","animation",{"name":903,"slug":904,"type":16},"Creative","creative",{"name":24,"slug":25,"type":16},"2026-08-05T05:58:30.425245",{"slug":908,"name":908,"fn":909,"description":910,"org":911,"tags":912,"stars":26,"repoUrl":27,"updatedAt":923},"qwen-mm-plugins-core","analyze and visualize multimodal files","Vision-Language MCP tools for reading\u002Fvisualizing any file (images, videos, documents, code, data, 3D models, etc.) and calling VL APIs (caption, ASR, search, etc.).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[913,916,919,920],{"name":914,"slug":915,"type":16},"Data Analysis","data-analysis",{"name":917,"slug":918,"type":16},"LLM","llm",{"name":740,"slug":741,"type":16},{"name":921,"slug":922,"type":16},"Multimodal","multimodal","2026-08-05T05:58:39.78188",{"slug":925,"name":925,"fn":926,"description":927,"org":928,"tags":929,"stars":26,"repoUrl":27,"updatedAt":942},"qwen-mm-plugins-edu-agent","generate math problem solving tutorial videos","Generate step-by-step math problem-solving tutorial videos in Chinese (Mandarin).\nUse when: (1) a user provides a math problem and wants an explanation video,\n(2) someone says \"make a math tutorial\", \"explain this equation\", \"create a\nteaching video for this problem\", \"讲解这道题\", \"生成解题视频\",\n(3) the user wants a Chinese-language math lesson covering formulas, equations,\nor geometric figures, (4) the user shares a math problem in text or LaTeX and\nasks for a video walkthrough, (5) the input is an image_assets\u002F folder\ncontaining problem images — the skill will extract the problem via visual\nrecognition, solve it, and generate a tutorial video. Teaching components are\nrendered as realistic objects (solid opaque panels, 3D cards, SVG figures) with a\nmodern aurora mesh aesthetic.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[930,933,936,939],{"name":931,"slug":932,"type":16},"Content Creation","content-creation",{"name":934,"slug":935,"type":16},"Education","education",{"name":937,"slug":938,"type":16},"Mathematics","mathematics",{"name":940,"slug":941,"type":16},"Video","video","2026-08-05T05:58:40.128581",{"slug":4,"name":4,"fn":5,"description":6,"org":944,"tags":945,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[946,947,948,949],{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":24,"slug":25,"type":16},{"name":21,"slug":22,"type":16},{"slug":951,"name":951,"fn":952,"description":953,"org":954,"tags":955,"stars":26,"repoUrl":27,"updatedAt":961},"qwen-mm-plugins-video-memory","analyze long form video content","Triggered for long videos (30+ minutes), whether a single file or a directory of multiple videos. Vision-language MCP tools designed for efficient reading and semantic analysis of long videos (30+ minutes), supporting memory construction and semantic search.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[956,959,960],{"name":957,"slug":958,"type":16},"Analysis","analysis",{"name":921,"slug":922,"type":16},{"name":940,"slug":941,"type":16},"2026-08-05T05:58:28.007509",5]