@jahia/agentic 0.3.0 → 0.4.1

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 (398) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/claude/.claude/rules/jahia.md +13 -40
  3. package/dist/claude/.claude/skills/jahia-cnd-author/SKILL.md +94 -0
  4. package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
  5. package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
  6. package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
  7. package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
  8. package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
  9. package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
  10. package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
  11. package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
  12. package/dist/claude/.claude/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
  13. package/dist/claude/.claude/skills/jahia-dev-accessibility/SKILL.md +5 -265
  14. package/dist/claude/.claude/skills/jahia-dev-build-component/SKILL.md +15 -7
  15. package/dist/claude/.claude/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  16. package/dist/claude/.claude/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  17. package/dist/claude/.claude/skills/jahia-dev-create-view/SKILL.md +3 -3
  18. package/dist/claude/.claude/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  19. package/dist/claude/.claude/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  20. package/dist/claude/.claude/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  21. package/dist/claude/.claude/skills/jahia-dev-site-review/SKILL.md +70 -0
  22. package/dist/claude/.claude/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  23. package/dist/claude/.claude/skills/jahia-dev-start-local/SKILL.md +18 -26
  24. package/dist/claude/CLAUDE.md +14 -41
  25. package/dist/codex/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
  26. package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
  27. package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
  28. package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
  29. package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
  30. package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
  31. package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
  32. package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
  33. package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
  34. package/dist/codex/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
  35. package/dist/codex/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
  36. package/dist/codex/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
  37. package/dist/codex/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  38. package/dist/codex/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  39. package/dist/codex/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
  40. package/dist/codex/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  41. package/dist/codex/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  42. package/dist/codex/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  43. package/dist/codex/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  44. package/dist/codex/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  45. package/dist/codex/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
  46. package/dist/codex/AGENTS.md +15 -42
  47. package/dist/copilot/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
  48. package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
  49. package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
  50. package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
  51. package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
  52. package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
  53. package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
  54. package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
  55. package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
  56. package/dist/copilot/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
  57. package/dist/copilot/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
  58. package/dist/copilot/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
  59. package/dist/copilot/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  60. package/dist/copilot/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  61. package/dist/copilot/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
  62. package/dist/copilot/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  63. package/dist/copilot/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  64. package/dist/copilot/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  65. package/dist/copilot/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  66. package/dist/copilot/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  67. package/dist/copilot/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
  68. package/dist/copilot/AGENTS.md +15 -42
  69. package/dist/cursor/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
  70. package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
  71. package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
  72. package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
  73. package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
  74. package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
  75. package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
  76. package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
  77. package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
  78. package/dist/cursor/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
  79. package/dist/cursor/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
  80. package/dist/cursor/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
  81. package/dist/cursor/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  82. package/dist/cursor/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  83. package/dist/cursor/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
  84. package/dist/cursor/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  85. package/dist/cursor/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  86. package/dist/cursor/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  87. package/dist/cursor/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  88. package/dist/cursor/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  89. package/dist/cursor/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
  90. package/dist/cursor/.cursor/rules/jahia.mdc +13 -40
  91. package/dist/gemini/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
  92. package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
  93. package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
  94. package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
  95. package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
  96. package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
  97. package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
  98. package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
  99. package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
  100. package/dist/gemini/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
  101. package/dist/gemini/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
  102. package/dist/gemini/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
  103. package/dist/gemini/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  104. package/dist/gemini/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  105. package/dist/gemini/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
  106. package/dist/gemini/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  107. package/dist/gemini/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  108. package/dist/gemini/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  109. package/dist/gemini/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  110. package/dist/gemini/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  111. package/dist/gemini/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
  112. package/dist/gemini/AGENTS.md +15 -42
  113. package/dist/gemini/GEMINI.md +2 -2
  114. package/dist/index.js +13 -0
  115. package/dist/opencode/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
  116. package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
  117. package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
  118. package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
  119. package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
  120. package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
  121. package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
  122. package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
  123. package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
  124. package/dist/opencode/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
  125. package/dist/opencode/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
  126. package/dist/opencode/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
  127. package/dist/opencode/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  128. package/dist/opencode/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  129. package/dist/opencode/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
  130. package/dist/opencode/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  131. package/dist/opencode/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  132. package/dist/opencode/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  133. package/dist/opencode/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  134. package/dist/opencode/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  135. package/dist/opencode/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
  136. package/dist/opencode/AGENTS.md +15 -42
  137. package/dist/windsurf/.windsurf/rules/jahia.md +13 -40
  138. package/dist/windsurf/.windsurf/skills/jahia-cnd-author/SKILL.md +94 -0
  139. package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
  140. package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
  141. package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
  142. package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
  143. package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
  144. package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
  145. package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
  146. package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
  147. package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
  148. package/dist/windsurf/.windsurf/skills/jahia-dev-accessibility/SKILL.md +5 -265
  149. package/dist/windsurf/.windsurf/skills/jahia-dev-build-component/SKILL.md +15 -7
  150. package/dist/windsurf/.windsurf/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  151. package/dist/windsurf/.windsurf/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  152. package/dist/windsurf/.windsurf/skills/jahia-dev-create-view/SKILL.md +3 -3
  153. package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  154. package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  155. package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  156. package/dist/windsurf/.windsurf/skills/jahia-dev-site-review/SKILL.md +70 -0
  157. package/dist/windsurf/.windsurf/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  158. package/dist/windsurf/.windsurf/skills/jahia-dev-start-local/SKILL.md +18 -26
  159. package/dist/windsurf/AGENTS.md +15 -42
  160. package/package.json +1 -1
  161. package/dist/claude/.claude/skills/jahia/SKILL.md +0 -144
  162. package/dist/claude/.claude/skills/jahia-content/SKILL.md +0 -157
  163. package/dist/claude/.claude/skills/jahia-content-create-content/SKILL.md +0 -359
  164. package/dist/claude/.claude/skills/jahia-content-explore-structure/SKILL.md +0 -255
  165. package/dist/claude/.claude/skills/jahia-content-media-upload/SKILL.md +0 -197
  166. package/dist/claude/.claude/skills/jahia-content-move-content/SKILL.md +0 -231
  167. package/dist/claude/.claude/skills/jahia-content-organize/SKILL.md +0 -209
  168. package/dist/claude/.claude/skills/jahia-content-publish/SKILL.md +0 -181
  169. package/dist/claude/.claude/skills/jahia-content-query-content/SKILL.md +0 -174
  170. package/dist/claude/.claude/skills/jahia-content-translate-content/SKILL.md +0 -226
  171. package/dist/claude/.claude/skills/jahia-dev/SKILL.md +0 -124
  172. package/dist/claude/.claude/skills/jahia-dev-apis/SKILL.md +0 -52
  173. package/dist/claude/.claude/skills/jahia-dev-apis/references/authentication.md +0 -484
  174. package/dist/claude/.claude/skills/jahia-dev-apis/references/graphql.md +0 -657
  175. package/dist/claude/.claude/skills/jahia-dev-apis/references/jcr-api.md +0 -465
  176. package/dist/claude/.claude/skills/jahia-dev-apis/references/security.md +0 -541
  177. package/dist/claude/.claude/skills/jahia-dev-cypress/SKILL.md +0 -265
  178. package/dist/claude/.claude/skills/jahia-dev-define-content-type/SKILL.md +0 -536
  179. package/dist/claude/.claude/skills/jahia-dev-java/SKILL.md +0 -110
  180. package/dist/claude/.claude/skills/jahia-dev-java/references/backend.md +0 -331
  181. package/dist/claude/.claude/skills/jahia-dev-java/references/content-types.md +0 -273
  182. package/dist/claude/.claude/skills/jahia-dev-java/references/modules.md +0 -218
  183. package/dist/claude/.claude/skills/jahia-dev-java/references/osgi.md +0 -208
  184. package/dist/claude/.claude/skills/jahia-dev-java/references/rendering.md +0 -191
  185. package/dist/claude/.claude/skills/jahia-dev-java/references/ui-extensions.md +0 -344
  186. package/dist/claude/.claude/skills/jahia-dev-osgi-module/SKILL.md +0 -297
  187. package/dist/claude/.claude/skills/jahia-dev-ui-extension/SKILL.md +0 -559
  188. package/dist/claude/.claude/skills/jahia-java-concurrency/SKILL.md +0 -308
  189. package/dist/claude/.claude/skills/jahia-java-jcr/SKILL.md +0 -153
  190. package/dist/claude/.claude/skills/jahia-java-osgi/SKILL.md +0 -134
  191. package/dist/claude/.claude/skills/jahia-java-persistence/SKILL.md +0 -177
  192. package/dist/claude/.claude/skills/jahia-java-security/SKILL.md +0 -84
  193. package/dist/claude/.claude/skills/jahia-review-java/SKILL.md +0 -131
  194. package/dist/claude/.claude/skills/jahia-review-java/references/code-review-output.md +0 -121
  195. package/dist/codex/.agents/skills/jahia/SKILL.md +0 -144
  196. package/dist/codex/.agents/skills/jahia-content/SKILL.md +0 -157
  197. package/dist/codex/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
  198. package/dist/codex/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
  199. package/dist/codex/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
  200. package/dist/codex/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
  201. package/dist/codex/.agents/skills/jahia-content-organize/SKILL.md +0 -209
  202. package/dist/codex/.agents/skills/jahia-content-publish/SKILL.md +0 -181
  203. package/dist/codex/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
  204. package/dist/codex/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
  205. package/dist/codex/.agents/skills/jahia-dev/SKILL.md +0 -124
  206. package/dist/codex/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
  207. package/dist/codex/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
  208. package/dist/codex/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
  209. package/dist/codex/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
  210. package/dist/codex/.agents/skills/jahia-dev-apis/references/security.md +0 -541
  211. package/dist/codex/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
  212. package/dist/codex/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
  213. package/dist/codex/.agents/skills/jahia-dev-java/SKILL.md +0 -110
  214. package/dist/codex/.agents/skills/jahia-dev-java/references/backend.md +0 -331
  215. package/dist/codex/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
  216. package/dist/codex/.agents/skills/jahia-dev-java/references/modules.md +0 -218
  217. package/dist/codex/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
  218. package/dist/codex/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
  219. package/dist/codex/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
  220. package/dist/codex/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
  221. package/dist/codex/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
  222. package/dist/codex/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
  223. package/dist/codex/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
  224. package/dist/codex/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
  225. package/dist/codex/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
  226. package/dist/codex/.agents/skills/jahia-java-security/SKILL.md +0 -84
  227. package/dist/codex/.agents/skills/jahia-review-java/SKILL.md +0 -131
  228. package/dist/codex/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
  229. package/dist/copilot/.agents/skills/jahia/SKILL.md +0 -144
  230. package/dist/copilot/.agents/skills/jahia-content/SKILL.md +0 -157
  231. package/dist/copilot/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
  232. package/dist/copilot/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
  233. package/dist/copilot/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
  234. package/dist/copilot/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
  235. package/dist/copilot/.agents/skills/jahia-content-organize/SKILL.md +0 -209
  236. package/dist/copilot/.agents/skills/jahia-content-publish/SKILL.md +0 -181
  237. package/dist/copilot/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
  238. package/dist/copilot/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
  239. package/dist/copilot/.agents/skills/jahia-dev/SKILL.md +0 -124
  240. package/dist/copilot/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
  241. package/dist/copilot/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
  242. package/dist/copilot/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
  243. package/dist/copilot/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
  244. package/dist/copilot/.agents/skills/jahia-dev-apis/references/security.md +0 -541
  245. package/dist/copilot/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
  246. package/dist/copilot/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
  247. package/dist/copilot/.agents/skills/jahia-dev-java/SKILL.md +0 -110
  248. package/dist/copilot/.agents/skills/jahia-dev-java/references/backend.md +0 -331
  249. package/dist/copilot/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
  250. package/dist/copilot/.agents/skills/jahia-dev-java/references/modules.md +0 -218
  251. package/dist/copilot/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
  252. package/dist/copilot/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
  253. package/dist/copilot/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
  254. package/dist/copilot/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
  255. package/dist/copilot/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
  256. package/dist/copilot/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
  257. package/dist/copilot/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
  258. package/dist/copilot/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
  259. package/dist/copilot/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
  260. package/dist/copilot/.agents/skills/jahia-java-security/SKILL.md +0 -84
  261. package/dist/copilot/.agents/skills/jahia-review-java/SKILL.md +0 -131
  262. package/dist/copilot/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
  263. package/dist/cursor/.agents/skills/jahia/SKILL.md +0 -144
  264. package/dist/cursor/.agents/skills/jahia-content/SKILL.md +0 -157
  265. package/dist/cursor/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
  266. package/dist/cursor/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
  267. package/dist/cursor/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
  268. package/dist/cursor/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
  269. package/dist/cursor/.agents/skills/jahia-content-organize/SKILL.md +0 -209
  270. package/dist/cursor/.agents/skills/jahia-content-publish/SKILL.md +0 -181
  271. package/dist/cursor/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
  272. package/dist/cursor/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
  273. package/dist/cursor/.agents/skills/jahia-dev/SKILL.md +0 -124
  274. package/dist/cursor/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
  275. package/dist/cursor/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
  276. package/dist/cursor/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
  277. package/dist/cursor/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
  278. package/dist/cursor/.agents/skills/jahia-dev-apis/references/security.md +0 -541
  279. package/dist/cursor/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
  280. package/dist/cursor/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
  281. package/dist/cursor/.agents/skills/jahia-dev-java/SKILL.md +0 -110
  282. package/dist/cursor/.agents/skills/jahia-dev-java/references/backend.md +0 -331
  283. package/dist/cursor/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
  284. package/dist/cursor/.agents/skills/jahia-dev-java/references/modules.md +0 -218
  285. package/dist/cursor/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
  286. package/dist/cursor/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
  287. package/dist/cursor/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
  288. package/dist/cursor/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
  289. package/dist/cursor/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
  290. package/dist/cursor/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
  291. package/dist/cursor/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
  292. package/dist/cursor/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
  293. package/dist/cursor/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
  294. package/dist/cursor/.agents/skills/jahia-java-security/SKILL.md +0 -84
  295. package/dist/cursor/.agents/skills/jahia-review-java/SKILL.md +0 -131
  296. package/dist/cursor/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
  297. package/dist/gemini/.agents/skills/jahia/SKILL.md +0 -144
  298. package/dist/gemini/.agents/skills/jahia-content/SKILL.md +0 -157
  299. package/dist/gemini/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
  300. package/dist/gemini/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
  301. package/dist/gemini/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
  302. package/dist/gemini/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
  303. package/dist/gemini/.agents/skills/jahia-content-organize/SKILL.md +0 -209
  304. package/dist/gemini/.agents/skills/jahia-content-publish/SKILL.md +0 -181
  305. package/dist/gemini/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
  306. package/dist/gemini/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
  307. package/dist/gemini/.agents/skills/jahia-dev/SKILL.md +0 -124
  308. package/dist/gemini/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
  309. package/dist/gemini/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
  310. package/dist/gemini/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
  311. package/dist/gemini/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
  312. package/dist/gemini/.agents/skills/jahia-dev-apis/references/security.md +0 -541
  313. package/dist/gemini/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
  314. package/dist/gemini/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
  315. package/dist/gemini/.agents/skills/jahia-dev-java/SKILL.md +0 -110
  316. package/dist/gemini/.agents/skills/jahia-dev-java/references/backend.md +0 -331
  317. package/dist/gemini/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
  318. package/dist/gemini/.agents/skills/jahia-dev-java/references/modules.md +0 -218
  319. package/dist/gemini/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
  320. package/dist/gemini/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
  321. package/dist/gemini/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
  322. package/dist/gemini/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
  323. package/dist/gemini/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
  324. package/dist/gemini/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
  325. package/dist/gemini/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
  326. package/dist/gemini/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
  327. package/dist/gemini/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
  328. package/dist/gemini/.agents/skills/jahia-java-security/SKILL.md +0 -84
  329. package/dist/gemini/.agents/skills/jahia-review-java/SKILL.md +0 -131
  330. package/dist/gemini/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
  331. package/dist/opencode/.agents/skills/jahia/SKILL.md +0 -144
  332. package/dist/opencode/.agents/skills/jahia-content/SKILL.md +0 -157
  333. package/dist/opencode/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
  334. package/dist/opencode/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
  335. package/dist/opencode/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
  336. package/dist/opencode/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
  337. package/dist/opencode/.agents/skills/jahia-content-organize/SKILL.md +0 -209
  338. package/dist/opencode/.agents/skills/jahia-content-publish/SKILL.md +0 -181
  339. package/dist/opencode/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
  340. package/dist/opencode/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
  341. package/dist/opencode/.agents/skills/jahia-dev/SKILL.md +0 -124
  342. package/dist/opencode/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
  343. package/dist/opencode/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
  344. package/dist/opencode/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
  345. package/dist/opencode/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
  346. package/dist/opencode/.agents/skills/jahia-dev-apis/references/security.md +0 -541
  347. package/dist/opencode/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
  348. package/dist/opencode/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
  349. package/dist/opencode/.agents/skills/jahia-dev-java/SKILL.md +0 -110
  350. package/dist/opencode/.agents/skills/jahia-dev-java/references/backend.md +0 -331
  351. package/dist/opencode/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
  352. package/dist/opencode/.agents/skills/jahia-dev-java/references/modules.md +0 -218
  353. package/dist/opencode/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
  354. package/dist/opencode/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
  355. package/dist/opencode/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
  356. package/dist/opencode/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
  357. package/dist/opencode/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
  358. package/dist/opencode/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
  359. package/dist/opencode/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
  360. package/dist/opencode/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
  361. package/dist/opencode/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
  362. package/dist/opencode/.agents/skills/jahia-java-security/SKILL.md +0 -84
  363. package/dist/opencode/.agents/skills/jahia-review-java/SKILL.md +0 -131
  364. package/dist/opencode/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
  365. package/dist/windsurf/.windsurf/skills/jahia/SKILL.md +0 -144
  366. package/dist/windsurf/.windsurf/skills/jahia-content/SKILL.md +0 -157
  367. package/dist/windsurf/.windsurf/skills/jahia-content-create-content/SKILL.md +0 -359
  368. package/dist/windsurf/.windsurf/skills/jahia-content-explore-structure/SKILL.md +0 -255
  369. package/dist/windsurf/.windsurf/skills/jahia-content-media-upload/SKILL.md +0 -197
  370. package/dist/windsurf/.windsurf/skills/jahia-content-move-content/SKILL.md +0 -231
  371. package/dist/windsurf/.windsurf/skills/jahia-content-organize/SKILL.md +0 -209
  372. package/dist/windsurf/.windsurf/skills/jahia-content-publish/SKILL.md +0 -181
  373. package/dist/windsurf/.windsurf/skills/jahia-content-query-content/SKILL.md +0 -174
  374. package/dist/windsurf/.windsurf/skills/jahia-content-translate-content/SKILL.md +0 -226
  375. package/dist/windsurf/.windsurf/skills/jahia-dev/SKILL.md +0 -124
  376. package/dist/windsurf/.windsurf/skills/jahia-dev-apis/SKILL.md +0 -52
  377. package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/authentication.md +0 -484
  378. package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/graphql.md +0 -657
  379. package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/jcr-api.md +0 -465
  380. package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/security.md +0 -541
  381. package/dist/windsurf/.windsurf/skills/jahia-dev-cypress/SKILL.md +0 -265
  382. package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/SKILL.md +0 -536
  383. package/dist/windsurf/.windsurf/skills/jahia-dev-java/SKILL.md +0 -110
  384. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/backend.md +0 -331
  385. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/content-types.md +0 -273
  386. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/modules.md +0 -218
  387. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/osgi.md +0 -208
  388. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/rendering.md +0 -191
  389. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/ui-extensions.md +0 -344
  390. package/dist/windsurf/.windsurf/skills/jahia-dev-osgi-module/SKILL.md +0 -297
  391. package/dist/windsurf/.windsurf/skills/jahia-dev-ui-extension/SKILL.md +0 -559
  392. package/dist/windsurf/.windsurf/skills/jahia-java-concurrency/SKILL.md +0 -308
  393. package/dist/windsurf/.windsurf/skills/jahia-java-jcr/SKILL.md +0 -153
  394. package/dist/windsurf/.windsurf/skills/jahia-java-osgi/SKILL.md +0 -134
  395. package/dist/windsurf/.windsurf/skills/jahia-java-persistence/SKILL.md +0 -177
  396. package/dist/windsurf/.windsurf/skills/jahia-java-security/SKILL.md +0 -84
  397. package/dist/windsurf/.windsurf/skills/jahia-review-java/SKILL.md +0 -131
  398. package/dist/windsurf/.windsurf/skills/jahia-review-java/references/code-review-output.md +0 -121
@@ -1,559 +0,0 @@
1
- ---
2
- name: jahia-dev-ui-extension
3
- description: Conventions and patterns for building Jahia OSGi UI extensions — modules that extend the jcontent back-office (actions, panels, dialogs) using React 18, Webpack/Module Federation, and the @jahia/ui-extender registry. Distinct from JS template sets (React 19, Vite).
4
- ---
5
-
6
- # SKILL — Jahia OSGi UI Extension
7
-
8
- ## When this skill applies
9
-
10
- You are extending the **jcontent back-office** — adding toolbar actions, admin panels, dialogs, or sidebar panels that editors see inside jcontent / Page Builder. This is **not** about rendering the public-facing site (that is the JS template set track).
11
-
12
- Key indicators:
13
- - `@jahia/ui-extender` in `package.json`
14
- - `@jahia/webpack-config` / `webpack.config.js` (not Vite)
15
- - Output to `src/main/resources/javascript/apps/`
16
- - React 18, not React 19
17
-
18
- ---
19
-
20
- ## React version distinction — critical
21
-
22
- | Module type | React version | Build tool | Library |
23
- |---|---|---|---|
24
- | **JS template set** (public site) | React **19** | Vite | `@jahia/javascript-modules-library` |
25
- | **OSGi UI extension** (back-office) | React **18** | Webpack + Module Federation | `@jahia/ui-extender` |
26
-
27
- Never mix them. A UI extension that imports React 19 APIs will silently break in jcontent. A template set that uses `@jahia/ui-extender` won't work in the page renderer.
28
-
29
- ---
30
-
31
- ## Scaffold a new UI extension module
32
-
33
- Use archetype **4** (`jahia-reactjs-admin-module-archetype`) which scaffolds the Webpack/Module Federation wiring automatically.
34
-
35
- ```bash
36
- mvn archetype:generate -Dfilter=org.jahia.archetypes:
37
- ```
38
-
39
- At the prompts:
40
- 1. Enter `4` → `jahia-reactjs-admin-module-archetype` (Jahia DXP >= 8)
41
- 2. Enter the latest version
42
- 3. Fill in the properties, then confirm with `Y`
43
-
44
- | Property | Example | Notes |
45
- |---|---|---|
46
- | `artifactId` | `my-ui-extension` | Maven artifact ID and folder name |
47
- | `moduleName` | `My UI Extension` | Human-readable name shown in Jahia UI |
48
- | `groupId` | `org.example.modules` | Java package root |
49
- | `jahiaVersion` | `8.2.0.0` | **Always `8.2.0.0`** — the archetype default is outdated |
50
- | `version` | `1.0.0-SNAPSHOT` | Module version |
51
- | `package` | `org.example.modules` | Java package |
52
-
53
- > ⚠️ After generation, update `react` and `react-dom` in `package.json` to `^18.3.1`. The archetype may scaffold an older React 18 minor — always pin to the latest React 18.x.
54
-
55
- Build to verify:
56
-
57
- ```bash
58
- cd <artifactId>
59
- mvn clean install # runs yarn build:production via frontend-maven-plugin
60
- ```
61
-
62
- ---
63
-
64
- ## Module structure
65
-
66
- ```
67
- <module>/
68
- ├── pom.xml # Maven OSGi bundle
69
- ├── package.json # Webpack/JS config
70
- ├── webpack.config.js
71
- ├── babel.config.js
72
- ├── src/
73
- │ ├── javascript/ # React / JS sources
74
- │ │ ├── index.js # Entry point — registers jahiaApp-init callback
75
- │ │ ├── init.js # Async init — loads i18n, calls register functions
76
- │ │ ├── <Feature>/
77
- │ │ │ ├── <Feature>.jsx # React component
78
- │ │ │ ├── register<Feature>.js # registry.add() call
79
- │ │ │ ├── dialogManager.js # Portal pattern (if feature has a dialog)
80
- │ │ │ └── gql/
81
- │ │ │ └── <Feature>.mutations.js # Apollo mutations
82
- │ │ └── AdminPanel/ # Optional admin panel
83
- │ │ ├── AdminPanel.jsx
84
- │ │ └── AdminPanel.routes.jsx
85
- │ └── main/
86
- │ ├── java/org/jahia/<org>/<module>/
87
- │ │ ├── actions/ # Java Actions (@Component service = Action.class)
88
- │ │ └── services/ # OSGi services (@Component)
89
- │ └── resources/
90
- │ ├── META-INF/configurations/ # OSGi .cfg files
91
- │ └── javascript/
92
- │ ├── apps/ # Webpack output (do not edit)
93
- │ └── locales/ # i18n JSON files
94
- │ ├── en.json
95
- │ └── fr.json
96
- ```
97
-
98
- ---
99
-
100
- ## Build stack
101
-
102
- ### package.json key fields
103
-
104
- ```json
105
- {
106
- "jahia": {
107
- "remotes": {
108
- "jahia": "javascript/apps/remoteEntry.js"
109
- }
110
- },
111
- "dependencies": {
112
- "react": "^18.3.1",
113
- "react-dom": "^18.3.1",
114
- "@jahia/ui-extender": "^1.x",
115
- "@jahia/moonstone": "^2.x",
116
- "@jahia/data-helper": "^1.x",
117
- "@apollo/client": "^3.x"
118
- },
119
- "devDependencies": {
120
- "@jahia/webpack-config": "^1.x"
121
- }
122
- }
123
- ```
124
-
125
- ### webpack.config.js
126
-
127
- ```javascript
128
- const { getModuleFederationConfig } = require('@jahia/webpack-config');
129
- const packageJson = require('./package.json');
130
- const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin');
131
-
132
- module.exports = (env, argv) => ({
133
- entry: { main: './src/javascript/index' },
134
- output: {
135
- path: path.join(__dirname, 'src/main/resources/javascript/apps/'),
136
- publicPath: 'auto',
137
- filename: 'jahia.bundle.js',
138
- chunkFilename: '[name].jahia.[chunkhash:6].js',
139
- },
140
- module: {
141
- rules: [
142
- { test: /\.(js|jsx)$/, use: 'babel-loader', exclude: /node_modules/ },
143
- { test: /\.module\.css$/, use: ['style-loader', { loader: 'css-loader', options: { modules: true } }] },
144
- { test: /\.css$/, exclude: /\.module\.css$/, use: ['style-loader', 'css-loader'] },
145
- ],
146
- },
147
- plugins: [
148
- new ModuleFederationPlugin(getModuleFederationConfig(packageJson)),
149
- ],
150
- });
151
- ```
152
-
153
- `@jahia/webpack-config/getModuleFederationConfig` reads the `jahia.remotes` field from `package.json` and configures shared dependencies (React, MUI, Apollo) as singletons — this is what prevents version conflicts with jcontent's own React 18 instance.
154
-
155
- ### Maven — frontend-maven-plugin
156
-
157
- ```xml
158
- <plugin>
159
- <groupId>com.github.eirslett</groupId>
160
- <artifactId>frontend-maven-plugin</artifactId>
161
- <executions>
162
- <execution>
163
- <id>install-node-and-yarn</id>
164
- <goals><goal>install-node-and-yarn</goal></goals>
165
- <configuration>
166
- <nodeVersion>v20.x.x</nodeVersion>
167
- <yarnVersion>v1.22.x</yarnVersion>
168
- </configuration>
169
- </execution>
170
- <execution>
171
- <id>yarn-install</id>
172
- <goals><goal>yarn</goal></goals>
173
- </execution>
174
- <execution>
175
- <id>yarn-build</id>
176
- <goals><goal>yarn</goal></goals>
177
- <configuration>
178
- <arguments>build:production</arguments>
179
- </configuration>
180
- </execution>
181
- </executions>
182
- </plugin>
183
- ```
184
-
185
- Build scripts in `package.json`:
186
- - `build`: `yarn lint && webpack` (dev — fast, no minification)
187
- - `build:production`: `webpack --mode=production` (for Maven/CI)
188
- - `dev`: `webpack --watch` (interactive dev only — never run from an agent)
189
-
190
- ### Deploy
191
-
192
- ```bash
193
- # Always use this for agentic builds
194
- mvn clean install -pl .
195
-
196
- # Or if a deployer script is configured:
197
- yarn build && mvn install -DskipTests
198
- ```
199
-
200
- ---
201
-
202
- ## Registering UI extensions (JavaScript side)
203
-
204
- ### Entry point pattern
205
-
206
- ```javascript
207
- // src/javascript/index.js
208
- import { registry } from '@jahia/ui-extender';
209
-
210
- export default function () {
211
- registry.add('callback', 'my-module', {
212
- targets: ['jahiaApp-init:50'], // runs early in jcontent lifecycle
213
- callback: async () => {
214
- const { default: register } = await import('./init');
215
- register();
216
- }
217
- });
218
- }
219
- ```
220
-
221
- ```javascript
222
- // src/javascript/init.js
223
- import i18next from 'i18next';
224
- import { registerMyAction } from './MyAction';
225
-
226
- export default async function () {
227
- await i18next.loadNamespaces('my-module'); // load translations before registering UI
228
- registerMyAction();
229
- }
230
- ```
231
-
232
- The `jahiaApp-init:N` priority controls load order. Use 50 for normal modules; use lower numbers only if another module must see your registry entries at init time.
233
-
234
- > **SelectorType registration** uses the same `registry.add` mechanism — `registry.add('selectorType', 'MyKey', { cmp, dataType, adaptValue, initValue })` — wired to a CND property via a JSON fieldset override in `settings/content-editor-forms/fieldsets/`.
235
-
236
- ### Action registration
237
-
238
- ```javascript
239
- // src/javascript/MyAction/registerMyAction.js
240
- import React from 'react';
241
- import { registry } from '@jahia/ui-extender';
242
- import { Download } from '@jahia/moonstone';
243
- import { MyAction } from './MyAction';
244
-
245
- export const registerMyAction = () => {
246
- registry.addOrReplace('action', 'myActionName', {
247
- targets: ['contentActions:900'], // toolbar position (higher number = lower priority)
248
- buttonIcon: <Download />,
249
- buttonLabel: 'my-module:action.myAction.label',
250
- showOnNodeTypes: ['jnt:page'], // visibility filter
251
- component: MyAction,
252
- });
253
- };
254
- ```
255
-
256
- Common targets:
257
- - `contentActions:N` — jcontent content toolbar
258
- - `headerPrimaryActions:N` — jcontent header
259
- - `publishMenu:N` — publish menu
260
- - `contextualMenu:N` — right-click menu
261
-
262
- ### Action component pattern
263
-
264
- ```jsx
265
- // src/javascript/MyAction/MyAction.jsx
266
- import React from 'react';
267
- import { Language } from '@jahia/moonstone';
268
- import { useNodeChecks } from '@jahia/data-helper';
269
-
270
- export const MyAction = ({ path, render: Render, ...otherProps }) => {
271
- const { checksResult } = useNodeChecks({ path, Language }, {
272
- showOnNodeTypes: ['jnt:page'],
273
- hideOnNodeTypes: ['jmix:someExcludedMixin'],
274
- hideForPaths: ['^/sites/((?!/).)+/SomeFolder/?$'], // regex supported
275
- requiredPermission: ['myPermission'], // always an array
276
- requireModuleInstalledOnSite: ['my-module'],
277
- });
278
-
279
- if (Render && checksResult) {
280
- return <Render {...otherProps} onClick={handleClick} />;
281
- }
282
-
283
- return null;
284
- };
285
- ```
286
-
287
- `useNodeChecks` returns `checksResult: true` only when all declared conditions pass. When `false`, the action is hidden from the UI.
288
-
289
- > ⚠️ **Always include `requireModuleInstalledOnSite`** — without it, the action appears on every Jahia site regardless of whether the module is installed there. This is the primary guard that scopes a UI extension to sites where it is relevant.
290
-
291
- ### `useNodeChecks` — full options
292
-
293
- All options are optional. An action is visible only when all provided conditions pass.
294
-
295
- ```jsx
296
- const { checksResult } = useNodeChecks({ path, Language }, {
297
- showOnNodeTypes: ['jnt:page', 'jnt:file'],
298
- hideOnNodeTypes: ['jmix:externalLink'],
299
- requiredPermission: ['jcr:write'], // always use arrays
300
- requiredSitePermission: 'adminTemplates',
301
- requireModuleInstalledOnSite: ['my-module'], // always include — scopes to active sites
302
- showForPaths: ['/sites/mySite/home'],
303
- hideForPaths: ['^/sites/((?!/).)+/Drafts/?$'], // regex supported
304
- hideOnExternal: true,
305
- });
306
- ```
307
-
308
- ---
309
-
310
- ## Dialog pattern
311
-
312
- When an action opens a dialog, use a portal manager — the dialog must be rendered outside the jcontent component tree to avoid focus-trap and z-index issues.
313
-
314
- ```javascript
315
- // dialogManager.js
316
- import React from 'react';
317
- import ReactDOM from 'react-dom/client';
318
- import { ApolloProvider } from '@apollo/client';
319
- import { I18nextProvider } from 'react-i18next';
320
- import i18next from 'i18next';
321
- import { MyDialog } from './MyDialog';
322
-
323
- class DialogManager {
324
- _init() {
325
- if (!this.root) {
326
- const container = document.createElement('div');
327
- container.id = 'my-module-dialog-root';
328
- document.body.appendChild(container);
329
- this.root = ReactDOM.createRoot(container);
330
- }
331
- }
332
-
333
- open({ path, language, apolloClient }) {
334
- this._init();
335
- this.root.render(
336
- <ApolloProvider client={apolloClient}>
337
- <I18nextProvider i18n={i18next}>
338
- <MyDialog path={path} language={language} onClose={() => this.close()} />
339
- </I18nextProvider>
340
- </ApolloProvider>
341
- );
342
- }
343
-
344
- close() {
345
- this.root?.render(null);
346
- }
347
- }
348
-
349
- export default new DialogManager();
350
- ```
351
-
352
- > ⚠️ **Always use `<Dialog disableEnforceFocus>`** when rendering in a portal. Without it, MUI's FocusTrap fights with jcontent's own focus management and causes an infinite loop.
353
-
354
- ```jsx
355
- // MyDialog.jsx
356
- import { Dialog, DialogTitle, DialogContent, DialogActions, Button } from '@mui/material';
357
-
358
- export const MyDialog = ({ path, language, onClose }) => (
359
- <Dialog open fullWidth maxWidth="sm" disableEnforceFocus onClose={onClose}>
360
- <DialogTitle>...</DialogTitle>
361
- <DialogContent>...</DialogContent>
362
- <DialogActions>
363
- <Button onClick={onClose}>Cancel</Button>
364
- <Button variant="contained" onClick={handleAction}>Confirm</Button>
365
- </DialogActions>
366
- </Dialog>
367
- );
368
- ```
369
-
370
- ---
371
-
372
- ## Runtime APIs (window.jahia.*)
373
-
374
- These are injected by jcontent at runtime. Always check for existence before calling.
375
-
376
- ```javascript
377
- // Toast notification
378
- if (window.jahia?.toastDispatcher) {
379
- window.jahia.toastDispatcher.add({
380
- message: t('myMessage'),
381
- variant: 'success' // 'success' | 'error' | 'warning' | 'info'
382
- });
383
- }
384
-
385
- // JCR node/folder picker
386
- if (window.CE_API?.openPicker) {
387
- window.CE_API.openPicker({
388
- type: 'folder', // 'folder' | 'image' | 'file' | 'page' | 'content'
389
- isMultiple: false,
390
- site: window.contextJsParameters?.siteKey,
391
- lang: window.contextJsParameters?.uilang,
392
- initialSelectedItem: [],
393
- setValue: ([selected]) => {
394
- if (selected?.path) setPath(selected.path);
395
- }
396
- });
397
- }
398
-
399
- // Runtime context
400
- const { siteKey, uilang, currentUser } = window.contextJsParameters ?? {};
401
- ```
402
-
403
- ---
404
-
405
- ## i18n conventions
406
-
407
- Locale files live at `src/main/resources/javascript/locales/<lang>.json`. The top-level key is the module namespace. Always load the namespace before registering UI:
408
-
409
- ```json
410
- {
411
- "my-module": { "label": "My Module" },
412
- "action": { "myAction": { "label": "Do Something" } },
413
- "dialog": {
414
- "title": "...",
415
- "button": { "cancel": "Cancel", "confirm": "Confirm" }
416
- }
417
- }
418
- ```
419
-
420
- Use `useTranslation('my-module')` in components.
421
-
422
- ---
423
-
424
- ## Java Action pattern
425
-
426
- ```java
427
- @Component(service = Action.class)
428
- public class MyAction extends Action {
429
-
430
- @Override
431
- public String getName() {
432
- return "myActionName"; // matches CSRF whitelist key
433
- }
434
-
435
- @Override
436
- public ActionResult doExecute(
437
- HttpServletRequest request,
438
- RenderContext renderContext,
439
- Resource resource,
440
- JCRSessionWrapper session,
441
- Map<String, List<String>> parameters,
442
- URLResolver urlResolver) throws Exception {
443
-
444
- String param = readParameter(parameters, "paramName", null);
445
-
446
- // Return binary response
447
- HttpServletResponse response = renderContext.getResponse();
448
- response.setStatus(HttpServletResponse.SC_OK);
449
- response.setContentType("application/pdf");
450
- response.getOutputStream().write(bytes);
451
- return ActionResult.OK;
452
-
453
- // OR return JSON:
454
- // JSONObject result = new JSONObject();
455
- // result.put("key", "value");
456
- // return new ActionResult(HttpServletResponse.SC_OK, null, result);
457
- }
458
- }
459
- ```
460
-
461
- Action endpoint URL: `POST /cms/render/default/{language}{nodePath}.{actionName}.do`
462
-
463
- ### CSRF guard configuration
464
-
465
- ```properties
466
- # src/main/resources/META-INF/configurations/org.jahia.modules.jahiacsrfguard-<moduleName>.cfg
467
- whitelist = *.myActionName.do
468
- ```
469
-
470
- ---
471
-
472
- ## RenderContext setup
473
-
474
- When an Action needs to render a page to HTML, the `RenderContext` fields must be set in this exact order:
475
-
476
- ```java
477
- Resource htmlResource = new Resource(node, "html", null, Resource.CONFIGURATION_PAGE);
478
- RenderContext ctx = new RenderContext(request, response, renderContext.getUser());
479
- ctx.setSite(renderContext.getSite()); // 1. site first
480
- ctx.setWorkspace("live"); // 2. then workspace
481
- ctx.setServletPath("/live"); // 3. then servlet path (must match workspace)
482
- ctx.setMainResource(htmlResource); // 4. main resource last
483
- String html = renderService.render(htmlResource, ctx);
484
- ```
485
-
486
- > ⚠️ Order matters. Setting workspace before site or mainResource before workspace causes silent rendering errors.
487
-
488
- ---
489
-
490
- ## Embedding third-party libraries in the bundle
491
-
492
- When a library is not provided by Jahia at runtime:
493
-
494
- ```xml
495
- <dependency>
496
- <groupId>org.jsoup</groupId>
497
- <artifactId>jsoup</artifactId>
498
- <version>1.17.2</version>
499
- </dependency>
500
-
501
- <plugin>
502
- <groupId>org.apache.felix</groupId>
503
- <artifactId>maven-bundle-plugin</artifactId>
504
- <configuration>
505
- <instructions>
506
- <Embed-Dependency>jsoup;inline=false</Embed-Dependency>
507
- <DynamicImport-Package>*</DynamicImport-Package>
508
- </instructions>
509
- </configuration>
510
- </plugin>
511
- ```
512
-
513
- For libraries using the Java `ServiceLoader` SPI, instantiate their classes directly using the **bundle's own classloader** — not via global registries that become stale after bundle refresh.
514
-
515
- Switch the Thread Context ClassLoader (TCCL) for any library that uses `Thread.currentThread().getContextClassLoader()` internally:
516
-
517
- ```java
518
- ClassLoader original = Thread.currentThread().getContextClassLoader();
519
- Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
520
- try {
521
- // ... call to embedded library
522
- } finally {
523
- Thread.currentThread().setContextClassLoader(original);
524
- }
525
- ```
526
-
527
- ---
528
-
529
- ## Validation checklist
530
-
531
- ### JavaScript side
532
- - [ ] `package.json` lists React 18, not 19
533
- - [ ] `@jahia/webpack-config` used for Module Federation
534
- - [ ] Entry point registers at `jahiaApp-init:N` via `registry.add('callback', ...)`
535
- - [ ] i18n namespace loaded (awaited) before registering UI
536
- - [ ] Action component uses `useNodeChecks` for visibility
537
- - [ ] `requireModuleInstalledOnSite` included in all `useNodeChecks` calls
538
- - [ ] Dialog rendered via portal manager (outside jcontent tree)
539
- - [ ] `<Dialog disableEnforceFocus>` on all MUI dialogs in portals
540
- - [ ] `window.jahia.*` APIs guarded with optional chaining (`?.`)
541
- - [ ] Webpack output goes to `src/main/resources/javascript/apps/`
542
-
543
- ### Java side
544
- - [ ] Action class: `@Component(service = Action.class)`, `getName()` matches CSRF whitelist key
545
- - [ ] CSRF Guard config file present and correctly named
546
- - [ ] RenderContext set in order: site → workspace → servletPath → mainResource
547
- - [ ] All JCR access runs as the calling user (no system session escalation)
548
- - [ ] OSGi config `.cfg` file present for every configurable service
549
- - [ ] `Embed-Dependency` declared in BND config for every embedded lib
550
-
551
- ---
552
-
553
- ## References
554
-
555
- - jcontent UI extension API: https://academy.jahia.com/documentation/developer/jahia/8
556
- - @jahia/ui-extender: https://github.com/Jahia/ui-extender
557
- - @jahia/moonstone component library: https://moonstone.jahia.com
558
- - @jahia/data-helper: https://github.com/Jahia/data-helper
559
- - Module Federation docs: https://webpack.js.org/concepts/module-federation/