[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-dot-syntax":3,"mdc-dmyb6p-key":34,"related-org-microsoft-dot-syntax":1415,"related-repo-microsoft-dot-syntax":1612},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"dot-syntax","provide DOT and Graphviz syntax reference","Use when writing or reading DOT\u002FGraphviz code and needing quick syntax reference — node declarations, edge syntax, attributes, subgraphs, HTML labels, and common gotchas",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,17,20],{"name":13,"slug":14,"type":15},"Documentation","documentation","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Diagrams","diagrams",{"name":21,"slug":22,"type":15},"Graphviz","graphviz",2,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-bundle-dot-graph","2026-04-06T18:37:05.896668",null,5,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"DOT graph bundle for the Amplifier project","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Famplifier-bundle-dot-graph\u002Ftree\u002FHEAD\u002Fskills\u002Fdot-syntax","---\nname: dot-syntax\ndescription: Use when writing or reading DOT\u002FGraphviz code and needing quick syntax reference — node declarations, edge syntax, attributes, subgraphs, HTML labels, and common gotchas\n---\n\n# DOT Syntax Quick Reference\n\n## Overview\n\nFast lookup for DOT graph description language syntax. Covers the constructs you'll use 90% of the time.\n\n**Core principle:** DOT describes structure (what connects to what). Layout engines handle positioning. You never specify coordinates.\n\n## Graph Declaration\n\n```dot\ndigraph name { }          \u002F\u002F directed graph (use ->)\ngraph name { }            \u002F\u002F undirected graph (use --)\nstrict digraph name { }   \u002F\u002F no multi-edges allowed\n```\n\n## Nodes\n\n```dot\nmy_node                                    \u002F\u002F implicit creation\nmy_node [label=\"Display Name\" shape=box]   \u002F\u002F explicit with attributes\nmy_node [label=\"Line 1\\nLine 2\"]           \u002F\u002F multiline label\n\"node with spaces\"                         \u002F\u002F quoted ID for special chars\n```\n\n**ID rules:** `[a-zA-Z_][a-zA-Z_0-9]*` unquoted. Use quotes for spaces\u002Fspecial chars.\n\n## Edges\n\n```dot\nA -> B                          \u002F\u002F directed edge\nA -> B [label=\"calls\"]          \u002F\u002F labeled edge\nA -> B -> C                     \u002F\u002F chain\nA -> {B C D}                    \u002F\u002F fan-out (A connects to B, C, and D)\nA -> B [style=dashed color=red] \u002F\u002F styled edge\n```\n\n## Attributes\n\n```dot\n\u002F\u002F Defaults (apply to all subsequent nodes\u002Fedges)\nnode [shape=box style=\"rounded,filled\" fillcolor=\"#E8F0FE\" fontname=\"Helvetica\"]\nedge [color=\"#666666\" fontsize=10]\ngraph [rankdir=TB nodesep=0.5]\n\n\u002F\u002F Per-element (override defaults)\nmy_node [shape=diamond fillcolor=\"#FFF9C4\"]\nA -> B [color=blue penwidth=2]\n```\n\n## Shapes Quick Table\n\n| Shape | Description |\n|-------|-------------|\n| `box` \u002F `rectangle` | Rectangle (default-ish) |\n| `ellipse` | Oval (true default) |\n| `circle` | Equal width\u002Fheight ellipse |\n| `diamond` | Decision \u002F branch |\n| `hexagon` | Process step |\n| `cylinder` | Database \u002F storage |\n| `note` | Document with folded corner |\n| `folder` | Folder tab shape |\n| `parallelogram` | Skewed rectangle |\n| `doublecircle` | Final state (state machines) |\n| `plaintext` | No border (label only) |\n\n## Subgraphs and Clusters\n\n```dot\n\u002F\u002F Cluster — name MUST start with cluster_\nsubgraph cluster_group {\n    label=\"Group Name\"\n    style=filled\n    fillcolor=\"#F0F0F0\"\n    A; B; C\n}\n\n\u002F\u002F Rank control — force nodes to same level\nsubgraph { rank=same; A; B; C }\n\u002F\u002F rank values: same | min | max | source | sink\n\n\u002F\u002F Edges between clusters (needs compound=true on graph)\ndigraph G {\n    compound=true\n    subgraph cluster_a { A }\n    subgraph cluster_b { B }\n    A -> B [ltail=cluster_a lhead=cluster_b]\n}\n```\n\n## HTML Labels\n\nUse `\u003C...>` instead of `\"...\"` for the label value:\n\n```dot\nnode [label=\u003C\u003CTABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\n    \u003CTR>\n        \u003CTD PORT=\"left\">Left\u003C\u002FTD>\n        \u003CTD PORT=\"right\">Right\u003C\u002FTD>\n    \u003C\u002FTR>\n\u003C\u002FTABLE>>]\n```\n\nConnect to ports: `A:left -> B:right`\n\nSupported elements: `TABLE`, `TR`, `TD`, `FONT`, `BR`, `HR`, `IMG`, `\u003CB>`, `\u003CI>`, `\u003CU>`\n\n## Layout Engines\n\n| Engine | Best for |\n|--------|----------|\n| `dot` | Hierarchical DAGs, flowcharts (default) |\n| `neato` | Small undirected graphs, spring layout |\n| `fdp` | Larger undirected graphs, force-directed |\n| `sfdp` | Very large undirected graphs |\n| `circo` | Circular layouts, ring topologies |\n| `twopi` | Radial\u002Fhub-and-spoke layouts |\n\nUse `dot` for most diagrams. Switch to `neato`\u002F`fdp` when hierarchy doesn't matter.\n\n## Common Gotchas\n\n| Gotcha | Fix |\n|--------|-----|\n| Cluster not visible | Name must start with `cluster_` |\n| Edges go wrong direction | Use `rankdir=LR` or `rankdir=TB` on graph |\n| Node IDs with spaces fail | Quote the ID: `\"my node\"` |\n| HTML label not rendering | Use `\u003C...>` not `\"...\"` for label value |\n| Undirected edge in digraph | Use `->` in digraph, `--` in graph only |\n| Subgraph edge not crossing clusters | Set `compound=true` on outer graph |\n\n## Render Commands\n\n```bash\n# SVG (best for docs — scalable, text-searchable)\ndot -Tsvg input.dot -o output.svg\n\n# PNG (for embedding in Markdown\u002Fpresentations)\ndot -Tpng input.dot -o output.png\n\n# Validate syntax only (no output file)\ndot -Tsvg input.dot > \u002Fdev\u002Fnull\n\n# Specify layout engine\nneato -Tsvg input.dot -o output.svg\nfdp -Tpng input.dot -o output.png\n```\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,48,55,61,72,78,118,124,169,187,193,240,246,321,327,550,556,723,729,750,805,816,891,897,1020,1045,1051,1214,1220,1409],{"type":40,"tag":41,"props":42,"children":44},"element","h1",{"id":43},"dot-syntax-quick-reference",[45],{"type":46,"value":47},"text","DOT Syntax Quick Reference",{"type":40,"tag":49,"props":50,"children":52},"h2",{"id":51},"overview",[53],{"type":46,"value":54},"Overview",{"type":40,"tag":56,"props":57,"children":58},"p",{},[59],{"type":46,"value":60},"Fast lookup for DOT graph description language syntax. Covers the constructs you'll use 90% of the time.",{"type":40,"tag":56,"props":62,"children":63},{},[64,70],{"type":40,"tag":65,"props":66,"children":67},"strong",{},[68],{"type":46,"value":69},"Core principle:",{"type":46,"value":71}," DOT describes structure (what connects to what). Layout engines handle positioning. You never specify coordinates.",{"type":40,"tag":49,"props":73,"children":75},{"id":74},"graph-declaration",[76],{"type":46,"value":77},"Graph Declaration",{"type":40,"tag":79,"props":80,"children":85},"pre",{"className":81,"code":82,"language":83,"meta":84,"style":84},"language-dot shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","digraph name { }          \u002F\u002F directed graph (use ->)\ngraph name { }            \u002F\u002F undirected graph (use --)\nstrict digraph name { }   \u002F\u002F no multi-edges allowed\n","dot","",[86],{"type":40,"tag":87,"props":88,"children":89},"code",{"__ignoreMap":84},[90,101,109],{"type":40,"tag":91,"props":92,"children":95},"span",{"class":93,"line":94},"line",1,[96],{"type":40,"tag":91,"props":97,"children":98},{},[99],{"type":46,"value":100},"digraph name { }          \u002F\u002F directed graph (use ->)\n",{"type":40,"tag":91,"props":102,"children":103},{"class":93,"line":23},[104],{"type":40,"tag":91,"props":105,"children":106},{},[107],{"type":46,"value":108},"graph name { }            \u002F\u002F undirected graph (use --)\n",{"type":40,"tag":91,"props":110,"children":112},{"class":93,"line":111},3,[113],{"type":40,"tag":91,"props":114,"children":115},{},[116],{"type":46,"value":117},"strict digraph name { }   \u002F\u002F no multi-edges allowed\n",{"type":40,"tag":49,"props":119,"children":121},{"id":120},"nodes",[122],{"type":46,"value":123},"Nodes",{"type":40,"tag":79,"props":125,"children":127},{"className":81,"code":126,"language":83,"meta":84,"style":84},"my_node                                    \u002F\u002F implicit creation\nmy_node [label=\"Display Name\" shape=box]   \u002F\u002F explicit with attributes\nmy_node [label=\"Line 1\\nLine 2\"]           \u002F\u002F multiline label\n\"node with spaces\"                         \u002F\u002F quoted ID for special chars\n",[128],{"type":40,"tag":87,"props":129,"children":130},{"__ignoreMap":84},[131,139,147,155],{"type":40,"tag":91,"props":132,"children":133},{"class":93,"line":94},[134],{"type":40,"tag":91,"props":135,"children":136},{},[137],{"type":46,"value":138},"my_node                                    \u002F\u002F implicit creation\n",{"type":40,"tag":91,"props":140,"children":141},{"class":93,"line":23},[142],{"type":40,"tag":91,"props":143,"children":144},{},[145],{"type":46,"value":146},"my_node [label=\"Display Name\" shape=box]   \u002F\u002F explicit with attributes\n",{"type":40,"tag":91,"props":148,"children":149},{"class":93,"line":111},[150],{"type":40,"tag":91,"props":151,"children":152},{},[153],{"type":46,"value":154},"my_node [label=\"Line 1\\nLine 2\"]           \u002F\u002F multiline label\n",{"type":40,"tag":91,"props":156,"children":158},{"class":93,"line":157},4,[159,164],{"type":40,"tag":91,"props":160,"children":161},{},[162],{"type":46,"value":163},"\"node with spaces\"",{"type":40,"tag":91,"props":165,"children":166},{},[167],{"type":46,"value":168},"                         \u002F\u002F quoted ID for special chars\n",{"type":40,"tag":56,"props":170,"children":171},{},[172,177,179,185],{"type":40,"tag":65,"props":173,"children":174},{},[175],{"type":46,"value":176},"ID rules:",{"type":46,"value":178}," ",{"type":40,"tag":87,"props":180,"children":182},{"className":181},[],[183],{"type":46,"value":184},"[a-zA-Z_][a-zA-Z_0-9]*",{"type":46,"value":186}," unquoted. Use quotes for spaces\u002Fspecial chars.",{"type":40,"tag":49,"props":188,"children":190},{"id":189},"edges",[191],{"type":46,"value":192},"Edges",{"type":40,"tag":79,"props":194,"children":196},{"className":81,"code":195,"language":83,"meta":84,"style":84},"A -> B                          \u002F\u002F directed edge\nA -> B [label=\"calls\"]          \u002F\u002F labeled edge\nA -> B -> C                     \u002F\u002F chain\nA -> {B C D}                    \u002F\u002F fan-out (A connects to B, C, and D)\nA -> B [style=dashed color=red] \u002F\u002F styled edge\n",[197],{"type":40,"tag":87,"props":198,"children":199},{"__ignoreMap":84},[200,208,216,224,232],{"type":40,"tag":91,"props":201,"children":202},{"class":93,"line":94},[203],{"type":40,"tag":91,"props":204,"children":205},{},[206],{"type":46,"value":207},"A -> B                          \u002F\u002F directed edge\n",{"type":40,"tag":91,"props":209,"children":210},{"class":93,"line":23},[211],{"type":40,"tag":91,"props":212,"children":213},{},[214],{"type":46,"value":215},"A -> B [label=\"calls\"]          \u002F\u002F labeled edge\n",{"type":40,"tag":91,"props":217,"children":218},{"class":93,"line":111},[219],{"type":40,"tag":91,"props":220,"children":221},{},[222],{"type":46,"value":223},"A -> B -> C                     \u002F\u002F chain\n",{"type":40,"tag":91,"props":225,"children":226},{"class":93,"line":157},[227],{"type":40,"tag":91,"props":228,"children":229},{},[230],{"type":46,"value":231},"A -> {B C D}                    \u002F\u002F fan-out (A connects to B, C, and D)\n",{"type":40,"tag":91,"props":233,"children":234},{"class":93,"line":27},[235],{"type":40,"tag":91,"props":236,"children":237},{},[238],{"type":46,"value":239},"A -> B [style=dashed color=red] \u002F\u002F styled edge\n",{"type":40,"tag":49,"props":241,"children":243},{"id":242},"attributes",[244],{"type":46,"value":245},"Attributes",{"type":40,"tag":79,"props":247,"children":249},{"className":81,"code":248,"language":83,"meta":84,"style":84},"\u002F\u002F Defaults (apply to all subsequent nodes\u002Fedges)\nnode [shape=box style=\"rounded,filled\" fillcolor=\"#E8F0FE\" fontname=\"Helvetica\"]\nedge [color=\"#666666\" fontsize=10]\ngraph [rankdir=TB nodesep=0.5]\n\n\u002F\u002F Per-element (override defaults)\nmy_node [shape=diamond fillcolor=\"#FFF9C4\"]\nA -> B [color=blue penwidth=2]\n",[250],{"type":40,"tag":87,"props":251,"children":252},{"__ignoreMap":84},[253,261,269,277,285,294,303,312],{"type":40,"tag":91,"props":254,"children":255},{"class":93,"line":94},[256],{"type":40,"tag":91,"props":257,"children":258},{},[259],{"type":46,"value":260},"\u002F\u002F Defaults (apply to all subsequent nodes\u002Fedges)\n",{"type":40,"tag":91,"props":262,"children":263},{"class":93,"line":23},[264],{"type":40,"tag":91,"props":265,"children":266},{},[267],{"type":46,"value":268},"node [shape=box style=\"rounded,filled\" fillcolor=\"#E8F0FE\" fontname=\"Helvetica\"]\n",{"type":40,"tag":91,"props":270,"children":271},{"class":93,"line":111},[272],{"type":40,"tag":91,"props":273,"children":274},{},[275],{"type":46,"value":276},"edge [color=\"#666666\" fontsize=10]\n",{"type":40,"tag":91,"props":278,"children":279},{"class":93,"line":157},[280],{"type":40,"tag":91,"props":281,"children":282},{},[283],{"type":46,"value":284},"graph [rankdir=TB nodesep=0.5]\n",{"type":40,"tag":91,"props":286,"children":287},{"class":93,"line":27},[288],{"type":40,"tag":91,"props":289,"children":291},{"emptyLinePlaceholder":290},true,[292],{"type":46,"value":293},"\n",{"type":40,"tag":91,"props":295,"children":297},{"class":93,"line":296},6,[298],{"type":40,"tag":91,"props":299,"children":300},{},[301],{"type":46,"value":302},"\u002F\u002F Per-element (override defaults)\n",{"type":40,"tag":91,"props":304,"children":306},{"class":93,"line":305},7,[307],{"type":40,"tag":91,"props":308,"children":309},{},[310],{"type":46,"value":311},"my_node [shape=diamond fillcolor=\"#FFF9C4\"]\n",{"type":40,"tag":91,"props":313,"children":315},{"class":93,"line":314},8,[316],{"type":40,"tag":91,"props":317,"children":318},{},[319],{"type":46,"value":320},"A -> B [color=blue penwidth=2]\n",{"type":40,"tag":49,"props":322,"children":324},{"id":323},"shapes-quick-table",[325],{"type":46,"value":326},"Shapes Quick Table",{"type":40,"tag":328,"props":329,"children":330},"table",{},[331,350],{"type":40,"tag":332,"props":333,"children":334},"thead",{},[335],{"type":40,"tag":336,"props":337,"children":338},"tr",{},[339,345],{"type":40,"tag":340,"props":341,"children":342},"th",{},[343],{"type":46,"value":344},"Shape",{"type":40,"tag":340,"props":346,"children":347},{},[348],{"type":46,"value":349},"Description",{"type":40,"tag":351,"props":352,"children":353},"tbody",{},[354,380,397,414,431,448,465,482,499,516,533],{"type":40,"tag":336,"props":355,"children":356},{},[357,375],{"type":40,"tag":358,"props":359,"children":360},"td",{},[361,367,369],{"type":40,"tag":87,"props":362,"children":364},{"className":363},[],[365],{"type":46,"value":366},"box",{"type":46,"value":368}," \u002F ",{"type":40,"tag":87,"props":370,"children":372},{"className":371},[],[373],{"type":46,"value":374},"rectangle",{"type":40,"tag":358,"props":376,"children":377},{},[378],{"type":46,"value":379},"Rectangle (default-ish)",{"type":40,"tag":336,"props":381,"children":382},{},[383,392],{"type":40,"tag":358,"props":384,"children":385},{},[386],{"type":40,"tag":87,"props":387,"children":389},{"className":388},[],[390],{"type":46,"value":391},"ellipse",{"type":40,"tag":358,"props":393,"children":394},{},[395],{"type":46,"value":396},"Oval (true default)",{"type":40,"tag":336,"props":398,"children":399},{},[400,409],{"type":40,"tag":358,"props":401,"children":402},{},[403],{"type":40,"tag":87,"props":404,"children":406},{"className":405},[],[407],{"type":46,"value":408},"circle",{"type":40,"tag":358,"props":410,"children":411},{},[412],{"type":46,"value":413},"Equal width\u002Fheight ellipse",{"type":40,"tag":336,"props":415,"children":416},{},[417,426],{"type":40,"tag":358,"props":418,"children":419},{},[420],{"type":40,"tag":87,"props":421,"children":423},{"className":422},[],[424],{"type":46,"value":425},"diamond",{"type":40,"tag":358,"props":427,"children":428},{},[429],{"type":46,"value":430},"Decision \u002F branch",{"type":40,"tag":336,"props":432,"children":433},{},[434,443],{"type":40,"tag":358,"props":435,"children":436},{},[437],{"type":40,"tag":87,"props":438,"children":440},{"className":439},[],[441],{"type":46,"value":442},"hexagon",{"type":40,"tag":358,"props":444,"children":445},{},[446],{"type":46,"value":447},"Process step",{"type":40,"tag":336,"props":449,"children":450},{},[451,460],{"type":40,"tag":358,"props":452,"children":453},{},[454],{"type":40,"tag":87,"props":455,"children":457},{"className":456},[],[458],{"type":46,"value":459},"cylinder",{"type":40,"tag":358,"props":461,"children":462},{},[463],{"type":46,"value":464},"Database \u002F storage",{"type":40,"tag":336,"props":466,"children":467},{},[468,477],{"type":40,"tag":358,"props":469,"children":470},{},[471],{"type":40,"tag":87,"props":472,"children":474},{"className":473},[],[475],{"type":46,"value":476},"note",{"type":40,"tag":358,"props":478,"children":479},{},[480],{"type":46,"value":481},"Document with folded corner",{"type":40,"tag":336,"props":483,"children":484},{},[485,494],{"type":40,"tag":358,"props":486,"children":487},{},[488],{"type":40,"tag":87,"props":489,"children":491},{"className":490},[],[492],{"type":46,"value":493},"folder",{"type":40,"tag":358,"props":495,"children":496},{},[497],{"type":46,"value":498},"Folder tab shape",{"type":40,"tag":336,"props":500,"children":501},{},[502,511],{"type":40,"tag":358,"props":503,"children":504},{},[505],{"type":40,"tag":87,"props":506,"children":508},{"className":507},[],[509],{"type":46,"value":510},"parallelogram",{"type":40,"tag":358,"props":512,"children":513},{},[514],{"type":46,"value":515},"Skewed rectangle",{"type":40,"tag":336,"props":517,"children":518},{},[519,528],{"type":40,"tag":358,"props":520,"children":521},{},[522],{"type":40,"tag":87,"props":523,"children":525},{"className":524},[],[526],{"type":46,"value":527},"doublecircle",{"type":40,"tag":358,"props":529,"children":530},{},[531],{"type":46,"value":532},"Final state (state machines)",{"type":40,"tag":336,"props":534,"children":535},{},[536,545],{"type":40,"tag":358,"props":537,"children":538},{},[539],{"type":40,"tag":87,"props":540,"children":542},{"className":541},[],[543],{"type":46,"value":544},"plaintext",{"type":40,"tag":358,"props":546,"children":547},{},[548],{"type":46,"value":549},"No border (label only)",{"type":40,"tag":49,"props":551,"children":553},{"id":552},"subgraphs-and-clusters",[554],{"type":46,"value":555},"Subgraphs and Clusters",{"type":40,"tag":79,"props":557,"children":559},{"className":81,"code":558,"language":83,"meta":84,"style":84},"\u002F\u002F Cluster — name MUST start with cluster_\nsubgraph cluster_group {\n    label=\"Group Name\"\n    style=filled\n    fillcolor=\"#F0F0F0\"\n    A; B; C\n}\n\n\u002F\u002F Rank control — force nodes to same level\nsubgraph { rank=same; A; B; C }\n\u002F\u002F rank values: same | min | max | source | sink\n\n\u002F\u002F Edges between clusters (needs compound=true on graph)\ndigraph G {\n    compound=true\n    subgraph cluster_a { A }\n    subgraph cluster_b { B }\n    A -> B [ltail=cluster_a lhead=cluster_b]\n}\n",[560],{"type":40,"tag":87,"props":561,"children":562},{"__ignoreMap":84},[563,571,579,587,595,603,611,619,626,635,644,653,661,670,679,688,697,706,715],{"type":40,"tag":91,"props":564,"children":565},{"class":93,"line":94},[566],{"type":40,"tag":91,"props":567,"children":568},{},[569],{"type":46,"value":570},"\u002F\u002F Cluster — name MUST start with cluster_\n",{"type":40,"tag":91,"props":572,"children":573},{"class":93,"line":23},[574],{"type":40,"tag":91,"props":575,"children":576},{},[577],{"type":46,"value":578},"subgraph cluster_group {\n",{"type":40,"tag":91,"props":580,"children":581},{"class":93,"line":111},[582],{"type":40,"tag":91,"props":583,"children":584},{},[585],{"type":46,"value":586},"    label=\"Group Name\"\n",{"type":40,"tag":91,"props":588,"children":589},{"class":93,"line":157},[590],{"type":40,"tag":91,"props":591,"children":592},{},[593],{"type":46,"value":594},"    style=filled\n",{"type":40,"tag":91,"props":596,"children":597},{"class":93,"line":27},[598],{"type":40,"tag":91,"props":599,"children":600},{},[601],{"type":46,"value":602},"    fillcolor=\"#F0F0F0\"\n",{"type":40,"tag":91,"props":604,"children":605},{"class":93,"line":296},[606],{"type":40,"tag":91,"props":607,"children":608},{},[609],{"type":46,"value":610},"    A; B; C\n",{"type":40,"tag":91,"props":612,"children":613},{"class":93,"line":305},[614],{"type":40,"tag":91,"props":615,"children":616},{},[617],{"type":46,"value":618},"}\n",{"type":40,"tag":91,"props":620,"children":621},{"class":93,"line":314},[622],{"type":40,"tag":91,"props":623,"children":624},{"emptyLinePlaceholder":290},[625],{"type":46,"value":293},{"type":40,"tag":91,"props":627,"children":629},{"class":93,"line":628},9,[630],{"type":40,"tag":91,"props":631,"children":632},{},[633],{"type":46,"value":634},"\u002F\u002F Rank control — force nodes to same level\n",{"type":40,"tag":91,"props":636,"children":638},{"class":93,"line":637},10,[639],{"type":40,"tag":91,"props":640,"children":641},{},[642],{"type":46,"value":643},"subgraph { rank=same; A; B; C }\n",{"type":40,"tag":91,"props":645,"children":647},{"class":93,"line":646},11,[648],{"type":40,"tag":91,"props":649,"children":650},{},[651],{"type":46,"value":652},"\u002F\u002F rank values: same | min | max | source | sink\n",{"type":40,"tag":91,"props":654,"children":656},{"class":93,"line":655},12,[657],{"type":40,"tag":91,"props":658,"children":659},{"emptyLinePlaceholder":290},[660],{"type":46,"value":293},{"type":40,"tag":91,"props":662,"children":664},{"class":93,"line":663},13,[665],{"type":40,"tag":91,"props":666,"children":667},{},[668],{"type":46,"value":669},"\u002F\u002F Edges between clusters (needs compound=true on graph)\n",{"type":40,"tag":91,"props":671,"children":673},{"class":93,"line":672},14,[674],{"type":40,"tag":91,"props":675,"children":676},{},[677],{"type":46,"value":678},"digraph G {\n",{"type":40,"tag":91,"props":680,"children":682},{"class":93,"line":681},15,[683],{"type":40,"tag":91,"props":684,"children":685},{},[686],{"type":46,"value":687},"    compound=true\n",{"type":40,"tag":91,"props":689,"children":691},{"class":93,"line":690},16,[692],{"type":40,"tag":91,"props":693,"children":694},{},[695],{"type":46,"value":696},"    subgraph cluster_a { A }\n",{"type":40,"tag":91,"props":698,"children":700},{"class":93,"line":699},17,[701],{"type":40,"tag":91,"props":702,"children":703},{},[704],{"type":46,"value":705},"    subgraph cluster_b { B }\n",{"type":40,"tag":91,"props":707,"children":709},{"class":93,"line":708},18,[710],{"type":40,"tag":91,"props":711,"children":712},{},[713],{"type":46,"value":714},"    A -> B [ltail=cluster_a lhead=cluster_b]\n",{"type":40,"tag":91,"props":716,"children":718},{"class":93,"line":717},19,[719],{"type":40,"tag":91,"props":720,"children":721},{},[722],{"type":46,"value":618},{"type":40,"tag":49,"props":724,"children":726},{"id":725},"html-labels",[727],{"type":46,"value":728},"HTML Labels",{"type":40,"tag":56,"props":730,"children":731},{},[732,734,740,742,748],{"type":46,"value":733},"Use ",{"type":40,"tag":87,"props":735,"children":737},{"className":736},[],[738],{"type":46,"value":739},"\u003C...>",{"type":46,"value":741}," instead of ",{"type":40,"tag":87,"props":743,"children":745},{"className":744},[],[746],{"type":46,"value":747},"\"...\"",{"type":46,"value":749}," for the label value:",{"type":40,"tag":79,"props":751,"children":753},{"className":81,"code":752,"language":83,"meta":84,"style":84},"node [label=\u003C\u003CTABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\n    \u003CTR>\n        \u003CTD PORT=\"left\">Left\u003C\u002FTD>\n        \u003CTD PORT=\"right\">Right\u003C\u002FTD>\n    \u003C\u002FTR>\n\u003C\u002FTABLE>>]\n",[754],{"type":40,"tag":87,"props":755,"children":756},{"__ignoreMap":84},[757,765,773,781,789,797],{"type":40,"tag":91,"props":758,"children":759},{"class":93,"line":94},[760],{"type":40,"tag":91,"props":761,"children":762},{},[763],{"type":46,"value":764},"node [label=\u003C\u003CTABLE BORDER=\"0\" CELLBORDER=\"1\" CELLSPACING=\"0\">\n",{"type":40,"tag":91,"props":766,"children":767},{"class":93,"line":23},[768],{"type":40,"tag":91,"props":769,"children":770},{},[771],{"type":46,"value":772},"    \u003CTR>\n",{"type":40,"tag":91,"props":774,"children":775},{"class":93,"line":111},[776],{"type":40,"tag":91,"props":777,"children":778},{},[779],{"type":46,"value":780},"        \u003CTD PORT=\"left\">Left\u003C\u002FTD>\n",{"type":40,"tag":91,"props":782,"children":783},{"class":93,"line":157},[784],{"type":40,"tag":91,"props":785,"children":786},{},[787],{"type":46,"value":788},"        \u003CTD PORT=\"right\">Right\u003C\u002FTD>\n",{"type":40,"tag":91,"props":790,"children":791},{"class":93,"line":27},[792],{"type":40,"tag":91,"props":793,"children":794},{},[795],{"type":46,"value":796},"    \u003C\u002FTR>\n",{"type":40,"tag":91,"props":798,"children":799},{"class":93,"line":296},[800],{"type":40,"tag":91,"props":801,"children":802},{},[803],{"type":46,"value":804},"\u003C\u002FTABLE>>]\n",{"type":40,"tag":56,"props":806,"children":807},{},[808,810],{"type":46,"value":809},"Connect to ports: ",{"type":40,"tag":87,"props":811,"children":813},{"className":812},[],[814],{"type":46,"value":815},"A:left -> B:right",{"type":40,"tag":56,"props":817,"children":818},{},[819,821,827,829,835,836,842,843,849,850,856,857,863,864,870,871,877,878,884,885],{"type":46,"value":820},"Supported elements: ",{"type":40,"tag":87,"props":822,"children":824},{"className":823},[],[825],{"type":46,"value":826},"TABLE",{"type":46,"value":828},", ",{"type":40,"tag":87,"props":830,"children":832},{"className":831},[],[833],{"type":46,"value":834},"TR",{"type":46,"value":828},{"type":40,"tag":87,"props":837,"children":839},{"className":838},[],[840],{"type":46,"value":841},"TD",{"type":46,"value":828},{"type":40,"tag":87,"props":844,"children":846},{"className":845},[],[847],{"type":46,"value":848},"FONT",{"type":46,"value":828},{"type":40,"tag":87,"props":851,"children":853},{"className":852},[],[854],{"type":46,"value":855},"BR",{"type":46,"value":828},{"type":40,"tag":87,"props":858,"children":860},{"className":859},[],[861],{"type":46,"value":862},"HR",{"type":46,"value":828},{"type":40,"tag":87,"props":865,"children":867},{"className":866},[],[868],{"type":46,"value":869},"IMG",{"type":46,"value":828},{"type":40,"tag":87,"props":872,"children":874},{"className":873},[],[875],{"type":46,"value":876},"\u003CB>",{"type":46,"value":828},{"type":40,"tag":87,"props":879,"children":881},{"className":880},[],[882],{"type":46,"value":883},"\u003CI>",{"type":46,"value":828},{"type":40,"tag":87,"props":886,"children":888},{"className":887},[],[889],{"type":46,"value":890},"\u003CU>",{"type":40,"tag":49,"props":892,"children":894},{"id":893},"layout-engines",[895],{"type":46,"value":896},"Layout Engines",{"type":40,"tag":328,"props":898,"children":899},{},[900,916],{"type":40,"tag":332,"props":901,"children":902},{},[903],{"type":40,"tag":336,"props":904,"children":905},{},[906,911],{"type":40,"tag":340,"props":907,"children":908},{},[909],{"type":46,"value":910},"Engine",{"type":40,"tag":340,"props":912,"children":913},{},[914],{"type":46,"value":915},"Best for",{"type":40,"tag":351,"props":917,"children":918},{},[919,935,952,969,986,1003],{"type":40,"tag":336,"props":920,"children":921},{},[922,930],{"type":40,"tag":358,"props":923,"children":924},{},[925],{"type":40,"tag":87,"props":926,"children":928},{"className":927},[],[929],{"type":46,"value":83},{"type":40,"tag":358,"props":931,"children":932},{},[933],{"type":46,"value":934},"Hierarchical DAGs, flowcharts (default)",{"type":40,"tag":336,"props":936,"children":937},{},[938,947],{"type":40,"tag":358,"props":939,"children":940},{},[941],{"type":40,"tag":87,"props":942,"children":944},{"className":943},[],[945],{"type":46,"value":946},"neato",{"type":40,"tag":358,"props":948,"children":949},{},[950],{"type":46,"value":951},"Small undirected graphs, spring layout",{"type":40,"tag":336,"props":953,"children":954},{},[955,964],{"type":40,"tag":358,"props":956,"children":957},{},[958],{"type":40,"tag":87,"props":959,"children":961},{"className":960},[],[962],{"type":46,"value":963},"fdp",{"type":40,"tag":358,"props":965,"children":966},{},[967],{"type":46,"value":968},"Larger undirected graphs, force-directed",{"type":40,"tag":336,"props":970,"children":971},{},[972,981],{"type":40,"tag":358,"props":973,"children":974},{},[975],{"type":40,"tag":87,"props":976,"children":978},{"className":977},[],[979],{"type":46,"value":980},"sfdp",{"type":40,"tag":358,"props":982,"children":983},{},[984],{"type":46,"value":985},"Very large undirected graphs",{"type":40,"tag":336,"props":987,"children":988},{},[989,998],{"type":40,"tag":358,"props":990,"children":991},{},[992],{"type":40,"tag":87,"props":993,"children":995},{"className":994},[],[996],{"type":46,"value":997},"circo",{"type":40,"tag":358,"props":999,"children":1000},{},[1001],{"type":46,"value":1002},"Circular layouts, ring topologies",{"type":40,"tag":336,"props":1004,"children":1005},{},[1006,1015],{"type":40,"tag":358,"props":1007,"children":1008},{},[1009],{"type":40,"tag":87,"props":1010,"children":1012},{"className":1011},[],[1013],{"type":46,"value":1014},"twopi",{"type":40,"tag":358,"props":1016,"children":1017},{},[1018],{"type":46,"value":1019},"Radial\u002Fhub-and-spoke layouts",{"type":40,"tag":56,"props":1021,"children":1022},{},[1023,1024,1029,1031,1036,1038,1043],{"type":46,"value":733},{"type":40,"tag":87,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":46,"value":83},{"type":46,"value":1030}," for most diagrams. Switch to ",{"type":40,"tag":87,"props":1032,"children":1034},{"className":1033},[],[1035],{"type":46,"value":946},{"type":46,"value":1037},"\u002F",{"type":40,"tag":87,"props":1039,"children":1041},{"className":1040},[],[1042],{"type":46,"value":963},{"type":46,"value":1044}," when hierarchy doesn't matter.",{"type":40,"tag":49,"props":1046,"children":1048},{"id":1047},"common-gotchas",[1049],{"type":46,"value":1050},"Common Gotchas",{"type":40,"tag":328,"props":1052,"children":1053},{},[1054,1070],{"type":40,"tag":332,"props":1055,"children":1056},{},[1057],{"type":40,"tag":336,"props":1058,"children":1059},{},[1060,1065],{"type":40,"tag":340,"props":1061,"children":1062},{},[1063],{"type":46,"value":1064},"Gotcha",{"type":40,"tag":340,"props":1066,"children":1067},{},[1068],{"type":46,"value":1069},"Fix",{"type":40,"tag":351,"props":1071,"children":1072},{},[1073,1092,1120,1139,1165,1193],{"type":40,"tag":336,"props":1074,"children":1075},{},[1076,1081],{"type":40,"tag":358,"props":1077,"children":1078},{},[1079],{"type":46,"value":1080},"Cluster not visible",{"type":40,"tag":358,"props":1082,"children":1083},{},[1084,1086],{"type":46,"value":1085},"Name must start with ",{"type":40,"tag":87,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":46,"value":1091},"cluster_",{"type":40,"tag":336,"props":1093,"children":1094},{},[1095,1100],{"type":40,"tag":358,"props":1096,"children":1097},{},[1098],{"type":46,"value":1099},"Edges go wrong direction",{"type":40,"tag":358,"props":1101,"children":1102},{},[1103,1104,1110,1112,1118],{"type":46,"value":733},{"type":40,"tag":87,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":46,"value":1109},"rankdir=LR",{"type":46,"value":1111}," or ",{"type":40,"tag":87,"props":1113,"children":1115},{"className":1114},[],[1116],{"type":46,"value":1117},"rankdir=TB",{"type":46,"value":1119}," on graph",{"type":40,"tag":336,"props":1121,"children":1122},{},[1123,1128],{"type":40,"tag":358,"props":1124,"children":1125},{},[1126],{"type":46,"value":1127},"Node IDs with spaces fail",{"type":40,"tag":358,"props":1129,"children":1130},{},[1131,1133],{"type":46,"value":1132},"Quote the ID: ",{"type":40,"tag":87,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":46,"value":1138},"\"my node\"",{"type":40,"tag":336,"props":1140,"children":1141},{},[1142,1147],{"type":40,"tag":358,"props":1143,"children":1144},{},[1145],{"type":46,"value":1146},"HTML label not rendering",{"type":40,"tag":358,"props":1148,"children":1149},{},[1150,1151,1156,1158,1163],{"type":46,"value":733},{"type":40,"tag":87,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":46,"value":739},{"type":46,"value":1157}," not ",{"type":40,"tag":87,"props":1159,"children":1161},{"className":1160},[],[1162],{"type":46,"value":747},{"type":46,"value":1164}," for label value",{"type":40,"tag":336,"props":1166,"children":1167},{},[1168,1173],{"type":40,"tag":358,"props":1169,"children":1170},{},[1171],{"type":46,"value":1172},"Undirected edge in digraph",{"type":40,"tag":358,"props":1174,"children":1175},{},[1176,1177,1183,1185,1191],{"type":46,"value":733},{"type":40,"tag":87,"props":1178,"children":1180},{"className":1179},[],[1181],{"type":46,"value":1182},"->",{"type":46,"value":1184}," in digraph, ",{"type":40,"tag":87,"props":1186,"children":1188},{"className":1187},[],[1189],{"type":46,"value":1190},"--",{"type":46,"value":1192}," in graph only",{"type":40,"tag":336,"props":1194,"children":1195},{},[1196,1201],{"type":40,"tag":358,"props":1197,"children":1198},{},[1199],{"type":46,"value":1200},"Subgraph edge not crossing clusters",{"type":40,"tag":358,"props":1202,"children":1203},{},[1204,1206,1212],{"type":46,"value":1205},"Set ",{"type":40,"tag":87,"props":1207,"children":1209},{"className":1208},[],[1210],{"type":46,"value":1211},"compound=true",{"type":46,"value":1213}," on outer graph",{"type":40,"tag":49,"props":1215,"children":1217},{"id":1216},"render-commands",[1218],{"type":46,"value":1219},"Render Commands",{"type":40,"tag":79,"props":1221,"children":1225},{"className":1222,"code":1223,"language":1224,"meta":84,"style":84},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# SVG (best for docs — scalable, text-searchable)\ndot -Tsvg input.dot -o output.svg\n\n# PNG (for embedding in Markdown\u002Fpresentations)\ndot -Tpng input.dot -o output.png\n\n# Validate syntax only (no output file)\ndot -Tsvg input.dot > \u002Fdev\u002Fnull\n\n# Specify layout engine\nneato -Tsvg input.dot -o output.svg\nfdp -Tpng input.dot -o output.png\n","bash",[1226],{"type":40,"tag":87,"props":1227,"children":1228},{"__ignoreMap":84},[1229,1238,1267,1274,1282,1307,1314,1322,1348,1355,1363,1386],{"type":40,"tag":91,"props":1230,"children":1231},{"class":93,"line":94},[1232],{"type":40,"tag":91,"props":1233,"children":1235},{"style":1234},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[1236],{"type":46,"value":1237},"# SVG (best for docs — scalable, text-searchable)\n",{"type":40,"tag":91,"props":1239,"children":1240},{"class":93,"line":23},[1241,1246,1252,1257,1262],{"type":40,"tag":91,"props":1242,"children":1244},{"style":1243},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1245],{"type":46,"value":83},{"type":40,"tag":91,"props":1247,"children":1249},{"style":1248},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1250],{"type":46,"value":1251}," -Tsvg",{"type":40,"tag":91,"props":1253,"children":1254},{"style":1248},[1255],{"type":46,"value":1256}," input.dot",{"type":40,"tag":91,"props":1258,"children":1259},{"style":1248},[1260],{"type":46,"value":1261}," -o",{"type":40,"tag":91,"props":1263,"children":1264},{"style":1248},[1265],{"type":46,"value":1266}," output.svg\n",{"type":40,"tag":91,"props":1268,"children":1269},{"class":93,"line":111},[1270],{"type":40,"tag":91,"props":1271,"children":1272},{"emptyLinePlaceholder":290},[1273],{"type":46,"value":293},{"type":40,"tag":91,"props":1275,"children":1276},{"class":93,"line":157},[1277],{"type":40,"tag":91,"props":1278,"children":1279},{"style":1234},[1280],{"type":46,"value":1281},"# PNG (for embedding in Markdown\u002Fpresentations)\n",{"type":40,"tag":91,"props":1283,"children":1284},{"class":93,"line":27},[1285,1289,1294,1298,1302],{"type":40,"tag":91,"props":1286,"children":1287},{"style":1243},[1288],{"type":46,"value":83},{"type":40,"tag":91,"props":1290,"children":1291},{"style":1248},[1292],{"type":46,"value":1293}," -Tpng",{"type":40,"tag":91,"props":1295,"children":1296},{"style":1248},[1297],{"type":46,"value":1256},{"type":40,"tag":91,"props":1299,"children":1300},{"style":1248},[1301],{"type":46,"value":1261},{"type":40,"tag":91,"props":1303,"children":1304},{"style":1248},[1305],{"type":46,"value":1306}," output.png\n",{"type":40,"tag":91,"props":1308,"children":1309},{"class":93,"line":296},[1310],{"type":40,"tag":91,"props":1311,"children":1312},{"emptyLinePlaceholder":290},[1313],{"type":46,"value":293},{"type":40,"tag":91,"props":1315,"children":1316},{"class":93,"line":305},[1317],{"type":40,"tag":91,"props":1318,"children":1319},{"style":1234},[1320],{"type":46,"value":1321},"# Validate syntax only (no output file)\n",{"type":40,"tag":91,"props":1323,"children":1324},{"class":93,"line":314},[1325,1329,1333,1337,1343],{"type":40,"tag":91,"props":1326,"children":1327},{"style":1243},[1328],{"type":46,"value":83},{"type":40,"tag":91,"props":1330,"children":1331},{"style":1248},[1332],{"type":46,"value":1251},{"type":40,"tag":91,"props":1334,"children":1335},{"style":1248},[1336],{"type":46,"value":1256},{"type":40,"tag":91,"props":1338,"children":1340},{"style":1339},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1341],{"type":46,"value":1342}," >",{"type":40,"tag":91,"props":1344,"children":1345},{"style":1248},[1346],{"type":46,"value":1347}," \u002Fdev\u002Fnull\n",{"type":40,"tag":91,"props":1349,"children":1350},{"class":93,"line":628},[1351],{"type":40,"tag":91,"props":1352,"children":1353},{"emptyLinePlaceholder":290},[1354],{"type":46,"value":293},{"type":40,"tag":91,"props":1356,"children":1357},{"class":93,"line":637},[1358],{"type":40,"tag":91,"props":1359,"children":1360},{"style":1234},[1361],{"type":46,"value":1362},"# Specify layout engine\n",{"type":40,"tag":91,"props":1364,"children":1365},{"class":93,"line":646},[1366,1370,1374,1378,1382],{"type":40,"tag":91,"props":1367,"children":1368},{"style":1243},[1369],{"type":46,"value":946},{"type":40,"tag":91,"props":1371,"children":1372},{"style":1248},[1373],{"type":46,"value":1251},{"type":40,"tag":91,"props":1375,"children":1376},{"style":1248},[1377],{"type":46,"value":1256},{"type":40,"tag":91,"props":1379,"children":1380},{"style":1248},[1381],{"type":46,"value":1261},{"type":40,"tag":91,"props":1383,"children":1384},{"style":1248},[1385],{"type":46,"value":1266},{"type":40,"tag":91,"props":1387,"children":1388},{"class":93,"line":655},[1389,1393,1397,1401,1405],{"type":40,"tag":91,"props":1390,"children":1391},{"style":1243},[1392],{"type":46,"value":963},{"type":40,"tag":91,"props":1394,"children":1395},{"style":1248},[1396],{"type":46,"value":1293},{"type":40,"tag":91,"props":1398,"children":1399},{"style":1248},[1400],{"type":46,"value":1256},{"type":40,"tag":91,"props":1402,"children":1403},{"style":1248},[1404],{"type":46,"value":1261},{"type":40,"tag":91,"props":1406,"children":1407},{"style":1248},[1408],{"type":46,"value":1306},{"type":40,"tag":1410,"props":1411,"children":1412},"style",{},[1413],{"type":46,"value":1414},"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":1416,"total":1611},[1417,1439,1460,1481,1496,1513,1524,1537,1552,1567,1586,1599],{"slug":1418,"name":1418,"fn":1419,"description":1420,"org":1421,"tags":1422,"stars":1436,"repoUrl":1437,"updatedAt":1438},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1423,1426,1429,1430,1433],{"name":1424,"slug":1425,"type":15},"Engineering","engineering",{"name":1427,"slug":1428,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":1431,"slug":1432,"type":15},"Project Management","project-management",{"name":1434,"slug":1435,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":1440,"name":1440,"fn":1441,"description":1442,"org":1443,"tags":1444,"stars":1457,"repoUrl":1458,"updatedAt":1459},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1445,1448,1451,1454],{"name":1446,"slug":1447,"type":15},".NET","net",{"name":1449,"slug":1450,"type":15},"Agents","agents",{"name":1452,"slug":1453,"type":15},"Azure","azure",{"name":1455,"slug":1456,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":1461,"name":1461,"fn":1462,"description":1463,"org":1464,"tags":1465,"stars":1457,"repoUrl":1458,"updatedAt":1480},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1466,1469,1470,1473,1476,1477],{"name":1467,"slug":1468,"type":15},"Analytics","analytics",{"name":1452,"slug":1453,"type":15},{"name":1471,"slug":1472,"type":15},"Data Analysis","data-analysis",{"name":1474,"slug":1475,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":1478,"slug":1479,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":1482,"name":1482,"fn":1483,"description":1484,"org":1485,"tags":1486,"stars":1457,"repoUrl":1458,"updatedAt":1495},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1487,1490,1491,1492],{"name":1488,"slug":1489,"type":15},"AI Infrastructure","ai-infrastructure",{"name":1452,"slug":1453,"type":15},{"name":1474,"slug":1475,"type":15},{"name":1493,"slug":1494,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":1497,"name":1497,"fn":1498,"description":1499,"org":1500,"tags":1501,"stars":1457,"repoUrl":1458,"updatedAt":1512},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1502,1503,1506,1507,1508,1511],{"name":1452,"slug":1453,"type":15},{"name":1504,"slug":1505,"type":15},"Compliance","compliance",{"name":1455,"slug":1456,"type":15},{"name":9,"slug":8,"type":15},{"name":1509,"slug":1510,"type":15},"Python","python",{"name":1493,"slug":1494,"type":15},"2026-07-18T05:14:23.017504",{"slug":1514,"name":1514,"fn":1515,"description":1516,"org":1517,"tags":1518,"stars":1457,"repoUrl":1458,"updatedAt":1523},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1519,1520,1521,1522],{"name":1467,"slug":1468,"type":15},{"name":1452,"slug":1453,"type":15},{"name":1455,"slug":1456,"type":15},{"name":1509,"slug":1510,"type":15},"2026-07-31T05:54:29.068751",{"slug":1525,"name":1525,"fn":1526,"description":1527,"org":1528,"tags":1529,"stars":1457,"repoUrl":1458,"updatedAt":1536},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1530,1533,1534,1535],{"name":1531,"slug":1532,"type":15},"API Development","api-development",{"name":1452,"slug":1453,"type":15},{"name":9,"slug":8,"type":15},{"name":1509,"slug":1510,"type":15},"2026-07-18T05:14:16.988376",{"slug":1538,"name":1538,"fn":1539,"description":1540,"org":1541,"tags":1542,"stars":1457,"repoUrl":1458,"updatedAt":1551},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1543,1544,1547,1550],{"name":1452,"slug":1453,"type":15},{"name":1545,"slug":1546,"type":15},"Computer Vision","computer-vision",{"name":1548,"slug":1549,"type":15},"Images","images",{"name":1509,"slug":1510,"type":15},"2026-07-18T05:14:18.007737",{"slug":1553,"name":1553,"fn":1554,"description":1555,"org":1556,"tags":1557,"stars":1457,"repoUrl":1458,"updatedAt":1566},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1558,1559,1562,1565],{"name":1452,"slug":1453,"type":15},{"name":1560,"slug":1561,"type":15},"Configuration","configuration",{"name":1563,"slug":1564,"type":15},"Feature Flags","feature-flags",{"name":1474,"slug":1475,"type":15},"2026-07-03T16:32:01.278468",{"slug":1568,"name":1568,"fn":1569,"description":1570,"org":1571,"tags":1572,"stars":1457,"repoUrl":1458,"updatedAt":1585},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1573,1576,1579,1582],{"name":1574,"slug":1575,"type":15},"Cosmos DB","cosmos-db",{"name":1577,"slug":1578,"type":15},"Database","database",{"name":1580,"slug":1581,"type":15},"NoSQL","nosql",{"name":1583,"slug":1584,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":1587,"name":1587,"fn":1569,"description":1588,"org":1589,"tags":1590,"stars":1457,"repoUrl":1458,"updatedAt":1598},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1591,1592,1593,1594,1595],{"name":1574,"slug":1575,"type":15},{"name":1577,"slug":1578,"type":15},{"name":9,"slug":8,"type":15},{"name":1580,"slug":1581,"type":15},{"name":1596,"slug":1597,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":1600,"name":1600,"fn":1601,"description":1602,"org":1603,"tags":1604,"stars":1457,"repoUrl":1458,"updatedAt":1610},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1605,1606,1607,1608,1609],{"name":1452,"slug":1453,"type":15},{"name":1574,"slug":1575,"type":15},{"name":1577,"slug":1578,"type":15},{"name":1474,"slug":1475,"type":15},{"name":1580,"slug":1581,"type":15},"2026-05-13T06:14:17.582229",267,{"items":1613,"total":296},[1614,1627,1638,1649,1665,1672],{"slug":1615,"name":1615,"fn":1616,"description":1617,"org":1618,"tags":1619,"stars":23,"repoUrl":24,"updatedAt":1626},"dot-as-analysis","analyze systems by reconciling DOT diagrams","Use when analyzing a system to surface hidden issues — draw what you believe exists, then reconcile against what actually exists",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1620,1623,1624,1625],{"name":1621,"slug":1622,"type":15},"Code Analysis","code-analysis",{"name":18,"slug":19,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-04-06T18:37:07.174813",{"slug":1628,"name":1628,"fn":1629,"description":1630,"org":1631,"tags":1632,"stars":23,"repoUrl":24,"updatedAt":1637},"dot-graph-intelligence","analyze graph structures programmatically","Use when you need programmatic graph structure analysis — reachability, cycles, critical paths, and diffs without spending LLM tokens on structural questions code can answer",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1633,1634],{"name":1621,"slug":1622,"type":15},{"name":1635,"slug":1636,"type":15},"Graph Analysis","graph-analysis","2026-04-06T18:37:09.744416",{"slug":1639,"name":1639,"fn":1640,"description":1641,"org":1642,"tags":1643,"stars":23,"repoUrl":24,"updatedAt":1648},"dot-patterns","provide DOT templates for common diagrams","Use when you need copy-paste DOT templates for common diagram types — start from a working pattern rather than blank canvas",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1644,1645,1646,1647],{"name":18,"slug":19,"type":15},{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},"2026-04-06T18:37:04.633419",{"slug":1650,"name":1650,"fn":1651,"description":1652,"org":1653,"tags":1654,"stars":23,"repoUrl":24,"updatedAt":1664},"dot-quality","enforce quality standards on DOT diagrams","Use when enforcing quality standards on DOT diagrams — checking completeness, structure, and visual clarity before sharing or committing",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1655,1656,1657,1658,1661],{"name":18,"slug":19,"type":15},{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"name":1659,"slug":1660,"type":15},"QA","qa",{"name":1662,"slug":1663,"type":15},"Visual Design","visual-design","2026-04-06T18:37:03.368919",{"slug":4,"name":4,"fn":5,"description":6,"org":1666,"tags":1667,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1668,1669,1670,1671],{"name":18,"slug":19,"type":15},{"name":13,"slug":14,"type":15},{"name":21,"slug":22,"type":15},{"name":9,"slug":8,"type":15},{"slug":1673,"name":1673,"fn":1674,"description":1675,"org":1676,"tags":1677,"stars":23,"repoUrl":24,"updatedAt":1685},"parallax-investigation","investigate complex systems with multi-agent analysis","Use when you need true understanding of a complex system — not a quick answer. Parallax Discovery is a multi-agent, multi-pass investigation methodology that combines three perspectives (code tracing, behavior observation, integration mapping) to produce verified, evidence-backed findings.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1678,1679,1682],{"name":1621,"slug":1622,"type":15},{"name":1680,"slug":1681,"type":15},"Debugging","debugging",{"name":1683,"slug":1684,"type":15},"Multi-Agent","multi-agent","2026-04-06T18:37:08.486158"]