@uipath/skills 1.204.0 → 1.204.1-preview.1370

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.cursor-plugin/plugin.json +1 -1
  4. package/CODEOWNERS +12 -14
  5. package/package.json +1 -1
  6. package/skills/uipath-agents/references/coded/embedding-in-flows.md +1 -3
  7. package/skills/uipath-agents/references/coded/quickstart.md +0 -2
  8. package/skills/uipath-agents/references/lowcode/capabilities/inline-in-flow/inline-in-flow.md +10 -8
  9. package/skills/uipath-agents/references/lowcode/prompting/autonomous-agent-prompting-guide.md +1 -1
  10. package/skills/uipath-human-in-the-loop/SKILL.md +1 -3
  11. package/skills/uipath-human-in-the-loop/references/hitl-node-apptask.md +0 -2
  12. package/skills/uipath-human-in-the-loop/references/hitl-node-coded-action-app.md +0 -2
  13. package/skills/uipath-human-in-the-loop/references/hitl-node-quickform.md +2 -2
  14. package/skills/uipath-maestro-flow/.maintenance/README.md +265 -0
  15. package/skills/uipath-maestro-flow/.maintenance/check-all.sh +40 -0
  16. package/skills/uipath-maestro-flow/.maintenance/check-anchors.sh +101 -0
  17. package/skills/uipath-maestro-flow/.maintenance/check-depth.sh +132 -0
  18. package/skills/uipath-maestro-flow/.maintenance/check-link-text.sh +123 -0
  19. package/skills/uipath-maestro-flow/.maintenance/check-links.sh +73 -0
  20. package/skills/uipath-maestro-flow/.maintenance/check-orphans.sh +93 -0
  21. package/skills/uipath-maestro-flow/.maintenance/check-plugin-pairs.sh +39 -0
  22. package/skills/uipath-maestro-flow/.maintenance/check-template.sh +42 -0
  23. package/skills/uipath-maestro-flow/.maintenance/check-uip-commands.sh +270 -0
  24. package/skills/uipath-maestro-flow/.maintenance/check-versions.sh +160 -0
  25. package/skills/uipath-maestro-flow/SKILL.md +69 -886
  26. package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +207 -0
  27. package/skills/uipath-maestro-flow/references/author/brownfield.md +91 -0
  28. package/skills/uipath-maestro-flow/references/author/editing-operations-cli.md +190 -0
  29. package/skills/uipath-maestro-flow/references/author/editing-operations-json.md +374 -0
  30. package/skills/uipath-maestro-flow/references/author/editing-operations.md +104 -0
  31. package/skills/uipath-maestro-flow/references/author/greenfield.md +420 -0
  32. package/skills/uipath-maestro-flow/references/author/planning-arch.md +364 -0
  33. package/skills/uipath-maestro-flow/references/author/planning-impl.md +291 -0
  34. package/skills/uipath-maestro-flow/references/author/plugins/agent/impl.md +237 -0
  35. package/skills/uipath-maestro-flow/references/author/plugins/agent/planning.md +97 -0
  36. package/skills/uipath-maestro-flow/references/author/plugins/agentic-process/impl.md +107 -0
  37. package/skills/uipath-maestro-flow/references/author/plugins/agentic-process/planning.md +61 -0
  38. package/skills/uipath-maestro-flow/references/author/plugins/api-workflow/impl.md +108 -0
  39. package/skills/uipath-maestro-flow/references/author/plugins/api-workflow/planning.md +60 -0
  40. package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/impl.md +171 -0
  41. package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/planning.md +72 -0
  42. package/skills/uipath-maestro-flow/references/author/plugins/connector/impl-inline.md +120 -0
  43. package/skills/uipath-maestro-flow/references/author/plugins/connector/impl.md +463 -0
  44. package/skills/uipath-maestro-flow/references/author/plugins/connector/planning.md +186 -0
  45. package/skills/uipath-maestro-flow/references/author/plugins/connector-trigger/impl.md +517 -0
  46. package/skills/uipath-maestro-flow/references/author/plugins/connector-trigger/planning.md +115 -0
  47. package/skills/uipath-maestro-flow/references/author/plugins/conversational-agent/impl.md +309 -0
  48. package/skills/uipath-maestro-flow/references/author/plugins/conversational-agent/planning.md +133 -0
  49. package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/impl.md +428 -0
  50. package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/planning.md +188 -0
  51. package/skills/uipath-maestro-flow/references/author/plugins/decision/impl.md +83 -0
  52. package/skills/uipath-maestro-flow/references/author/plugins/decision/planning.md +38 -0
  53. package/skills/uipath-maestro-flow/references/author/plugins/delay/impl.md +38 -0
  54. package/skills/uipath-maestro-flow/references/author/plugins/delay/planning.md +53 -0
  55. package/skills/uipath-maestro-flow/references/author/plugins/end/impl.md +56 -0
  56. package/skills/uipath-maestro-flow/references/author/plugins/end/planning.md +28 -0
  57. package/skills/uipath-maestro-flow/references/author/plugins/flow/impl.md +107 -0
  58. package/skills/uipath-maestro-flow/references/author/plugins/flow/planning.md +58 -0
  59. package/skills/uipath-maestro-flow/references/author/plugins/hitl/impl.md +181 -0
  60. package/skills/uipath-maestro-flow/references/author/plugins/hitl/planning.md +166 -0
  61. package/skills/uipath-maestro-flow/references/author/plugins/http/impl-connector.md +86 -0
  62. package/skills/uipath-maestro-flow/references/author/plugins/http/impl-manual.md +68 -0
  63. package/skills/uipath-maestro-flow/references/author/plugins/http/impl.md +173 -0
  64. package/skills/uipath-maestro-flow/references/author/plugins/http/planning.md +107 -0
  65. package/skills/uipath-maestro-flow/references/author/plugins/inline-agent/impl.md +540 -0
  66. package/skills/uipath-maestro-flow/references/author/plugins/inline-agent/planning.md +115 -0
  67. package/skills/uipath-maestro-flow/references/author/plugins/inline-voice-agent/impl.md +269 -0
  68. package/skills/uipath-maestro-flow/references/author/plugins/inline-voice-agent/planning.md +128 -0
  69. package/skills/uipath-maestro-flow/references/author/plugins/ixp/impl.md +424 -0
  70. package/skills/uipath-maestro-flow/references/author/plugins/ixp/planning.md +95 -0
  71. package/skills/uipath-maestro-flow/references/author/plugins/loop/impl.md +403 -0
  72. package/skills/uipath-maestro-flow/references/author/plugins/loop/planning.md +60 -0
  73. package/skills/uipath-maestro-flow/references/author/plugins/merge/impl.md +43 -0
  74. package/skills/uipath-maestro-flow/references/author/plugins/merge/planning.md +24 -0
  75. package/skills/uipath-maestro-flow/references/author/plugins/queue/impl.md +82 -0
  76. package/skills/uipath-maestro-flow/references/author/plugins/queue/planning.md +44 -0
  77. package/skills/uipath-maestro-flow/references/author/plugins/rpa/impl.md +117 -0
  78. package/skills/uipath-maestro-flow/references/author/plugins/rpa/planning.md +61 -0
  79. package/skills/uipath-maestro-flow/references/author/plugins/scheduled-trigger/impl.md +56 -0
  80. package/skills/uipath-maestro-flow/references/author/plugins/scheduled-trigger/planning.md +93 -0
  81. package/skills/uipath-maestro-flow/references/author/plugins/script/impl.md +98 -0
  82. package/skills/uipath-maestro-flow/references/author/plugins/script/planning.md +42 -0
  83. package/skills/uipath-maestro-flow/references/author/plugins/subflow/impl.md +164 -0
  84. package/skills/uipath-maestro-flow/references/author/plugins/subflow/planning.md +35 -0
  85. package/skills/uipath-maestro-flow/references/author/plugins/summarize/impl.md +189 -0
  86. package/skills/uipath-maestro-flow/references/author/plugins/summarize/planning.md +66 -0
  87. package/skills/uipath-maestro-flow/references/author/plugins/switch/impl.md +72 -0
  88. package/skills/uipath-maestro-flow/references/author/plugins/switch/planning.md +34 -0
  89. package/skills/uipath-maestro-flow/references/author/plugins/terminate/impl.md +48 -0
  90. package/skills/uipath-maestro-flow/references/author/plugins/terminate/planning.md +29 -0
  91. package/skills/uipath-maestro-flow/references/author/plugins/transform/impl.md +252 -0
  92. package/skills/uipath-maestro-flow/references/author/plugins/transform/planning.md +47 -0
  93. package/skills/uipath-maestro-flow/references/diagnose/CAPABILITY.md +73 -0
  94. package/skills/uipath-maestro-flow/references/diagnose/failure-modes.md +353 -0
  95. package/skills/uipath-maestro-flow/references/diagnose/troubleshooting-guide.md +174 -0
  96. package/skills/uipath-maestro-flow/references/evaluate/CAPABILITY.md +134 -0
  97. package/skills/uipath-maestro-flow/references/evaluate/commands-reference.md +376 -0
  98. package/skills/uipath-maestro-flow/references/evaluate/eval-sets-guide.md +227 -0
  99. package/skills/uipath-maestro-flow/references/evaluate/evaluators-guide.md +143 -0
  100. package/skills/uipath-maestro-flow/references/evaluate/running-guide.md +215 -0
  101. package/skills/uipath-maestro-flow/references/evaluate/upload-safety.md +94 -0
  102. package/skills/uipath-maestro-flow/references/operate/CAPABILITY.md +77 -0
  103. package/skills/uipath-maestro-flow/references/operate/manage.md +39 -0
  104. package/skills/uipath-maestro-flow/references/operate/run.md +121 -0
  105. package/skills/uipath-maestro-flow/references/operate/ship.md +57 -0
  106. package/skills/uipath-maestro-flow/references/shared/action-nodes.md +100 -0
  107. package/skills/uipath-maestro-flow/references/shared/cli-commands.md +269 -0
  108. package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +178 -0
  109. package/skills/uipath-maestro-flow/references/shared/file-format.md +582 -0
  110. package/skills/uipath-maestro-flow/references/shared/node-output-wiring.md +86 -0
  111. package/skills/uipath-maestro-flow/references/shared/ux-narration-and-todos.md +113 -0
  112. package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +787 -0
  113. package/skills/uipath-platform/references/integration-service/activities.md +2 -2
  114. package/skills/uipath-platform/references/integration-service/activity-generation.md +8 -1
  115. package/skills/uipath-platform/references/integration-service/triggers.md +1 -3
  116. package/version-manifest.json +1 -1
  117. package/skills/uipath-maestro-flow/examples/AquariumSafetyStop.flow.ts +0 -26
  118. package/skills/uipath-maestro-flow/examples/ArchiveCardExtract.flow.ts +0 -38
  119. package/skills/uipath-maestro-flow/examples/BakeOffEntryForm.flow.ts +0 -27
  120. package/skills/uipath-maestro-flow/examples/BeeHiveLedger.flow.ts +0 -61
  121. package/skills/uipath-maestro-flow/examples/BeltProgression.flow.ts +0 -53
  122. package/skills/uipath-maestro-flow/examples/BirdCountLookup.flow.ts +0 -24
  123. package/skills/uipath-maestro-flow/examples/ClubDirectory.flow.ts +0 -56
  124. package/skills/uipath-maestro-flow/examples/ConcertSoundcheck.flow.ts +0 -59
  125. package/skills/uipath-maestro-flow/examples/DoorbellLog.flow.ts +0 -45
  126. package/skills/uipath-maestro-flow/examples/FestivalMapScaffold.flow.ts +0 -22
  127. package/skills/uipath-maestro-flow/examples/FieldTripQuickForm.flow.ts +0 -45
  128. package/skills/uipath-maestro-flow/examples/FossilCatalogEnrich.flow.ts +0 -26
  129. package/skills/uipath-maestro-flow/examples/GallerySubmission.flow.ts +0 -67
  130. package/skills/uipath-maestro-flow/examples/GreenhouseWatering.flow.ts +0 -39
  131. package/skills/uipath-maestro-flow/examples/HarbourRadioLine.flow.ts +0 -31
  132. package/skills/uipath-maestro-flow/examples/HerbariumDispatch.flow.ts +0 -34
  133. package/skills/uipath-maestro-flow/examples/KilnReview.flow.ts +0 -38
  134. package/skills/uipath-maestro-flow/examples/LibraryDeskChat.flow.ts +0 -39
  135. package/skills/uipath-maestro-flow/examples/LighthouseSignal.flow.ts +0 -30
  136. package/skills/uipath-maestro-flow/examples/MeteorShowerPages.flow.ts +0 -39
  137. package/skills/uipath-maestro-flow/examples/NeighborhoodWalkPlanner.flow.ts +0 -27
  138. package/skills/uipath-maestro-flow/examples/ObservatorySeeing.flow.ts +0 -51
  139. package/skills/uipath-maestro-flow/examples/OralHistoryDigest.flow.ts +0 -31
  140. package/skills/uipath-maestro-flow/examples/PlanetariumConfirmation.flow.ts +0 -34
  141. package/skills/uipath-maestro-flow/examples/PlantNameAdvisor.flow.ts +0 -28
  142. package/skills/uipath-maestro-flow/examples/PostcardCaption.flow.ts +0 -44
  143. package/skills/uipath-maestro-flow/examples/PotteryStudioCallback.flow.ts +0 -41
  144. package/skills/uipath-maestro-flow/examples/RecipeScaler.flow.ts +0 -62
  145. package/skills/uipath-maestro-flow/examples/SeedPacketReader.flow.ts +0 -49
  146. package/skills/uipath-maestro-flow/examples/TideTableConverter.flow.ts +0 -35
  147. package/skills/uipath-maestro-flow/examples/TrailLogSummary.flow.ts +0 -75
  148. package/skills/uipath-maestro-flow/examples/WorkshopInventory.flow.ts +0 -27
  149. package/skills/uipath-maestro-flow/examples/bindings.json +0 -85
  150. package/skills/uipath-maestro-flow/references/CLI-LOOP.md +0 -309
  151. package/skills/uipath-maestro-flow/references/agent-resources.md +0 -74
  152. package/skills/uipath-maestro-flow/references/agent.md +0 -175
  153. package/skills/uipath-maestro-flow/references/agentic-process.md +0 -41
  154. package/skills/uipath-maestro-flow/references/api-workflow.md +0 -29
  155. package/skills/uipath-maestro-flow/references/author.md +0 -178
  156. package/skills/uipath-maestro-flow/references/batch-transform.md +0 -23
  157. package/skills/uipath-maestro-flow/references/bindings.md +0 -178
  158. package/skills/uipath-maestro-flow/references/branch.md +0 -18
  159. package/skills/uipath-maestro-flow/references/brownfield.md +0 -152
  160. package/skills/uipath-maestro-flow/references/connector-params.md +0 -624
  161. package/skills/uipath-maestro-flow/references/conversational.md +0 -77
  162. package/skills/uipath-maestro-flow/references/data-fabric.md +0 -268
  163. package/skills/uipath-maestro-flow/references/delay.md +0 -26
  164. package/skills/uipath-maestro-flow/references/diagnose.md +0 -141
  165. package/skills/uipath-maestro-flow/references/document-pipeline.md +0 -47
  166. package/skills/uipath-maestro-flow/references/error-handling.md +0 -75
  167. package/skills/uipath-maestro-flow/references/evaluate.md +0 -168
  168. package/skills/uipath-maestro-flow/references/event-trigger.md +0 -155
  169. package/skills/uipath-maestro-flow/references/form-trigger.md +0 -41
  170. package/skills/uipath-maestro-flow/references/hitl.md +0 -169
  171. package/skills/uipath-maestro-flow/references/http.md +0 -105
  172. package/skills/uipath-maestro-flow/references/inline-agent.md +0 -132
  173. package/skills/uipath-maestro-flow/references/ixp.md +0 -167
  174. package/skills/uipath-maestro-flow/references/loops.md +0 -77
  175. package/skills/uipath-maestro-flow/references/manual-trigger.md +0 -39
  176. package/skills/uipath-maestro-flow/references/operate.md +0 -204
  177. package/skills/uipath-maestro-flow/references/or-processes.md +0 -91
  178. package/skills/uipath-maestro-flow/references/parallel-merge.md +0 -21
  179. package/skills/uipath-maestro-flow/references/placeholder.md +0 -70
  180. package/skills/uipath-maestro-flow/references/published-function.md +0 -66
  181. package/skills/uipath-maestro-flow/references/queue.md +0 -53
  182. package/skills/uipath-maestro-flow/references/return.md +0 -20
  183. package/skills/uipath-maestro-flow/references/rpa-workflow.md +0 -27
  184. package/skills/uipath-maestro-flow/references/scheduled-trigger.md +0 -34
  185. package/skills/uipath-maestro-flow/references/script.md +0 -52
  186. package/skills/uipath-maestro-flow/references/subflow.md +0 -33
  187. package/skills/uipath-maestro-flow/references/summarize.md +0 -20
  188. package/skills/uipath-maestro-flow/references/switch.md +0 -20
  189. package/skills/uipath-maestro-flow/references/terminate.md +0 -22
  190. package/skills/uipath-maestro-flow/references/transform.md +0 -32
  191. package/skills/uipath-maestro-flow/references/voice.md +0 -70
@@ -9,7 +9,7 @@
9
9
  "name": "uipath",
10
10
  "source": "./",
11
11
  "description": "UiPath plugin for Claude Code — custom skills, agents, hooks, and MCP servers for UiPath workflows, UI automation, UI testing and UiPath troubleshoot",
12
- "version": "1.204.0",
12
+ "version": "1.204.1",
13
13
  "author": {
14
14
  "name": "UiPath"
15
15
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uipath",
3
- "version": "1.204.0",
3
+ "version": "1.204.1",
4
4
  "description": "UiPath plugin for Claude Code — custom skills, agents, hooks, and MCP servers for UiPath RPA workflows, UI automation, UI testing, Python coded agents and UiPath troubleshoot",
5
5
  "author": {
6
6
  "name": "UiPath"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "uipath",
3
3
  "displayName": "UiPath",
4
- "version": "1.204.0",
4
+ "version": "1.204.1",
5
5
  "description": "UiPath plugin for Cursor — skills for building, running, testing, and deploying UiPath automations, agents, coded apps, and platform operations.",
6
6
  "author": {
7
7
  "name": "UiPath",
package/CODEOWNERS CHANGED
@@ -21,6 +21,7 @@
21
21
  /skill-flavors/studioweb/ @astridstaicu
22
22
 
23
23
  # preview skills
24
+ /preview/skills/uipath-maestro-flow/ @UiPath/maestro-cli-team
24
25
  /preview/skills/uipath-maestro-case/ @dmetzgar @tmatup
25
26
  /preview/skills/uipath-maestro-bpmn/ @UiPath/maestro-cli-team
26
27
 
@@ -117,15 +118,12 @@
117
118
 
118
119
  # Flow skill
119
120
  /skills/uipath-maestro-flow/ @chandusailella @mukundbayyaram @UiPath/maestro-cli-team
120
- # Previous Flow generation (JSON authoring), kept only because the Studio Web
121
- # flavor pins it (skill-flavors/studioweb/uipath-maestro-flow/.canonical).
122
- /classic/skills/uipath-maestro-flow/ @chandusailella @mukundbayyaram @UiPath/maestro-cli-team @astridstaicu
123
121
  # Flow test tasks (general) — more specific subfolder rules below override this
124
122
  /tests/tasks/uipath-maestro-flow/ @UiPath/maestro-cli-team
125
123
 
126
124
  # Context grounding team — flow plugins (Summarize/Batch Transform) + tasks
127
- /skills/uipath-maestro-flow/references/summarize.md @gcuip @JeremyReist2 @cfauchere @CalebMartinUiPath @jordan-uipath @eteodorovici @pateljay43 @swathiJayav @UiPath/maestro-cli-team
128
- /skills/uipath-maestro-flow/references/batch-transform.md @gcuip @JeremyReist2 @cfauchere @CalebMartinUiPath @jordan-uipath @eteodorovici @pateljay43 @swathiJayav @UiPath/maestro-cli-team
125
+ /skills/uipath-maestro-flow/references/author/plugins/summarize/ @gcuip @JeremyReist2 @cfauchere @CalebMartinUiPath @jordan-uipath @eteodorovici @pateljay43 @swathiJayav @UiPath/maestro-cli-team
126
+ /skills/uipath-maestro-flow/references/author/plugins/batch-transform/ @gcuip @JeremyReist2 @cfauchere @CalebMartinUiPath @jordan-uipath @eteodorovici @pateljay43 @swathiJayav @UiPath/maestro-cli-team
129
127
  /tests/tasks/uipath-maestro-flow/context-grounding/ @gcuip @JeremyReist2 @cfauchere @CalebMartinUiPath @jordan-uipath @eteodorovici @pateljay43 @swathiJayav @UiPath/maestro-cli-team
130
128
 
131
129
  # Maestro BPMN skill
@@ -157,13 +155,13 @@
157
155
  /tests/tasks/uipath-connector-builder/ @mukeshkumar-uipath @chandusailella @apoosarla-uipath
158
156
  /tests/tasks/activation/uipath-connector-builder.jsonl @mukeshkumar-uipath @chandusailella @apoosarla-uipath
159
157
 
160
- # Flow skill — node guides (away team owned)
158
+ # Flow skill — plugin guides (away team owned)
161
159
  # Add your team here when contributing a new plugin category
162
- /skills/uipath-maestro-flow/references/connector-params.md @chandusailella @UiPath/maestro-cli-team
163
- /skills/uipath-maestro-flow/references/event-trigger.md @chandusailella @UiPath/maestro-cli-team
164
- /skills/uipath-maestro-flow/references/agent.md @UiPath/team-coded-agents @AlexandruCGhimisi @andreibalas-uipath @al3xanndru @UiPath/maestro-cli-team
165
- /skills/uipath-maestro-flow/references/inline-agent.md @AlexandruCGhimisi @andreibalas-uipath @al3xanndru @UiPath/maestro-cli-team
166
- /skills/uipath-maestro-flow/references/data-fabric.md @UiPath/DatafabricCodingAgent @UiPath/maestro-cli-team
160
+ /skills/uipath-maestro-flow/references/author/plugins/connector/ @chandusailella @UiPath/maestro-cli-team
161
+ /skills/uipath-maestro-flow/references/author/plugins/connector-trigger/ @chandusailella @UiPath/maestro-cli-team
162
+ /skills/uipath-maestro-flow/references/author/plugins/agent/ @UiPath/team-coded-agents @AlexandruCGhimisi @andreibalas-uipath @al3xanndru @UiPath/maestro-cli-team
163
+ /skills/uipath-maestro-flow/references/author/plugins/inline-agent/ @AlexandruCGhimisi @andreibalas-uipath @al3xanndru @UiPath/maestro-cli-team
164
+ /skills/uipath-maestro-flow/references/author/plugins/data-fabric/ @UiPath/DatafabricCodingAgent @UiPath/maestro-cli-team
167
165
  /tests/tasks/uipath-maestro-flow/connector_features/ @chandusailella @mukundbayyaram @UiPath/maestro-cli-team
168
166
  /tests/tasks/uipath-maestro-flow/connector_features/datafabric_connector @UiPath/DatafabricCodingAgent @UiPath/maestro-cli-team
169
167
  # Checkers relocated to _shared/ during the host-path-removal migration (test: d61fa9d52) —
@@ -172,15 +170,15 @@
172
170
  /tests/tasks/uipath-maestro-flow/_shared/check_generic_dynamic_node.py @chandusailella @mukundbayyaram @UiPath/maestro-cli-team
173
171
 
174
172
  # IXP
175
- /skills/uipath-maestro-flow/references/ixp.md @UiPath/communications-mining @constantinmuraru @vlad-crisan @UiPath/maestro-cli-team
173
+ /skills/uipath-maestro-flow/references/author/plugins/ixp/ @UiPath/communications-mining @constantinmuraru @vlad-crisan @UiPath/maestro-cli-team
176
174
  /tests/tasks/uipath-maestro-flow/ixp/ @UiPath/communications-mining @constantinmuraru @vlad-crisan @UiPath/maestro-cli-team
177
175
 
178
176
  # Chat — inline conversational agent node + the conversation trigger and message nodes
179
- /skills/uipath-maestro-flow/references/conversational.md @UiPath/jarvis @UiPath/maestro-cli-team
177
+ /skills/uipath-maestro-flow/references/author/plugins/conversational-agent/ @UiPath/jarvis @UiPath/maestro-cli-team
180
178
  /tests/tasks/uipath-maestro-flow/conversational/ @UiPath/jarvis @UiPath/maestro-cli-team
181
179
 
182
180
  # Voice — inline voice agent node + the trigger, dial, and end-call nodes
183
- /skills/uipath-maestro-flow/references/voice.md @UiPath/jarvis @UiPath/maestro-cli-team
181
+ /skills/uipath-maestro-flow/references/author/plugins/inline-voice-agent/ @UiPath/jarvis @UiPath/maestro-cli-team
184
182
  /tests/tasks/uipath-maestro-flow/voice/ @UiPath/jarvis @UiPath/maestro-cli-team
185
183
 
186
184
  # Review skill
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/skills",
3
- "version": "1.204.0",
3
+ "version": "1.204.1-preview.1370",
4
4
  "description": "UiPath agent skills for Claude Code, Codex, Cursor, Copilot, Gemini and OpenCode — RPA, UI automation, UI testing, coded agents/apps/workflows, and troubleshooting. Distributed as the UiPath Claude Code plugin.",
5
5
  "author": {
6
6
  "name": "UiPath"
@@ -4,8 +4,6 @@ A coded agent can live as a sibling folder to a flow project inside the same sol
4
4
 
5
5
  For the published-agent path (deployed standalone via `uip codedagent deploy`), see [coded/flow-integration.md § Pattern 2](flow-integration.md#pattern-2-published-coded-agent).
6
6
 
7
- **Builder-SDK Flow projects (`.flow.ts`) — the default:** call the coded agent with an `agent({...})` step in `<Name>.flow.ts` — see [agent.md](../../../uipath-maestro-flow/references/agent.md). `compile` emits the node, definition and bindings; the JSON in this file applies to a JSON-authored `.flow`.
8
-
9
7
  ## Sibling Folder Structure
10
8
 
11
9
  The `<resourceKey>` is the local UUID minted by `uip solution projects add` — stable the moment the agent joins the solution.
@@ -116,4 +114,4 @@ One `inputs.<field>` entry per property in the agent's input schema (`entry-poin
116
114
 
117
115
  NEVER a plain `"=js:..."` string value — it ships as a literal string to the agent activity and fails at runtime with `Cannot find name '<identifier>'`. Complete worked example (trigger → agent → end): uipath-maestro-flow skill, agent-plugin reference § Wiring Inputs.
118
116
 
119
- Input-only rule. In a builder-SDK (`.flow.ts`) project you never write that mapping: `.return({ <output>: out('<agentStep>', '<field>') })` makes the builder emit it — see [return.md](../../../uipath-maestro-flow/references/return.md).
117
+ Input-only rule. Mapping the agent's output back to a flow-level global on an End node DOES use `=js:` — see [variables-and-expressions.md § Variable Updates](../../../uipath-maestro-flow/references/shared/variables-and-expressions.md#variable-updates-variableupdates).
@@ -298,8 +298,6 @@ Execute the following in order, end-to-end, in one pass — do not pause for con
298
298
 
299
299
  The second command's `Data.Node` object is what gets pasted verbatim into the flow's top-level `definitions[]` array.
300
300
 
301
- **Builder-SDK Flow projects (`.flow.ts`) — the default:** replace step 7 with one `agent({ key, name, ... })` step in `<Name>.flow.ts` and a `compile` — see [agent.md](../../../uipath-maestro-flow/references/agent.md). Step 7's JSON edits apply to a JSON-authored `.flow`.
302
-
303
301
  7. **Wire the agent node into the `.flow` file.** Edit `<FlowName>.flow` directly:
304
302
  - Add a `uipath.core.agent.<resourceKey>` node to `nodes[]` with one `inputs.<field>` entry per property in the agent's input schema (see step 6's `Data.Node.inputDefinition`) and `model.section: "In this solution"`.
305
303
  - For input field values, see [embedding-in-flows.md § Wiring the Agent's Inputs](embedding-in-flows.md#wiring-the-agents-inputs).
@@ -4,8 +4,6 @@ Walkthrough for embedding a low-code autonomous agent directly inside a flow pro
4
4
 
5
5
  Flow authoring itself is the responsibility of the `uipath-maestro-flow` skill — this file covers only the inline-agent side (creating the agent subdirectory, configuring it, and the shape of the `uipath.agent.autonomous` flow node that references it).
6
6
 
7
- **Builder-SDK Flow projects (`.flow.ts`) — the default:** the agent is one `inlineAgent({...})` step in `<Name>.flow.ts`, and `compile` emits the flow node and the `<source>/agent.json` sidecar — see [inline-agent.md](../../../../../uipath-maestro-flow/references/inline-agent.md). The directory, `agent.json` and node JSON steps below apply to a JSON-authored `.flow`.
8
-
9
7
  ## When to Use
10
8
 
11
9
  - Agent is tightly coupled to this specific flow
@@ -144,7 +142,7 @@ This skill authors the **`agent.json` side** (flatten rule: `$vars.<trigger>.out
144
142
  "content": "Write a billing resolution email for this dispute:\n{{input.start__output__disputeSummary}}" }]
145
143
  ```
146
144
 
147
- The **flow side** is authored through the `uipath-maestro-flow` skill. In a builder-SDK (`.flow.ts`) project it is one `inlineAgent({ ..., userPrompt: '… {{input.<name>}} …', inputs: { <name>: <flow expression> } })` step: `compile` emits the node, its input bindings and the `agent.json` sidecar, so none of that is written by hand — see [inline-agent.md](../../../../../uipath-maestro-flow/references/inline-agent.md).
145
+ The **flow side** — the trigger global and the node `agentInputVariables[]` binding (the only thing the converter turns into `JobArguments`) — is authored through the `uipath-maestro-flow` skill (Critical Rule 15). The full four-piece contract, the converter behavior, and the `content`↔`contentTokens` invariant + validator errors all live there: [inline-agent prompt-wiring guide § Wiring Flow Variables into Agent Prompts](../../../../../uipath-maestro-flow/references/author/plugins/inline-agent/impl.md#wiring-flow-variables-into-agent-prompts).
148
146
 
149
147
  ## Refresh and Validate Inline Agent
150
148
 
@@ -155,7 +153,7 @@ uip agent validate "<FlowProjectDir>/<projectId>" --inline-in-flow --output json
155
153
 
156
154
  `--inline-in-flow` skips the `entry-points.json` / `project.uiproj` checks. In inline mode `refresh` regenerates `messages[].contentTokens` (from `content`) and `bindings_v2.json` — **not** `entry-points.json` (standalone only). `validate` is read-only (it flags `contentTokens` drift but doesn't repair it — fix by re-running `refresh`).
157
155
 
158
- **Verify with a real run:** the end-to-end check (run `uip maestro flow debug` and confirm the agent resolves its input rather than echoing the literal `{{input.<name>}}` token) is owned by the `uipath-maestro-flow` skill — see [operate.md](../../../../../uipath-maestro-flow/references/operate.md).
156
+ **Verify at `flow debug`, not after refresh:** `refresh` never fills `inputSchema` — it is non-empty only because you authored it (`DerivedFiles: 0` is normal and does **not** mean input is missing). The end-to-end check (run `uip maestro flow debug` and confirm the agent resolves the input rather than echoing the literal `input.<key>` token) is owned by the `uipath-maestro-flow` skill — see its [inline-agent guide § Debug](../../../../../uipath-maestro-flow/references/author/plugins/inline-agent/impl.md#debug).
159
157
 
160
158
  For inline agents with external capabilities (tools, contexts, memory spaces, or escalations), pass `--bindings-target` to **`refresh`** after all flow graph edits:
161
159
 
@@ -166,13 +164,17 @@ uip agent refresh "<FlowProjectDir>/<projectId>" --inline-in-flow \
166
164
 
167
165
  `--bindings-target` propagates the inline agent's bindings (process, connection, index, memorySpace, app, etc.) into the flow project's `bindings_v2.json`. This is required for `uip solution resources refresh` to discover the bindings and create solution-level resource files. Never hand-edit `bindings_v2.json`.
168
166
 
169
- > **Builder-SDK Flow projects (`.flow.ts`):** the `inlineAgent({...})` step in `<Name>.flow.ts` IS the flow node, and `compile` emits it, its edges and the `<source>/agent.json` sidecar — see [inline-agent.md](../../../../../uipath-maestro-flow/references/inline-agent.md). Nothing is added to the compiled `.flow` by hand; the ordering rule below applies to a JSON-authored `.flow`.
167
+ > **Ordering constraint:** run the final `uip agent refresh --inline-in-flow --bindings-target …` after all flow graph edits are complete. The `uipath-maestro-flow` skill owns direct `.flow` authoring for the inline-agent node, capability-resource nodes, and edges; refresh last so the generated bindings land in the flow project's `bindings_v2.json` before `uip solution resources refresh`. See the [Walkthrough](#walkthrough--end-to-end) for the correct sequence.
170
168
 
171
169
  ## Flow Wiring
172
170
 
173
- In a builder-SDK (`.flow.ts`) project, hand the agent's intent to the `uipath-maestro-flow` skill: it authors one `inlineAgent({...})` step and compiles, and that emits the `uipath.agent.autonomous` node and its edges. See [inline-agent.md](../../../../../uipath-maestro-flow/references/inline-agent.md).
171
+ After creating the inline agent, the flow needs a `uipath.agent.autonomous` node whose `inputs.source` is the inline agent's `projectId` UUID, plus edges connecting it to the rest of the flow.
172
+
173
+ **Hand off to the `uipath-maestro-flow` skill for the actual node and edge authoring.** Per Critical Rule 15, this skill does not invoke flow operations directly. Tell the user:
174
+
175
+ > The inline agent has been scaffolded at `<FlowProjectDir>/<projectId>/`. To wire it into the flow, use the `uipath-maestro-flow` skill — pass it `projectId = <uuid>` so it can add a `uipath.agent.autonomous` node with `inputs.source = <uuid>` and connect the input/success edges via direct `.flow` authoring. **After all flow graph edits are complete**, run `uip agent refresh --inline-in-flow`, then `uip agent validate --inline-in-flow`; for inline agents with external capabilities, include `--bindings-target <FlowProjectDir>/bindings_v2.json` on the refresh call.
174
176
 
175
- The node JSON in § Flow Node Structure below is the compiled shape — for reading an emitted `.flow`, never for writing one.
177
+ The node JSON shape that the flow skill must produce is documented in § Flow Node Structure below — keep it as a reference, not as a CLI walkthrough.
176
178
 
177
179
  ## Inline-in-Flow Resource Paths
178
180
 
@@ -236,7 +238,7 @@ Resource body shape is identical to the standalone-agent docs — only the folde
236
238
 
237
239
  **Critical fields:**
238
240
  - `inputs.source` — The inline agent's `projectId` UUID. Must match the subdirectory name and `agent.json.projectId` inside the flow project. The definition still declares `model.source: true`, but flow-core hoists that identity field onto `inputs.source` for the `uipath.agent.autonomous` node instance.
239
- - `inputs.systemPrompt` / `inputs.userPrompt` — in a builder-SDK project, set the prompts with `inlineAgent({ systemPrompt, userPrompt })`; `compile` emits the node and its `agent.json` sidecar from them, so edit neither by hand. See [inline-agent.md](../../../../../uipath-maestro-flow/references/inline-agent.md).
241
+ - `inputs.systemPrompt` / `inputs.userPrompt` — **do not write these keys.** A prompt string on the node makes the flow converter drop every `agentInputVariables[]` entry the prompt text does not reference. Empty strings fail `uip maestro flow validate`. The canonical prompts live in `agent.json.messages[]`. Validator behavior and the older-CLI fallback: [inline-agent guide § Refresh and Validate](../../../../../uipath-maestro-flow/references/author/plugins/inline-agent/impl.md#refresh-and-validate).
240
242
  - `definitions[]` — The `uipath.agent.autonomous` definition copied from the flow registry supplies `model.serviceType: "Orchestrator.StartInlineAgentJob"`, BPMN type, version, and context. Do not copy those fields into the node instance.
241
243
  - No node instance `model` block — the inline-agent source lives at `inputs.source`.
242
244
 
@@ -53,7 +53,7 @@ The user message carries the task and the data — not the role.
53
53
 
54
54
  Token form depends on context:
55
55
 
56
- - **Inline-in-flow agents** in a builder-SDK (`.flow.ts`) project name flow values as `{{input.<name>}}` and bind each name with `inlineAgent({ inputs: { <name>: out('<step>', '<field>') } })`. See [inline-agent.md](../../../../uipath-maestro-flow/references/inline-agent.md).
56
+ - **Inline-in-flow agents** reference upstream flow nodes: `{{ $vars.<flowNodeId>.output[.<field>] }}`. See the [uipath-maestro-flow inline-agent prompt-wiring guide](../../../../uipath-maestro-flow/references/author/plugins/inline-agent/impl.md#wiring-flow-variables-into-agent-prompts).
57
57
  - **Standalone agents** reference declared inputs: `{{input.<field>}}`.
58
58
 
59
59
  Mirror every `{{ ... }}` in `contentTokens[]` per [agent-definition.md § contentTokens Construction](../agent-definition.md#contenttokens-construction).
@@ -86,13 +86,11 @@ find . -name "*.bpmn" -maxdepth 4 | head -3
86
86
 
87
87
  | Found | Surface | How HITL is added |
88
88
  |---|---|---|
89
- | `.flow.ts` or `.flow` file | **Flow** | Author with `hitl(...)` in `<Name>.flow.ts` through the `uipath-maestro-flow` skill ([hitl.md](../uipath-maestro-flow/references/hitl.md)); never write node JSON into the compiled `.flow` — `compile` overwrites it |
89
+ | `.flow` file | **Flow** | Write node JSON directly — see reference docs |
90
90
  | `caseplan.json` (any `*.json` whose `nodes[]` carry `data.parentElement.type: "case-management:root"` — the marker is per-node; there is no `root` node on disk) | **Case** | Write `action` task into stage — see [hitl-casetask-action.md](references/hitl-casetask-action.md) |
91
91
  | `agent.json` | **Low Code Agent** | Escalation CLI in-flight — guide manually for now |
92
92
  | `.bpmn` (Maestro) | **Maestro** | Write the `UserTask` XML directly — see Step 5 Surface: Maestro |
93
93
 
94
- **Flow surface (a `.flow.ts`, a `.flow`, or a new flow) — the default: stop here.** Hand the HITL request to the `uipath-maestro-flow` skill: it authors `hitl(...)` in `<Name>.flow.ts` — decompiling an existing `.flow` first — and compiles ([hitl.md](../uipath-maestro-flow/references/hitl.md)). Never read or hand-edit the compiled `.flow`; the next `compile` overwrites it. Steps 2–6 below cover the Case, Low-Code Agent and Maestro surfaces.
95
-
96
94
  **If the user mentioned a specific file path**, use that directly.
97
95
 
98
96
  **If no `.flow` file exists and surface is Flow**, scaffold solution-first — Flow projects MUST live inside a solution:
@@ -4,8 +4,6 @@ The AppTask variant uses a deployed coded app (Studio Web) as the task form. Nod
4
4
 
5
5
  ---
6
6
 
7
- **Builder-SDK Flow projects (`.flow.ts`) — the default:** author a human task with `hitl({...})` in `<Name>.flow.ts` through the `uipath-maestro-flow` skill — see [hitl.md](../../uipath-maestro-flow/references/hitl.md). `compile` emits the node and overwrites the compiled `.flow`, so never write the JSON below into it by hand; it applies to a JSON-authored `.flow`.
8
-
9
7
  ## App Lookup and Solution Registration
10
8
 
11
9
  Before writing the node JSON, resolve the app and register it with the solution. All API calls use auth from the stored login session (`uip login`).
@@ -6,8 +6,6 @@ Use this path when the user selects **New Coded Action App** in Step 3.
6
6
 
7
7
  ---
8
8
 
9
- **Builder-SDK Flow projects (`.flow.ts`) — the default:** author the action-app task with `hitl({ variant: 'action-app', ... })` in `<Name>.flow.ts` through the `uipath-maestro-flow` skill — see [hitl.md](../../uipath-maestro-flow/references/hitl.md). `compile` emits the node and overwrites the compiled `.flow`, so skip the "write the node into the `.flow`" step below; it applies to a JSON-authored `.flow`.
10
-
11
9
  ## Overview
12
10
 
13
11
  | Step | Action |
@@ -1,6 +1,6 @@
1
1
  # HITL QuickForm Node — Direct JSON Reference
2
2
 
3
- In a builder-SDK (`.flow.ts`) project, author the quick form with `hitl({ variant: 'quick-form', ... })` through the `uipath-maestro-flow` skill — see [hitl.md](../../uipath-maestro-flow/references/hitl.md). `compile` emits the node; never write it into the compiled `.flow`, because the next `compile` overwrites the file. The JSON below describes that compiled node, and is how a JSON-authored `.flow` is built.
3
+ The agent writes the `uipath.human-in-the-loop.quick-form` node directly into the `.flow` file as JSON. **Direct JSON is the default.** A CLI opt-in is available when the user explicitly requests it, or as a fallback if direct JSON writing fails — see [CLI reference: uip maestro flow hitl add](../../uipath-maestro-flow/references/shared/cli-commands.md#uip-maestro-flow-hitl-add).
4
4
 
5
5
  ---
6
6
 
@@ -71,7 +71,7 @@ Also read `workflow.variables.globals`. Each entry has an `id` that maps directl
71
71
 
72
72
  > **`binding` vs `variable` prefix rule:** `binding` (input/inOut fields) uses the full path starting with `vars.` because it references an existing variable path. `variable` (output/inOut fields) uses `vars.<name>` — the `vars.` prefix is required; it declares the global variable name.
73
73
 
74
- For the full variable system in a builder-SDK project, see the expression table in [uipath-maestro-flow SKILL.md § Builder frame](../../uipath-maestro-flow/SKILL.md#builder-frame)
74
+ For the full variable system, see → [How $vars paths are constructed in Flow](../../uipath-maestro-flow/references/shared/variables-and-expressions.md)
75
75
 
76
76
  ---
77
77
 
@@ -0,0 +1,265 @@
1
+ # Skill Maintenance
2
+
3
+ Internal tooling and conventions for maintaining the `uipath-maestro-flow` skill structure. Not loaded by agents during normal use.
4
+
5
+ ## Structure
6
+
7
+ The skill is organized into four peer capabilities:
8
+
9
+ ```text
10
+ SKILL.md ← capability router (universal rules + 4-bucket intent)
11
+ references/
12
+ ├── shared/ ← cross-capability primitives
13
+ │ ├── cli-commands.md ← flat CLI lookup
14
+ │ ├── cli-conventions.md ← --output json, login, FOLDER_KEY, etc.
15
+ │ ├── file-format.md ← .flow JSON schema
16
+ │ ├── variables-and-expressions.md ← =js: Jint expressions
17
+ │ ├── node-output-wiring.md ← canonical $vars wiring rule
18
+ │ ├── action-nodes.md ← action-node boilerplate shared by plugin impl.md's
19
+ │ └── ux-narration-and-todos.md ← progress narration + todo engage rules
20
+ ├── author/
21
+ │ ├── CAPABILITY.md ← capability index
22
+ │ ├── greenfield.md ← create-new-flow journey
23
+ │ ├── brownfield.md ← edit-existing-flow journey
24
+ │ ├── editing-operations.md ← strategy selection
25
+ │ ├── editing-operations-json.md ← Edit / Write recipes (default)
26
+ │ ├── editing-operations-cli.md ← CLI carve-outs
27
+ │ ├── planning-arch.md ← topology/plugin index
28
+ │ ├── planning-impl.md ← registry/binding/wiring
29
+ │ └── plugins/ ← per-node-type planning + impl
30
+ ├── operate/
31
+ │ ├── CAPABILITY.md ← capability index
32
+ │ ├── ship.md ← Studio Web upload + Orchestrator deploy
33
+ │ ├── run.md ← debug + process run + job status/traces
34
+ │ └── manage.md ← instance lifecycle (pause/resume/cancel/retry)
35
+ ├── diagnose/
36
+ │ ├── CAPABILITY.md ← capability index
37
+ │ ├── troubleshooting-guide.md ← diagnostic priority ladder
38
+ │ └── failure-modes.md ← pattern catalog (missing `=js:`, misshapen nodes, etc.)
39
+ └── evaluate/
40
+ ├── CAPABILITY.md ← capability index
41
+ ├── commands-reference.md ← `uip maestro flow eval` surface
42
+ ├── eval-sets-guide.md ← eval set + data point design
43
+ ├── evaluators-guide.md ← evaluator selection and config
44
+ ├── running-guide.md ← Studio Web run start/status/results
45
+ └── upload-safety.md ← never auto-upload to satisfy a prerequisite
46
+ ```
47
+
48
+ **Recursive pattern.** Skill = `SKILL.md` + `references/`. Capability = `CAPABILITY.md` + its sibling docs in the same folder. The same "index next to its references" shape at two scales. Future capabilities (e.g., `governance/`) get the template for free.
49
+
50
+ **Convention:** each capability is a self-contained folder. Every file in `<capability>/` is implicitly that-capability-scoped — path = provenance. The `CAPABILITY.md` index is always at `<capability>/CAPABILITY.md` (uniform shape across all four).
51
+
52
+ ### Capability boundary
53
+
54
+ - **Author** = on disk, locally, **without `uip login`** (`flow init`, `validate`, `format`, registry, JSON edits)
55
+ - **Operate** = touches the cloud, **requires `uip login`** (`solution upload`, `flow debug`, `flow pack`, `process run`, `instance ...`)
56
+ - **Diagnose** = postmortem on a failed run, **requires `uip login`** (`instance incidents`, `instance variables`, `instance asset`, `incident get`, `job traces`)
57
+ - **Evaluate** = evaluations against a flow already in Studio Web; local eval-set/evaluator CRUD needs no login, **`eval run *` requires `uip login`** (`eval set`, `eval evaluator`, `eval run`)
58
+
59
+ Author terminates at `validate` + `format` and hands off to Operate. Operate hands off to Diagnose when a run faults. Diagnose hands off back to Author for the underlying fix. Evaluate attaches to a flow Operate has already uploaded.
60
+
61
+ ### Capability-index template
62
+
63
+ Every `<capability>/CAPABILITY.md` follows the same 6-section structure:
64
+
65
+ 1. `# <Capability> — <one-line purpose>`
66
+ 2. `## When to use this capability`
67
+ 3. `## Critical rules`
68
+ 4. `## Workflow`
69
+ 5. `## Common tasks`
70
+ 6. `## Anti-patterns`
71
+ 7. `## References`
72
+
73
+ ## Markdown anchor slugs (`[link](file.md#section-name)`)
74
+
75
+ Anchor links are computed exactly as GitHub does — getting them wrong silently produces a dead link that markdown lint won't catch.
76
+
77
+ ### Slug rule
78
+
79
+ 1. Lowercase the heading
80
+ 2. Strip these characters entirely: `` ` ``, `*`, `_`, and any non-alphanumeric/non-space/non-dash character
81
+ 3. Replace each remaining space with `-`
82
+ 4. **Separator characters do not collapse** — each space (or em-dash that became a space-pair) becomes its own dash
83
+
84
+ ### Common gotchas
85
+
86
+ | Heading | Wrong slug | Correct slug | Why |
87
+ | --- | --- | --- | --- |
88
+ | `## 5. \`--folder-key\` requirement` | `#5--folder-key-requirement` | `#5---folder-key-requirement` | After `.` strips and backticks strip: `5 --folder-key requirement`. The space between `5` and `--` becomes a dash, joining the two literal dashes from `--folder-key` → 3 dashes |
89
+ | `## Reused reference ID — cross-connection ID leakage` | `#reused-reference-id-cross-connection-id-leakage` | `#reused-reference-id--cross-connection-id-leakage` | The em-dash (`—`) is stripped (non-alphanumeric/space/dash), but the spaces on either side of it survive and both become dashes → 2 dashes |
90
+ | `## \`variables.nodes[]\` missing → \`$vars.X.output\` resolves to undefined` | `#variablesnodes-missing-varsxoutput-resolves-to-undefined` | `#variablesnodes-missing--varsxoutput-resolves-to-undefined` | Backticks, `.`, `[`, `]`, `$` and the `→` all strip (non-alphanumeric/space/dash). The space before and after the arrow both survive → 2 consecutive dashes between `missing` and `varsxoutput` |
91
+
92
+ ### Verifying anchor links
93
+
94
+ Run the anchor-checker script before committing changes that add or edit anchor links:
95
+
96
+ ```bash
97
+ bash .maintenance/check-anchors.sh
98
+ ```
99
+
100
+ Returns `anchors_checked=N anchors_bad=0` on success. Exits non-zero on any bad anchor. Any non-zero `anchors_bad` lists which file → which target slug failed to resolve. An anchor resolves against either a heading slug or an explicit `<a id="...">` / `<a name="...">` tag in the target file — GitHub honors both.
101
+
102
+ ## Verifying file-path links
103
+
104
+ Run the link-checker script to catch broken `[text](path)` links:
105
+
106
+ ```bash
107
+ bash .maintenance/check-links.sh
108
+ ```
109
+
110
+ Returns `checked=N broken=M`. Exits non-zero on any broken link. Both checkers skip links inside fenced code blocks and inline code spans, so example links in this README don't trigger false positives.
111
+
112
+ ## Verifying link text agrees with link URL
113
+
114
+ Run the link-text checker to catch links whose **text looks like a file** but whose **URL points elsewhere**:
115
+
116
+ ```bash
117
+ bash .maintenance/check-link-text.sh
118
+ ```
119
+
120
+ Returns `checked=N broken=M`. Exits non-zero on any mismatch. Three failure modes, all hard failures:
121
+
122
+ - **basename-mismatch** — text basename ≠ URL basename (e.g., text `AUTHOR.md`, URL `../CAPABILITY.md`).
123
+ - **prefix-mismatch** — basenames agree but the directory hint in the text contradicts the URL's directory (e.g., text `operate/manage.md`, URL `references/manage.md`). Tolerated when the text directory is a suffix of the URL directory (e.g., text `author/greenfield.md`, URL `references/author/greenfield.md`).
124
+ - **folder-url-but-text-is-file** — URL ends with `/` but text claims a file.
125
+
126
+ Only links whose text contains a file-like token (extension `.md`, `.sh`, `.json`, `.js`, `.ts`, `.py`, `.cs`, `.xaml`, `.flow`, `.yaml`, `.yml`) are evaluated; descriptive text like `[Edit/Write: Variable Operations](...)` is skipped. Same skip rules as `check-links.sh` (fenced code, inline code, http(s), slash commands, anchor-only).
127
+
128
+ ## Verifying reachability depth
129
+
130
+ Run the depth-checker script to verify every file under `references/` is reachable from `SKILL.md` within the configured max hops (default 2):
131
+
132
+ ```bash
133
+ bash .maintenance/check-depth.sh
134
+ ```
135
+
136
+ Pass a custom max-hops value as the first argument:
137
+
138
+ ```bash
139
+ bash .maintenance/check-depth.sh 3
140
+ ```
141
+
142
+ Returns `total_files=N reachable_within=R unreachable=U exceeds_depth=E`. Folder links count as reachability for every file in the folder (per the agent-navigation convention below). Exits non-zero if any file is unreachable or exceeds the configured depth.
143
+
144
+ ## Verifying capability-index template conformance
145
+
146
+ Run the template-checker script to verify each `CAPABILITY.md` follows the canonical 6-section structure (When to use / Critical rules / Workflow / Common tasks / Anti-patterns / References):
147
+
148
+ ```bash
149
+ bash .maintenance/check-template.sh
150
+ ```
151
+
152
+ Returns `capabilities_checked=N missing_sections=M`. Exits non-zero if any `CAPABILITY.md` is missing a required section. Catches drift if a future edit removes or renames a canonical section.
153
+
154
+ ## Verifying no orphaned files
155
+
156
+ Run the orphan-checker script to find `.md` files under `references/` that no other `.md` file links to:
157
+
158
+ ```bash
159
+ bash .maintenance/check-orphans.sh
160
+ ```
161
+
162
+ Returns `files_checked=N orphans=M`. Exits non-zero if any orphans are found. `CAPABILITY.md` files are excluded (they are entry points linked from SKILL.md and peer indexes; SKILL.md itself is excluded as the root entry point).
163
+
164
+ Orphans typically appear after a refactor that removed inbound links but didn't delete the now-unreferenced file. Folder links count as inbound for every `.md` inside the folder, matching the agent-navigation convention used by `check-depth.sh`.
165
+
166
+ ## Verifying plugin folder pairs
167
+
168
+ Run the plugin-pairs checker to verify every plugin folder has both `planning.md` and `impl.md` (the per-plugin convention):
169
+
170
+ ```bash
171
+ bash .maintenance/check-plugin-pairs.sh
172
+ ```
173
+
174
+ Returns `plugins_checked=N missing_files=M`. Exits non-zero if any plugin folder is missing a required file. Catches half-deleted plugins or new plugin folders that haven't been completed.
175
+
176
+ ## Verifying `uip` command references
177
+
178
+ Run the uip-command checker to verify every `uip ...` invocation resolves to a real command in the installed CLI:
179
+
180
+ ```bash
181
+ bash .maintenance/check-uip-commands.sh
182
+ ```
183
+
184
+ Returns `commands_checked=N unknown=M`. Exits non-zero if any referenced command path is unknown to `uip`. Verification is **help-only** — the checker walks each command path with `uip <prefix> --help`, confirms the requested segment appears in the parent's `Subcommands` list, and never executes the command for real. Help responses are cached per prefix.
185
+
186
+ The checker:
187
+
188
+ - Scans `SKILL.md` and `references/**/*.md`. Skips `.maintenance/` and root-level scratch files (`PLAN.md`, `PR_BODY.md`).
189
+ - Scans both **fenced code blocks** tagged `bash`, `sh`, `shell`, `zsh`, `console`, or unlabelled, **and inline backtick spans** like `` `uip maestro flow init` ``. Inline scanning catches doc-narrative drift that fenced-only scanning misses.
190
+ - Stops the path at the first flag, placeholder (`<...>`), shell metachar, comment (`#`), path-literal, or non-kebab-case token — so positional args like `uip maestro flow registry search outlook` don't get mistreated as subcommands.
191
+ - Treats trailing tokens after a leaf-with-positional-args (e.g. `uip maestro flow registry search <keyword>`) as arguments, not missing subcommands.
192
+ - Falls back gracefully if `uip` is not installed: warns and exits 0. Pass `--strict` to fail in CI.
193
+
194
+ Pass specific files to scan only those (e.g. for pre-commit on staged files):
195
+
196
+ ```bash
197
+ bash .maintenance/check-uip-commands.sh references/shared/cli-commands.md
198
+ ```
199
+
200
+ ### Skipping intentional historical references
201
+
202
+ Some docs reference removed commands on purpose — for example, a CLI version-comparison table that documents a pre-restructure prefix. Add `<!-- uip-check-skip -->` anywhere on the line to suppress checking for that line:
203
+
204
+ ```markdown
205
+ > Replace `uip maestro flow` with `uip flow` if version < 0.3.4. <!-- uip-check-skip -->
206
+ ```
207
+
208
+ For table rows, place the marker **inside a cell** so it doesn't break table structure (HTML comments render as nothing):
209
+
210
+ ```markdown
211
+ | **< 0.3.4** | `uip flow` | `uip flow init MyProject` <!-- uip-check-skip --> |
212
+ ```
213
+
214
+ ## Verifying no hardcoded versions
215
+
216
+ Run the version checker to catch docs that pin a `.flow` version as authoritative instead of deferring to the live CLI:
217
+
218
+ ```bash
219
+ bash .maintenance/check-versions.sh
220
+ ```
221
+
222
+ Returns `lines_checked=N violations=M`. Exits non-zero on any violation. The `.flow` top-level `version` and node `typeVersion` are owned by `uip maestro flow init` / `uip maestro flow registry get`; hardcoding them rots silently when the CLI advances (e.g. `core.action.http.v2` `2.0`→`2.1`, `core.trigger.scheduled` `1.0`→`1.1`, top-level `1.1`→`1.2`). Two violation classes:
223
+
224
+ - **PROSE-PIN** — prose stating a version as current/required: `currently "1.1"`, `the registry currently emits "1.0"`, `must be "2.0"`, or an inline assignment `typeVersion: "2.0"` / `version: "1.1"`. Only fires outside fenced code blocks.
225
+ - **TOPLEVEL** — a hardcoded top-level `.flow` `"version": "x.y"` literal in a JSON example. Identified by sibling `"nodes"`/`"edges"` keys within the same fenced block; `definitions[].version` (has `"nodeType"`), `bindings_v2.json` `version` (has `"resources"`), and eval-file `version` (has `"evaluatorRefs"`/`"evaluations"`) are NOT flagged.
226
+
227
+ Deliberately NOT flagged: `"typeVersion": "x.y"` literals in node JSON examples — legitimate when paired with an adjacent registry-sourcing note, and too many true-illustrative cases to flag without noise.
228
+
229
+ Add `<!-- version-check-skip -->` anywhere on a line to suppress it — for intentional references such as an anti-pattern example (`typeVersion: "1.0.0"` shown as the *wrong* value) or a fixed non-`.flow` schema version (eval-set files). Same marker convention as `check-uip-commands.sh`; for table rows, place it inside a cell.
230
+
231
+ Pass specific files to scan only those:
232
+
233
+ ```bash
234
+ bash .maintenance/check-versions.sh references/shared/file-format.md
235
+ ```
236
+
237
+ ## Running the full suite
238
+
239
+ Run all nine checkers in one invocation:
240
+
241
+ ```bash
242
+ bash .maintenance/check-all.sh
243
+ ```
244
+
245
+ Continues running all checkers even when one fails — the goal is to surface every issue in a single pass. Exits non-zero if any checker fails.
246
+
247
+ ## When to run these checkers
248
+
249
+ - Before committing changes that move files or rewrite link paths — `check-all.sh` covers everything in one pass
250
+ - Before merging a PR that touches `references/`
251
+ - After a refactoring phase
252
+ - After deleting a doc — run `check-orphans.sh` to confirm nothing else became orphaned
253
+ - Before adding a new capability — run `check-template.sh` against the new `CAPABILITY.md`
254
+ - After adding a new plugin — run `check-plugin-pairs.sh` to confirm both `planning.md` and `impl.md` are present
255
+ - After a `uip` CLI version bump — run `check-uip-commands.sh` to catch any commands that were renamed or removed, and `check-versions.sh` to catch docs that pinned a now-stale `.flow`/node version
256
+
257
+ The checkers are not currently wired into CI or pre-commit hooks. They are kept as lightweight tooling in this directory so future maintainers can run them on demand.
258
+
259
+ ## Reachability convention
260
+
261
+ Plugin docs (`references/author/plugins/<name>/{planning,impl}.md`) are linked from `author/CAPABILITY.md` via **folder links** (e.g., `[connector](references/plugins/connector/)`), not individual file links. Agents navigating to the folder discover both `planning.md` and `impl.md` there. This satisfies practical 2-hop reachability from `SKILL.md`.
262
+
263
+ The depth checker (`check-depth.sh`) treats folder links as reachability for every `.md` file inside the folder, matching this agent-navigation model. A strict file-link-only reachability check would flag plugin docs as "unreachable" — that's a false negative.
264
+
265
+ If a future change requires explicit file links (e.g., a task table needs a specific `impl.md` anchor), add the file link inline rather than relying on folder discovery.
@@ -0,0 +1,40 @@
1
+ #!/bin/bash
2
+ # Run the full audit suite for this skill.
3
+ # Usage: bash .maintenance/check-all.sh
4
+ #
5
+ # Runs each checker in turn and prints its summary line.
6
+ # Exits non-zero if any checker fails. Continues running all checkers
7
+ # even when one fails — the goal is to surface every issue in a single pass.
8
+
9
+ ROOT="$(cd "$(dirname "$0")/.." && pwd)"
10
+ cd "$ROOT" || exit 1
11
+
12
+ CHECKERS=(
13
+ "check-links.sh"
14
+ "check-link-text.sh"
15
+ "check-anchors.sh"
16
+ "check-depth.sh"
17
+ "check-template.sh"
18
+ "check-orphans.sh"
19
+ "check-plugin-pairs.sh"
20
+ "check-uip-commands.sh"
21
+ "check-versions.sh"
22
+ )
23
+
24
+ overall=0
25
+
26
+ for checker in "${CHECKERS[@]}"; do
27
+ echo "=== $checker ==="
28
+ if ! /bin/bash ".maintenance/$checker"; then
29
+ overall=1
30
+ fi
31
+ echo ""
32
+ done
33
+
34
+ if [ "$overall" -eq 0 ]; then
35
+ echo "All checks passed."
36
+ else
37
+ echo "One or more checks failed. See output above for details."
38
+ fi
39
+
40
+ exit "$overall"