@uipath/skills 1.201.0-preview.621 → 1.202.0-preview.635

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 (415) 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 +41 -29
  5. package/README.md +1 -0
  6. package/assets/skill-status.json +13 -2
  7. package/assets/uip-catalog-snapshot.json +95 -46
  8. package/package.json +2 -1
  9. package/skills/uipath-admin/SKILL.md +107 -197
  10. package/skills/uipath-admin/references/audit-commands.md +69 -120
  11. package/skills/uipath-admin/references/audit-workflow-guide.md +101 -152
  12. package/skills/uipath-admin/references/authorization/authorization-commands.md +121 -210
  13. package/skills/uipath-admin/references/authorization/check-access.md +39 -63
  14. package/skills/uipath-admin/references/authorization/grant-permissions.md +38 -49
  15. package/skills/uipath-admin/references/authorization/permission-catalog.md +32 -34
  16. package/skills/uipath-admin/references/authorization/role-assignment-management.md +96 -99
  17. package/skills/uipath-admin/references/authorization/role-management.md +113 -142
  18. package/skills/uipath-admin/references/diagnose/CAPABILITY.md +13 -14
  19. package/skills/uipath-admin/references/diagnose/{references/failure-modes.md → failure-modes.md} +90 -46
  20. package/skills/uipath-admin/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +21 -14
  21. package/skills/uipath-admin/references/external-app-management.md +42 -39
  22. package/skills/uipath-admin/references/identity-commands.md +72 -625
  23. package/skills/uipath-admin/references/identity-troubleshoot-guide.md +73 -95
  24. package/skills/uipath-admin/references/ip-restriction/bypass-rule-management.md +25 -54
  25. package/skills/uipath-admin/references/ip-restriction/enforcement-management.md +19 -31
  26. package/skills/uipath-admin/references/ip-restriction/ip-range-management.md +48 -45
  27. package/skills/uipath-admin/references/ip-restriction/ip-restriction-commands.md +89 -146
  28. package/skills/uipath-admin/references/key-concepts.md +24 -0
  29. package/skills/uipath-admin/references/organization-management.md +49 -70
  30. package/skills/uipath-admin/references/organizations-commands.md +39 -74
  31. package/skills/uipath-admin/references/pat-management.md +25 -38
  32. package/skills/uipath-admin/references/robot-account-management.md +16 -14
  33. package/skills/uipath-admin/references/smtp-management.md +19 -14
  34. package/skills/uipath-admin/references/tenant-management.md +1 -1
  35. package/skills/uipath-admin/references/tenants-commands.md +82 -148
  36. package/skills/uipath-admin/references/user-management.md +70 -56
  37. package/skills/uipath-agents/SKILL.md +4 -3
  38. package/skills/uipath-agents/references/authentication.md +4 -3
  39. package/skills/uipath-agents/references/coded/capabilities/datafabric.md +465 -0
  40. package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails-recommend.md +5 -0
  41. package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails.md +2 -0
  42. package/skills/uipath-agents/references/coded/capabilities/human-in-the-loop.md +12 -6
  43. package/skills/uipath-agents/references/coded/flow-integration.md +2 -2
  44. package/skills/uipath-agents/references/coded/frameworks/langgraph-integration.md +48 -16
  45. package/skills/uipath-agents/references/coded/frameworks/openai-agents-integration.md +1 -1
  46. package/skills/uipath-agents/references/coded/lifecycle/deployment.md +11 -1
  47. package/skills/uipath-agents/references/coded/quickstart.md +11 -8
  48. package/skills/uipath-agents/references/lowcode/capabilities/inline-in-flow/inline-in-flow.md +3 -3
  49. package/skills/uipath-agents/references/lowcode/capabilities/memory/memory.md +19 -2
  50. package/skills/uipath-agents/references/lowcode/evaluations/evaluate.md +2 -2
  51. package/skills/uipath-agents/references/lowcode/evaluations/orchestrator-eval-run.md +409 -155
  52. package/skills/uipath-agents/references/lowcode/evaluations/running-evaluations.md +2 -2
  53. package/skills/uipath-agents/references/lowcode/prompting/autonomous-agent-prompting-guide.md +1 -1
  54. package/skills/uipath-aops/SKILL.md +313 -0
  55. package/skills/uipath-aops/assets/templates/pipeline-dto-template.json +15 -0
  56. package/skills/uipath-aops/references/discovery-flow.md +312 -0
  57. package/skills/uipath-aops/references/migration-guide.md +146 -0
  58. package/skills/uipath-aops/references/pipeline-dto-guide.md +276 -0
  59. package/skills/uipath-aops/references/save-and-run-guide.md +156 -0
  60. package/skills/uipath-api-workflow/SKILL.md +48 -6
  61. package/skills/uipath-api-workflow/assets/templates/file-base64-roundtrip-example.json +154 -0
  62. package/skills/uipath-api-workflow/assets/templates/nested-control-flow-example.json +0 -1
  63. package/skills/uipath-api-workflow/references/cli-reference.md +20 -1
  64. package/skills/uipath-api-workflow/references/expressions-and-context.md +19 -0
  65. package/skills/uipath-api-workflow/references/files-and-base64.md +153 -0
  66. package/skills/uipath-api-workflow/references/operating-published-workflows.md +3 -2
  67. package/skills/uipath-api-workflow/references/task-types.md +89 -3
  68. package/skills/uipath-api-workflow/references/testing-and-evals.md +224 -0
  69. package/skills/uipath-api-workflow/references/troubleshooting.md +124 -4
  70. package/skills/uipath-coded-apps/SKILL.md +4 -2
  71. package/skills/uipath-coded-apps/assets/scripts/dashboards/build-dashboard.mjs +1 -1
  72. package/skills/uipath-coded-apps/references/dashboards/CAPABILITY.md +11 -1
  73. package/skills/uipath-coded-apps/references/dashboards/plugins/build/impl.md +5 -3
  74. package/skills/uipath-coded-apps/references/dashboards/plugins/deploy/impl.md +1 -0
  75. package/skills/uipath-coded-apps/references/oauth-client-setup.md +2 -0
  76. package/skills/uipath-coded-apps/references/pack-publish-deploy.md +18 -0
  77. package/skills/uipath-coded-apps/references/sdk/orchestrator.md +4 -0
  78. package/skills/uipath-connector-builder/SKILL.md +7 -5
  79. package/skills/uipath-connector-builder/references/debugging.md +5 -1
  80. package/skills/uipath-connector-builder/references/element-json.md +3 -1
  81. package/skills/uipath-connector-builder/references/standard-resources.md +37 -6
  82. package/skills/uipath-functions/SKILL.md +134 -222
  83. package/skills/uipath-functions/references/js/authoring-guide.md +141 -0
  84. package/skills/uipath-functions/references/js/bindings-guide.md +120 -0
  85. package/skills/uipath-functions/references/js/calling-uipath-apis-guide.md +112 -0
  86. package/skills/uipath-functions/references/js/coded-app-wiring-guide.md +103 -0
  87. package/skills/uipath-functions/references/js/deployment-guide.md +109 -0
  88. package/skills/uipath-functions/references/js/http-semantics-guide.md +80 -0
  89. package/skills/uipath-functions/references/js/job-mode-guide.md +114 -0
  90. package/skills/uipath-functions/references/js/local-dev-guide.md +107 -0
  91. package/skills/uipath-functions/references/python/workflow-guide.md +224 -0
  92. package/skills/uipath-governance/SKILL.md +9 -8
  93. package/skills/uipath-governance/references/compliance-pack/catalog/impl.md +36 -8
  94. package/skills/uipath-governance/references/compliance-pack/coverage/impl.md +14 -12
  95. package/skills/uipath-governance/references/compliance-pack/disable/impl.md +5 -3
  96. package/skills/uipath-governance/references/compliance-pack/full-apply/impl.md +7 -5
  97. package/skills/uipath-governance/references/compliance-pack/partial-apply/impl.md +14 -7
  98. package/skills/uipath-governance/references/compliance-pack/partial-apply/planning.md +3 -1
  99. package/skills/uipath-governance/references/compliance-pack/preview-gate.md +1 -1
  100. package/skills/uipath-governance/references/compliance-pack/query/impl.md +4 -2
  101. package/skills/uipath-governance/references/diagnose/CAPABILITY.md +12 -12
  102. package/skills/uipath-governance/references/diagnose/{references/failure-modes.md → failure-modes.md} +5 -5
  103. package/skills/uipath-governance/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +2 -2
  104. package/skills/uipath-governance/references/disambiguation-guide.md +15 -7
  105. package/skills/uipath-human-in-the-loop/SKILL.md +107 -9
  106. package/skills/uipath-human-in-the-loop/references/hitl-casetask-action.md +413 -0
  107. package/skills/uipath-insights/SKILL.md +21 -14
  108. package/skills/uipath-insights/references/alerts-reads-guide.md +242 -0
  109. package/skills/uipath-insights/references/filter-discovery-guide.md +1 -1
  110. package/skills/uipath-insights/references/jobs-commands-guide.md +2 -2
  111. package/skills/uipath-ixp/references/cli-reference.md +1 -1
  112. package/skills/uipath-ixp/references/improve-prompts-guide.md +5 -6
  113. package/skills/uipath-maestro-bpmn/SKILL.md +87 -15
  114. package/skills/uipath-maestro-bpmn/references/diagnose/CAPABILITY.md +10 -10
  115. package/skills/uipath-maestro-bpmn/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +1 -1
  116. package/skills/uipath-maestro-bpmn/references/expression-authoring.md +12 -2
  117. package/skills/uipath-maestro-bpmn/references/operate/CAPABILITY.md +12 -12
  118. package/skills/uipath-maestro-bpmn/references/operate/{references/run.md → run.md} +2 -2
  119. package/skills/uipath-maestro-bpmn/references/operate/{references/ship.md → ship.md} +3 -3
  120. package/skills/uipath-maestro-bpmn/references/patterns/ai-decision-review-guide.md +138 -0
  121. package/skills/uipath-maestro-bpmn/references/patterns/approval-chain-guide.md +136 -0
  122. package/skills/uipath-maestro-bpmn/references/patterns/composing-guide.md +113 -0
  123. package/skills/uipath-maestro-bpmn/references/patterns/external-wait-guide.md +145 -0
  124. package/skills/uipath-maestro-bpmn/references/patterns/failure-escalation-guide.md +103 -0
  125. package/skills/uipath-maestro-bpmn/references/patterns/high-volume-batch-guide.md +107 -0
  126. package/skills/uipath-maestro-bpmn/references/patterns/queue-distribution-guide.md +129 -0
  127. package/skills/uipath-maestro-bpmn/references/patterns/smart-triage-guide.md +129 -0
  128. package/skills/uipath-maestro-bpmn/references/registry-workflow.md +15 -0
  129. package/skills/uipath-maestro-bpmn/references/shared/local-metadata-regeneration-guide.md +67 -36
  130. package/skills/uipath-maestro-bpmn/references/shared/project-layout.md +6 -5
  131. package/skills/uipath-maestro-bpmn/references/structural-bpmn.md +23 -5
  132. package/skills/uipath-maestro-bpmn/validator/bpmn-spec.json +101 -53
  133. package/skills/uipath-maestro-case/SKILL.md +23 -24
  134. package/skills/uipath-maestro-case/references/bindings-and-expressions.md +30 -17
  135. package/skills/uipath-maestro-case/references/bindings-v2-sync.md +5 -5
  136. package/skills/uipath-maestro-case/references/brownfield.md +3 -3
  137. package/skills/uipath-maestro-case/references/case-commands.md +8 -4
  138. package/skills/uipath-maestro-case/references/case-editing-operations.md +19 -19
  139. package/skills/uipath-maestro-case/references/case-schema.md +17 -3
  140. package/skills/uipath-maestro-case/references/connector-integration.md +25 -16
  141. package/skills/uipath-maestro-case/references/connector-trigger-impl.md +15 -15
  142. package/skills/uipath-maestro-case/references/connector-trigger-planning.md +32 -29
  143. package/skills/uipath-maestro-case/references/entry-points-sync.md +2 -1
  144. package/skills/uipath-maestro-case/references/evals/evals.json +11 -11
  145. package/skills/uipath-maestro-case/references/implementation.md +74 -44
  146. package/skills/uipath-maestro-case/references/phased-execution.md +23 -21
  147. package/skills/uipath-maestro-case/references/placeholder-tasks.md +28 -23
  148. package/skills/uipath-maestro-case/references/planning.md +37 -252
  149. package/skills/uipath-maestro-case/references/plugins/case/impl-json.md +3 -3
  150. package/skills/uipath-maestro-case/references/plugins/case/planning.md +8 -6
  151. package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/impl-json.md +3 -3
  152. package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/planning.md +11 -10
  153. package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/impl-json.md +6 -6
  154. package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/planning.md +12 -12
  155. package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/impl-json.md +4 -4
  156. package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/planning.md +10 -9
  157. package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/impl-json.md +5 -5
  158. package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/planning.md +16 -14
  159. package/skills/uipath-maestro-case/references/plugins/logging/impl-json.md +3 -3
  160. package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +15 -15
  161. package/skills/uipath-maestro-case/references/plugins/sla/planning.md +20 -21
  162. package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +6 -6
  163. package/skills/uipath-maestro-case/references/plugins/stages/planning.md +9 -9
  164. package/skills/uipath-maestro-case/references/plugins/tasks/action/impl-json.md +9 -9
  165. package/skills/uipath-maestro-case/references/plugins/tasks/action/planning.md +38 -38
  166. package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +3 -3
  167. package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +24 -20
  168. package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +3 -3
  169. package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +24 -20
  170. package/skills/uipath-maestro-case/references/plugins/tasks/case-management/impl-json.md +4 -4
  171. package/skills/uipath-maestro-case/references/plugins/tasks/case-management/planning.md +25 -21
  172. package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/impl-json.md +30 -22
  173. package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +44 -28
  174. package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/impl-json.md +10 -10
  175. package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/planning.md +27 -23
  176. package/skills/uipath-maestro-case/references/plugins/tasks/create-inline-common.md +3 -3
  177. package/skills/uipath-maestro-case/references/plugins/tasks/process/impl-json.md +3 -3
  178. package/skills/uipath-maestro-case/references/plugins/tasks/process/planning.md +25 -22
  179. package/skills/uipath-maestro-case/references/plugins/tasks/rpa/impl-json.md +3 -3
  180. package/skills/uipath-maestro-case/references/plugins/tasks/rpa/planning.md +25 -21
  181. package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/impl-json.md +4 -4
  182. package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/planning.md +5 -4
  183. package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +9 -9
  184. package/skills/uipath-maestro-case/references/plugins/triggers/event/planning.md +30 -19
  185. package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +4 -4
  186. package/skills/uipath-maestro-case/references/plugins/triggers/manual/planning.md +8 -7
  187. package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +3 -3
  188. package/skills/uipath-maestro-case/references/plugins/triggers/timer/planning.md +5 -4
  189. package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +5 -5
  190. package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +7 -7
  191. package/skills/uipath-maestro-case/references/plugins/variables/global-vars/planning.md +21 -17
  192. package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +29 -21
  193. package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +23 -21
  194. package/skills/uipath-maestro-case/references/registry-discovery.md +5 -5
  195. package/skills/uipath-maestro-flow/.maintenance/README.md +35 -28
  196. package/skills/uipath-maestro-flow/.maintenance/check-anchors.sh +19 -1
  197. package/skills/uipath-maestro-flow/.maintenance/check-links.sh +3 -0
  198. package/skills/uipath-maestro-flow/.maintenance/check-plugin-pairs.sh +2 -2
  199. package/skills/uipath-maestro-flow/SKILL.md +66 -76
  200. package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +75 -72
  201. package/skills/uipath-maestro-flow/references/author/brownfield.md +90 -0
  202. package/skills/uipath-maestro-flow/references/author/{references/editing-operations-cli.md → editing-operations-cli.md} +9 -4
  203. package/skills/uipath-maestro-flow/references/author/editing-operations-json.md +373 -0
  204. package/skills/uipath-maestro-flow/references/author/editing-operations.md +103 -0
  205. package/skills/uipath-maestro-flow/references/author/{references/greenfield.md → greenfield.md} +32 -20
  206. package/skills/uipath-maestro-flow/references/author/planning-arch.md +342 -0
  207. package/skills/uipath-maestro-flow/references/author/planning-impl.md +283 -0
  208. package/skills/uipath-maestro-flow/references/author/plugins/agent/impl.md +227 -0
  209. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/agent/planning.md +2 -2
  210. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/agentic-process/impl.md +2 -2
  211. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/agentic-process/planning.md +1 -1
  212. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/api-workflow/impl.md +2 -2
  213. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/api-workflow/planning.md +1 -1
  214. package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/impl.md +171 -0
  215. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/batch-transform/planning.md +1 -1
  216. package/skills/uipath-maestro-flow/references/author/plugins/connector/impl.md +449 -0
  217. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/connector/planning.md +3 -3
  218. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/connector-trigger/impl.md +20 -18
  219. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/connector-trigger/planning.md +2 -2
  220. package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/impl.md +427 -0
  221. package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/planning.md +185 -0
  222. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/decision/impl.md +5 -0
  223. package/skills/uipath-maestro-flow/references/author/plugins/delay/impl.md +38 -0
  224. package/skills/uipath-maestro-flow/references/author/plugins/end/impl.md +56 -0
  225. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/flow/impl.md +2 -2
  226. package/skills/uipath-maestro-flow/references/author/plugins/hitl/impl.md +178 -0
  227. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/hitl/planning.md +14 -1
  228. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/http/impl-connector.md +4 -4
  229. package/skills/uipath-maestro-flow/references/author/plugins/http/impl-manual.md +68 -0
  230. package/skills/uipath-maestro-flow/references/author/plugins/http/impl.md +173 -0
  231. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/http/planning.md +3 -3
  232. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-agent/impl.md +6 -6
  233. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-agent/planning.md +1 -1
  234. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-voice-agent/impl.md +4 -4
  235. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-voice-agent/planning.md +1 -1
  236. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/ixp/impl.md +8 -8
  237. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/loop/impl.md +1 -1
  238. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/loop/planning.md +1 -1
  239. package/skills/uipath-maestro-flow/references/author/plugins/merge/impl.md +43 -0
  240. package/skills/uipath-maestro-flow/references/author/plugins/merge/planning.md +24 -0
  241. package/skills/uipath-maestro-flow/references/author/plugins/rpa/impl.md +117 -0
  242. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/rpa/planning.md +1 -1
  243. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/scheduled-trigger/impl.md +6 -8
  244. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/script/impl.md +5 -5
  245. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/script/planning.md +1 -1
  246. package/skills/uipath-maestro-flow/references/author/plugins/subflow/impl.md +164 -0
  247. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/subflow/planning.md +1 -1
  248. package/skills/uipath-maestro-flow/references/author/plugins/summarize/impl.md +189 -0
  249. package/skills/uipath-maestro-flow/references/author/plugins/summarize/planning.md +66 -0
  250. package/skills/uipath-maestro-flow/references/author/plugins/switch/planning.md +34 -0
  251. package/skills/uipath-maestro-flow/references/author/plugins/terminate/impl.md +48 -0
  252. package/skills/uipath-maestro-flow/references/author/plugins/transform/impl.md +241 -0
  253. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/transform/planning.md +1 -1
  254. package/skills/uipath-maestro-flow/references/diagnose/CAPABILITY.md +39 -37
  255. package/skills/uipath-maestro-flow/references/diagnose/{references/failure-modes.md → failure-modes.md} +22 -22
  256. package/skills/uipath-maestro-flow/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +60 -1
  257. package/skills/uipath-maestro-flow/references/evaluate/CAPABILITY.md +27 -25
  258. package/skills/uipath-maestro-flow/references/evaluate/{references/commands-reference.md → commands-reference.md} +58 -7
  259. package/skills/uipath-maestro-flow/references/evaluate/eval-sets-guide.md +227 -0
  260. package/skills/uipath-maestro-flow/references/evaluate/upload-safety.md +94 -0
  261. package/skills/uipath-maestro-flow/references/operate/CAPABILITY.md +21 -21
  262. package/skills/uipath-maestro-flow/references/operate/{references/manage.md → manage.md} +4 -4
  263. package/skills/uipath-maestro-flow/references/operate/run.md +121 -0
  264. package/skills/uipath-maestro-flow/references/operate/{references/ship.md → ship.md} +5 -5
  265. package/skills/uipath-maestro-flow/references/shared/action-nodes.md +30 -22
  266. package/skills/uipath-maestro-flow/references/shared/cli-commands.md +76 -184
  267. package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +49 -60
  268. package/skills/uipath-maestro-flow/references/shared/file-format.md +32 -11
  269. package/skills/uipath-maestro-flow/references/shared/node-output-wiring.md +49 -104
  270. package/skills/uipath-maestro-flow/references/shared/ux-narration-and-todos.md +66 -103
  271. package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +4 -4
  272. package/skills/uipath-planner/SKILL.md +1 -1
  273. package/skills/uipath-planner/assets/templates/case/case-sdd-template.md +5 -3
  274. package/skills/uipath-planner/references/case/case-design-lane-guide.md +1 -1
  275. package/skills/uipath-planner/references/case/case-design-layers-guide.md +2 -2
  276. package/skills/uipath-planner/references/non-pdd-lane-guide.md +2 -1
  277. package/skills/uipath-planner/references/pdd-driven-lane-guide.md +3 -2
  278. package/skills/uipath-planner/references/sdd-generation-guide.md +1 -0
  279. package/skills/uipath-planner/scripts/case/audit_sdd.py +77 -1
  280. package/skills/uipath-platform/SKILL.md +6 -4
  281. package/skills/uipath-platform/references/integration-service/activities.md +7 -4
  282. package/skills/uipath-platform/references/integration-service/reference-resolution.md +28 -0
  283. package/skills/uipath-platform/references/integration-service/resources.md +11 -0
  284. package/skills/uipath-platform/references/integration-service/triggers.md +2 -2
  285. package/skills/uipath-platform/references/licensing/diagnose/CAPABILITY.md +80 -0
  286. package/skills/uipath-platform/references/licensing/diagnose/references/failure-modes.md +147 -0
  287. package/skills/uipath-platform/references/licensing/diagnose/references/troubleshooting-guide.md +125 -0
  288. package/skills/uipath-platform/references/licensing/licensing.md +3 -0
  289. package/skills/uipath-platform/references/licensing/user-licenses-allocations.md +5 -0
  290. package/skills/uipath-platform/references/orchestrator/run-jobs.md +11 -2
  291. package/skills/uipath-platform/references/traces/feedback.md +4 -4
  292. package/skills/uipath-platform/references/traces/traces.md +1 -1
  293. package/skills/uipath-process-mining/SKILL.md +6 -6
  294. package/skills/uipath-process-mining/references/lifecycle-and-rbac.md +10 -8
  295. package/skills/uipath-process-mining/references/model-editing.md +1 -1
  296. package/skills/uipath-process-mining/references/querying.md +4 -3
  297. package/skills/uipath-review/SKILL.md +171 -541
  298. package/skills/uipath-review/references/agents/agents-lowcode-rules.md +73 -92
  299. package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +4 -0
  300. package/skills/uipath-review/references/agents/guardrails/guardrails-review.md +73 -180
  301. package/skills/uipath-review/references/architecture-assessment-guide.md +93 -105
  302. package/skills/uipath-review/references/review-workflow-guide.md +1 -1
  303. package/skills/uipath-review/references/rpa/modern-studio-issues.md +44 -44
  304. package/skills/uipath-review/references/rpa/rpa-common-issues.md +251 -321
  305. package/skills/uipath-review/references/rpa/rpa-review-checklist.md +1 -1
  306. package/skills/uipath-review/references/rule-catalog-workflow.md +25 -45
  307. package/skills/uipath-review/references/rule-format.md +21 -21
  308. package/skills/uipath-rpa/.maintenance/pattern-card-maintenance.md +1 -1
  309. package/skills/uipath-rpa/CLAUDE.md +4 -5
  310. package/skills/uipath-rpa/SKILL.md +40 -246
  311. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/FindText.md +2 -10
  312. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetColorAtPosition.md +2 -10
  313. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetCursorPosition.md +2 -10
  314. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetField.md +13 -13
  315. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetFieldAtPosition.md +2 -10
  316. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetScreenArea.md +27 -8
  317. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetText.md +2 -14
  318. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetTextAtPosition.md +2 -10
  319. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/MoveCursor.md +3 -11
  320. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/MoveCursorToText.md +2 -10
  321. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SendControlKey.md +2 -8
  322. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SendKeys.md +2 -10
  323. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SendKeysSecure.md +2 -10
  324. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SetField.md +14 -13
  325. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SetFieldAtPosition.md +4 -7
  326. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/TerminalSession/_common-options.md +29 -0
  327. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/TerminalSession/authoring-paths.md +58 -0
  328. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/TerminalSession.md +197 -11
  329. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitFieldText.md +2 -10
  330. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitScreenReady.md +9 -10
  331. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitScreenText.md +2 -14
  332. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitTextAtPosition.md +2 -10
  333. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities.json +271 -0
  334. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/coded/coded-api.md +61 -3
  335. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/overview.md +76 -0
  336. package/skills/uipath-rpa/references/cli-reference.md +63 -29
  337. package/skills/uipath-rpa/references/coded/codedworkflow-reference.md +59 -1
  338. package/skills/uipath-rpa/references/coded/operations-guide.md +2 -1
  339. package/skills/uipath-rpa/references/debugging.md +29 -12
  340. package/skills/uipath-rpa/references/environment-setup.md +54 -1
  341. package/skills/uipath-rpa/references/execution-maps-guide.md +10 -9
  342. package/skills/uipath-rpa/references/legacy/activity-docs/_INVOKE-CODE.md +1 -1
  343. package/skills/uipath-rpa/references/uia-starter-guide.md +46 -8
  344. package/skills/uipath-rpa/references/xaml/common-pitfalls.md +3 -4
  345. package/skills/uipath-rpa/references/xaml/csharp-activity-binding-guide.md +7 -8
  346. package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +132 -42
  347. package/skills/uipath-solution/SKILL.md +9 -6
  348. package/skills/uipath-solution/references/activate-and-manage.md +11 -6
  349. package/skills/uipath-solution/references/develop-solution.md +39 -28
  350. package/skills/uipath-solution/references/pack-and-deploy.md +49 -1
  351. package/skills/uipath-solution/references/scenarios/failure-modes.md +1 -1
  352. package/skills/uipath-solution/references/scenarios/intra-solution-references.md +3 -3
  353. package/skills/uipath-solution/references/scenarios/manual-edits.md +1 -1
  354. package/skills/uipath-solution/references/scenarios.md +2 -2
  355. package/skills/uipath-solution/references/solution-overview.md +15 -6
  356. package/skills/uipath-tasks/SKILL.md +11 -6
  357. package/skills/uipath-tasks/references/task-assignment.md +5 -0
  358. package/skills/uipath-tasks/references/task-catalogs.md +7 -4
  359. package/skills/uipath-tasks/references/task-completion.md +3 -1
  360. package/skills/uipath-tasks/references/task-data.md +3 -3
  361. package/skills/uipath-tasks/references/task-lifecycle.md +11 -0
  362. package/skills/uipath-tasks/references/task-metadata.md +4 -3
  363. package/skills/uipath-test/SKILL.md +13 -28
  364. package/skills/uipath-test/references/failure-triage-guide.md +90 -0
  365. package/skills/uipath-test/references/playwright-first-mile-guide.md +2 -2
  366. package/skills/uipath-test/references/publish-and-link-guide.md +0 -1
  367. package/skills/uipath-test/references/test-result-report-guide.md +1 -2
  368. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/interpretations/healing-agent-data.md +1 -1
  369. package/skills/uipath-troubleshoot/references/presenting.md +1 -1
  370. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/folder-not-accessible.md +1 -1
  371. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/generic-error-400.md +4 -4
  372. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/integration-service-400.md +2 -2
  373. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/job-operation-timeout.md +1 -1
  374. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/no-suitable-runtime-machine.md +1 -1
  375. package/version-manifest.json +2 -2
  376. package/skills/uipath-maestro-case/scripts/audit_plan.py +0 -231
  377. package/skills/uipath-maestro-flow/references/author/references/brownfield.md +0 -93
  378. package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +0 -545
  379. package/skills/uipath-maestro-flow/references/author/references/editing-operations.md +0 -131
  380. package/skills/uipath-maestro-flow/references/author/references/planning-arch.md +0 -638
  381. package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +0 -306
  382. package/skills/uipath-maestro-flow/references/author/references/plugins/agent/impl.md +0 -229
  383. package/skills/uipath-maestro-flow/references/author/references/plugins/batch-transform/impl.md +0 -174
  384. package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +0 -741
  385. package/skills/uipath-maestro-flow/references/author/references/plugins/delay/impl.md +0 -75
  386. package/skills/uipath-maestro-flow/references/author/references/plugins/end/impl.md +0 -65
  387. package/skills/uipath-maestro-flow/references/author/references/plugins/hitl/impl.md +0 -204
  388. package/skills/uipath-maestro-flow/references/author/references/plugins/http/impl-manual.md +0 -65
  389. package/skills/uipath-maestro-flow/references/author/references/plugins/http/impl.md +0 -201
  390. package/skills/uipath-maestro-flow/references/author/references/plugins/merge/impl.md +0 -43
  391. package/skills/uipath-maestro-flow/references/author/references/plugins/merge/planning.md +0 -29
  392. package/skills/uipath-maestro-flow/references/author/references/plugins/rpa/impl.md +0 -121
  393. package/skills/uipath-maestro-flow/references/author/references/plugins/subflow/impl.md +0 -230
  394. package/skills/uipath-maestro-flow/references/author/references/plugins/summarize/impl.md +0 -198
  395. package/skills/uipath-maestro-flow/references/author/references/plugins/summarize/planning.md +0 -71
  396. package/skills/uipath-maestro-flow/references/author/references/plugins/switch/planning.md +0 -38
  397. package/skills/uipath-maestro-flow/references/author/references/plugins/terminate/impl.md +0 -48
  398. package/skills/uipath-maestro-flow/references/author/references/plugins/transform/impl.md +0 -287
  399. package/skills/uipath-maestro-flow/references/evaluate/references/eval-sets-guide.md +0 -226
  400. package/skills/uipath-maestro-flow/references/evaluate/references/upload-safety.md +0 -82
  401. package/skills/uipath-maestro-flow/references/operate/references/run.md +0 -99
  402. /package/skills/uipath-maestro-bpmn/references/diagnose/{references/failure-modes.md → failure-modes.md} +0 -0
  403. /package/skills/uipath-maestro-bpmn/references/operate/{references/manage.md → manage.md} +0 -0
  404. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/decision/planning.md +0 -0
  405. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/delay/planning.md +0 -0
  406. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/end/planning.md +0 -0
  407. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/flow/planning.md +0 -0
  408. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/ixp/planning.md +0 -0
  409. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/queue/impl.md +0 -0
  410. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/queue/planning.md +0 -0
  411. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/scheduled-trigger/planning.md +0 -0
  412. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/switch/impl.md +0 -0
  413. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/terminate/planning.md +0 -0
  414. /package/skills/uipath-maestro-flow/references/evaluate/{references/evaluators-guide.md → evaluators-guide.md} +0 -0
  415. /package/skills/uipath-maestro-flow/references/evaluate/{references/running-guide.md → running-guide.md} +0 -0
@@ -1,178 +1,158 @@
1
1
  # Role Management
2
2
 
3
- Multi-step workflows for managing custom role definitions via `uip admin authorization roles`. For per-command flag tables, output codes, and single-command examples, see [authorization-commands.md](authorization-commands.md).
3
+ Use this skill for multi-step workflows managing custom roles with `uip admin authorization roles`. See [authorization-commands.md](authorization-commands.md) for per-command flags, output codes, and single-command examples.
4
4
 
5
- ## Services That Manage Their Own Roles
5
+ ## Services and role ownership
6
6
 
7
- Listing always works; authoring is what's blocked.
7
+ Listing works for all services; authoring does not for service-managed or platform-level roles.
8
8
 
9
- - **Service-managed:** `orchestrator`, `dataservice`, `insights`, `taskmining`, `testmanager`, `automationops`, `casemanagement`, `processmining`. The Authorization service surfaces their roles in `roles list --service <svc>` and their assignments in `roles assignments list --service <svc>`, but `roles create / update / delete` against these services is rejected. Mutate them via the service's own CLI (e.g., `uip or roles create` for Orchestrator).
10
- - **Platform-level:** `authz`, `oms`, `platform`, `identity`, `licensing`. Same shape — listing works, authoring is rejected.
9
+ - **Service-managed:** `orchestrator`, `dataservice`, `insights`, `taskmining`, `testmanager`, `automationops`, `casemanagement`, `processmining`. Run `roles list --service <svc>` and `roles assignments list --service <svc>`; mutate with the service CLI, such as `uip or roles create` for Orchestrator.
10
+ - **Platform-level:** `authz`, `oms`, `platform`, `identity`, `licensing`. Listing works; authoring is rejected.
11
11
 
12
- For *effective* access on a principal (PDP — includes server-side rules not visible via the catalog), use [check-access.md](check-access.md).
12
+ For effective principal access, use PDP via [check-access.md](check-access.md); it includes server-side rules not visible in the catalog.
13
13
 
14
- ## Role Shape (Scope) Modes
14
+ ## Role shape and service resolution
15
15
 
16
16
  `roles create --scope <type>` accepts:
17
17
 
18
- | Mode | When | `--service` semantics | `--tenant-id` semantics |
19
- |------|------|----------------------|--------------------------|
20
- | `Organization` | Role grants org-wide access (typical for `apps`, `studio`, `identity` permissions) | Optional. Used alone, infers `Organization` from the registry. **Omit** for a multi-service org role | Ignored |
21
- | `TenantGlobal` | Reusable template — visible/assignable inside every tenant in the org | Optional. **Omit** for a multi-service template | Ignored |
22
- | `Tenant` | Bound to one specific tenant — only assignable there | Optional. Used alone with a tenant-shape service, infers `Tenant`. **Omit** for a multi-service "Centralized Access" tenant role | Defaults to login tenant; pass explicitly for a non-login tenant |
23
- | `Project` | Project-shape role (Document Understanding, Reinfer) | **Required** | Defaults to login tenant |
18
+ | Mode | Use | `--service` | `--tenant-id` |
19
+ |---|---|---|---|
20
+ | `Organization` | Organization-wide access, typically `apps`, `studio`, or `identity` permissions | Optional; omit for a multi-service org role | Ignored |
21
+ | `TenantGlobal` | Reusable template visible/assignable in every tenant | Optional; omit for a multi-service template | Ignored |
22
+ | `Tenant` | Bound to one tenant and assignable only there | Optional; omit for a multi-service Centralized Access tenant role | Defaults to login tenant; pass explicitly for another tenant |
23
+ | `Project` | Project-shaped role, such as Document Understanding or Reinfer | Required | Defaults to login tenant |
24
24
 
25
- **`Folder` is not a valid `--scope` for `roles create/update`.** Folder-level scoping is expressed on the *assignment* (see [role-assignment-management.md](role-assignment-management.md)).
25
+ `Folder` is invalid for `roles create/update`; express folder scope on the assignment in [role-assignment-management.md](role-assignment-management.md).
26
26
 
27
- > `--service` infers the scope from the service registry when `--scope` is omitted. Example: `roles create --service studio --name "..."` resolves to `Tenant`. Combine `--service` with `--scope` only to override the registry default (e.g., `--service documentunderstanding --scope Project`). **Unsure which `serviceName` to pass, or the CLI rejected the one you tried?** Never guess — the valid values and the command that re-derives them live in [permission-catalog.md — `--service` serviceNames](permission-catalog.md#--service-servicenames-and-how-to-re-derive-them).
27
+ `--service` infers scope from the service registry when `--scope` is omitted. For example, `roles create --service studio --name "..."` resolves to `Tenant`; combine them only to override the registry, such as `--service documentunderstanding --scope Project`. Never guess a `serviceName`; use [permission-catalog.md — `--service` serviceNames](permission-catalog.md#--service-servicenames-and-how-to-re-derive-them) to find valid values and re-derive rejected ones.
28
28
 
29
- ### Centralized Access — the "no --service" tenant role
29
+ When the user says **tenant role**, **create role in Tenant scope**, or **centralized access** without naming a service, use `--scope Tenant` and omit `--service`. This multi-service role can carry any `TENANT`-scope catalog permission. Never pass `--service centralizedaccess`; the CLI rejects it with `'centralizedaccess' is not a valid --service value`. Omit the flag for `roles list`, `roles assignments list`, and `permissions list` too. Apply the same omission rule to multi-service `Organization` and `TenantGlobal` roles. `Project` always requires `--service`.
30
30
 
31
- When the user asks for a **"tenant role"** or **"create role in Tenant scope"** without naming a specific service, the correct shape is `--scope Tenant` **with no `--service` flag**. This is the multi-service "Centralized Access" tenant role and can carry any `TENANT`-scope permission across services in the catalog.
31
+ Resolve intent as follows:
32
32
 
33
- - **CLI rejects `--service centralizedaccess`** with `'centralizedaccess' is not a valid --service value`. The same rejection applies on `roles list`, `roles assignments list`, and `permissions list`. Drop the flag entirely.
34
- - Same rule for `Organization` and `TenantGlobal`: omit `--service` for the multi-service variant; pass it only when the role wraps one specific service's catalog.
35
- - `Project` is the one exception — `--service` is **required**.
36
-
37
- ### Service inference — split
38
-
39
- | User intent | Resolution |
40
- |-------------|------------|
41
- | Names a service, or asks for a permission only one service registers (e.g., "DU documents delete") | Pass `--service <svc>`. The registry infers `--scope` unless overridden. |
42
- | Says "tenant role" / "tenant scope" / "centralized access" with no service named | **Omit `--service`.** Pass `--scope Tenant` (or `Organization` / `TenantGlobal`) alone. |
43
- | Project-shape service (Document Understanding, Reinfer) | `--scope Project` + `--service <svc>` (required). |
33
+ | Intent | Resolution |
34
+ |---|---|
35
+ | Names a service or permission registered by one service | Pass `--service <svc>`; let the registry infer scope unless overriding it |
36
+ | Says tenant role, tenant scope, or centralized access without a service | Omit `--service`; pass `--scope Tenant` (or `Organization` / `TenantGlobal`) |
37
+ | Names a project-shape service | Pass `--scope Project` and `--service <svc>` |
44
38
 
45
- > **Always highlight the resolved service when summarizing a `roles create` call.** Quote the exact `--service <name>` you used, or state "no `--service` — multi-service tenant role" when it was omitted. Never silently swap services or scopes.
39
+ After `roles create`, highlight the exact service: quote `--service <name>`, or state `no --service — multi-service tenant role` when omitted. Never silently substitute a service or scope.
46
40
 
47
- ## Workflow: Grant Permission(s) to a Principal (shortcut)
41
+ ## Workflow: Grant Permission(s) to a Principal (Shortcut)
48
42
 
49
- When the user names *permissions* without naming a role or scope (*"grant me X"*, *"give alice Y, Z"*), use [grant-permissions.md](grant-permissions.md) — a multi-step intersection-and-menu flow that picks the right role shape across the service catalog and umbrella scopes. This page covers the **role-first** entry path: user names a role shape, then we author the role and assignments.
43
+ If the user names permissions but not a role or scope, such as “grant me X” or “give alice Y, Z,” use [grant-permissions.md](grant-permissions.md). It selects the role shape through intersection and menu steps. This document covers the role-first path: choose the shape, author it, then create assignments.
50
44
 
51
45
  ## Workflow: Create a Custom Role
52
46
 
53
- This is an interactive flow. Do NOT prompt the user with empty `<ROLE_NAME>` / `<PERMISSION_NAMES>` placeholders. Propose a name and a numbered permission menu, then confirm.
47
+ This workflow is interactive. Do not ask for empty `<ROLE_NAME>` or `<PERMISSION_NAMES>` placeholders. Propose a name, show a numbered permission menu, and confirm.
54
48
 
55
- ### Step 1 — Gather intent and pick a scope mode
49
+ ### Step 1 — Gather intent and choose scope
56
50
 
57
- Ask the user (free-form) what the role is for: target service(s) and the kind of access (read-only, operator, admin, etc.).
51
+ Ask what the role is for, including target service(s) and access type such as read-only, operator, or admin.
58
52
 
59
- #### Step 1a — Service-bound role (the common case)
53
+ #### Step 1a — Service-bound role
60
54
 
61
- If the role wraps **one** service's permissions, do not ask the user about org vs tenant scope. Probe the catalog:
55
+ For one service, do not ask about organization versus tenant scope. Run:
62
56
 
63
57
  ```bash
64
58
  uip admin authorization permissions list --service <SERVICE> --output json
65
59
  ```
66
60
 
67
- `<SERVICE>` must be a real `serviceName` — look it up in [permission-catalog.md — `--service` serviceNames](permission-catalog.md#--service-servicenames-and-how-to-re-derive-them) rather than guessing from the service's display name.
61
+ `<SERVICE>` must be a real `serviceName`; look it up in [permission-catalog.md — `--service` serviceNames](permission-catalog.md#--service-servicenames-and-how-to-re-derive-them). Use each record’s `scopeType`:
68
62
 
69
- The catalog response includes `scopeType` per record. Use it to pick the mode for Step 4:
63
+ | Records' `scopeType` | Shape | Next action |
64
+ |---|---|---|
65
+ | All `ORGANIZATION` | Org-level service | `Organization` |
66
+ | All `TENANT` | Tenant-level service | `Tenant`, then ask current-tenant binding versus `TenantGlobal` |
67
+ | All `PROJECT` | Project-shape service | `Project`, with `--service` |
68
+ | Mixed | Multi-scope service | Ask the target scope and show only that scope’s permissions |
70
69
 
71
- | Records' `scopeType` | Service shape | Use this for the rest of the flow |
72
- |----------------------|---------------|-----------------------------------|
73
- | All `ORGANIZATION` (e.g., `apps`, `studio`, `identity`) | Org-level service | **Organization** mode |
74
- | All `TENANT` (e.g., `documentunderstanding`, most Orchestrator-adjacent) | Tenant-level service | **Tenant** mode — then ask: bound to current tenant vs `TenantGlobal` template |
75
- | All `PROJECT` | Project-shape service | **Project** mode (requires `--service`) |
76
- | Mixed | Multi-scope service | Ask the user which scope to target; only show permissions for the chosen scope |
70
+ If the user explicitly says Tenant scope, tenant role, or centralized access—even for a `PROJECT` permission—use the no-`--service` Tenant path in Step 1d. Do not substitute another permission; explain the mismatch and let the user choose. Catalog `scopeType` values are uppercase (`ORGANIZATION`, `TENANT`, `PROJECT`, `ANY`); CLI values are PascalCase: `ORGANIZATION` → `--scope Organization`, `TENANT` → `--scope Tenant` or `TenantGlobal`, and `PROJECT` → `--scope Project`.
77
71
 
78
- > **Override:** if the user explicitly says "Tenant scope" / "tenant role" / "centralized access" — even when the permission's catalog `scopeType` is `PROJECT` — switch to the **no-`--service`** Tenant path (Step 1d). Do not silently substitute a different permission to satisfy a service-bound shape. Surface the mismatch and let the user choose.
72
+ #### Step 1b — Hoist overlapping permissions to the umbrella
79
73
 
80
- > **Casing quirk** — the *response field* `scopeType` returns ALL CAPS (`ORGANIZATION`, `TENANT`, `PROJECT`, `ANY`). The matching `--scope` *flag value* uses PascalCase (`Organization`, `Tenant`, `Project`, `TenantGlobal`). Map response → flag when constructing the create call: `ORGANIZATION` → `--scope Organization`, `TENANT` → `--scope Tenant` (or `TenantGlobal`), `PROJECT` → `--scope Project`.
74
+ Unless the candidate is `Project`, run this service-versus-umbrella check between Steps 1a and 1c:
81
75
 
82
- #### Step 1b — Hoist check: prefer the umbrella when permissions overlap
76
+ ```bash
77
+ # Tenant-service candidate (Step 1a returned `TENANT` scopeType)
78
+ uip admin authorization permissions list --scope Tenant --output json > umbrella.json
83
79
 
84
- > **Sibling workflow.** This is the binary (service vs. umbrella) form of the same scope-selection problem the [Grant Permission(s) shortcut](grant-permissions.md) solves with a full N-scope intersection (Steps G2-G3). Use Step 1b when the user named the role shape first; use the Grant shortcut when the user named permissions only. Keep them in sync if either changes.
80
+ # Org-service candidate (Step 1a returned `ORGANIZATION` scopeType)
81
+ uip admin authorization permissions list --scope Organization --output json > umbrella.json
82
+ ```
85
83
 
86
- **Run this between Step 1a and Step 1c** unless the candidate shape is `Project` (which has no umbrella). When the permissions a user wants are available at **both** the service-bound catalog AND the umbrella scope (`Tenant` / `TenantGlobal` for tenant-services, `Organization` for org-services), the umbrella role is the better default — it can carry permissions from any other service in the same scope, so it's reusable beyond the single service the user originally named.
84
+ Compare candidate permission `name` values with umbrella `name` values:
87
85
 
88
- 1. Probe the umbrella catalog at the umbrella scope (no `--service`):
89
- ```bash
90
- # Tenant-service candidate (Step 1a returned `TENANT` scopeType)
91
- uip admin authorization permissions list --scope Tenant --output json > umbrella.json
86
+ - **No overlap:** keep the service-bound shape; continue to Step 1c for Tenant-shape, otherwise Step 2.
87
+ - **Full overlap:** show the applicable menu and recommend the umbrella.
88
+ - **Partial overlap:** show the split and stop; do not drop service-only permissions or silently add umbrella-only permissions.
92
89
 
93
- # Org-service candidate (Step 1a returned `ORGANIZATION` scopeType)
94
- uip admin authorization permissions list --scope Organization --output json > umbrella.json
95
- ```
96
- 2. Compare the candidate's permission `name` values (from `permissions list --service <SERVICE>` in Step 1a) against the umbrella's `name` values:
97
- - **No overlap** — candidate permissions live only in the service catalog. Lock in the service-bound shape (`--service <SERVICE>`); go to Step 1c if the candidate is Tenant-shape, else Step 2.
98
- - **Full overlap** — every candidate permission also exists in the umbrella. Surface the menu below and let the user pick.
99
- - **Partial overlap** — some candidate permissions appear in the umbrella, others don't. Stop and show the user the split; do not silently drop the service-only permissions to fit the umbrella, and do not silently expand into umbrella-only permissions.
90
+ For full overlap, render a numbered Markdown menu:
100
91
 
101
- 3. On full overlap, render a numbered next-step menu and **recommend the umbrella** (numbered Markdown list so the user replies with a digit):
92
+ **Tenant-service candidate:**
102
93
 
103
- **Tenant-service candidate** (umbrella is Tenant):
104
- ```
105
- The permissions you picked are available at both the service level AND the umbrella Tenant scope. The umbrella role can carry permissions from any tenant-service, so it's more reusable. Pick:
94
+ 1. **Tenant level (Recommended)** — multi-service role bound to one tenant and reusable across tenant services.
95
+ 2. Service level — bound to `<SERVICE>` for strict isolation.
96
+ 3. Tenant Global scope — multi-service template visible in every tenant.
106
97
 
107
- 1. **Tenant level** (Recommended) — multi-service role bound to one tenant. Reusable across every tenant-service in this tenant.
108
- 2. Service level — bound to <SERVICE> only. Use when you want strict service isolation.
109
- 3. Tenant Global scope — multi-service template visible in every tenant of the org.
98
+ Ask: `Reply with 1, 2, or 3.`
110
99
 
111
- Reply with 1, 2, or 3.
112
- ```
100
+ **Org-service candidate:**
113
101
 
114
- **Org-service candidate** (umbrella is Organization):
115
- ```
116
- The permissions you picked are available at both the service level AND the umbrella Organization scope. The umbrella role can carry permissions from any org-service, so it's more reusable. Pick:
102
+ 1. **Org level (Recommended)** — multi-service organization role.
103
+ 2. Service level — bound to `<SERVICE>` for strict isolation.
117
104
 
118
- 1. **Org level** (Recommended) — multi-service role at organization scope. Reusable across every org-service.
119
- 2. Service level — bound to <SERVICE> only. Use when you want strict service isolation.
105
+ Ask: `Reply with 1 or 2.`
120
106
 
121
- Reply with 1 or 2.
122
- ```
123
-
124
- 4. Map the user's pick to the create-call shape:
125
-
126
- | Pick | Create-call shape | Continue at |
127
- |------|--------------------|--------------|
128
- | Tenant level | `--scope Tenant` **without** `--service` (`--tenant-id` defaults to login) | Step 2 — Tenant binding is already decided, skip Step 1c |
129
- | Org level | `--scope Organization` **without** `--service` | Step 2 |
130
- | Service level | `--service <SERVICE>` (registry infers `--scope`) | Step 1c if Tenant-shape; else Step 2 |
131
- | Tenant Global scope | `--scope TenantGlobal` **without** `--service` | Step 2 |
107
+ | Pick | Create-call shape | Continue at |
108
+ |---|---|---|
109
+ | Tenant level | `--scope Tenant` without `--service`; `--tenant-id` defaults to login | Step 2; binding already chosen |
110
+ | Org level | `--scope Organization` without `--service` | Step 2 |
111
+ | Service level | `--service <SERVICE>`; registry infers scope | Step 1c if Tenant-shape, otherwise Step 2 |
112
+ | Tenant Global scope | `--scope TenantGlobal` without `--service` | Step 2 |
132
113
 
133
- > **Project-scope permissions have no umbrella.** `--scope Project` requires `--service` (see the "Centralized Access — the no --service tenant role" section above). Skip Step 1b entirely when Step 1a's `scopeType` is `PROJECT`.
114
+ Project permissions have no umbrella; skip Step 1b and use `--scope Project` with required `--service`.
134
115
 
135
- #### Step 1c — Tenant-bound vs TenantGlobal
116
+ #### Step 1c — Tenant versus TenantGlobal
136
117
 
137
- When Step 1a (or Step 1b's "Service level" pick on a Tenant-shape service) lands on Tenant-shape permissions, follow up: should the role be **bound to a single tenant** (`--scope Tenant --tenant-id <UUID>`) or **available across every tenant** (`--scope TenantGlobal`)?
118
+ For Tenant-shape permissions that remain service-bound, ask whether the role is:
138
119
 
139
- > Step 1b's "Tenant level" and "Tenant Global scope" picks **bypass** this step — they have already chosen the binding.
120
+ - **Tenant:** bound to one tenant UUID with `--scope Tenant --tenant-id <UUID>` and assignable only there.
121
+ - **TenantGlobal:** reusable across every tenant with `--scope TenantGlobal`.
140
122
 
141
- - **Tenant** = bound to one tenant UUID. Assignable only inside that tenant.
142
- - **TenantGlobal** = reusable template. Visible/assignable in every tenant.
123
+ The Step 1b Tenant level and Tenant Global choices already decide this. Resolve the current tenant UUID by running `uip login status --output json` for the tenant name, then running `uip admin tenants list --filter <name> --output json` to map it to a UUID.
143
124
 
144
- > Resolving the current tenant UUID: `uip login status --output json` gives the tenant *name*; map it to a UUID with `uip admin tenants list --filter <name> --output json`.
125
+ #### Step 1d — Multi-service tenant role
145
126
 
146
- #### Step 1d — Multi-service tenant role ("Centralized Access")
147
-
148
- If the user said **"tenant role"** / **"tenant scope"** / **"centralized access"** without naming a service — or pivoted into Tenant scope from a service-bound flow — drop `--service` entirely and probe the multi-service catalog:
127
+ If the user said tenant role, tenant scope, or centralized access without naming a service—or pivots to Tenant scope—omit `--service` and run:
149
128
 
150
129
  ```bash
151
130
  uip admin authorization permissions list --scope Tenant --output json
152
131
  ```
153
132
 
154
- This is the umbrella the UI calls *Centralized Access*. The resulting role can carry any `TENANT`-scope permission across services (Document Understanding `PROJECTS.*`, Licensing, IXP, Authz, etc.). Render the menu in Step 3 from this catalog.
133
+ This is the UI’s Centralized Access catalog and can include any `TENANT`-scope permission across services, including Document Understanding `PROJECTS.*`, Licensing, IXP, and Authz. Render the Step 3 menu from this catalog.
134
+
135
+ If a named permission is `PROJECT`-only, explain that it cannot be placed in a Tenant role and offer:
155
136
 
156
- > If the user previously named a single permission that is `PROJECT`-scope only (e.g., `DOCUMENTUNDERSTANDING.DOCUMENTS.DELETE`) and then asks for "Tenant scope", state the mismatch — the permission cannot live on a Tenant-scope role — and offer:
157
- > 1. Closest TENANT-scope analog (e.g., `DOCUMENTUNDERSTANDING.PROJECTS.DELETE`)
158
- > 2. Keep the existing Project-scope role
159
- > 3. A different permission set
160
- >
161
- > Never silently downshift to a similar-looking permission.
137
+ 1. The closest `TENANT`-scope analog.
138
+ 2. Keep the existing Project-scope role.
139
+ 3. A different permission set.
140
+
141
+ Never silently downshift to a similar-looking permission.
162
142
 
163
143
  ### Step 2 — Suggest a role name
164
144
 
165
- Propose **one** name derived from the intent. Pattern: `<Service><Scope>-<Capability>` in PascalCase or kebab-case, e.g. `OrchestratorTenant-ReadOnly`, `IdentityOrg-GroupAdmin`. Check for collisions before presenting:
145
+ Propose one intent-derived name using `<Service><Scope>-<Capability>` in PascalCase or kebab-case, such as `OrchestratorTenant-ReadOnly` or `IdentityOrg-GroupAdmin`. Check collisions by running:
166
146
 
167
147
  ```bash
168
148
  uip admin authorization roles list --role-type Custom --filter "<SUGGESTED_NAME>" --output json
169
149
  ```
170
150
 
171
- If the filter returns a match, append a numeric suffix (`-2`, `-3`) and re-check until unique. Present the final suggestion to the user and let them accept or override with a single reply.
151
+ If matched, append `-2`, `-3`, and so on, rechecking until unique. Present the final name and let the user accept or override it in one reply.
172
152
 
173
- ### Step 3 — Present permissions as a numbered menu
153
+ ### Step 3 — Present a numbered permission menu
174
154
 
175
- Pull the catalog for each service named in Step 1, using the `--scope` from Step 1's mode:
155
+ Run the catalog query for each service and selected scope:
176
156
 
177
157
  ```bash
178
158
  # Organization mode
@@ -185,24 +165,16 @@ uip admin authorization permissions list --service <SERVICE> --scope Tenant --ou
185
165
  uip admin authorization permissions list --service <SERVICE> --scope Project --output json
186
166
  ```
187
167
 
188
- Render **one Markdown table grouped by `serviceDisplayName`**, with a global running number so the user can reply with digits (`"1, 4, 7-9"`). Columns:
168
+ For multi-service roles, omit `--service` as required above. Render one Markdown table grouped by `serviceDisplayName`, with one global running number so the user can reply with `1, 4, 7-9`:
189
169
 
190
170
  | # | Service | Permission | Scope | Description |
191
171
  |---|---------|------------|-------|-------------|
192
172
 
193
- - `#` — global 1-based index across all rows.
194
- - `Service` — `serviceDisplayName`. Repeat the value only on the first row of each group; leave blank on continuation rows so groups are visually distinct.
195
- - `Permission` — the `name` field (e.g., `IDENTITY.GROUP.UPDATE`). **This is the string that goes into `actions.json`.**
196
- - `Scope` — `scopeType` from the record.
197
- - `Description` — the record's `description` field verbatim. If missing, fall back to `<resourceAction> <resourceType>`.
198
-
199
- Sort rows by `serviceDisplayName`, then `resourceType`, then `resourceAction`. Keep the table to one screen where possible — if a single service exceeds ~30 entries, ask the user which `resourceType`(s) to narrow to before rendering.
173
+ Use 1-based global indexes. Show `serviceDisplayName` only on the first row of each group. Use the permission `name` (the value placed in `actions.json`), record `scopeType`, and `description` verbatim; if description is missing, use `<resourceAction> <resourceType>`. Sort by `serviceDisplayName`, then `resourceType`, then `resourceAction`. If one service exceeds ~30 entries, ask which `resourceType`(s) to narrow before rendering. Ask: `Reply with the numbers to include (e.g. 1, 3, 5-7).` Map selections internally to permission `name` strings, never UUIDs.
200
174
 
201
- After the table, prompt: *"Reply with the numbers to include (e.g. `1, 3, 5-7`)."* Map the selection back to permission **`name` strings** internally — never ask the user to copy UUIDs.
175
+ ### Step 4 — Author `actions.json`
202
176
 
203
- ### Step 4 — Author the actions file (`actions.json`)
204
-
205
- The `--file` for `roles create` is a **flat JSON array of permission `name` strings** — not a full role body. The CLI assembles the role envelope from `--name` / `--description` / `--service` / `--scope` / `--tenant-id`; you only supply the action set.
177
+ `--file` takes a flat JSON array of permission `name` strings, not a role body. The CLI builds the envelope from `--name`, `--description`, `--service`, `--scope`, and `--tenant-id`:
206
178
 
207
179
  ```json
208
180
  ["STUDIO.X.Y", "STUDIO.A.B", "IDENTITY.GROUP.READ"]
@@ -210,43 +182,43 @@ The `--file` for `roles create` is a **flat JSON array of permission `name` stri
210
182
 
211
183
  ### Step 5 — Create and verify
212
184
 
213
- Pick the inline shape that matches Step 1's mode:
185
+ Run the shape-matching command:
214
186
 
215
187
  ```bash
216
- # Multi-service tenant role ("Centralized Access") — NO --service
188
+ # Multi-service tenant role (Centralized Access): NO --service
217
189
  uip admin authorization roles create \
218
190
  --scope Tenant \
219
191
  --tenant-id <TENANT_ID> \
220
192
  --name "<CONFIRMED_NAME>" \
221
193
  --file ./actions.json --output json
222
194
 
223
- # Service-bound tenant role — scope inferred from the service registry
195
+ # Service-bound tenant role: scope inferred from registry
224
196
  uip admin authorization roles create \
225
197
  --service documentunderstanding \
226
198
  --tenant-id <TENANT_ID> \
227
199
  --name "<CONFIRMED_NAME>" \
228
200
  --file ./actions.json --output json
229
201
 
230
- # Organization — multi-service org role (no --service)
202
+ # Organization: multi-service org role
231
203
  uip admin authorization roles create \
232
204
  --scope Organization \
233
205
  --name "<CONFIRMED_NAME>" \
234
206
  --description "<DESCRIPTION>" \
235
207
  --file ./actions.json --output json
236
208
 
237
- # TenantGlobal — reusable template across every tenant (no --service)
209
+ # TenantGlobal: reusable template
238
210
  uip admin authorization roles create \
239
211
  --scope TenantGlobal \
240
212
  --name "<CONFIRMED_NAME>" \
241
213
  --file ./actions.json --output json
242
214
 
243
- # Service-inferred — let the registry pick scope (studio → Tenant)
215
+ # Service-inferred: studio → Tenant
244
216
  uip admin authorization roles create \
245
217
  --service studio \
246
218
  --name "<CONFIRMED_NAME>" \
247
219
  --file ./actions.json --output json
248
220
 
249
- # Project — service required
221
+ # Project: service required
250
222
  uip admin authorization roles create \
251
223
  --scope Project \
252
224
  --service documentunderstanding \
@@ -254,42 +226,41 @@ uip admin authorization roles create \
254
226
  --file ./actions.json --output json
255
227
  ```
256
228
 
257
- > **Never pass `--service centralizedaccess`** — the CLI rejects it (`'centralizedaccess' is not a valid --service value`). For the Centralized Access umbrella, omit `--service`.
229
+ Never pass `--service centralizedaccess`; omit `--service` for Centralized Access.
258
230
 
259
- Verify:
231
+ Verify by running:
260
232
 
261
233
  ```bash
262
234
  uip admin authorization roles get <NEW_ROLE_ID> --output json
263
235
  ```
264
236
 
265
- The endpoint is a PUT-style upsert. The CLI carries the role identity in the positional `<ID>` (on update) or generates one (on create); you never put `id` in the actions file.
237
+ The endpoint is a PUT-style upsert. The positional `<ID>` carries identity on update; create generates it. Never put `id` in `actions.json`.
266
238
 
267
- ### Step 6 — Summarize: highlight the resolved service
239
+ ### Step 6 — Summarize the resolved service
268
240
 
269
- After `roles create` succeeds, your reply to the user MUST quote the resolved service explicitly so the role's shape is unambiguous. Run a `roles get <NEW_ROLE_ID>` and read `ownerServiceName` directly from the response — that is the canonical service binding the platform will use to validate future assignments. Include a row for `Service` in the summary table:
241
+ After success, run `roles get <NEW_ROLE_ID>` and read canonical `ownerServiceName`. The response summary must include:
270
242
 
271
243
  | Source | Render as |
272
244
  |---|---|
273
- | `ownerServiceName` from `roles get` | `service: <ownerServiceName>` (e.g., `service: DocumentUnderstanding`) |
274
- | `ownerServiceName == "CentralizedAccess"` | `service: CentralizedAccess — multi-service <scope> role` (any assignment scope-path must omit the service segment) |
275
-
276
- This field is what [role-assignment-management.md — Validate Role's Owning Service vs. Assignment Scope-Path](role-assignment-management.md#validate-roles-owning-service-vs-assignment-scope-path) checks against on every `assignments create`. Surface it early to avoid surprises later.
245
+ | `ownerServiceName` | `service: <ownerServiceName>` |
246
+ | `ownerServiceName == "CentralizedAccess"` | `service: CentralizedAccess — multi-service <scope> role` |
277
247
 
278
- Same applies on `roles update`.
248
+ For Centralized Access, any assignment scope-path must omit the service segment. This value is validated by [role-assignment-management.md — Validate Role's Owning Service vs. Assignment Scope-Path](role-assignment-management.md#validate-role-service-binding-and-scope-path). Apply the same requirement to `roles update`.
279
249
 
280
250
  ## Workflow: Update a Custom Role
281
251
 
282
- The endpoint is the same upsert. The CLI assembles the body from the positional `<ID>` + inline flags + `--file` actions array. Re-fetch before editing — otherwise inline flags overwrite fields you didn't intend to change.
252
+ The endpoint is the same upsert. The CLI builds the body from positional `<ID>`, inline flags, and the `--file` actions array. Re-fetch before editing because inline flags overwrite fields that are not supplied.
283
253
 
284
- 1. Fetch the current role to see `name`, `description`, `scopeType`, `tenantId`, and the current actions:
254
+ 1. Run:
285
255
  ```bash
286
256
  uip admin authorization roles get <ROLE_ID> --output json
287
257
  ```
288
- 2. Decide what to change. If you're only changing the action set, regenerate `actions.json` from a fresh `permissions list` query (Step 3 above) and skip the metadata flags:
258
+ Inspect `name`, `description`, `scopeType`, `tenantId`, and current actions.
259
+ 2. For action-only changes, regenerate `actions.json` from a fresh `permissions list` query as in Step 3 and run:
289
260
  ```bash
290
261
  uip admin authorization roles update <ROLE_ID> --file ./actions.json --output json
291
262
  ```
292
- 3. If you're changing metadata too, **pass the metadata flags you want to keep along with the ones you're changing** — the CLI does not merge the current role's fields back in automatically:
263
+ 3. For metadata changes, pass every metadata field to retain as well as changed fields; the CLI does not merge omitted values:
293
264
  ```bash
294
265
  uip admin authorization roles update <ROLE_ID> \
295
266
  --scope Tenant \
@@ -301,10 +272,10 @@ The endpoint is the same upsert. The CLI assembles the body from the positional
301
272
 
302
273
  ## Workflow: Delete a Custom Role
303
274
 
304
- 1. Confirm the role is custom:
275
+ 1. Run:
305
276
  ```bash
306
277
  uip admin authorization roles get <ROLE_ID> --output json
307
278
  ```
308
- Verify `type` is `Custom`. The CLI also pre-fetches and refuses service-managed / platform-owned roles with a redirect.
309
- 2. Confirm with user.
279
+ Verify `type` is `Custom`. The CLI also pre-fetches and refuses service-managed or platform-owned roles with a redirect.
280
+ 2. Confirm deletion with the user.
310
281
  3. Run `roles delete <ROLE_ID>`.
@@ -15,8 +15,7 @@ Capability index for diagnosing identity/auth failures, permission denials, IP r
15
15
  - Triage robot account authentication confusion (identity vs credential model).
16
16
  - Investigate PAT rejection (expired, revoked, insufficient scopes).
17
17
  - Diagnose SMTP email delivery failures (invitations not sending).
18
- - Investigate HTTP 403 / permission denied errors (missing role, wrong scope).
19
- - Triage role assignments not taking effect (ownerServiceName/scope-path mismatch).
18
+ - Investigate HTTP 403 / permission denied — one scenario covering a missing permission, a role assignment that isn't taking effect, and cross-service role confusion.
20
19
  - Diagnose IP restriction lockout or unexpected enforcement behavior.
21
20
  - Investigate stuck or failed tenant lifecycle operations.
22
21
  - Identify service provisioning no-ops (platform-pinned services).
@@ -34,21 +33,21 @@ Capability index for diagnosing identity/auth failures, permission denials, IP r
34
33
 
35
34
  | Journey | Read |
36
35
  |---------|------|
37
- | Triage an identity/auth failure (sequential ladder) | [references/troubleshooting-guide.md](references/troubleshooting-guide.md) |
38
- | Recognize a known failure pattern (lookup) | [references/failure-modes.md](references/failure-modes.md) |
36
+ | Triage an identity/auth failure (sequential ladder) | [references/troubleshooting-guide.md](troubleshooting-guide.md) |
37
+ | Recognize a known failure pattern (lookup) | [references/failure-modes.md](failure-modes.md) |
39
38
 
40
39
  ## Common tasks
41
40
 
42
41
  | I need to... | Read |
43
42
  |---|---|
44
- | Investigate why a user can't log in | [troubleshooting guide → Step 1](references/troubleshooting-guide.md#step-1-identify-the-failure-domain) |
45
- | Diagnose HTTP 403 / permission denied | [troubleshooting guide → Step 3](references/troubleshooting-guide.md#step-3-check-effective-access) |
46
- | Check why a role assignment isn't working | [failure modes → Role assignment not taking effect](references/failure-modes.md#role-assignment-not-taking-effect) |
47
- | Diagnose an external app OAuth2 failure | [failure modes → External app OAuth2 failing](references/failure-modes.md#external-app-oauth2-flow-failing) |
48
- | Investigate PAT rejection | [failure modes → PAT rejected](references/failure-modes.md#pat-rejected) |
49
- | Diagnose SMTP delivery failure | [failure modes → SMTP not delivering](references/failure-modes.md#smtp-emails-not-delivering) |
50
- | Recover from IP restriction lockout | [failure modes → IP restriction lockout](references/failure-modes.md#ip-restriction-lockout) |
51
- | Investigate a stuck tenant operation | [failure modes → Tenant operation stuck](references/failure-modes.md#tenant-operation-stuck-or-failed) |
43
+ | Investigate why a user can't log in | [troubleshooting guide → Step 1](troubleshooting-guide.md#step-1-identify-the-failure-domain) |
44
+ | Diagnose HTTP 403 / permission denied, including a role assignment that isn't taking effect | [failure modes → Access denied](failure-modes.md#access-denied-http-403) |
45
+ | Decide whether the permission is missing or merely mis-scoped | [failure modes → Step 3 branch](failure-modes.md#step-3--branch-on-the-comparison) |
46
+ | Diagnose an external app OAuth2 failure | [failure modes → External app OAuth2 failing](failure-modes.md#external-app-oauth2-flow-failing) |
47
+ | Investigate PAT rejection | [failure modes → PAT rejected](failure-modes.md#pat-rejected) |
48
+ | Diagnose SMTP delivery failure | [failure modes → SMTP not delivering](failure-modes.md#smtp-emails-not-delivering) |
49
+ | Recover from IP restriction lockout | [failure modes → IP restriction lockout](failure-modes.md#ip-restriction-lockout) |
50
+ | Investigate a stuck tenant operation | [failure modes → Tenant operation stuck](failure-modes.md#tenant-operation-stuck-or-failed) |
52
51
 
53
52
  ## Anti-patterns
54
53
 
@@ -62,8 +61,8 @@ Capability index for diagnosing identity/auth failures, permission denials, IP r
62
61
 
63
62
  ### Diagnose-scoped
64
63
 
65
- - [troubleshooting-guide.md](references/troubleshooting-guide.md) — diagnostic priority ladder
66
- - [failure-modes.md](references/failure-modes.md) — recurring failure patterns
64
+ - [troubleshooting-guide.md](troubleshooting-guide.md) — diagnostic priority ladder
65
+ - [failure-modes.md](failure-modes.md) — recurring failure patterns
67
66
 
68
67
  ### Cross-capability
69
68