[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-azure-analyse-source-design":3,"mdc-wnsc2r-key":35,"related-repo-azure-analyse-source-design":1250,"related-org-azure-analyse-source-design":1355},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"analyse-source-design","analyze TIBCO flow architecture","Rules for analysing a single TIBCO flow group's architecture. Covers source file reading depth, Mermaid diagram rules, flow\u002Fsub-process rendering, processor mapping priority ladder, and the required multi-step store tool sequence.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"azure","Azure (Microsoft)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fazure.png","Azure",[13,15,18,21],{"name":11,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"Architecture","architecture",{"name":19,"slug":20,"type":14},"Diagrams","diagrams",{"name":22,"slug":23,"type":14},"Code Analysis","code-analysis",6,"https:\u002F\u002Fgithub.com\u002FAzure\u002Flogicapps-migration-agent","2026-07-12T08:19:15.81605",null,7,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"VS Code Extension for migrating BizTalk, MuleSoft, and other integration platforms to Azure Logic Apps Standard","https:\u002F\u002Fgithub.com\u002FAzure\u002Flogicapps-migration-agent\u002Ftree\u002FHEAD\u002Fresources\u002Fskills\u002Fanalyse-source-design\u002Ftibco","---\nname: analyse-source-design\ndescription: Rules for analysing a single TIBCO flow group's architecture. Covers source file reading depth, Mermaid diagram rules, flow\u002Fsub-process rendering, processor mapping priority ladder, and the required multi-step store tool sequence.\n---\n\n# Skill: Analysing Flow Architecture\n\n> **Purpose**: Authoritative rules for how an AI agent should analyse a single TIBCO flow group, generate an architecture visualization, and store the discovery results. Follow exactly.\n\n---\n\n## 1. Source Reading Depth\n\n- Call `migration_getArtifactDetails` AND `migration_readSourceFile` for EVERY artifact in the group.\n- Extract ALL configuration details — connector type, HTTP listener paths, Mapper\u002FXSLT scripts, scheduler expressions, database queries, error handler strategies, global config references, process-call targets, choice\u002Fscatter-gather branches, variable assignments.\n- ZERO HALLUCINATION — every value in the architecture diagram MUST come from source files.\n\n---\n\n## 2. Reference Lookup (MANDATORY)\n\nBefore classifying any component's Azure equivalent:\n\n1. Read the skill `source-to-logic-apps-mapping` to look up the exact Logic Apps Standard equivalent.\n2. For EACH connector\u002Fprocessor\u002Ftechnology, use the connector name and operation names from that skill as search terms:\n    - Call `migration_readReferenceDoc` with `action=\"search\"` and a TARGETED query.\n    - Call `migration_readReferenceDoc` with `action=\"read\"` for the TOP result.\n3. Do NOT combine all connectors into one generic search.\n4. Do NOT assume any connector lacks native support without checking the skill and docs first.\n\n---\n\n## 3. Mermaid Architecture Diagram Rules\n\nGenerate a `flowchart TB` with subgraphs for: **SOURCES (TRIGGERS)**, **GLOBAL CONFIGS**, **FLOWS**, **sub-processes**, **OUTBOUND CONNECTORS**.\n\n### 3.1 Flow Source Rules\n\n- Each flow with a source (http:listener, scheduler, jms:listener, etc.) gets an entry point node in the SOURCES subgraph.\n- Pattern: Source → Flow → Processors → Outbound Connectors.\n- Use cylinder shape `[(\"..\")]` for queue\u002Ftopic destinations.\n\n### 3.2 Flow Reference Rules\n\n- `process-call` links from one flow\u002Fsub-process to another MUST be shown as arrows between subgraphs.\n- CORRECT: `FLOW1 --> SUB_FLOW1`, where the arrow label is `\"process-call: sub-process-name\"`.\n- sub-processes have NO source — they are always invoked via `process-call`.\n\n### 3.3 Global Config References\n\nRead the TIBCO XML carefully for global connector configurations:\n\n| Config Type                   | Meaning                                               | Diagram               |\n| ----------------------------- | ----------------------------------------------------- | --------------------- |\n| `http:listener-config`        | Shared HTTP listener configuration (host, port, TLS)  | Sources → Flows       |\n| `http:request-config`         | Outbound HTTP client configuration (host, auth)       | Flow → External API   |\n| `db:config`                   | Database connection pool (host, DB name, credentials) | Flow → Database       |\n| `jms:config` \u002F `ems:config`    | Messaging connector (broker URL, queues)              | Flow → Message Broker |\n| `file:config` \u002F `sftp:config` | File system or SFTP connection                        | Flow → File System    |\n\nShow global configs as shared resources that multiple flows reference via `config-ref`.\n\n### 3.4 Flow Internal Detail (MANDATORY)\n\nDo NOT draw a flow as a single box. Each flow MUST be a subgraph containing its individual processors as separate nodes:\n\n- HTTP Listener, mapper activity, choice (with when\u002Fotherwise branches), scatter-gather (with routes), foreach, try (with error-handler), process-call, set-variable, logger, http:request, JDBC SQL activities\u002Finsert, etc.\n- Show the execution flow between processors with arrows.\n- Include for each processor: doc:name (display name), processor type, config-ref, key attributes (path, method, Mapper\u002FXSLT script reference, collection expression).\n- Label every arrow with what happens at that step.\n- For `choice` routers, show each `when` branch condition and the `otherwise` branch.\n- For `scatter-gather`, show parallel routes as parallel branches converging.\n\n### 3.5 sub-process Expansion (MANDATORY)\n\nIf any flow invokes a sub-process via `process-call`:\n\n1. **Each invoked sub-process MUST be expanded** as its own subgraph with full internal processors — exactly like the parent flow (§3.4). Do NOT render sub-processes as collapsed leaf nodes (e.g., `process-call_1`, `subflow_2`).\n2. **Read the target sub-process's source file** using `migration_readSourceFile` to get its processors.\n3. **Connect parent → sub-process** with an arrow labeled `\"process-call: {sub-process-name}\"`.\n4. **Recurse**: if the sub-process itself calls further sub-processes, expand those too — all the way down the call tree.\n\n### 3.6 No Collapsed Invocation Targets\n\nLeaf nodes like `process-call_1` or `subflow_2` are NOT acceptable final output. Every invoked sub-process must be a fully expanded subgraph unless:\n- The target sub-process is NOT in the flow group's artifact list (in which case, label the node as \"External: {name} (not in group)\").\n\n### 3.7 Overflow Handling\n\nWhen the diagram becomes too large (more than ~30 flow\u002Fsub-process subgraphs or ~200 processor nodes):\n- Split into parent diagram + child detail diagrams.\n- The parent diagram shows flow-level boxes with process-call relationships.\n- Each child detail diagram shows the full internal processors for one flow.\n- Store the parent diagram via `storeArchitecture`; reference child details in `storeComponents`.\n\n### 3.8 Pre-Store Validation Gates\n\nBefore calling `migration_discovery_storeArchitecture` or `migration_discovery_finalize`, verify:\n\n- [ ] ALL invoked sub-processes in the flow group are expanded as subgraphs with internal processors\n- [ ] ALL processors are labeled with doc:name, type, and relevant details\n- [ ] ALL arrows between processors have step-level labels\n- [ ] NO collapsed invocation targets remain (no bare `process-call_*` or `subflow_*` leaf nodes)\n\n**If any gate fails, do NOT call storeArchitecture or finalize.** Fix the diagram first.\n\n---\n\n## 4. Component Mapping Priority Ladder\n\n> **⚠️ MANDATORY OVERRIDE — READ THIS FIRST:**\n> Source custom code — custom Java classes, custom TIBCO modules, XPath (TIBCO Expression Language) scripts with complex Java interop, custom transformers, custom policies — MUST **ALWAYS** map to **.NET local functions** (level 5). Do NOT simplify custom code to expressions, inline code, or any other level. This rule overrides the priority ladder below. If source code exists, the conversion agent MUST translate the real business logic into a .NET local function — never a stub, never an expression approximation.\n\nFor all **other** (non-custom-code) components, follow this priority for `azureEquivalent`:\n\n1. **Built-in actions** — HTTP trigger\u002Faction, Compose, Parse JSON, Select, Transform XML (Xslt), XML Parse (XmlParse), XML Compose (XmlCompose), Validate XML (XmlValidation), Flat File Decode\u002FEncode, Service Bus, SQL Connector, File\u002FFTP\u002FSFTP connectors.\n2. **Workflow expressions** — `@concat()`, `@add()`, `@if()`, `@body()`, `@items()` — ONLY when no built-in action exists.\n3. **Data Mapper \u002F Liquid** — for Mapper\u002FXSLT-to-Liquid field mapping conversions.\n4. **Inline Code** — for moderate logic (simple Mapper\u002FXSLT expressions that can be inlined).\n5. **.NET local functions** — for complex Mapper\u002FXSLT scripts, Java-based custom code, or logic that cannot be expressed in Liquid.\n6. **Azure Functions** — ONLY for truly external services (last resort).\n\n> **AUTO-APPLY RULE**: Always choose the HIGHEST applicable level without asking. If a built-in action exists for the task (e.g. SQL connector for JDBC SQL activities, HTTP action for http:request), use it — do NOT fall back to expressions or ask the user. The ladder is deterministic: pick the first level that works.\n\n> **Mapper\u002FXSLT PROCESSING RULE**: For Mapper\u002FXSLT transformations (`mapper activity`), assess complexity. Simple field mappings → Liquid templates. Complex scripts with functions, reduce, groupBy, match → .NET local functions or Azure Functions. Always flag Mapper\u002FXSLT conversions as gaps requiring review.\n\n### Additional Rules\n\n- Every flow (type=flow) MUST have `azureEquivalent='Logic Apps Standard workflow'` — NEVER `'local function'`.\n- sub-processes → child workflows invoked via Workflow action type, OR inlined into the parent workflow if simple enough.\n- .NET local function = NATIVE (`isLogicAppsNative=true`); custom built-in connector = NOT native (`isLogicAppsNative=false`).\n\n---\n\n## 5. Required Store Tool Sequence\n\nStore discovery results in THIS order:\n\n1. `migration_discovery_storeMeta` — explanation, summary (with flows, subProcesses, globalConfigs, connectors, Mapper\u002FXSLTFiles, errorHandlers arrays), title.\n2. `migration_discovery_storeArchitecture` — complete Mermaid diagram string.\n3. `migration_discovery_storeComponents` — componentDetails array (id, name, type, description, purpose, connectedTo, properties, azureEquivalent, isLogicAppsNative).\n4. `migration_discovery_storeMessageFlow` — messageFlow array (step, component, componentType, action, messageType, description, pipelineComponents, properties, subscriptionFilter, additionalDetails). `additionalDetails` is MANDATORY and MUST be an object of named fields, never a raw string. If there is only one free-text note, put it in `description` or use `additionalDetails: { note: \"...\" }`. If there are no extra structured details, send `additionalDetails: {}`.\n5. `migration_discovery_storeGaps` — gapAnalysis array (component, componentType, gap, severity, options, recommendation).\n6. `migration_discovery_storePatterns` — migrationPatterns array (pattern, description, complexity, TIBCOApproach, logicAppsApproach, components).\n7. `migration_discovery_storeDependencies` — missingDependencies array + summary + allCriticalResolved + counts.\n8. `migration_discovery_finalize` — assemble all files and open visualization.\n\nDo NOT call `migration_discovery_storeAnalysis` — use the individual tools above.\n\n\n",{"data":36,"body":37},{"name":4,"description":6},{"type":38,"children":39},"root",[40,49,65,69,76,113,116,122,127,200,203,209,254,261,287,293,338,344,349,507,519,525,530,594,600,612,684,690,709,717,723,728,766,772,792,852,862,865,871,898,917,1015,1028,1049,1055,1103,1106,1112,1117,1237],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"skill-analysing-flow-architecture",[46],{"type":47,"value":48},"text","Skill: Analysing Flow Architecture",{"type":41,"tag":50,"props":51,"children":52},"blockquote",{},[53],{"type":41,"tag":54,"props":55,"children":56},"p",{},[57,63],{"type":41,"tag":58,"props":59,"children":60},"strong",{},[61],{"type":47,"value":62},"Purpose",{"type":47,"value":64},": Authoritative rules for how an AI agent should analyse a single TIBCO flow group, generate an architecture visualization, and store the discovery results. Follow exactly.",{"type":41,"tag":66,"props":67,"children":68},"hr",{},[],{"type":41,"tag":70,"props":71,"children":73},"h2",{"id":72},"_1-source-reading-depth",[74],{"type":47,"value":75},"1. Source Reading Depth",{"type":41,"tag":77,"props":78,"children":79},"ul",{},[80,103,108],{"type":41,"tag":81,"props":82,"children":83},"li",{},[84,86,93,95,101],{"type":47,"value":85},"Call ",{"type":41,"tag":87,"props":88,"children":90},"code",{"className":89},[],[91],{"type":47,"value":92},"migration_getArtifactDetails",{"type":47,"value":94}," AND ",{"type":41,"tag":87,"props":96,"children":98},{"className":97},[],[99],{"type":47,"value":100},"migration_readSourceFile",{"type":47,"value":102}," for EVERY artifact in the group.",{"type":41,"tag":81,"props":104,"children":105},{},[106],{"type":47,"value":107},"Extract ALL configuration details — connector type, HTTP listener paths, Mapper\u002FXSLT scripts, scheduler expressions, database queries, error handler strategies, global config references, process-call targets, choice\u002Fscatter-gather branches, variable assignments.",{"type":41,"tag":81,"props":109,"children":110},{},[111],{"type":47,"value":112},"ZERO HALLUCINATION — every value in the architecture diagram MUST come from source files.",{"type":41,"tag":66,"props":114,"children":115},{},[],{"type":41,"tag":70,"props":117,"children":119},{"id":118},"_2-reference-lookup-mandatory",[120],{"type":47,"value":121},"2. Reference Lookup (MANDATORY)",{"type":41,"tag":54,"props":123,"children":124},{},[125],{"type":47,"value":126},"Before classifying any component's Azure equivalent:",{"type":41,"tag":128,"props":129,"children":130},"ol",{},[131,144,190,195],{"type":41,"tag":81,"props":132,"children":133},{},[134,136,142],{"type":47,"value":135},"Read the skill ",{"type":41,"tag":87,"props":137,"children":139},{"className":138},[],[140],{"type":47,"value":141},"source-to-logic-apps-mapping",{"type":47,"value":143}," to look up the exact Logic Apps Standard equivalent.",{"type":41,"tag":81,"props":145,"children":146},{},[147,149],{"type":47,"value":148},"For EACH connector\u002Fprocessor\u002Ftechnology, use the connector name and operation names from that skill as search terms:\n",{"type":41,"tag":77,"props":150,"children":151},{},[152,172],{"type":41,"tag":81,"props":153,"children":154},{},[155,156,162,164,170],{"type":47,"value":85},{"type":41,"tag":87,"props":157,"children":159},{"className":158},[],[160],{"type":47,"value":161},"migration_readReferenceDoc",{"type":47,"value":163}," with ",{"type":41,"tag":87,"props":165,"children":167},{"className":166},[],[168],{"type":47,"value":169},"action=\"search\"",{"type":47,"value":171}," and a TARGETED query.",{"type":41,"tag":81,"props":173,"children":174},{},[175,176,181,182,188],{"type":47,"value":85},{"type":41,"tag":87,"props":177,"children":179},{"className":178},[],[180],{"type":47,"value":161},{"type":47,"value":163},{"type":41,"tag":87,"props":183,"children":185},{"className":184},[],[186],{"type":47,"value":187},"action=\"read\"",{"type":47,"value":189}," for the TOP result.",{"type":41,"tag":81,"props":191,"children":192},{},[193],{"type":47,"value":194},"Do NOT combine all connectors into one generic search.",{"type":41,"tag":81,"props":196,"children":197},{},[198],{"type":47,"value":199},"Do NOT assume any connector lacks native support without checking the skill and docs first.",{"type":41,"tag":66,"props":201,"children":202},{},[],{"type":41,"tag":70,"props":204,"children":206},{"id":205},"_3-mermaid-architecture-diagram-rules",[207],{"type":47,"value":208},"3. Mermaid Architecture Diagram Rules",{"type":41,"tag":54,"props":210,"children":211},{},[212,214,220,222,227,229,234,235,240,241,246,247,252],{"type":47,"value":213},"Generate a ",{"type":41,"tag":87,"props":215,"children":217},{"className":216},[],[218],{"type":47,"value":219},"flowchart TB",{"type":47,"value":221}," with subgraphs for: ",{"type":41,"tag":58,"props":223,"children":224},{},[225],{"type":47,"value":226},"SOURCES (TRIGGERS)",{"type":47,"value":228},", ",{"type":41,"tag":58,"props":230,"children":231},{},[232],{"type":47,"value":233},"GLOBAL CONFIGS",{"type":47,"value":228},{"type":41,"tag":58,"props":236,"children":237},{},[238],{"type":47,"value":239},"FLOWS",{"type":47,"value":228},{"type":41,"tag":58,"props":242,"children":243},{},[244],{"type":47,"value":245},"sub-processes",{"type":47,"value":228},{"type":41,"tag":58,"props":248,"children":249},{},[250],{"type":47,"value":251},"OUTBOUND CONNECTORS",{"type":47,"value":253},".",{"type":41,"tag":255,"props":256,"children":258},"h3",{"id":257},"_31-flow-source-rules",[259],{"type":47,"value":260},"3.1 Flow Source Rules",{"type":41,"tag":77,"props":262,"children":263},{},[264,269,274],{"type":41,"tag":81,"props":265,"children":266},{},[267],{"type":47,"value":268},"Each flow with a source (http:listener, scheduler, jms:listener, etc.) gets an entry point node in the SOURCES subgraph.",{"type":41,"tag":81,"props":270,"children":271},{},[272],{"type":47,"value":273},"Pattern: Source → Flow → Processors → Outbound Connectors.",{"type":41,"tag":81,"props":275,"children":276},{},[277,279,285],{"type":47,"value":278},"Use cylinder shape ",{"type":41,"tag":87,"props":280,"children":282},{"className":281},[],[283],{"type":47,"value":284},"[(\"..\")]",{"type":47,"value":286}," for queue\u002Ftopic destinations.",{"type":41,"tag":255,"props":288,"children":290},{"id":289},"_32-flow-reference-rules",[291],{"type":47,"value":292},"3.2 Flow Reference Rules",{"type":41,"tag":77,"props":294,"children":295},{},[296,307,327],{"type":41,"tag":81,"props":297,"children":298},{},[299,305],{"type":41,"tag":87,"props":300,"children":302},{"className":301},[],[303],{"type":47,"value":304},"process-call",{"type":47,"value":306}," links from one flow\u002Fsub-process to another MUST be shown as arrows between subgraphs.",{"type":41,"tag":81,"props":308,"children":309},{},[310,312,318,320,326],{"type":47,"value":311},"CORRECT: ",{"type":41,"tag":87,"props":313,"children":315},{"className":314},[],[316],{"type":47,"value":317},"FLOW1 --> SUB_FLOW1",{"type":47,"value":319},", where the arrow label is ",{"type":41,"tag":87,"props":321,"children":323},{"className":322},[],[324],{"type":47,"value":325},"\"process-call: sub-process-name\"",{"type":47,"value":253},{"type":41,"tag":81,"props":328,"children":329},{},[330,332,337],{"type":47,"value":331},"sub-processes have NO source — they are always invoked via ",{"type":41,"tag":87,"props":333,"children":335},{"className":334},[],[336],{"type":47,"value":304},{"type":47,"value":253},{"type":41,"tag":255,"props":339,"children":341},{"id":340},"_33-global-config-references",[342],{"type":47,"value":343},"3.3 Global Config References",{"type":41,"tag":54,"props":345,"children":346},{},[347],{"type":47,"value":348},"Read the TIBCO XML carefully for global connector configurations:",{"type":41,"tag":350,"props":351,"children":352},"table",{},[353,377],{"type":41,"tag":354,"props":355,"children":356},"thead",{},[357],{"type":41,"tag":358,"props":359,"children":360},"tr",{},[361,367,372],{"type":41,"tag":362,"props":363,"children":364},"th",{},[365],{"type":47,"value":366},"Config Type",{"type":41,"tag":362,"props":368,"children":369},{},[370],{"type":47,"value":371},"Meaning",{"type":41,"tag":362,"props":373,"children":374},{},[375],{"type":47,"value":376},"Diagram",{"type":41,"tag":378,"props":379,"children":380},"tbody",{},[381,404,426,448,478],{"type":41,"tag":358,"props":382,"children":383},{},[384,394,399],{"type":41,"tag":385,"props":386,"children":387},"td",{},[388],{"type":41,"tag":87,"props":389,"children":391},{"className":390},[],[392],{"type":47,"value":393},"http:listener-config",{"type":41,"tag":385,"props":395,"children":396},{},[397],{"type":47,"value":398},"Shared HTTP listener configuration (host, port, TLS)",{"type":41,"tag":385,"props":400,"children":401},{},[402],{"type":47,"value":403},"Sources → Flows",{"type":41,"tag":358,"props":405,"children":406},{},[407,416,421],{"type":41,"tag":385,"props":408,"children":409},{},[410],{"type":41,"tag":87,"props":411,"children":413},{"className":412},[],[414],{"type":47,"value":415},"http:request-config",{"type":41,"tag":385,"props":417,"children":418},{},[419],{"type":47,"value":420},"Outbound HTTP client configuration (host, auth)",{"type":41,"tag":385,"props":422,"children":423},{},[424],{"type":47,"value":425},"Flow → External API",{"type":41,"tag":358,"props":427,"children":428},{},[429,438,443],{"type":41,"tag":385,"props":430,"children":431},{},[432],{"type":41,"tag":87,"props":433,"children":435},{"className":434},[],[436],{"type":47,"value":437},"db:config",{"type":41,"tag":385,"props":439,"children":440},{},[441],{"type":47,"value":442},"Database connection pool (host, DB name, credentials)",{"type":41,"tag":385,"props":444,"children":445},{},[446],{"type":47,"value":447},"Flow → Database",{"type":41,"tag":358,"props":449,"children":450},{},[451,468,473],{"type":41,"tag":385,"props":452,"children":453},{},[454,460,462],{"type":41,"tag":87,"props":455,"children":457},{"className":456},[],[458],{"type":47,"value":459},"jms:config",{"type":47,"value":461}," \u002F ",{"type":41,"tag":87,"props":463,"children":465},{"className":464},[],[466],{"type":47,"value":467},"ems:config",{"type":41,"tag":385,"props":469,"children":470},{},[471],{"type":47,"value":472},"Messaging connector (broker URL, queues)",{"type":41,"tag":385,"props":474,"children":475},{},[476],{"type":47,"value":477},"Flow → Message Broker",{"type":41,"tag":358,"props":479,"children":480},{},[481,497,502],{"type":41,"tag":385,"props":482,"children":483},{},[484,490,491],{"type":41,"tag":87,"props":485,"children":487},{"className":486},[],[488],{"type":47,"value":489},"file:config",{"type":47,"value":461},{"type":41,"tag":87,"props":492,"children":494},{"className":493},[],[495],{"type":47,"value":496},"sftp:config",{"type":41,"tag":385,"props":498,"children":499},{},[500],{"type":47,"value":501},"File system or SFTP connection",{"type":41,"tag":385,"props":503,"children":504},{},[505],{"type":47,"value":506},"Flow → File System",{"type":41,"tag":54,"props":508,"children":509},{},[510,512,518],{"type":47,"value":511},"Show global configs as shared resources that multiple flows reference via ",{"type":41,"tag":87,"props":513,"children":515},{"className":514},[],[516],{"type":47,"value":517},"config-ref",{"type":47,"value":253},{"type":41,"tag":255,"props":520,"children":522},{"id":521},"_34-flow-internal-detail-mandatory",[523],{"type":47,"value":524},"3.4 Flow Internal Detail (MANDATORY)",{"type":41,"tag":54,"props":526,"children":527},{},[528],{"type":47,"value":529},"Do NOT draw a flow as a single box. Each flow MUST be a subgraph containing its individual processors as separate nodes:",{"type":41,"tag":77,"props":531,"children":532},{},[533,538,543,548,553,582],{"type":41,"tag":81,"props":534,"children":535},{},[536],{"type":47,"value":537},"HTTP Listener, mapper activity, choice (with when\u002Fotherwise branches), scatter-gather (with routes), foreach, try (with error-handler), process-call, set-variable, logger, http:request, JDBC SQL activities\u002Finsert, etc.",{"type":41,"tag":81,"props":539,"children":540},{},[541],{"type":47,"value":542},"Show the execution flow between processors with arrows.",{"type":41,"tag":81,"props":544,"children":545},{},[546],{"type":47,"value":547},"Include for each processor: doc:name (display name), processor type, config-ref, key attributes (path, method, Mapper\u002FXSLT script reference, collection expression).",{"type":41,"tag":81,"props":549,"children":550},{},[551],{"type":47,"value":552},"Label every arrow with what happens at that step.",{"type":41,"tag":81,"props":554,"children":555},{},[556,558,564,566,572,574,580],{"type":47,"value":557},"For ",{"type":41,"tag":87,"props":559,"children":561},{"className":560},[],[562],{"type":47,"value":563},"choice",{"type":47,"value":565}," routers, show each ",{"type":41,"tag":87,"props":567,"children":569},{"className":568},[],[570],{"type":47,"value":571},"when",{"type":47,"value":573}," branch condition and the ",{"type":41,"tag":87,"props":575,"children":577},{"className":576},[],[578],{"type":47,"value":579},"otherwise",{"type":47,"value":581}," branch.",{"type":41,"tag":81,"props":583,"children":584},{},[585,586,592],{"type":47,"value":557},{"type":41,"tag":87,"props":587,"children":589},{"className":588},[],[590],{"type":47,"value":591},"scatter-gather",{"type":47,"value":593},", show parallel routes as parallel branches converging.",{"type":41,"tag":255,"props":595,"children":597},{"id":596},"_35-sub-process-expansion-mandatory",[598],{"type":47,"value":599},"3.5 sub-process Expansion (MANDATORY)",{"type":41,"tag":54,"props":601,"children":602},{},[603,605,610],{"type":47,"value":604},"If any flow invokes a sub-process via ",{"type":41,"tag":87,"props":606,"children":608},{"className":607},[],[609],{"type":47,"value":304},{"type":47,"value":611},":",{"type":41,"tag":128,"props":613,"children":614},{},[615,640,657,674],{"type":41,"tag":81,"props":616,"children":617},{},[618,623,625,631,632,638],{"type":41,"tag":58,"props":619,"children":620},{},[621],{"type":47,"value":622},"Each invoked sub-process MUST be expanded",{"type":47,"value":624}," as its own subgraph with full internal processors — exactly like the parent flow (§3.4). Do NOT render sub-processes as collapsed leaf nodes (e.g., ",{"type":41,"tag":87,"props":626,"children":628},{"className":627},[],[629],{"type":47,"value":630},"process-call_1",{"type":47,"value":228},{"type":41,"tag":87,"props":633,"children":635},{"className":634},[],[636],{"type":47,"value":637},"subflow_2",{"type":47,"value":639},").",{"type":41,"tag":81,"props":641,"children":642},{},[643,648,650,655],{"type":41,"tag":58,"props":644,"children":645},{},[646],{"type":47,"value":647},"Read the target sub-process's source file",{"type":47,"value":649}," using ",{"type":41,"tag":87,"props":651,"children":653},{"className":652},[],[654],{"type":47,"value":100},{"type":47,"value":656}," to get its processors.",{"type":41,"tag":81,"props":658,"children":659},{},[660,665,667,673],{"type":41,"tag":58,"props":661,"children":662},{},[663],{"type":47,"value":664},"Connect parent → sub-process",{"type":47,"value":666}," with an arrow labeled ",{"type":41,"tag":87,"props":668,"children":670},{"className":669},[],[671],{"type":47,"value":672},"\"process-call: {sub-process-name}\"",{"type":47,"value":253},{"type":41,"tag":81,"props":675,"children":676},{},[677,682],{"type":41,"tag":58,"props":678,"children":679},{},[680],{"type":47,"value":681},"Recurse",{"type":47,"value":683},": if the sub-process itself calls further sub-processes, expand those too — all the way down the call tree.",{"type":41,"tag":255,"props":685,"children":687},{"id":686},"_36-no-collapsed-invocation-targets",[688],{"type":47,"value":689},"3.6 No Collapsed Invocation Targets",{"type":41,"tag":54,"props":691,"children":692},{},[693,695,700,702,707],{"type":47,"value":694},"Leaf nodes like ",{"type":41,"tag":87,"props":696,"children":698},{"className":697},[],[699],{"type":47,"value":630},{"type":47,"value":701}," or ",{"type":41,"tag":87,"props":703,"children":705},{"className":704},[],[706],{"type":47,"value":637},{"type":47,"value":708}," are NOT acceptable final output. Every invoked sub-process must be a fully expanded subgraph unless:",{"type":41,"tag":77,"props":710,"children":711},{},[712],{"type":41,"tag":81,"props":713,"children":714},{},[715],{"type":47,"value":716},"The target sub-process is NOT in the flow group's artifact list (in which case, label the node as \"External: {name} (not in group)\").",{"type":41,"tag":255,"props":718,"children":720},{"id":719},"_37-overflow-handling",[721],{"type":47,"value":722},"3.7 Overflow Handling",{"type":41,"tag":54,"props":724,"children":725},{},[726],{"type":47,"value":727},"When the diagram becomes too large (more than ~30 flow\u002Fsub-process subgraphs or ~200 processor nodes):",{"type":41,"tag":77,"props":729,"children":730},{},[731,736,741,746],{"type":41,"tag":81,"props":732,"children":733},{},[734],{"type":47,"value":735},"Split into parent diagram + child detail diagrams.",{"type":41,"tag":81,"props":737,"children":738},{},[739],{"type":47,"value":740},"The parent diagram shows flow-level boxes with process-call relationships.",{"type":41,"tag":81,"props":742,"children":743},{},[744],{"type":47,"value":745},"Each child detail diagram shows the full internal processors for one flow.",{"type":41,"tag":81,"props":747,"children":748},{},[749,751,757,759,765],{"type":47,"value":750},"Store the parent diagram via ",{"type":41,"tag":87,"props":752,"children":754},{"className":753},[],[755],{"type":47,"value":756},"storeArchitecture",{"type":47,"value":758},"; reference child details in ",{"type":41,"tag":87,"props":760,"children":762},{"className":761},[],[763],{"type":47,"value":764},"storeComponents",{"type":47,"value":253},{"type":41,"tag":255,"props":767,"children":769},{"id":768},"_38-pre-store-validation-gates",[770],{"type":47,"value":771},"3.8 Pre-Store Validation Gates",{"type":41,"tag":54,"props":773,"children":774},{},[775,777,783,784,790],{"type":47,"value":776},"Before calling ",{"type":41,"tag":87,"props":778,"children":780},{"className":779},[],[781],{"type":47,"value":782},"migration_discovery_storeArchitecture",{"type":47,"value":701},{"type":41,"tag":87,"props":785,"children":787},{"className":786},[],[788],{"type":47,"value":789},"migration_discovery_finalize",{"type":47,"value":791},", verify:",{"type":41,"tag":77,"props":793,"children":796},{"className":794},[795],"contains-task-list",[797,810,819,828],{"type":41,"tag":81,"props":798,"children":801},{"className":799},[800],"task-list-item",[802,808],{"type":41,"tag":803,"props":804,"children":807},"input",{"disabled":805,"type":806},true,"checkbox",[],{"type":47,"value":809}," ALL invoked sub-processes in the flow group are expanded as subgraphs with internal processors",{"type":41,"tag":81,"props":811,"children":813},{"className":812},[800],[814,817],{"type":41,"tag":803,"props":815,"children":816},{"disabled":805,"type":806},[],{"type":47,"value":818}," ALL processors are labeled with doc:name, type, and relevant details",{"type":41,"tag":81,"props":820,"children":822},{"className":821},[800],[823,826],{"type":41,"tag":803,"props":824,"children":825},{"disabled":805,"type":806},[],{"type":47,"value":827}," ALL arrows between processors have step-level labels",{"type":41,"tag":81,"props":829,"children":831},{"className":830},[800],[832,835,837,843,844,850],{"type":41,"tag":803,"props":833,"children":834},{"disabled":805,"type":806},[],{"type":47,"value":836}," NO collapsed invocation targets remain (no bare ",{"type":41,"tag":87,"props":838,"children":840},{"className":839},[],[841],{"type":47,"value":842},"process-call_*",{"type":47,"value":701},{"type":41,"tag":87,"props":845,"children":847},{"className":846},[],[848],{"type":47,"value":849},"subflow_*",{"type":47,"value":851}," leaf nodes)",{"type":41,"tag":54,"props":853,"children":854},{},[855,860],{"type":41,"tag":58,"props":856,"children":857},{},[858],{"type":47,"value":859},"If any gate fails, do NOT call storeArchitecture or finalize.",{"type":47,"value":861}," Fix the diagram first.",{"type":41,"tag":66,"props":863,"children":864},{},[],{"type":41,"tag":70,"props":866,"children":868},{"id":867},"_4-component-mapping-priority-ladder",[869],{"type":47,"value":870},"4. Component Mapping Priority Ladder",{"type":41,"tag":50,"props":872,"children":873},{},[874],{"type":41,"tag":54,"props":875,"children":876},{},[877,882,884,889,891,896],{"type":41,"tag":58,"props":878,"children":879},{},[880],{"type":47,"value":881},"⚠️ MANDATORY OVERRIDE — READ THIS FIRST:",{"type":47,"value":883},"\nSource custom code — custom Java classes, custom TIBCO modules, XPath (TIBCO Expression Language) scripts with complex Java interop, custom transformers, custom policies — MUST ",{"type":41,"tag":58,"props":885,"children":886},{},[887],{"type":47,"value":888},"ALWAYS",{"type":47,"value":890}," map to ",{"type":41,"tag":58,"props":892,"children":893},{},[894],{"type":47,"value":895},".NET local functions",{"type":47,"value":897}," (level 5). Do NOT simplify custom code to expressions, inline code, or any other level. This rule overrides the priority ladder below. If source code exists, the conversion agent MUST translate the real business logic into a .NET local function — never a stub, never an expression approximation.",{"type":41,"tag":54,"props":899,"children":900},{},[901,903,908,910,916],{"type":47,"value":902},"For all ",{"type":41,"tag":58,"props":904,"children":905},{},[906],{"type":47,"value":907},"other",{"type":47,"value":909}," (non-custom-code) components, follow this priority for ",{"type":41,"tag":87,"props":911,"children":913},{"className":912},[],[914],{"type":47,"value":915},"azureEquivalent",{"type":47,"value":611},{"type":41,"tag":128,"props":918,"children":919},{},[920,930,976,986,996,1005],{"type":41,"tag":81,"props":921,"children":922},{},[923,928],{"type":41,"tag":58,"props":924,"children":925},{},[926],{"type":47,"value":927},"Built-in actions",{"type":47,"value":929}," — HTTP trigger\u002Faction, Compose, Parse JSON, Select, Transform XML (Xslt), XML Parse (XmlParse), XML Compose (XmlCompose), Validate XML (XmlValidation), Flat File Decode\u002FEncode, Service Bus, SQL Connector, File\u002FFTP\u002FSFTP connectors.",{"type":41,"tag":81,"props":931,"children":932},{},[933,938,940,946,947,953,954,960,961,967,968,974],{"type":41,"tag":58,"props":934,"children":935},{},[936],{"type":47,"value":937},"Workflow expressions",{"type":47,"value":939}," — ",{"type":41,"tag":87,"props":941,"children":943},{"className":942},[],[944],{"type":47,"value":945},"@concat()",{"type":47,"value":228},{"type":41,"tag":87,"props":948,"children":950},{"className":949},[],[951],{"type":47,"value":952},"@add()",{"type":47,"value":228},{"type":41,"tag":87,"props":955,"children":957},{"className":956},[],[958],{"type":47,"value":959},"@if()",{"type":47,"value":228},{"type":41,"tag":87,"props":962,"children":964},{"className":963},[],[965],{"type":47,"value":966},"@body()",{"type":47,"value":228},{"type":41,"tag":87,"props":969,"children":971},{"className":970},[],[972],{"type":47,"value":973},"@items()",{"type":47,"value":975}," — ONLY when no built-in action exists.",{"type":41,"tag":81,"props":977,"children":978},{},[979,984],{"type":41,"tag":58,"props":980,"children":981},{},[982],{"type":47,"value":983},"Data Mapper \u002F Liquid",{"type":47,"value":985}," — for Mapper\u002FXSLT-to-Liquid field mapping conversions.",{"type":41,"tag":81,"props":987,"children":988},{},[989,994],{"type":41,"tag":58,"props":990,"children":991},{},[992],{"type":47,"value":993},"Inline Code",{"type":47,"value":995}," — for moderate logic (simple Mapper\u002FXSLT expressions that can be inlined).",{"type":41,"tag":81,"props":997,"children":998},{},[999,1003],{"type":41,"tag":58,"props":1000,"children":1001},{},[1002],{"type":47,"value":895},{"type":47,"value":1004}," — for complex Mapper\u002FXSLT scripts, Java-based custom code, or logic that cannot be expressed in Liquid.",{"type":41,"tag":81,"props":1006,"children":1007},{},[1008,1013],{"type":41,"tag":58,"props":1009,"children":1010},{},[1011],{"type":47,"value":1012},"Azure Functions",{"type":47,"value":1014}," — ONLY for truly external services (last resort).",{"type":41,"tag":50,"props":1016,"children":1017},{},[1018],{"type":41,"tag":54,"props":1019,"children":1020},{},[1021,1026],{"type":41,"tag":58,"props":1022,"children":1023},{},[1024],{"type":47,"value":1025},"AUTO-APPLY RULE",{"type":47,"value":1027},": Always choose the HIGHEST applicable level without asking. If a built-in action exists for the task (e.g. SQL connector for JDBC SQL activities, HTTP action for http:request), use it — do NOT fall back to expressions or ask the user. The ladder is deterministic: pick the first level that works.",{"type":41,"tag":50,"props":1029,"children":1030},{},[1031],{"type":41,"tag":54,"props":1032,"children":1033},{},[1034,1039,1041,1047],{"type":41,"tag":58,"props":1035,"children":1036},{},[1037],{"type":47,"value":1038},"Mapper\u002FXSLT PROCESSING RULE",{"type":47,"value":1040},": For Mapper\u002FXSLT transformations (",{"type":41,"tag":87,"props":1042,"children":1044},{"className":1043},[],[1045],{"type":47,"value":1046},"mapper activity",{"type":47,"value":1048},"), assess complexity. Simple field mappings → Liquid templates. Complex scripts with functions, reduce, groupBy, match → .NET local functions or Azure Functions. Always flag Mapper\u002FXSLT conversions as gaps requiring review.",{"type":41,"tag":255,"props":1050,"children":1052},{"id":1051},"additional-rules",[1053],{"type":47,"value":1054},"Additional Rules",{"type":41,"tag":77,"props":1056,"children":1057},{},[1058,1078,1083],{"type":41,"tag":81,"props":1059,"children":1060},{},[1061,1063,1069,1071,1077],{"type":47,"value":1062},"Every flow (type=flow) MUST have ",{"type":41,"tag":87,"props":1064,"children":1066},{"className":1065},[],[1067],{"type":47,"value":1068},"azureEquivalent='Logic Apps Standard workflow'",{"type":47,"value":1070}," — NEVER ",{"type":41,"tag":87,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":47,"value":1076},"'local function'",{"type":47,"value":253},{"type":41,"tag":81,"props":1079,"children":1080},{},[1081],{"type":47,"value":1082},"sub-processes → child workflows invoked via Workflow action type, OR inlined into the parent workflow if simple enough.",{"type":41,"tag":81,"props":1084,"children":1085},{},[1086,1088,1094,1096,1102],{"type":47,"value":1087},".NET local function = NATIVE (",{"type":41,"tag":87,"props":1089,"children":1091},{"className":1090},[],[1092],{"type":47,"value":1093},"isLogicAppsNative=true",{"type":47,"value":1095},"); custom built-in connector = NOT native (",{"type":41,"tag":87,"props":1097,"children":1099},{"className":1098},[],[1100],{"type":47,"value":1101},"isLogicAppsNative=false",{"type":47,"value":639},{"type":41,"tag":66,"props":1104,"children":1105},{},[],{"type":41,"tag":70,"props":1107,"children":1109},{"id":1108},"_5-required-store-tool-sequence",[1110],{"type":47,"value":1111},"5. Required Store Tool Sequence",{"type":41,"tag":54,"props":1113,"children":1114},{},[1115],{"type":47,"value":1116},"Store discovery results in THIS order:",{"type":41,"tag":128,"props":1118,"children":1119},{},[1120,1131,1141,1152,1194,1205,1216,1227],{"type":41,"tag":81,"props":1121,"children":1122},{},[1123,1129],{"type":41,"tag":87,"props":1124,"children":1126},{"className":1125},[],[1127],{"type":47,"value":1128},"migration_discovery_storeMeta",{"type":47,"value":1130}," — explanation, summary (with flows, subProcesses, globalConfigs, connectors, Mapper\u002FXSLTFiles, errorHandlers arrays), title.",{"type":41,"tag":81,"props":1132,"children":1133},{},[1134,1139],{"type":41,"tag":87,"props":1135,"children":1137},{"className":1136},[],[1138],{"type":47,"value":782},{"type":47,"value":1140}," — complete Mermaid diagram string.",{"type":41,"tag":81,"props":1142,"children":1143},{},[1144,1150],{"type":41,"tag":87,"props":1145,"children":1147},{"className":1146},[],[1148],{"type":47,"value":1149},"migration_discovery_storeComponents",{"type":47,"value":1151}," — componentDetails array (id, name, type, description, purpose, connectedTo, properties, azureEquivalent, isLogicAppsNative).",{"type":41,"tag":81,"props":1153,"children":1154},{},[1155,1161,1163,1169,1171,1177,1179,1185,1187,1193],{"type":41,"tag":87,"props":1156,"children":1158},{"className":1157},[],[1159],{"type":47,"value":1160},"migration_discovery_storeMessageFlow",{"type":47,"value":1162}," — messageFlow array (step, component, componentType, action, messageType, description, pipelineComponents, properties, subscriptionFilter, additionalDetails). ",{"type":41,"tag":87,"props":1164,"children":1166},{"className":1165},[],[1167],{"type":47,"value":1168},"additionalDetails",{"type":47,"value":1170}," is MANDATORY and MUST be an object of named fields, never a raw string. If there is only one free-text note, put it in ",{"type":41,"tag":87,"props":1172,"children":1174},{"className":1173},[],[1175],{"type":47,"value":1176},"description",{"type":47,"value":1178}," or use ",{"type":41,"tag":87,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":47,"value":1184},"additionalDetails: { note: \"...\" }",{"type":47,"value":1186},". If there are no extra structured details, send ",{"type":41,"tag":87,"props":1188,"children":1190},{"className":1189},[],[1191],{"type":47,"value":1192},"additionalDetails: {}",{"type":47,"value":253},{"type":41,"tag":81,"props":1195,"children":1196},{},[1197,1203],{"type":41,"tag":87,"props":1198,"children":1200},{"className":1199},[],[1201],{"type":47,"value":1202},"migration_discovery_storeGaps",{"type":47,"value":1204}," — gapAnalysis array (component, componentType, gap, severity, options, recommendation).",{"type":41,"tag":81,"props":1206,"children":1207},{},[1208,1214],{"type":41,"tag":87,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":47,"value":1213},"migration_discovery_storePatterns",{"type":47,"value":1215}," — migrationPatterns array (pattern, description, complexity, TIBCOApproach, logicAppsApproach, components).",{"type":41,"tag":81,"props":1217,"children":1218},{},[1219,1225],{"type":41,"tag":87,"props":1220,"children":1222},{"className":1221},[],[1223],{"type":47,"value":1224},"migration_discovery_storeDependencies",{"type":47,"value":1226}," — missingDependencies array + summary + allCriticalResolved + counts.",{"type":41,"tag":81,"props":1228,"children":1229},{},[1230,1235],{"type":41,"tag":87,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":47,"value":789},{"type":47,"value":1236}," — assemble all files and open visualization.",{"type":41,"tag":54,"props":1238,"children":1239},{},[1240,1242,1248],{"type":47,"value":1241},"Do NOT call ",{"type":41,"tag":87,"props":1243,"children":1245},{"className":1244},[],[1246],{"type":47,"value":1247},"migration_discovery_storeAnalysis",{"type":47,"value":1249}," — use the individual tools above.",{"items":1251,"total":1354},[1252,1259,1279,1296,1313,1329,1339],{"slug":4,"name":4,"fn":5,"description":6,"org":1253,"tags":1254,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1255,1256,1257,1258],{"name":16,"slug":17,"type":14},{"name":11,"slug":8,"type":14},{"name":22,"slug":23,"type":14},{"name":19,"slug":20,"type":14},{"slug":1260,"name":1260,"fn":1261,"description":1262,"org":1263,"tags":1264,"stars":24,"repoUrl":25,"updatedAt":1278},"cloud-deployment-and-testing","deploy and test Azure Logic Apps","Rules for optional cloud deployment and testing of Logic Apps Standard projects. Covers ARM\u002FBicep generation, deployment method, app settings management, cloud test execution, and reporting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1265,1266,1269,1272,1275],{"name":11,"slug":8,"type":14},{"name":1267,"slug":1268,"type":14},"Bicep","bicep",{"name":1270,"slug":1271,"type":14},"Deployment","deployment",{"name":1273,"slug":1274,"type":14},"Reporting","reporting",{"name":1276,"slug":1277,"type":14},"Testing","testing","2026-07-12T08:20:12.210407",{"slug":1280,"name":1280,"fn":1281,"description":1282,"org":1283,"tags":1284,"stars":24,"repoUrl":25,"updatedAt":1295},"connections-json-generation-rules","generate connections.json files for Logic Apps","Rules for generating connections.json files for Logic Apps Standard. Covers serviceProviderConnections format, mandatory reference lookup, FileSystem mountPath rule, and connector parameter constraints.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1285,1288,1289,1292],{"name":1286,"slug":1287,"type":14},"Automation","automation",{"name":11,"slug":8,"type":14},{"name":1290,"slug":1291,"type":14},"Configuration","configuration",{"name":1293,"slug":1294,"type":14},"Workflow Automation","workflow-automation","2026-07-12T08:20:28.730402",{"slug":1297,"name":1297,"fn":1298,"description":1299,"org":1300,"tags":1301,"stars":24,"repoUrl":25,"updatedAt":1312},"conversion-task-plan-rules","generate ordered conversion task plans","Rules for generating ordered conversion task plans. Covers mandatory task ordering, required task types, descriptive task ID rules, optional vs non-optional tasks, output path conventions, and what each task must contain.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1302,1303,1306,1309],{"name":11,"slug":8,"type":14},{"name":1304,"slug":1305,"type":14},"Migration","migration",{"name":1307,"slug":1308,"type":14},"Operations","operations",{"name":1310,"slug":1311,"type":14},"Planning","planning","2026-07-12T08:20:17.194993",{"slug":1314,"name":1314,"fn":1315,"description":1316,"org":1317,"tags":1318,"stars":24,"repoUrl":25,"updatedAt":1328},"dependency-and-decompilation-analysis","analyze MuleSoft dependencies and decompiled Java code","Rules for discovering, analysing, and classifying missing dependencies during MuleSoft flow analysis. Covers JAR\u002FJava decompilation, Maven dependency analysis, custom module classification, and what blocks migration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1319,1320,1321,1324,1327],{"name":11,"slug":8,"type":14},{"name":22,"slug":23,"type":14},{"name":1322,"slug":1323,"type":14},"Java","java",{"name":1325,"slug":1326,"type":14},"Maven","maven",{"name":1304,"slug":1305,"type":14},"2026-07-12T08:20:04.462447",{"slug":1330,"name":1330,"fn":1331,"description":1332,"org":1333,"tags":1334,"stars":24,"repoUrl":25,"updatedAt":1338},"detect-logical-groups","group MuleSoft integration artifacts","Rules for detecting and grouping MuleSoft integration artifacts into logical flow groups using flow-reference strategy. Covers flow-ref call-chain rules, fallback grouping when no sources exist, and required output fields.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1335,1336,1337],{"name":16,"slug":17,"type":14},{"name":11,"slug":8,"type":14},{"name":1304,"slug":1305,"type":14},"2026-07-12T08:20:08.228065",{"slug":1340,"name":1340,"fn":1341,"description":1342,"org":1343,"tags":1344,"stars":24,"repoUrl":25,"updatedAt":1353},"dotnet-local-functions-logic-apps","create .NET local functions for Logic Apps","Creates .NET local functions (custom code) for Azure Logic Apps Standard. Covers exact NuGet packages, namespaces, csproj, MSBuild targets, VS Code config, function.json, and workflow InvokeFunction patterns for both .NET 8 and .NET Framework 4.7.2.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1345,1348,1351,1352],{"name":1346,"slug":1347,"type":14},".NET","net",{"name":1349,"slug":1350,"type":14},"API Development","api-development",{"name":1286,"slug":1287,"type":14},{"name":11,"slug":8,"type":14},"2026-07-12T08:19:23.722956",12,{"items":1356,"total":1527},[1357,1376,1391,1408,1421,1436,1449,1464,1475,1489,1502,1515],{"slug":1358,"name":1358,"fn":1359,"description":1360,"org":1361,"tags":1362,"stars":1373,"repoUrl":1374,"updatedAt":1375},"azure-arg-external-evaluation-policy-author","author and test Azure Resource Graph policies","Use when the user wants to author, design, or test an Azure Policy that queries Azure Resource Graph (ARG) at request-time — i.e. a policy whose deny\u002Faudit decision depends on data from elsewhere in the subscription (sibling\u002Fparent resource state, RG-wide invariants, multi-hop relationships, etc.). Formally called Azure Policy External Evaluation; sometimes referred to colloquially as \"Invoke\". Drives an iterative KQL co-design loop against the user's real subscription via `az graph query`, then emits a policy definition, assignment, `.http` test flow, and an `EXPLANATION.md` companion. Read-only; never provisions anything.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1363,1364,1367,1370],{"name":11,"slug":8,"type":14},{"name":1365,"slug":1366,"type":14},"Compliance","compliance",{"name":1368,"slug":1369,"type":14},"Governance","governance",{"name":1371,"slug":1372,"type":14},"Policy","policy",1686,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-policy","2026-07-12T08:17:48.378432",{"slug":1377,"name":1377,"fn":1378,"description":1379,"org":1380,"tags":1381,"stars":1388,"repoUrl":1389,"updatedAt":1390},"azure-blueprints-migration","migrate Azure Blueprints to Template Specs","Use when a user needs to migrate off Azure Blueprints (definitions and\u002For assignments) to Template Specs and Deployment Stacks before the January 31, 2027 retirement. Covers inventory, export, conversion to Bicep, policy decoupling, Template Spec publishing, Deployment Stack deployment with deny-settings, validation, and cutover.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1382,1383,1384,1387],{"name":11,"slug":8,"type":14},{"name":1270,"slug":1271,"type":14},{"name":1385,"slug":1386,"type":14},"Infrastructure as Code","infrastructure-as-code",{"name":1304,"slug":1305,"type":14},260,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-blueprints","2026-07-12T08:17:49.646405",{"slug":1392,"name":1392,"fn":1393,"description":1394,"org":1395,"tags":1396,"stars":1405,"repoUrl":1406,"updatedAt":1407},"apiview-feedback-resolution","resolve APIView feedback on Azure SDKs","Analyze and resolve APIView review feedback on Azure SDK PRs. **UTILITY SKILL**. USE FOR: APIView comments, API review feedback, SDK API surface changes. DO NOT USE FOR: general code review, non-APIView feedback. INVOKES: azure-sdk-mcp:azsdk_apiview_get_comments, azure-sdk-mcp:azsdk_typespec_customized_code_update.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1397,1398,1399,1402],{"name":1349,"slug":1350,"type":14},{"name":11,"slug":8,"type":14},{"name":1400,"slug":1401,"type":14},"Code Review","code-review",{"name":1403,"slug":1404,"type":14},"Documentation","documentation",133,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools","2026-07-12T08:17:43.350876",{"slug":1409,"name":1409,"fn":1410,"description":1411,"org":1412,"tags":1413,"stars":1405,"repoUrl":1406,"updatedAt":1420},"azsdk-common-live-and-recorded-tests","deploy resources and run Azure SDK tests","Deploy test resources and run Azure SDK tests in live, record, or playback mode. WHEN: \"run live tests\", \"run recorded tests\", \"deploy test resources\", \"record tests\", \"run tests in record mode\", \"clean up test resources\", \"run tests against live resources\". DO NOT USE FOR: writing new tests, authoring Bicep templates, playback-only test runs without resource deployment. INVOKES: azure-sdk-mcp:azsdk_package_run_tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1414,1415,1416,1419],{"name":11,"slug":8,"type":14},{"name":1270,"slug":1271,"type":14},{"name":1417,"slug":1418,"type":14},"SDK","sdk",{"name":1276,"slug":1277,"type":14},"2026-07-12T08:17:44.718943",{"slug":1422,"name":1422,"fn":1423,"description":1424,"org":1425,"tags":1426,"stars":1405,"repoUrl":1406,"updatedAt":1435},"azsdk-common-prepare-release-plan","manage Azure SDK release plan work items","Create, get, update, abandon, and link SDK PRs to release plan work items for Azure SDK releases. **UTILITY SKILL**. USE FOR: \"create release plan\", \"get release plan\", \"update release plan\", \"update API spec in release plan\", \"update SDK details in release plan\", \"abandon release plan\", \"link SDK PR to plan\", \"namespace approval\", \"check release plan status\". DO NOT USE FOR: SDK code generation, pipeline troubleshooting, API review feedback. INVOKES: azure-sdk-mcp:azsdk_create_release_plan, azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_get_release_plan_for_spec_pr, azure-sdk-mcp:azsdk_update_release_plan, azure-sdk-mcp:azsdk_update_api_spec_pull_request_in_release_plan, azure-sdk-mcp:azsdk_update_sdk_details_in_release_plan, azure-sdk-mcp:azsdk_abandon_release_plan, azure-sdk-mcp:azsdk_link_sdk_pull_request_to_release_plan, azure-sdk-mcp:azsdk_link_namespace_approval_issue.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1427,1428,1431,1434],{"name":11,"slug":8,"type":14},{"name":1429,"slug":1430,"type":14},"GitHub","github",{"name":1432,"slug":1433,"type":14},"Project Management","project-management",{"name":1417,"slug":1418,"type":14},"2026-07-12T08:17:38.345387",{"slug":1437,"name":1437,"fn":1438,"description":1439,"org":1440,"tags":1441,"stars":1405,"repoUrl":1406,"updatedAt":1448},"azsdk-common-sdk-release","release Azure SDK packages","Check release readiness and trigger the release pipeline for Azure SDK packages. **UTILITY SKILL**. USE FOR: \"release SDK\", \"trigger release\", \"check release readiness\", \"release pipeline\", \"publish package\", \"ship SDK\". DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation. INVOKES: azure-sdk-mcp:azsdk_release_sdk.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1442,1443,1446,1447],{"name":11,"slug":8,"type":14},{"name":1444,"slug":1445,"type":14},"CI\u002FCD","ci-cd",{"name":1270,"slug":1271,"type":14},{"name":1417,"slug":1418,"type":14},"2026-07-12T08:17:34.27607",{"slug":1450,"name":1450,"fn":1451,"description":1452,"org":1453,"tags":1454,"stars":1405,"repoUrl":1406,"updatedAt":1463},"azure-typespec-author","author and modify Azure TypeSpec API specifications","Authors and modifies Azure TypeSpec (.tsp) API specifications. USE FOR: any TypeSpec\u002Ftsp change — api versions (add, bump, preview, stable, promote), resources, operations, models, properties, decorators, visibility, constraints, breaking changes, LRO, suppressions, operationId, spread model. Covers ARM resource-manager and data-plane services. DO NOT USE FOR: SDK generation, releasing SDK packages, or single MCP tool calls. INVOKES: azure-sdk-mcp:azsdk_typespec_generate_authoring_plan, azure-sdk-mcp:azsdk_run_typespec_validation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1455,1456,1457,1460],{"name":1349,"slug":1350,"type":14},{"name":11,"slug":8,"type":14},{"name":1458,"slug":1459,"type":14},"OpenAPI","openapi",{"name":1461,"slug":1462,"type":14},"Technical Writing","technical-writing","2026-07-12T08:17:39.603232",{"slug":1465,"name":1465,"fn":1466,"description":1467,"org":1468,"tags":1469,"stars":1405,"repoUrl":1406,"updatedAt":1474},"generate-sdk-locally","generate and test Azure SDKs locally","Generate, build, and test Azure SDKs locally from TypeSpec with automatic customization. WHEN: \"generate SDK locally\", \"build SDK\", \"run SDK tests\", \"run CI checks\", \"validate package\", \"run checks\", \"update changelog\", \"fix SDK build errors\", \"fix breaking changes\", \"resolve SDK generation errors\", \"customize TypeSpec\", \"rename SDK client\", \"rename SDK model\", \"hide operation from SDK\", \"fix analyzer errors\", \"resolve customization drift\", \"create subclient\", \"update metadata\", \"update version\". DO NOT USE FOR: publishing to package registries, CI pipeline configuration, API design review. INVOKES: azsdk_verify_setup, azsdk_package_generate_code, azsdk_package_build_code, azsdk_package_run_check, azsdk_package_run_tests, azsdk_customized_code_update, azsdk_package_update_changelog_content, azsdk_package_update_metadata, azsdk_package_update_version.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1470,1471,1472,1473],{"name":11,"slug":8,"type":14},{"name":1444,"slug":1445,"type":14},{"name":1417,"slug":1418,"type":14},{"name":1276,"slug":1277,"type":14},"2026-07-12T08:17:37.08523",{"slug":1476,"name":1476,"fn":1477,"description":1478,"org":1479,"tags":1480,"stars":1405,"repoUrl":1406,"updatedAt":1488},"markdown-token-optimizer","optimize markdown files for token efficiency","Analyze markdown files for token efficiency and reduce context-window bloat. **UTILITY SKILL**. DO NOT USE FOR: code optimization, general file editing, non-markdown files. TRIGGERS: optimize markdown, reduce tokens, token count, token bloat, too many tokens, make concise, shrink file, file too large, optimize for AI, token efficiency, verbose markdown, reduce file size. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1481,1484,1487],{"name":1482,"slug":1483,"type":14},"LLM","llm",{"name":1485,"slug":1486,"type":14},"Performance","performance",{"name":1461,"slug":1462,"type":14},"2026-07-12T08:17:42.080413",{"slug":1490,"name":1490,"fn":1491,"description":1492,"org":1493,"tags":1494,"stars":1405,"repoUrl":1406,"updatedAt":1501},"pipeline-troubleshooting","troubleshoot Azure SDK CI pipelines","Diagnose and resolve failures in Azure SDK CI and generation pipelines. **UTILITY SKILL**. USE FOR: \"pipeline failed\", \"build failure\", \"CI check failing\", \"SDK generation error\", \"reproduce pipeline locally\", \"debug SDK pipeline\". DO NOT USE FOR: local build issues without pipeline context, API design review, SDK publishing. INVOKES: azure-sdk-mcp:azsdk_analyze_pipeline, azure-sdk-mcp:azsdk_package_build_code, azure-sdk-mcp:azsdk_package_run_check.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1495,1496,1497,1500],{"name":11,"slug":8,"type":14},{"name":1444,"slug":1445,"type":14},{"name":1498,"slug":1499,"type":14},"Debugging","debugging",{"name":1417,"slug":1418,"type":14},"2026-07-12T08:17:40.821512",{"slug":1503,"name":1503,"fn":1504,"description":1505,"org":1506,"tags":1507,"stars":1405,"repoUrl":1406,"updatedAt":1514},"sensei","improve skill frontmatter compliance","**WORKFLOW SKILL** — Iteratively improve skill frontmatter compliance using the Ralph loop pattern. WHEN: \"run sensei\", \"sensei help\", \"improve skill\", \"fix frontmatter\", \"skill compliance\", \"frontmatter audit\", \"score skill\", \"check skill tokens\". INVOKES: token counting tools, test runners, git commands. FOR SINGLE OPERATIONS: use token CLI directly for counts\u002Fchecks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1508,1509,1510,1513],{"name":11,"slug":8,"type":14},{"name":1365,"slug":1366,"type":14},{"name":1511,"slug":1512,"type":14},"Process Optimization","process-optimization",{"name":1461,"slug":1462,"type":14},"2026-07-12T08:17:32.970921",{"slug":1516,"name":1516,"fn":1517,"description":1518,"org":1519,"tags":1520,"stars":1405,"repoUrl":1406,"updatedAt":1526},"skill-authoring","author agent skills for agentskills.io","Write Agent Skills that comply with the agentskills.io specification. WHEN: \"create a skill\", \"new skill\", \"write a skill\", \"skill template\", \"skill structure\", \"review skill\", \"skill PR\", \"skill compliance\", \"SKILL.md format\", \"skill frontmatter\", \"skill best practices\". DO NOT USE FOR: improving existing skills (use sensei), general documentation. INVOKES: waza CLI.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1521,1522,1525],{"name":1403,"slug":1404,"type":14},{"name":1523,"slug":1524,"type":14},"Plugin Development","plugin-development",{"name":1461,"slug":1462,"type":14},"2026-07-12T08:17:35.873862",109]