[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-azure-dependency-and-decompilation-analysis":3,"mdc-wn373a-key":38,"related-org-azure-dependency-and-decompilation-analysis":1254,"related-repo-azure-dependency-and-decompilation-analysis":1433},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":33,"sourceUrl":36,"mdContent":37},"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},"azure","Azure (Microsoft)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fazure.png","Azure",[13,17,18,21,24],{"name":14,"slug":15,"type":16},"Maven","maven","tag",{"name":11,"slug":8,"type":16},{"name":19,"slug":20,"type":16},"Java","java",{"name":22,"slug":23,"type":16},"Migration","migration",{"name":25,"slug":26,"type":16},"Code Analysis","code-analysis",6,"https:\u002F\u002Fgithub.com\u002FAzure\u002Flogicapps-migration-agent","2026-07-12T08:20:04.462447",null,7,[],{"repoUrl":28,"stars":27,"forks":31,"topics":34,"description":35},[],"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\u002Fdependency-and-decompilation-analysis\u002Fmulesoft","---\nname: dependency-and-decompilation-analysis\ndescription: 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.\n---\n\n# Skill: Dependency and Decompilation Analysis\n\n> **Purpose**: Authoritative rules for discovering and classifying dependencies during MuleSoft flow analysis. Follow exactly.\n\n---\n\n## 1. Dependency Discovery\n\nCall `migration_listArtifacts` with `category=\"custom-code\"` to find all `.jar`, `.java`, `.dwl`, `.xml`, `.raml`, `.properties`, `.yaml` files.\n\nAlso examine:\n\n- `pom.xml` for Maven dependencies — especially those with `classifier=mule-plugin` (Mule connectors).\n- `mule-artifact.json` for exported resources and class loader settings.\n- `src\u002Fmain\u002Fjava\u002F` for custom Java classes.\n- `src\u002Fmain\u002Fresources\u002F` for DataWeave modules (`.dwl`), property files, and API specs.\n\n### 1.1 Mandatory Coverage Guardrails [**NO FALSE NEGATIVES**]\n\n1. Build the dependency candidate list from **artifact inventory and source references**, not from a root-folder file loop.\n2. Do NOT assume \"all root `.jar` files were decompiled\" means dependency analysis is complete.\n3. Treat any class\u002Flibrary referenced by flow-used code as a dependency candidate until explicitly resolved.\n4. If a referenced library cannot be located in scanned source artifacts or `pom.xml`, mark it missing (fail-closed).\n\nAnti-pattern to avoid:\n\n- Scanning only the workspace root for `.jar` files and concluding dependency closure from that result.\n\n---\n\n## 2. Java Class \u002F JAR Analysis Procedure\n\n### 2.1 When to Decompile\n\nDo NOT blindly decompile every `.jar` in the source folder. Instead, decompile **on demand** when a JAR\u002Fclass reference is encountered during analysis:\n\n- A Mule flow references a custom Java component (transformer, message processor, interceptor)\n- A DataWeave expression calls a Java function\n- A `pom.xml` dependency with `classifier=mule-plugin` has no standard Logic Apps equivalent\n- A class is imported but its `.java` source is not in `src\u002Fmain\u002Fjava\u002F`\n\n### 2.2 How to Decompile\n\nWhen you decide a JAR needs decompilation:\n\n1. If `.java` source files exist under `src\u002Fmain\u002Fjava\u002F`, read them directly — no decompilation needed.\n2. For JAR files without source, attempt decompilation:\n    - Run `cfr \u003CJarPath> --outputdir out\u002F__decompiled__\u002F\u003CJarName>\u002F` in the terminal.\n    - Alternatively, use `jar xf \u003CJarPath>` to extract and then decompile `.class` files.\n3. ALWAYS write decompilation output to `out\u002F__decompiled__\u002F` in the **current migration workspace directory**. NEVER write to the source folder or any other external location.\n4. Read the decompiled `.java` files to understand classes, methods, and business rules.\n5. If decompilation fails (obfuscated, native), mark it as a critical missing dependency.\n\n### 2.3 Recursive Dependency Tree Resolution [**IMPORTANT**]\n\nAfter decompiling a JAR, inspect what IT depends on and **walk the full tree**:\n\n1. **Read the decompiled code** — look for `import` statements, type references, and method calls that reference other libraries.\n2. **For each referenced library**, check if it exists in the source folder (as `.jar`, `.java`, or in `pom.xml`).\n3. **If it is a `.jar` in the source folder but not yet decompiled** — decompile it too (repeat from §2.2).\n4. **If that child JAR itself references more JARs** — continue recursively.\n5. **Stop recursion** when a dependency is:\n    - Already decompiled, OR\n    - A standard Mule\u002FJava runtime library (`org.mule.*`, `java.*`, `javax.*`), OR\n    - Not found in the source folder → mark as missing dependency.\n\n### 2.4 Decompilation Checklist\n\nBefore moving to dependency classification, confirm:\n- [ ] Every JAR **referenced by flow artifacts** has been decompiled (or its source code is available)\n- [ ] Every child JAR discovered inside decompiled code has also been traced recursively\n- [ ] Custom transformers, message processors, and interceptors are fully understood\n- [ ] Shared utility classes referenced by multiple flows are catalogued\n\n### 2.5 Verification Gates Before \"No Missing Dependencies\"\n\nYou MUST pass all gates below before storing an empty `missingDependencies` array:\n\n1. **Reference-to-artifact gate**: every non-runtime import\u002Ftype referenced by flow-used classes maps to one of:\n    - source code present, OR\n    - decompiled JAR present, OR\n    - explicit missing dependency entry.\n2. **Instantiation\u002Fcall-site gate**: if code contains constructor calls or casts to external types (e.g., `new CustomService()`, `(ICustomService)factory.create()`), the implementing library is mandatory.\n3. **Import\u002Ftype gate**: an `import` of a custom package with no resolvable artifact is NOT ignored; it must be justified as unused by symbol-level evidence or marked missing.\n4. **Flow relevance gate**: unresolved dependencies in code paths executed by the analyzed flow are `migrationRelevant=true`; if they block non-stub implementation, set `severity=critical` and `blocksMigration=true`.\n\nIf any gate fails, do NOT return zero missing dependencies.\n\n---\n\n## 3. Source vs Decompiled Precedence\n\n- If the source code (`.java`, `.dwl` files) for a referenced class\u002Fmodule is PRESENT in the scanned source folder (listed as dependency artifacts), do NOT mark it as a missing dependency — the conversion agent can use the source code directly.\n- Only mark a dependency as missing when NEITHER source code NOR understandable decompiled code is available.\n- Presence of a package\u002Fimport reference alone does not resolve dependency status; resolution requires source\u002Fdecompiled implementation availability.\n\n---\n\n## 4. What Counts as Missing\n\n- JAR files whose source code is NOT found in the source folder.\n- Custom Mule connectors (non-standard `mule-plugin` dependencies) without source.\n- Custom Java components (transformers, message processors, interceptors) without source.\n- External RAML\u002FOAS API specifications not present in the project.\n- DataWeave modules imported from external libraries not present locally.\n- Third-party connector dependencies without a Logic Apps equivalent and no source code.\n- MuleSoft Enterprise connectors that require specific licensing (SAP, Salesforce, etc.) — flag as needing equivalent Azure connectors.\n- Configuration\u002Fcertificates\u002Fconnection strings needed for target environment.\n- Anypoint Platform dependencies (API Manager policies, Object Store V2, CloudHub properties).\n\n---\n\n## 5. Classification\n\nEach missing dependency MUST have:\n\n| Field               | Type    | Description                                                                                  |\n| ------------------- | ------- | -------------------------------------------------------------------------------------------- |\n| `id`                | string  | Unique identifier                                                                            |\n| `name`              | string  | Dependency name                                                                              |\n| `type`              | string  | jar\u002Fjava-class\u002Fdwl-module\u002Fconnector\u002Framl\u002Fschema\u002Fapi-spec\u002Fproperty-file\u002Fcustom-code\u002Fother     |\n| `origin`            | string  | standard-mule-runtime\u002Fstandard-mule-connector\u002Fmulesoft-enterprise\u002Fthird-party\u002Fcustom\u002Funknown |\n| `severity`          | string  | critical\u002Fwarning\u002Finfo                                                                        |\n| `referencedBy`      | array   | Artifact names that reference this dependency                                                |\n| `reason`            | string  | Why it is needed                                                                             |\n| `blocksMigration`   | boolean | True if prevents complete non-stub implementation                                            |\n| `migrationRelevant` | boolean | False for build-only or design-time-only dependencies (e.g. MUnit test dependencies)         |\n| `resolution`        | string  | MUST follow format: \"Add the source code or binary for {name} to the migration source folder and re-run discovery.\" Do NOT suggest code changes or workarounds — the user must provide the missing artifact. |\n\nAlso provide: `summary` (string), `allCriticalResolved` (boolean), `counts` ({ critical, warning, info }).\n\n### 5.1 Fail-Closed Decision Rule\n\nWhen evidence is incomplete or ambiguous, default to marking the dependency as missing with appropriate severity rather than reporting full resolution.\n\nA \"no missing dependencies\" conclusion is valid only when all verification gates in §2.5 pass with explicit evidence.\n",{"data":39,"body":40},{"name":4,"description":6},{"type":41,"children":42},"root",[43,52,68,72,79,152,157,221,237,282,287,302,305,311,317,336,385,391,396,496,510,522,650,656,661,713,719,732,839,844,847,853,884,887,893,949,952,958,963,1209,1238,1244,1249],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"skill-dependency-and-decompilation-analysis",[49],{"type":50,"value":51},"text","Skill: Dependency and Decompilation Analysis",{"type":44,"tag":53,"props":54,"children":55},"blockquote",{},[56],{"type":44,"tag":57,"props":58,"children":59},"p",{},[60,66],{"type":44,"tag":61,"props":62,"children":63},"strong",{},[64],{"type":50,"value":65},"Purpose",{"type":50,"value":67},": Authoritative rules for discovering and classifying dependencies during MuleSoft flow analysis. Follow exactly.",{"type":44,"tag":69,"props":70,"children":71},"hr",{},[],{"type":44,"tag":73,"props":74,"children":76},"h2",{"id":75},"_1-dependency-discovery",[77],{"type":50,"value":78},"1. Dependency Discovery",{"type":44,"tag":57,"props":80,"children":81},{},[82,84,91,93,99,101,107,109,115,116,122,123,129,130,136,137,143,144,150],{"type":50,"value":83},"Call ",{"type":44,"tag":85,"props":86,"children":88},"code",{"className":87},[],[89],{"type":50,"value":90},"migration_listArtifacts",{"type":50,"value":92}," with ",{"type":44,"tag":85,"props":94,"children":96},{"className":95},[],[97],{"type":50,"value":98},"category=\"custom-code\"",{"type":50,"value":100}," to find all ",{"type":44,"tag":85,"props":102,"children":104},{"className":103},[],[105],{"type":50,"value":106},".jar",{"type":50,"value":108},", ",{"type":44,"tag":85,"props":110,"children":112},{"className":111},[],[113],{"type":50,"value":114},".java",{"type":50,"value":108},{"type":44,"tag":85,"props":117,"children":119},{"className":118},[],[120],{"type":50,"value":121},".dwl",{"type":50,"value":108},{"type":44,"tag":85,"props":124,"children":126},{"className":125},[],[127],{"type":50,"value":128},".xml",{"type":50,"value":108},{"type":44,"tag":85,"props":131,"children":133},{"className":132},[],[134],{"type":50,"value":135},".raml",{"type":50,"value":108},{"type":44,"tag":85,"props":138,"children":140},{"className":139},[],[141],{"type":50,"value":142},".properties",{"type":50,"value":108},{"type":44,"tag":85,"props":145,"children":147},{"className":146},[],[148],{"type":50,"value":149},".yaml",{"type":50,"value":151}," files.",{"type":44,"tag":57,"props":153,"children":154},{},[155],{"type":50,"value":156},"Also examine:",{"type":44,"tag":158,"props":159,"children":160},"ul",{},[161,181,192,203],{"type":44,"tag":162,"props":163,"children":164},"li",{},[165,171,173,179],{"type":44,"tag":85,"props":166,"children":168},{"className":167},[],[169],{"type":50,"value":170},"pom.xml",{"type":50,"value":172}," for Maven dependencies — especially those with ",{"type":44,"tag":85,"props":174,"children":176},{"className":175},[],[177],{"type":50,"value":178},"classifier=mule-plugin",{"type":50,"value":180}," (Mule connectors).",{"type":44,"tag":162,"props":182,"children":183},{},[184,190],{"type":44,"tag":85,"props":185,"children":187},{"className":186},[],[188],{"type":50,"value":189},"mule-artifact.json",{"type":50,"value":191}," for exported resources and class loader settings.",{"type":44,"tag":162,"props":193,"children":194},{},[195,201],{"type":44,"tag":85,"props":196,"children":198},{"className":197},[],[199],{"type":50,"value":200},"src\u002Fmain\u002Fjava\u002F",{"type":50,"value":202}," for custom Java classes.",{"type":44,"tag":162,"props":204,"children":205},{},[206,212,214,219],{"type":44,"tag":85,"props":207,"children":209},{"className":208},[],[210],{"type":50,"value":211},"src\u002Fmain\u002Fresources\u002F",{"type":50,"value":213}," for DataWeave modules (",{"type":44,"tag":85,"props":215,"children":217},{"className":216},[],[218],{"type":50,"value":121},{"type":50,"value":220},"), property files, and API specs.",{"type":44,"tag":222,"props":223,"children":225},"h3",{"id":224},"_11-mandatory-coverage-guardrails-no-false-negatives",[226,228],{"type":50,"value":227},"1.1 Mandatory Coverage Guardrails ",{"type":44,"tag":229,"props":230,"children":231},"span",{},[232],{"type":44,"tag":61,"props":233,"children":234},{},[235],{"type":50,"value":236},"NO FALSE NEGATIVES",{"type":44,"tag":238,"props":239,"children":240},"ol",{},[241,253,265,270],{"type":44,"tag":162,"props":242,"children":243},{},[244,246,251],{"type":50,"value":245},"Build the dependency candidate list from ",{"type":44,"tag":61,"props":247,"children":248},{},[249],{"type":50,"value":250},"artifact inventory and source references",{"type":50,"value":252},", not from a root-folder file loop.",{"type":44,"tag":162,"props":254,"children":255},{},[256,258,263],{"type":50,"value":257},"Do NOT assume \"all root ",{"type":44,"tag":85,"props":259,"children":261},{"className":260},[],[262],{"type":50,"value":106},{"type":50,"value":264}," files were decompiled\" means dependency analysis is complete.",{"type":44,"tag":162,"props":266,"children":267},{},[268],{"type":50,"value":269},"Treat any class\u002Flibrary referenced by flow-used code as a dependency candidate until explicitly resolved.",{"type":44,"tag":162,"props":271,"children":272},{},[273,275,280],{"type":50,"value":274},"If a referenced library cannot be located in scanned source artifacts or ",{"type":44,"tag":85,"props":276,"children":278},{"className":277},[],[279],{"type":50,"value":170},{"type":50,"value":281},", mark it missing (fail-closed).",{"type":44,"tag":57,"props":283,"children":284},{},[285],{"type":50,"value":286},"Anti-pattern to avoid:",{"type":44,"tag":158,"props":288,"children":289},{},[290],{"type":44,"tag":162,"props":291,"children":292},{},[293,295,300],{"type":50,"value":294},"Scanning only the workspace root for ",{"type":44,"tag":85,"props":296,"children":298},{"className":297},[],[299],{"type":50,"value":106},{"type":50,"value":301}," files and concluding dependency closure from that result.",{"type":44,"tag":69,"props":303,"children":304},{},[],{"type":44,"tag":73,"props":306,"children":308},{"id":307},"_2-java-class-jar-analysis-procedure",[309],{"type":50,"value":310},"2. Java Class \u002F JAR Analysis Procedure",{"type":44,"tag":222,"props":312,"children":314},{"id":313},"_21-when-to-decompile",[315],{"type":50,"value":316},"2.1 When to Decompile",{"type":44,"tag":57,"props":318,"children":319},{},[320,322,327,329,334],{"type":50,"value":321},"Do NOT blindly decompile every ",{"type":44,"tag":85,"props":323,"children":325},{"className":324},[],[326],{"type":50,"value":106},{"type":50,"value":328}," in the source folder. Instead, decompile ",{"type":44,"tag":61,"props":330,"children":331},{},[332],{"type":50,"value":333},"on demand",{"type":50,"value":335}," when a JAR\u002Fclass reference is encountered during analysis:",{"type":44,"tag":158,"props":337,"children":338},{},[339,344,349,368],{"type":44,"tag":162,"props":340,"children":341},{},[342],{"type":50,"value":343},"A Mule flow references a custom Java component (transformer, message processor, interceptor)",{"type":44,"tag":162,"props":345,"children":346},{},[347],{"type":50,"value":348},"A DataWeave expression calls a Java function",{"type":44,"tag":162,"props":350,"children":351},{},[352,354,359,361,366],{"type":50,"value":353},"A ",{"type":44,"tag":85,"props":355,"children":357},{"className":356},[],[358],{"type":50,"value":170},{"type":50,"value":360}," dependency with ",{"type":44,"tag":85,"props":362,"children":364},{"className":363},[],[365],{"type":50,"value":178},{"type":50,"value":367}," has no standard Logic Apps equivalent",{"type":44,"tag":162,"props":369,"children":370},{},[371,373,378,380],{"type":50,"value":372},"A class is imported but its ",{"type":44,"tag":85,"props":374,"children":376},{"className":375},[],[377],{"type":50,"value":114},{"type":50,"value":379}," source is not in ",{"type":44,"tag":85,"props":381,"children":383},{"className":382},[],[384],{"type":50,"value":200},{"type":44,"tag":222,"props":386,"children":388},{"id":387},"_22-how-to-decompile",[389],{"type":50,"value":390},"2.2 How to Decompile",{"type":44,"tag":57,"props":392,"children":393},{},[394],{"type":50,"value":395},"When you decide a JAR needs decompilation:",{"type":44,"tag":238,"props":397,"children":398},{},[399,418,459,479,491],{"type":44,"tag":162,"props":400,"children":401},{},[402,404,409,411,416],{"type":50,"value":403},"If ",{"type":44,"tag":85,"props":405,"children":407},{"className":406},[],[408],{"type":50,"value":114},{"type":50,"value":410}," source files exist under ",{"type":44,"tag":85,"props":412,"children":414},{"className":413},[],[415],{"type":50,"value":200},{"type":50,"value":417},", read them directly — no decompilation needed.",{"type":44,"tag":162,"props":419,"children":420},{},[421,423],{"type":50,"value":422},"For JAR files without source, attempt decompilation:\n",{"type":44,"tag":158,"props":424,"children":425},{},[426,439],{"type":44,"tag":162,"props":427,"children":428},{},[429,431,437],{"type":50,"value":430},"Run ",{"type":44,"tag":85,"props":432,"children":434},{"className":433},[],[435],{"type":50,"value":436},"cfr \u003CJarPath> --outputdir out\u002F__decompiled__\u002F\u003CJarName>\u002F",{"type":50,"value":438}," in the terminal.",{"type":44,"tag":162,"props":440,"children":441},{},[442,444,450,452,458],{"type":50,"value":443},"Alternatively, use ",{"type":44,"tag":85,"props":445,"children":447},{"className":446},[],[448],{"type":50,"value":449},"jar xf \u003CJarPath>",{"type":50,"value":451}," to extract and then decompile ",{"type":44,"tag":85,"props":453,"children":455},{"className":454},[],[456],{"type":50,"value":457},".class",{"type":50,"value":151},{"type":44,"tag":162,"props":460,"children":461},{},[462,464,470,472,477],{"type":50,"value":463},"ALWAYS write decompilation output to ",{"type":44,"tag":85,"props":465,"children":467},{"className":466},[],[468],{"type":50,"value":469},"out\u002F__decompiled__\u002F",{"type":50,"value":471}," in the ",{"type":44,"tag":61,"props":473,"children":474},{},[475],{"type":50,"value":476},"current migration workspace directory",{"type":50,"value":478},". NEVER write to the source folder or any other external location.",{"type":44,"tag":162,"props":480,"children":481},{},[482,484,489],{"type":50,"value":483},"Read the decompiled ",{"type":44,"tag":85,"props":485,"children":487},{"className":486},[],[488],{"type":50,"value":114},{"type":50,"value":490}," files to understand classes, methods, and business rules.",{"type":44,"tag":162,"props":492,"children":493},{},[494],{"type":50,"value":495},"If decompilation fails (obfuscated, native), mark it as a critical missing dependency.",{"type":44,"tag":222,"props":497,"children":499},{"id":498},"_23-recursive-dependency-tree-resolution-important",[500,502],{"type":50,"value":501},"2.3 Recursive Dependency Tree Resolution ",{"type":44,"tag":229,"props":503,"children":504},{},[505],{"type":44,"tag":61,"props":506,"children":507},{},[508],{"type":50,"value":509},"IMPORTANT",{"type":44,"tag":57,"props":511,"children":512},{},[513,515,520],{"type":50,"value":514},"After decompiling a JAR, inspect what IT depends on and ",{"type":44,"tag":61,"props":516,"children":517},{},[518],{"type":50,"value":519},"walk the full tree",{"type":50,"value":521},":",{"type":44,"tag":238,"props":523,"children":524},{},[525,543,573,590,600],{"type":44,"tag":162,"props":526,"children":527},{},[528,533,535,541],{"type":44,"tag":61,"props":529,"children":530},{},[531],{"type":50,"value":532},"Read the decompiled code",{"type":50,"value":534}," — look for ",{"type":44,"tag":85,"props":536,"children":538},{"className":537},[],[539],{"type":50,"value":540},"import",{"type":50,"value":542}," statements, type references, and method calls that reference other libraries.",{"type":44,"tag":162,"props":544,"children":545},{},[546,551,553,558,559,564,566,571],{"type":44,"tag":61,"props":547,"children":548},{},[549],{"type":50,"value":550},"For each referenced library",{"type":50,"value":552},", check if it exists in the source folder (as ",{"type":44,"tag":85,"props":554,"children":556},{"className":555},[],[557],{"type":50,"value":106},{"type":50,"value":108},{"type":44,"tag":85,"props":560,"children":562},{"className":561},[],[563],{"type":50,"value":114},{"type":50,"value":565},", or in ",{"type":44,"tag":85,"props":567,"children":569},{"className":568},[],[570],{"type":50,"value":170},{"type":50,"value":572},").",{"type":44,"tag":162,"props":574,"children":575},{},[576,588],{"type":44,"tag":61,"props":577,"children":578},{},[579,581,586],{"type":50,"value":580},"If it is a ",{"type":44,"tag":85,"props":582,"children":584},{"className":583},[],[585],{"type":50,"value":106},{"type":50,"value":587}," in the source folder but not yet decompiled",{"type":50,"value":589}," — decompile it too (repeat from §2.2).",{"type":44,"tag":162,"props":591,"children":592},{},[593,598],{"type":44,"tag":61,"props":594,"children":595},{},[596],{"type":50,"value":597},"If that child JAR itself references more JARs",{"type":50,"value":599}," — continue recursively.",{"type":44,"tag":162,"props":601,"children":602},{},[603,608,610],{"type":44,"tag":61,"props":604,"children":605},{},[606],{"type":50,"value":607},"Stop recursion",{"type":50,"value":609}," when a dependency is:\n",{"type":44,"tag":158,"props":611,"children":612},{},[613,618,645],{"type":44,"tag":162,"props":614,"children":615},{},[616],{"type":50,"value":617},"Already decompiled, OR",{"type":44,"tag":162,"props":619,"children":620},{},[621,623,629,630,636,637,643],{"type":50,"value":622},"A standard Mule\u002FJava runtime library (",{"type":44,"tag":85,"props":624,"children":626},{"className":625},[],[627],{"type":50,"value":628},"org.mule.*",{"type":50,"value":108},{"type":44,"tag":85,"props":631,"children":633},{"className":632},[],[634],{"type":50,"value":635},"java.*",{"type":50,"value":108},{"type":44,"tag":85,"props":638,"children":640},{"className":639},[],[641],{"type":50,"value":642},"javax.*",{"type":50,"value":644},"), OR",{"type":44,"tag":162,"props":646,"children":647},{},[648],{"type":50,"value":649},"Not found in the source folder → mark as missing dependency.",{"type":44,"tag":222,"props":651,"children":653},{"id":652},"_24-decompilation-checklist",[654],{"type":50,"value":655},"2.4 Decompilation Checklist",{"type":44,"tag":57,"props":657,"children":658},{},[659],{"type":50,"value":660},"Before moving to dependency classification, confirm:",{"type":44,"tag":158,"props":662,"children":665},{"className":663},[664],"contains-task-list",[666,686,695,704],{"type":44,"tag":162,"props":667,"children":670},{"className":668},[669],"task-list-item",[671,677,679,684],{"type":44,"tag":672,"props":673,"children":676},"input",{"disabled":674,"type":675},true,"checkbox",[],{"type":50,"value":678}," Every JAR ",{"type":44,"tag":61,"props":680,"children":681},{},[682],{"type":50,"value":683},"referenced by flow artifacts",{"type":50,"value":685}," has been decompiled (or its source code is available)",{"type":44,"tag":162,"props":687,"children":689},{"className":688},[669],[690,693],{"type":44,"tag":672,"props":691,"children":692},{"disabled":674,"type":675},[],{"type":50,"value":694}," Every child JAR discovered inside decompiled code has also been traced recursively",{"type":44,"tag":162,"props":696,"children":698},{"className":697},[669],[699,702],{"type":44,"tag":672,"props":700,"children":701},{"disabled":674,"type":675},[],{"type":50,"value":703}," Custom transformers, message processors, and interceptors are fully understood",{"type":44,"tag":162,"props":705,"children":707},{"className":706},[669],[708,711],{"type":44,"tag":672,"props":709,"children":710},{"disabled":674,"type":675},[],{"type":50,"value":712}," Shared utility classes referenced by multiple flows are catalogued",{"type":44,"tag":222,"props":714,"children":716},{"id":715},"_25-verification-gates-before-no-missing-dependencies",[717],{"type":50,"value":718},"2.5 Verification Gates Before \"No Missing Dependencies\"",{"type":44,"tag":57,"props":720,"children":721},{},[722,724,730],{"type":50,"value":723},"You MUST pass all gates below before storing an empty ",{"type":44,"tag":85,"props":725,"children":727},{"className":726},[],[728],{"type":50,"value":729},"missingDependencies",{"type":50,"value":731}," array:",{"type":44,"tag":238,"props":733,"children":734},{},[735,763,788,805],{"type":44,"tag":162,"props":736,"children":737},{},[738,743,745],{"type":44,"tag":61,"props":739,"children":740},{},[741],{"type":50,"value":742},"Reference-to-artifact gate",{"type":50,"value":744},": every non-runtime import\u002Ftype referenced by flow-used classes maps to one of:\n",{"type":44,"tag":158,"props":746,"children":747},{},[748,753,758],{"type":44,"tag":162,"props":749,"children":750},{},[751],{"type":50,"value":752},"source code present, OR",{"type":44,"tag":162,"props":754,"children":755},{},[756],{"type":50,"value":757},"decompiled JAR present, OR",{"type":44,"tag":162,"props":759,"children":760},{},[761],{"type":50,"value":762},"explicit missing dependency entry.",{"type":44,"tag":162,"props":764,"children":765},{},[766,771,773,779,780,786],{"type":44,"tag":61,"props":767,"children":768},{},[769],{"type":50,"value":770},"Instantiation\u002Fcall-site gate",{"type":50,"value":772},": if code contains constructor calls or casts to external types (e.g., ",{"type":44,"tag":85,"props":774,"children":776},{"className":775},[],[777],{"type":50,"value":778},"new CustomService()",{"type":50,"value":108},{"type":44,"tag":85,"props":781,"children":783},{"className":782},[],[784],{"type":50,"value":785},"(ICustomService)factory.create()",{"type":50,"value":787},"), the implementing library is mandatory.",{"type":44,"tag":162,"props":789,"children":790},{},[791,796,798,803],{"type":44,"tag":61,"props":792,"children":793},{},[794],{"type":50,"value":795},"Import\u002Ftype gate",{"type":50,"value":797},": an ",{"type":44,"tag":85,"props":799,"children":801},{"className":800},[],[802],{"type":50,"value":540},{"type":50,"value":804}," of a custom package with no resolvable artifact is NOT ignored; it must be justified as unused by symbol-level evidence or marked missing.",{"type":44,"tag":162,"props":806,"children":807},{},[808,813,815,821,823,829,831,837],{"type":44,"tag":61,"props":809,"children":810},{},[811],{"type":50,"value":812},"Flow relevance gate",{"type":50,"value":814},": unresolved dependencies in code paths executed by the analyzed flow are ",{"type":44,"tag":85,"props":816,"children":818},{"className":817},[],[819],{"type":50,"value":820},"migrationRelevant=true",{"type":50,"value":822},"; if they block non-stub implementation, set ",{"type":44,"tag":85,"props":824,"children":826},{"className":825},[],[827],{"type":50,"value":828},"severity=critical",{"type":50,"value":830}," and ",{"type":44,"tag":85,"props":832,"children":834},{"className":833},[],[835],{"type":50,"value":836},"blocksMigration=true",{"type":50,"value":838},".",{"type":44,"tag":57,"props":840,"children":841},{},[842],{"type":50,"value":843},"If any gate fails, do NOT return zero missing dependencies.",{"type":44,"tag":69,"props":845,"children":846},{},[],{"type":44,"tag":73,"props":848,"children":850},{"id":849},"_3-source-vs-decompiled-precedence",[851],{"type":50,"value":852},"3. Source vs Decompiled Precedence",{"type":44,"tag":158,"props":854,"children":855},{},[856,874,879],{"type":44,"tag":162,"props":857,"children":858},{},[859,861,866,867,872],{"type":50,"value":860},"If the source code (",{"type":44,"tag":85,"props":862,"children":864},{"className":863},[],[865],{"type":50,"value":114},{"type":50,"value":108},{"type":44,"tag":85,"props":868,"children":870},{"className":869},[],[871],{"type":50,"value":121},{"type":50,"value":873}," files) for a referenced class\u002Fmodule is PRESENT in the scanned source folder (listed as dependency artifacts), do NOT mark it as a missing dependency — the conversion agent can use the source code directly.",{"type":44,"tag":162,"props":875,"children":876},{},[877],{"type":50,"value":878},"Only mark a dependency as missing when NEITHER source code NOR understandable decompiled code is available.",{"type":44,"tag":162,"props":880,"children":881},{},[882],{"type":50,"value":883},"Presence of a package\u002Fimport reference alone does not resolve dependency status; resolution requires source\u002Fdecompiled implementation availability.",{"type":44,"tag":69,"props":885,"children":886},{},[],{"type":44,"tag":73,"props":888,"children":890},{"id":889},"_4-what-counts-as-missing",[891],{"type":50,"value":892},"4. What Counts as Missing",{"type":44,"tag":158,"props":894,"children":895},{},[896,901,914,919,924,929,934,939,944],{"type":44,"tag":162,"props":897,"children":898},{},[899],{"type":50,"value":900},"JAR files whose source code is NOT found in the source folder.",{"type":44,"tag":162,"props":902,"children":903},{},[904,906,912],{"type":50,"value":905},"Custom Mule connectors (non-standard ",{"type":44,"tag":85,"props":907,"children":909},{"className":908},[],[910],{"type":50,"value":911},"mule-plugin",{"type":50,"value":913}," dependencies) without source.",{"type":44,"tag":162,"props":915,"children":916},{},[917],{"type":50,"value":918},"Custom Java components (transformers, message processors, interceptors) without source.",{"type":44,"tag":162,"props":920,"children":921},{},[922],{"type":50,"value":923},"External RAML\u002FOAS API specifications not present in the project.",{"type":44,"tag":162,"props":925,"children":926},{},[927],{"type":50,"value":928},"DataWeave modules imported from external libraries not present locally.",{"type":44,"tag":162,"props":930,"children":931},{},[932],{"type":50,"value":933},"Third-party connector dependencies without a Logic Apps equivalent and no source code.",{"type":44,"tag":162,"props":935,"children":936},{},[937],{"type":50,"value":938},"MuleSoft Enterprise connectors that require specific licensing (SAP, Salesforce, etc.) — flag as needing equivalent Azure connectors.",{"type":44,"tag":162,"props":940,"children":941},{},[942],{"type":50,"value":943},"Configuration\u002Fcertificates\u002Fconnection strings needed for target environment.",{"type":44,"tag":162,"props":945,"children":946},{},[947],{"type":50,"value":948},"Anypoint Platform dependencies (API Manager policies, Object Store V2, CloudHub properties).",{"type":44,"tag":69,"props":950,"children":951},{},[],{"type":44,"tag":73,"props":953,"children":955},{"id":954},"_5-classification",[956],{"type":50,"value":957},"5. Classification",{"type":44,"tag":57,"props":959,"children":960},{},[961],{"type":50,"value":962},"Each missing dependency MUST have:",{"type":44,"tag":964,"props":965,"children":966},"table",{},[967,991],{"type":44,"tag":968,"props":969,"children":970},"thead",{},[971],{"type":44,"tag":972,"props":973,"children":974},"tr",{},[975,981,986],{"type":44,"tag":976,"props":977,"children":978},"th",{},[979],{"type":50,"value":980},"Field",{"type":44,"tag":976,"props":982,"children":983},{},[984],{"type":50,"value":985},"Type",{"type":44,"tag":976,"props":987,"children":988},{},[989],{"type":50,"value":990},"Description",{"type":44,"tag":992,"props":993,"children":994},"tbody",{},[995,1018,1039,1060,1081,1102,1124,1145,1167,1188],{"type":44,"tag":972,"props":996,"children":997},{},[998,1008,1013],{"type":44,"tag":999,"props":1000,"children":1001},"td",{},[1002],{"type":44,"tag":85,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":50,"value":1007},"id",{"type":44,"tag":999,"props":1009,"children":1010},{},[1011],{"type":50,"value":1012},"string",{"type":44,"tag":999,"props":1014,"children":1015},{},[1016],{"type":50,"value":1017},"Unique identifier",{"type":44,"tag":972,"props":1019,"children":1020},{},[1021,1030,1034],{"type":44,"tag":999,"props":1022,"children":1023},{},[1024],{"type":44,"tag":85,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":50,"value":1029},"name",{"type":44,"tag":999,"props":1031,"children":1032},{},[1033],{"type":50,"value":1012},{"type":44,"tag":999,"props":1035,"children":1036},{},[1037],{"type":50,"value":1038},"Dependency name",{"type":44,"tag":972,"props":1040,"children":1041},{},[1042,1051,1055],{"type":44,"tag":999,"props":1043,"children":1044},{},[1045],{"type":44,"tag":85,"props":1046,"children":1048},{"className":1047},[],[1049],{"type":50,"value":1050},"type",{"type":44,"tag":999,"props":1052,"children":1053},{},[1054],{"type":50,"value":1012},{"type":44,"tag":999,"props":1056,"children":1057},{},[1058],{"type":50,"value":1059},"jar\u002Fjava-class\u002Fdwl-module\u002Fconnector\u002Framl\u002Fschema\u002Fapi-spec\u002Fproperty-file\u002Fcustom-code\u002Fother",{"type":44,"tag":972,"props":1061,"children":1062},{},[1063,1072,1076],{"type":44,"tag":999,"props":1064,"children":1065},{},[1066],{"type":44,"tag":85,"props":1067,"children":1069},{"className":1068},[],[1070],{"type":50,"value":1071},"origin",{"type":44,"tag":999,"props":1073,"children":1074},{},[1075],{"type":50,"value":1012},{"type":44,"tag":999,"props":1077,"children":1078},{},[1079],{"type":50,"value":1080},"standard-mule-runtime\u002Fstandard-mule-connector\u002Fmulesoft-enterprise\u002Fthird-party\u002Fcustom\u002Funknown",{"type":44,"tag":972,"props":1082,"children":1083},{},[1084,1093,1097],{"type":44,"tag":999,"props":1085,"children":1086},{},[1087],{"type":44,"tag":85,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":50,"value":1092},"severity",{"type":44,"tag":999,"props":1094,"children":1095},{},[1096],{"type":50,"value":1012},{"type":44,"tag":999,"props":1098,"children":1099},{},[1100],{"type":50,"value":1101},"critical\u002Fwarning\u002Finfo",{"type":44,"tag":972,"props":1103,"children":1104},{},[1105,1114,1119],{"type":44,"tag":999,"props":1106,"children":1107},{},[1108],{"type":44,"tag":85,"props":1109,"children":1111},{"className":1110},[],[1112],{"type":50,"value":1113},"referencedBy",{"type":44,"tag":999,"props":1115,"children":1116},{},[1117],{"type":50,"value":1118},"array",{"type":44,"tag":999,"props":1120,"children":1121},{},[1122],{"type":50,"value":1123},"Artifact names that reference this dependency",{"type":44,"tag":972,"props":1125,"children":1126},{},[1127,1136,1140],{"type":44,"tag":999,"props":1128,"children":1129},{},[1130],{"type":44,"tag":85,"props":1131,"children":1133},{"className":1132},[],[1134],{"type":50,"value":1135},"reason",{"type":44,"tag":999,"props":1137,"children":1138},{},[1139],{"type":50,"value":1012},{"type":44,"tag":999,"props":1141,"children":1142},{},[1143],{"type":50,"value":1144},"Why it is needed",{"type":44,"tag":972,"props":1146,"children":1147},{},[1148,1157,1162],{"type":44,"tag":999,"props":1149,"children":1150},{},[1151],{"type":44,"tag":85,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":50,"value":1156},"blocksMigration",{"type":44,"tag":999,"props":1158,"children":1159},{},[1160],{"type":50,"value":1161},"boolean",{"type":44,"tag":999,"props":1163,"children":1164},{},[1165],{"type":50,"value":1166},"True if prevents complete non-stub implementation",{"type":44,"tag":972,"props":1168,"children":1169},{},[1170,1179,1183],{"type":44,"tag":999,"props":1171,"children":1172},{},[1173],{"type":44,"tag":85,"props":1174,"children":1176},{"className":1175},[],[1177],{"type":50,"value":1178},"migrationRelevant",{"type":44,"tag":999,"props":1180,"children":1181},{},[1182],{"type":50,"value":1161},{"type":44,"tag":999,"props":1184,"children":1185},{},[1186],{"type":50,"value":1187},"False for build-only or design-time-only dependencies (e.g. MUnit test dependencies)",{"type":44,"tag":972,"props":1189,"children":1190},{},[1191,1200,1204],{"type":44,"tag":999,"props":1192,"children":1193},{},[1194],{"type":44,"tag":85,"props":1195,"children":1197},{"className":1196},[],[1198],{"type":50,"value":1199},"resolution",{"type":44,"tag":999,"props":1201,"children":1202},{},[1203],{"type":50,"value":1012},{"type":44,"tag":999,"props":1205,"children":1206},{},[1207],{"type":50,"value":1208},"MUST follow format: \"Add the source code or binary for {name} to the migration source folder and re-run discovery.\" Do NOT suggest code changes or workarounds — the user must provide the missing artifact.",{"type":44,"tag":57,"props":1210,"children":1211},{},[1212,1214,1220,1222,1228,1230,1236],{"type":50,"value":1213},"Also provide: ",{"type":44,"tag":85,"props":1215,"children":1217},{"className":1216},[],[1218],{"type":50,"value":1219},"summary",{"type":50,"value":1221}," (string), ",{"type":44,"tag":85,"props":1223,"children":1225},{"className":1224},[],[1226],{"type":50,"value":1227},"allCriticalResolved",{"type":50,"value":1229}," (boolean), ",{"type":44,"tag":85,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":50,"value":1235},"counts",{"type":50,"value":1237}," ({ critical, warning, info }).",{"type":44,"tag":222,"props":1239,"children":1241},{"id":1240},"_51-fail-closed-decision-rule",[1242],{"type":50,"value":1243},"5.1 Fail-Closed Decision Rule",{"type":44,"tag":57,"props":1245,"children":1246},{},[1247],{"type":50,"value":1248},"When evidence is incomplete or ambiguous, default to marking the dependency as missing with appropriate severity rather than reporting full resolution.",{"type":44,"tag":57,"props":1250,"children":1251},{},[1252],{"type":50,"value":1253},"A \"no missing dependencies\" conclusion is valid only when all verification gates in §2.5 pass with explicit evidence.",{"items":1255,"total":1432},[1256,1275,1292,1311,1326,1341,1354,1369,1380,1394,1407,1420],{"slug":1257,"name":1257,"fn":1258,"description":1259,"org":1260,"tags":1261,"stars":1272,"repoUrl":1273,"updatedAt":1274},"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},[1262,1263,1266,1269],{"name":11,"slug":8,"type":16},{"name":1264,"slug":1265,"type":16},"Compliance","compliance",{"name":1267,"slug":1268,"type":16},"Governance","governance",{"name":1270,"slug":1271,"type":16},"Policy","policy",1686,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-policy","2026-07-12T08:17:48.378432",{"slug":1276,"name":1276,"fn":1277,"description":1278,"org":1279,"tags":1280,"stars":1289,"repoUrl":1290,"updatedAt":1291},"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},[1281,1282,1285,1288],{"name":11,"slug":8,"type":16},{"name":1283,"slug":1284,"type":16},"Deployment","deployment",{"name":1286,"slug":1287,"type":16},"Infrastructure as Code","infrastructure-as-code",{"name":22,"slug":23,"type":16},260,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-blueprints","2026-07-12T08:17:49.646405",{"slug":1293,"name":1293,"fn":1294,"description":1295,"org":1296,"tags":1297,"stars":1308,"repoUrl":1309,"updatedAt":1310},"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},[1298,1301,1302,1305],{"name":1299,"slug":1300,"type":16},"API Development","api-development",{"name":11,"slug":8,"type":16},{"name":1303,"slug":1304,"type":16},"Code Review","code-review",{"name":1306,"slug":1307,"type":16},"Documentation","documentation",133,"https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-tools","2026-07-12T08:17:43.350876",{"slug":1312,"name":1312,"fn":1313,"description":1314,"org":1315,"tags":1316,"stars":1308,"repoUrl":1309,"updatedAt":1325},"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},[1317,1318,1319,1322],{"name":11,"slug":8,"type":16},{"name":1283,"slug":1284,"type":16},{"name":1320,"slug":1321,"type":16},"SDK","sdk",{"name":1323,"slug":1324,"type":16},"Testing","testing","2026-07-12T08:17:44.718943",{"slug":1327,"name":1327,"fn":1328,"description":1329,"org":1330,"tags":1331,"stars":1308,"repoUrl":1309,"updatedAt":1340},"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},[1332,1333,1336,1339],{"name":11,"slug":8,"type":16},{"name":1334,"slug":1335,"type":16},"GitHub","github",{"name":1337,"slug":1338,"type":16},"Project Management","project-management",{"name":1320,"slug":1321,"type":16},"2026-07-12T08:17:38.345387",{"slug":1342,"name":1342,"fn":1343,"description":1344,"org":1345,"tags":1346,"stars":1308,"repoUrl":1309,"updatedAt":1353},"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},[1347,1348,1351,1352],{"name":11,"slug":8,"type":16},{"name":1349,"slug":1350,"type":16},"CI\u002FCD","ci-cd",{"name":1283,"slug":1284,"type":16},{"name":1320,"slug":1321,"type":16},"2026-07-12T08:17:34.27607",{"slug":1355,"name":1355,"fn":1356,"description":1357,"org":1358,"tags":1359,"stars":1308,"repoUrl":1309,"updatedAt":1368},"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},[1360,1361,1362,1365],{"name":1299,"slug":1300,"type":16},{"name":11,"slug":8,"type":16},{"name":1363,"slug":1364,"type":16},"OpenAPI","openapi",{"name":1366,"slug":1367,"type":16},"Technical Writing","technical-writing","2026-07-12T08:17:39.603232",{"slug":1370,"name":1370,"fn":1371,"description":1372,"org":1373,"tags":1374,"stars":1308,"repoUrl":1309,"updatedAt":1379},"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},[1375,1376,1377,1378],{"name":11,"slug":8,"type":16},{"name":1349,"slug":1350,"type":16},{"name":1320,"slug":1321,"type":16},{"name":1323,"slug":1324,"type":16},"2026-07-12T08:17:37.08523",{"slug":1381,"name":1381,"fn":1382,"description":1383,"org":1384,"tags":1385,"stars":1308,"repoUrl":1309,"updatedAt":1393},"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},[1386,1389,1392],{"name":1387,"slug":1388,"type":16},"LLM","llm",{"name":1390,"slug":1391,"type":16},"Performance","performance",{"name":1366,"slug":1367,"type":16},"2026-07-12T08:17:42.080413",{"slug":1395,"name":1395,"fn":1396,"description":1397,"org":1398,"tags":1399,"stars":1308,"repoUrl":1309,"updatedAt":1406},"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},[1400,1401,1402,1405],{"name":11,"slug":8,"type":16},{"name":1349,"slug":1350,"type":16},{"name":1403,"slug":1404,"type":16},"Debugging","debugging",{"name":1320,"slug":1321,"type":16},"2026-07-12T08:17:40.821512",{"slug":1408,"name":1408,"fn":1409,"description":1410,"org":1411,"tags":1412,"stars":1308,"repoUrl":1309,"updatedAt":1419},"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},[1413,1414,1415,1418],{"name":11,"slug":8,"type":16},{"name":1264,"slug":1265,"type":16},{"name":1416,"slug":1417,"type":16},"Process Optimization","process-optimization",{"name":1366,"slug":1367,"type":16},"2026-07-12T08:17:32.970921",{"slug":1421,"name":1421,"fn":1422,"description":1423,"org":1424,"tags":1425,"stars":1308,"repoUrl":1309,"updatedAt":1431},"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},[1426,1427,1430],{"name":1306,"slug":1307,"type":16},{"name":1428,"slug":1429,"type":16},"Plugin Development","plugin-development",{"name":1366,"slug":1367,"type":16},"2026-07-12T08:17:35.873862",109,{"items":1434,"total":1529},[1435,1450,1466,1483,1498,1506,1516],{"slug":1436,"name":1436,"fn":1437,"description":1438,"org":1439,"tags":1440,"stars":27,"repoUrl":28,"updatedAt":1449},"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},[1441,1444,1445,1446],{"name":1442,"slug":1443,"type":16},"Architecture","architecture",{"name":11,"slug":8,"type":16},{"name":25,"slug":26,"type":16},{"name":1447,"slug":1448,"type":16},"Diagrams","diagrams","2026-07-12T08:19:15.81605",{"slug":1451,"name":1451,"fn":1452,"description":1453,"org":1454,"tags":1455,"stars":27,"repoUrl":28,"updatedAt":1465},"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},[1456,1457,1460,1461,1464],{"name":11,"slug":8,"type":16},{"name":1458,"slug":1459,"type":16},"Bicep","bicep",{"name":1283,"slug":1284,"type":16},{"name":1462,"slug":1463,"type":16},"Reporting","reporting",{"name":1323,"slug":1324,"type":16},"2026-07-12T08:20:12.210407",{"slug":1467,"name":1467,"fn":1468,"description":1469,"org":1470,"tags":1471,"stars":27,"repoUrl":28,"updatedAt":1482},"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},[1472,1475,1476,1479],{"name":1473,"slug":1474,"type":16},"Automation","automation",{"name":11,"slug":8,"type":16},{"name":1477,"slug":1478,"type":16},"Configuration","configuration",{"name":1480,"slug":1481,"type":16},"Workflow Automation","workflow-automation","2026-07-12T08:20:28.730402",{"slug":1484,"name":1484,"fn":1485,"description":1486,"org":1487,"tags":1488,"stars":27,"repoUrl":28,"updatedAt":1497},"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},[1489,1490,1491,1494],{"name":11,"slug":8,"type":16},{"name":22,"slug":23,"type":16},{"name":1492,"slug":1493,"type":16},"Operations","operations",{"name":1495,"slug":1496,"type":16},"Planning","planning","2026-07-12T08:20:17.194993",{"slug":4,"name":4,"fn":5,"description":6,"org":1499,"tags":1500,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1501,1502,1503,1504,1505],{"name":11,"slug":8,"type":16},{"name":25,"slug":26,"type":16},{"name":19,"slug":20,"type":16},{"name":14,"slug":15,"type":16},{"name":22,"slug":23,"type":16},{"slug":1507,"name":1507,"fn":1508,"description":1509,"org":1510,"tags":1511,"stars":27,"repoUrl":28,"updatedAt":1515},"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},[1512,1513,1514],{"name":1442,"slug":1443,"type":16},{"name":11,"slug":8,"type":16},{"name":22,"slug":23,"type":16},"2026-07-12T08:20:08.228065",{"slug":1517,"name":1517,"fn":1518,"description":1519,"org":1520,"tags":1521,"stars":27,"repoUrl":28,"updatedAt":1528},"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},[1522,1525,1526,1527],{"name":1523,"slug":1524,"type":16},".NET","net",{"name":1299,"slug":1300,"type":16},{"name":1473,"slug":1474,"type":16},{"name":11,"slug":8,"type":16},"2026-07-12T08:19:23.722956",12]