Follow-up from #3474, which restored one of these (the IxP listing path) after it cost a listing question 166s against GA's 52s — 80 registry get calls where GA made zero.
#3474 also fixed scripts/audit-capability-port.mjs, whose rule matcher was case-sensitive and so missed 66 of 275 bolded rules (24%) across the Maestro references — the house style writes **Do NOT …** 64 times against 90 for **Do not …**. With that fixed, the audit re-scores every port, and the damage is concentrated in one place:
| Capability |
Ported in |
Rules dropped |
| operate / diagnose / evaluate |
#3386 / #3421 / #3423 — with the tool |
1 / 0 / 0 |
| author plugins |
#3172 — before the tool existed |
25 across 9 references |
The author port predates the audit script. That is the whole explanation, and it means these 25 were never seen-and-decided the way #3421's port decisions were.
The list
Reproduce any row with:
node scripts/audit-capability-port.mjs \
skills/uipath-maestro-flow/references/author/plugins/<name> \
preview/skills/uipath-maestro-flow/references/<file>.md
| preview file |
dropped rule |
script.md |
Never name a variable aggregate |
batch-transform.md |
Do not pass reasoning-heavy instructions that depend on the whole document |
event-trigger.md |
Do not pass filterExpression directly — the validator rejects it |
conversational.md |
Do not add guardrails to inputSchema.properties |
conversational.md |
Do not carry one flavor's agent port across |
conversational.md |
Do not expect flow debug to run the conversation |
conversational.md |
Do not invent output paths |
conversational.md |
Do not leave the manual trigger in place |
conversational.md |
Do not use =js: strings |
data-fabric.md |
Do not add an instance outputs block |
data-fabric.md |
Do not feed an Update node's output into a Loop collection or a Transform |
data-fabric.md |
Do not hand-write definitions[] |
data-fabric.md |
Do not put a model block on the instance |
data-fabric.md |
Do not strip _entityFields / _outputSchema / _choiceSets from an existing node |
data-fabric.md |
Do not treat a search hit as proof you can author the node |
data-fabric.md |
Do not use these nodes inside an API workflow runtime |
data-fabric.md |
do not hand-author a definitions[] entry to stand in for the missing one |
hitl.md |
Do not use the alias in scripts; use $vars.{nodeId}.output.{fieldId} |
http.md |
Do not hand-write inputs.detail |
http.md |
Do not use =js: on conditionExpression |
inline-agent.md |
Do not clear this error by writing prompts onto the node |
inline-agent.md |
Do not skip uip agent refresh --inline-in-flow followed by uip agent validate --inline-in-flow |
inline-agent.md |
Do not use Flow CLI node add, edge add, or variable commands for inline-agent graph edits |
voice.md |
Do not hand-write definitions[] entries |
voice.md |
Do not leave the scaffolded core.trigger.manual in an inbound flow |
How to triage
Not all 25 are losses. Several are unreachable through the builder SDK and were correctly dropped — Do not hand-write definitions[], Do not add an instance outputs block, Do not put a model block on the instance, Do not use Flow CLI node add all describe JSON/CLI authoring the SDK replaces.
Others look SDK-independent and therefore like real losses:
Never name a variable aggregate — a JS runtime collision in script nodes, nothing to do with how the graph was authored
Do not leave the scaffolded core.trigger.manual in an inbound flow, Do not leave the manual trigger in place
Do not skip uip agent refresh --inline-in-flow + validate — a CLI workflow step, not a JSON concern
Do not pass reasoning-heavy instructions that depend on the whole document — a prompting rule
Do not use these nodes inside an API workflow runtime — a runtime constraint
The precedent from #3421 is to settle reachability by compiling probe flows, not by reading. That PR assumed four defects were unreachable through the builder, found three were, and found the fourth still live — a missing =js: prefix compiles to a bare literal, check reports nothing, and the node gets the text at run time. Had that gone unexamined the port would have deleted a working diagnosis. Same discipline applies here.
Note on data-fabric.md
Hold this file until the Data Fabric rewrite lands. @uipath/maestro-builder-sdk@6.7.0 (2026-09-23) added dataFabricCreate(), dataFabricDelete() and a query-many dataFabricRead() — see UiPath/flow-builder-sdk#766 and its PR #770 — so the file's connector routing and its "only 2 of the 7 operations" rationale both need rewriting anyway. Triage its 8 rows as part of that, not separately.
Definition of done
Each of the 25 is either restored to the preview reference or recorded as a deliberate omission with the evidence that it is unreachable. A clean under-covered 0 across all nine files, or a short note in this issue for each row consciously left out.
Follow-up from #3474, which restored one of these (the IxP listing path) after it cost a listing question 166s against GA's 52s — 80
registry getcalls where GA made zero.#3474 also fixed
scripts/audit-capability-port.mjs, whose rule matcher was case-sensitive and so missed 66 of 275 bolded rules (24%) across the Maestro references — the house style writes**Do NOT …**64 times against 90 for**Do not …**. With that fixed, the audit re-scores every port, and the damage is concentrated in one place:The author port predates the audit script. That is the whole explanation, and it means these 25 were never seen-and-decided the way #3421's port decisions were.
The list
Reproduce any row with:
script.mdaggregatebatch-transform.mdevent-trigger.mdfilterExpressiondirectly — the validator rejects itconversational.mdguardrailstoinputSchema.propertiesconversational.mdconversational.mdflow debugto run the conversationconversational.mdconversational.mdconversational.md=js:stringsdata-fabric.mdoutputsblockdata-fabric.mddata-fabric.mddefinitions[]data-fabric.mdmodelblock on the instancedata-fabric.md_entityFields/_outputSchema/_choiceSetsfrom an existing nodedata-fabric.mddata-fabric.mddata-fabric.mddefinitions[]entry to stand in for the missing onehitl.md$vars.{nodeId}.output.{fieldId}http.mdinputs.detailhttp.md=js:onconditionExpressioninline-agent.mdinline-agent.mduip agent refresh --inline-in-flowfollowed byuip agent validate --inline-in-flowinline-agent.mdnode add,edge add, orvariablecommands for inline-agent graph editsvoice.mddefinitions[]entriesvoice.mdcore.trigger.manualin an inbound flowHow to triage
Not all 25 are losses. Several are unreachable through the builder SDK and were correctly dropped —
Do not hand-write definitions[],Do not add an instance outputs block,Do not put a model block on the instance,Do not use Flow CLI node addall describe JSON/CLI authoring the SDK replaces.Others look SDK-independent and therefore like real losses:
Never name a variable aggregate— a JS runtime collision in script nodes, nothing to do with how the graph was authoredDo not leave the scaffolded core.trigger.manual in an inbound flow,Do not leave the manual trigger in placeDo not skip uip agent refresh --inline-in-flow+validate— a CLI workflow step, not a JSON concernDo not pass reasoning-heavy instructions that depend on the whole document— a prompting ruleDo not use these nodes inside an API workflow runtime— a runtime constraintThe precedent from #3421 is to settle reachability by compiling probe flows, not by reading. That PR assumed four defects were unreachable through the builder, found three were, and found the fourth still live — a missing
=js:prefix compiles to a bare literal,checkreports nothing, and the node gets the text at run time. Had that gone unexamined the port would have deleted a working diagnosis. Same discipline applies here.Note on
data-fabric.mdHold this file until the Data Fabric rewrite lands.
@uipath/maestro-builder-sdk@6.7.0(2026-09-23) addeddataFabricCreate(),dataFabricDelete()and a query-manydataFabricRead()— see UiPath/flow-builder-sdk#766 and its PR #770 — so the file's connector routing and its "only 2 of the 7 operations" rationale both need rewriting anyway. Triage its 8 rows as part of that, not separately.Definition of done
Each of the 25 is either restored to the preview reference or recorded as a deliberate omission with the evidence that it is unreachable. A clean
under-covered 0across all nine files, or a short note in this issue for each row consciously left out.