@jahia/agentic 0.0.0

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 (307) hide show
  1. package/README.md +48 -0
  2. package/dist/claude/.claude/rules/jahia.md +76 -0
  3. package/dist/claude/.claude/skills/jahia/SKILL.md +136 -0
  4. package/dist/claude/.claude/skills/jahia-content/SKILL.md +139 -0
  5. package/dist/claude/.claude/skills/jahia-content-create-content/SKILL.md +384 -0
  6. package/dist/claude/.claude/skills/jahia-content-explore-structure/SKILL.md +164 -0
  7. package/dist/claude/.claude/skills/jahia-content-move-content/SKILL.md +236 -0
  8. package/dist/claude/.claude/skills/jahia-content-query-content/SKILL.md +144 -0
  9. package/dist/claude/.claude/skills/jahia-content-translate-content/SKILL.md +297 -0
  10. package/dist/claude/.claude/skills/jahia-dev/SKILL.md +124 -0
  11. package/dist/claude/.claude/skills/jahia-dev-accessibility/SKILL.md +271 -0
  12. package/dist/claude/.claude/skills/jahia-dev-apis/SKILL.md +52 -0
  13. package/dist/claude/.claude/skills/jahia-dev-apis/references/authentication.md +484 -0
  14. package/dist/claude/.claude/skills/jahia-dev-apis/references/graphql.md +657 -0
  15. package/dist/claude/.claude/skills/jahia-dev-apis/references/jcr-api.md +465 -0
  16. package/dist/claude/.claude/skills/jahia-dev-apis/references/security.md +541 -0
  17. package/dist/claude/.claude/skills/jahia-dev-build-component/SKILL.md +140 -0
  18. package/dist/claude/.claude/skills/jahia-dev-create-page-template/SKILL.md +303 -0
  19. package/dist/claude/.claude/skills/jahia-dev-create-template-set/SKILL.md +232 -0
  20. package/dist/claude/.claude/skills/jahia-dev-create-view/SKILL.md +838 -0
  21. package/dist/claude/.claude/skills/jahia-dev-cypress/SKILL.md +445 -0
  22. package/dist/claude/.claude/skills/jahia-dev-debug/SKILL.md +176 -0
  23. package/dist/claude/.claude/skills/jahia-dev-define-content-type/SKILL.md +536 -0
  24. package/dist/claude/.claude/skills/jahia-dev-import-from/SKILL.md +244 -0
  25. package/dist/claude/.claude/skills/jahia-dev-java/SKILL.md +105 -0
  26. package/dist/claude/.claude/skills/jahia-dev-java/references/backend.md +331 -0
  27. package/dist/claude/.claude/skills/jahia-dev-java/references/content-types.md +273 -0
  28. package/dist/claude/.claude/skills/jahia-dev-java/references/modules.md +218 -0
  29. package/dist/claude/.claude/skills/jahia-dev-java/references/osgi.md +208 -0
  30. package/dist/claude/.claude/skills/jahia-dev-java/references/rendering.md +191 -0
  31. package/dist/claude/.claude/skills/jahia-dev-java/references/ui-extensions.md +344 -0
  32. package/dist/claude/.claude/skills/jahia-dev-jexperience/SKILL.md +269 -0
  33. package/dist/claude/.claude/skills/jahia-dev-ops/SKILL.md +50 -0
  34. package/dist/claude/.claude/skills/jahia-dev-ops/references/docker.md +151 -0
  35. package/dist/claude/.claude/skills/jahia-dev-ops/references/monitoring.md +195 -0
  36. package/dist/claude/.claude/skills/jahia-dev-ops/references/provisioning.md +269 -0
  37. package/dist/claude/.claude/skills/jahia-dev-osgi-module/SKILL.md +297 -0
  38. package/dist/claude/.claude/skills/jahia-dev-properties/SKILL.md +147 -0
  39. package/dist/claude/.claude/skills/jahia-dev-properties/references/all-properties.md +231 -0
  40. package/dist/claude/.claude/skills/jahia-dev-query-content/SKILL.md +407 -0
  41. package/dist/claude/.claude/skills/jahia-dev-review/SKILL.md +228 -0
  42. package/dist/claude/.claude/skills/jahia-dev-screenshot/SKILL.md +177 -0
  43. package/dist/claude/.claude/skills/jahia-dev-start-local/SKILL.md +129 -0
  44. package/dist/claude/.claude/skills/jahia-dev-ui-extension/SKILL.md +559 -0
  45. package/dist/claude/CLAUDE.md +90 -0
  46. package/dist/codex/.agents/skills/jahia/SKILL.md +136 -0
  47. package/dist/codex/.agents/skills/jahia-content/SKILL.md +139 -0
  48. package/dist/codex/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
  49. package/dist/codex/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
  50. package/dist/codex/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
  51. package/dist/codex/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
  52. package/dist/codex/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
  53. package/dist/codex/.agents/skills/jahia-dev/SKILL.md +124 -0
  54. package/dist/codex/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
  55. package/dist/codex/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
  56. package/dist/codex/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
  57. package/dist/codex/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
  58. package/dist/codex/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
  59. package/dist/codex/.agents/skills/jahia-dev-apis/references/security.md +541 -0
  60. package/dist/codex/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
  61. package/dist/codex/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
  62. package/dist/codex/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
  63. package/dist/codex/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
  64. package/dist/codex/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
  65. package/dist/codex/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
  66. package/dist/codex/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
  67. package/dist/codex/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
  68. package/dist/codex/.agents/skills/jahia-dev-java/SKILL.md +105 -0
  69. package/dist/codex/.agents/skills/jahia-dev-java/references/backend.md +331 -0
  70. package/dist/codex/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
  71. package/dist/codex/.agents/skills/jahia-dev-java/references/modules.md +218 -0
  72. package/dist/codex/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
  73. package/dist/codex/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
  74. package/dist/codex/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
  75. package/dist/codex/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
  76. package/dist/codex/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
  77. package/dist/codex/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
  78. package/dist/codex/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
  79. package/dist/codex/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
  80. package/dist/codex/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
  81. package/dist/codex/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
  82. package/dist/codex/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
  83. package/dist/codex/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
  84. package/dist/codex/.agents/skills/jahia-dev-review/SKILL.md +228 -0
  85. package/dist/codex/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
  86. package/dist/codex/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
  87. package/dist/codex/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
  88. package/dist/codex/AGENTS.md +89 -0
  89. package/dist/copilot/.agents/skills/jahia/SKILL.md +136 -0
  90. package/dist/copilot/.agents/skills/jahia-content/SKILL.md +139 -0
  91. package/dist/copilot/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
  92. package/dist/copilot/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
  93. package/dist/copilot/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
  94. package/dist/copilot/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
  95. package/dist/copilot/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
  96. package/dist/copilot/.agents/skills/jahia-dev/SKILL.md +124 -0
  97. package/dist/copilot/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
  98. package/dist/copilot/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
  99. package/dist/copilot/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
  100. package/dist/copilot/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
  101. package/dist/copilot/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
  102. package/dist/copilot/.agents/skills/jahia-dev-apis/references/security.md +541 -0
  103. package/dist/copilot/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
  104. package/dist/copilot/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
  105. package/dist/copilot/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
  106. package/dist/copilot/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
  107. package/dist/copilot/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
  108. package/dist/copilot/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
  109. package/dist/copilot/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
  110. package/dist/copilot/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
  111. package/dist/copilot/.agents/skills/jahia-dev-java/SKILL.md +105 -0
  112. package/dist/copilot/.agents/skills/jahia-dev-java/references/backend.md +331 -0
  113. package/dist/copilot/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
  114. package/dist/copilot/.agents/skills/jahia-dev-java/references/modules.md +218 -0
  115. package/dist/copilot/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
  116. package/dist/copilot/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
  117. package/dist/copilot/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
  118. package/dist/copilot/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
  119. package/dist/copilot/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
  120. package/dist/copilot/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
  121. package/dist/copilot/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
  122. package/dist/copilot/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
  123. package/dist/copilot/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
  124. package/dist/copilot/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
  125. package/dist/copilot/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
  126. package/dist/copilot/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
  127. package/dist/copilot/.agents/skills/jahia-dev-review/SKILL.md +228 -0
  128. package/dist/copilot/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
  129. package/dist/copilot/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
  130. package/dist/copilot/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
  131. package/dist/copilot/AGENTS.md +89 -0
  132. package/dist/cursor/.agents/skills/jahia/SKILL.md +136 -0
  133. package/dist/cursor/.agents/skills/jahia-content/SKILL.md +139 -0
  134. package/dist/cursor/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
  135. package/dist/cursor/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
  136. package/dist/cursor/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
  137. package/dist/cursor/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
  138. package/dist/cursor/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
  139. package/dist/cursor/.agents/skills/jahia-dev/SKILL.md +124 -0
  140. package/dist/cursor/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
  141. package/dist/cursor/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
  142. package/dist/cursor/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
  143. package/dist/cursor/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
  144. package/dist/cursor/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
  145. package/dist/cursor/.agents/skills/jahia-dev-apis/references/security.md +541 -0
  146. package/dist/cursor/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
  147. package/dist/cursor/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
  148. package/dist/cursor/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
  149. package/dist/cursor/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
  150. package/dist/cursor/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
  151. package/dist/cursor/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
  152. package/dist/cursor/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
  153. package/dist/cursor/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
  154. package/dist/cursor/.agents/skills/jahia-dev-java/SKILL.md +105 -0
  155. package/dist/cursor/.agents/skills/jahia-dev-java/references/backend.md +331 -0
  156. package/dist/cursor/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
  157. package/dist/cursor/.agents/skills/jahia-dev-java/references/modules.md +218 -0
  158. package/dist/cursor/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
  159. package/dist/cursor/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
  160. package/dist/cursor/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
  161. package/dist/cursor/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
  162. package/dist/cursor/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
  163. package/dist/cursor/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
  164. package/dist/cursor/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
  165. package/dist/cursor/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
  166. package/dist/cursor/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
  167. package/dist/cursor/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
  168. package/dist/cursor/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
  169. package/dist/cursor/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
  170. package/dist/cursor/.agents/skills/jahia-dev-review/SKILL.md +228 -0
  171. package/dist/cursor/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
  172. package/dist/cursor/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
  173. package/dist/cursor/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
  174. package/dist/cursor/.cursor/rules/jahia.mdc +80 -0
  175. package/dist/gemini/.agents/skills/jahia/SKILL.md +136 -0
  176. package/dist/gemini/.agents/skills/jahia-content/SKILL.md +139 -0
  177. package/dist/gemini/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
  178. package/dist/gemini/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
  179. package/dist/gemini/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
  180. package/dist/gemini/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
  181. package/dist/gemini/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
  182. package/dist/gemini/.agents/skills/jahia-dev/SKILL.md +124 -0
  183. package/dist/gemini/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
  184. package/dist/gemini/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
  185. package/dist/gemini/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
  186. package/dist/gemini/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
  187. package/dist/gemini/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
  188. package/dist/gemini/.agents/skills/jahia-dev-apis/references/security.md +541 -0
  189. package/dist/gemini/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
  190. package/dist/gemini/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
  191. package/dist/gemini/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
  192. package/dist/gemini/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
  193. package/dist/gemini/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
  194. package/dist/gemini/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
  195. package/dist/gemini/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
  196. package/dist/gemini/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
  197. package/dist/gemini/.agents/skills/jahia-dev-java/SKILL.md +105 -0
  198. package/dist/gemini/.agents/skills/jahia-dev-java/references/backend.md +331 -0
  199. package/dist/gemini/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
  200. package/dist/gemini/.agents/skills/jahia-dev-java/references/modules.md +218 -0
  201. package/dist/gemini/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
  202. package/dist/gemini/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
  203. package/dist/gemini/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
  204. package/dist/gemini/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
  205. package/dist/gemini/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
  206. package/dist/gemini/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
  207. package/dist/gemini/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
  208. package/dist/gemini/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
  209. package/dist/gemini/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
  210. package/dist/gemini/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
  211. package/dist/gemini/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
  212. package/dist/gemini/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
  213. package/dist/gemini/.agents/skills/jahia-dev-review/SKILL.md +228 -0
  214. package/dist/gemini/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
  215. package/dist/gemini/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
  216. package/dist/gemini/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
  217. package/dist/gemini/AGENTS.md +89 -0
  218. package/dist/gemini/GEMINI.md +6 -0
  219. package/dist/index.js +975 -0
  220. package/dist/opencode/.agents/skills/jahia/SKILL.md +136 -0
  221. package/dist/opencode/.agents/skills/jahia-content/SKILL.md +139 -0
  222. package/dist/opencode/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
  223. package/dist/opencode/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
  224. package/dist/opencode/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
  225. package/dist/opencode/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
  226. package/dist/opencode/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
  227. package/dist/opencode/.agents/skills/jahia-dev/SKILL.md +124 -0
  228. package/dist/opencode/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
  229. package/dist/opencode/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
  230. package/dist/opencode/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
  231. package/dist/opencode/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
  232. package/dist/opencode/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
  233. package/dist/opencode/.agents/skills/jahia-dev-apis/references/security.md +541 -0
  234. package/dist/opencode/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
  235. package/dist/opencode/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
  236. package/dist/opencode/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
  237. package/dist/opencode/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
  238. package/dist/opencode/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
  239. package/dist/opencode/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
  240. package/dist/opencode/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
  241. package/dist/opencode/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
  242. package/dist/opencode/.agents/skills/jahia-dev-java/SKILL.md +105 -0
  243. package/dist/opencode/.agents/skills/jahia-dev-java/references/backend.md +331 -0
  244. package/dist/opencode/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
  245. package/dist/opencode/.agents/skills/jahia-dev-java/references/modules.md +218 -0
  246. package/dist/opencode/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
  247. package/dist/opencode/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
  248. package/dist/opencode/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
  249. package/dist/opencode/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
  250. package/dist/opencode/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
  251. package/dist/opencode/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
  252. package/dist/opencode/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
  253. package/dist/opencode/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
  254. package/dist/opencode/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
  255. package/dist/opencode/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
  256. package/dist/opencode/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
  257. package/dist/opencode/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
  258. package/dist/opencode/.agents/skills/jahia-dev-review/SKILL.md +228 -0
  259. package/dist/opencode/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
  260. package/dist/opencode/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
  261. package/dist/opencode/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
  262. package/dist/opencode/AGENTS.md +89 -0
  263. package/dist/windsurf/.windsurf/rules/jahia.md +80 -0
  264. package/dist/windsurf/.windsurf/skills/jahia/SKILL.md +136 -0
  265. package/dist/windsurf/.windsurf/skills/jahia-content/SKILL.md +139 -0
  266. package/dist/windsurf/.windsurf/skills/jahia-content-create-content/SKILL.md +384 -0
  267. package/dist/windsurf/.windsurf/skills/jahia-content-explore-structure/SKILL.md +164 -0
  268. package/dist/windsurf/.windsurf/skills/jahia-content-move-content/SKILL.md +236 -0
  269. package/dist/windsurf/.windsurf/skills/jahia-content-query-content/SKILL.md +144 -0
  270. package/dist/windsurf/.windsurf/skills/jahia-content-translate-content/SKILL.md +297 -0
  271. package/dist/windsurf/.windsurf/skills/jahia-dev/SKILL.md +124 -0
  272. package/dist/windsurf/.windsurf/skills/jahia-dev-accessibility/SKILL.md +271 -0
  273. package/dist/windsurf/.windsurf/skills/jahia-dev-apis/SKILL.md +52 -0
  274. package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/authentication.md +484 -0
  275. package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/graphql.md +657 -0
  276. package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/jcr-api.md +465 -0
  277. package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/security.md +541 -0
  278. package/dist/windsurf/.windsurf/skills/jahia-dev-build-component/SKILL.md +140 -0
  279. package/dist/windsurf/.windsurf/skills/jahia-dev-create-page-template/SKILL.md +303 -0
  280. package/dist/windsurf/.windsurf/skills/jahia-dev-create-template-set/SKILL.md +232 -0
  281. package/dist/windsurf/.windsurf/skills/jahia-dev-create-view/SKILL.md +838 -0
  282. package/dist/windsurf/.windsurf/skills/jahia-dev-cypress/SKILL.md +445 -0
  283. package/dist/windsurf/.windsurf/skills/jahia-dev-debug/SKILL.md +176 -0
  284. package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/SKILL.md +536 -0
  285. package/dist/windsurf/.windsurf/skills/jahia-dev-import-from/SKILL.md +244 -0
  286. package/dist/windsurf/.windsurf/skills/jahia-dev-java/SKILL.md +105 -0
  287. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/backend.md +331 -0
  288. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/content-types.md +273 -0
  289. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/modules.md +218 -0
  290. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/osgi.md +208 -0
  291. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/rendering.md +191 -0
  292. package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/ui-extensions.md +344 -0
  293. package/dist/windsurf/.windsurf/skills/jahia-dev-jexperience/SKILL.md +269 -0
  294. package/dist/windsurf/.windsurf/skills/jahia-dev-ops/SKILL.md +50 -0
  295. package/dist/windsurf/.windsurf/skills/jahia-dev-ops/references/docker.md +151 -0
  296. package/dist/windsurf/.windsurf/skills/jahia-dev-ops/references/monitoring.md +195 -0
  297. package/dist/windsurf/.windsurf/skills/jahia-dev-ops/references/provisioning.md +269 -0
  298. package/dist/windsurf/.windsurf/skills/jahia-dev-osgi-module/SKILL.md +297 -0
  299. package/dist/windsurf/.windsurf/skills/jahia-dev-properties/SKILL.md +147 -0
  300. package/dist/windsurf/.windsurf/skills/jahia-dev-properties/references/all-properties.md +231 -0
  301. package/dist/windsurf/.windsurf/skills/jahia-dev-query-content/SKILL.md +407 -0
  302. package/dist/windsurf/.windsurf/skills/jahia-dev-review/SKILL.md +228 -0
  303. package/dist/windsurf/.windsurf/skills/jahia-dev-screenshot/SKILL.md +177 -0
  304. package/dist/windsurf/.windsurf/skills/jahia-dev-start-local/SKILL.md +129 -0
  305. package/dist/windsurf/.windsurf/skills/jahia-dev-ui-extension/SKILL.md +559 -0
  306. package/dist/windsurf/AGENTS.md +89 -0
  307. package/package.json +28 -0
@@ -0,0 +1,244 @@
1
+ ---
2
+ name: jahia-dev-import-from
3
+ description: Builds a Jahia component inspired by a component on an external URL. Fetches the page, lets the developer target one section, extracts its HTML structure and CSS/JS dependencies, then creates a proper CND + view. Use when asked to "create a component like the one on this page".
4
+ allowed-tools: Bash, Read, Write, Edit, WebFetch
5
+ ---
6
+
7
+ # Skill: jahia-dev-import-from
8
+
9
+ Turns a component on an external website into a Jahia component. This is a developer workflow — the result uses CSS Modules, proper Jahia architecture, and is maintainable code. It is not a wholesale site clone.
10
+
11
+ ---
12
+
13
+ ## Step 1 — Fetch and map the page
14
+
15
+ Fetch the URL with `WebFetch`. If WebFetch fails (403/503), fall back to:
16
+
17
+ ```bash
18
+ wget --quiet --user-agent="Mozilla/5.0" -O /tmp/imported-page.html "<URL>"
19
+ ```
20
+
21
+ Scan the HTML for semantic section boundaries (`<section>`, `<article>`, `<header>`, `<footer>`, `<main>`, or `<div>` with class names matching patterns like `hero`, `banner`, `card`, `grid`, `slider`, `features`).
22
+
23
+ Print a numbered text map:
24
+
25
+ ```
26
+ [1] HEADER — logo + nav + CTA button
27
+ [2] HERO — animated text + background image + scroll indicator
28
+ [3] FEATURES — 3-column icon grid
29
+ [4] CAROUSEL — auto-sliding testimonials (Swiper)
30
+ [5] FOOTER — 4-column links + social icons
31
+ ```
32
+
33
+ Ask the developer: **"Which section do you want to implement?"**
34
+
35
+ ---
36
+
37
+ ## Step 2 — Extract the HTML fragment
38
+
39
+ Locate the target section in the fetched HTML. Extract the **complete HTML block** — every element, every attribute, every nesting level. Do not simplify, summarize, or rewrite any part of it.
40
+
41
+ **For repeating patterns** (card grid, carousel), copy the wrapper structure **plus one complete child item** with all its attributes.
42
+
43
+ **Replace only dynamic content** with typed placeholders:
44
+
45
+ | Source HTML | Replacement |
46
+ |---|---|
47
+ | Text inside an element | `{title}`, `{description}`, etc. |
48
+ | Image `src` / `data-bg` / `data-src` URL | `{image}` (will become a `weakreference` field) |
49
+ | Link `href` | `{href}` (will become `j:linkType` / `j:linknode`) |
50
+
51
+ **Keep verbatim:**
52
+ - All CSS classes
53
+ - All `data-*` attributes (animation libraries, carousel config, IDs)
54
+ - `aria-*` and `role` attributes
55
+ - `<noscript>` blocks and `<picture>/<source>` elements
56
+ - Carousel/slider wrapper `id`s — JS libraries use these for initialization
57
+
58
+ > ⚠️ Self-check: count the attributes on 2–3 key elements in the source HTML. If your extraction has fewer, you dropped something — re-extract.
59
+
60
+ ---
61
+
62
+ ## Step 3 — Identify content fields vs structural HTML
63
+
64
+ Show the developer a proposed split:
65
+
66
+ **Will become CND fields (editable in Jahia):**
67
+ - User-facing text: titles, subtitles, descriptions, button labels
68
+ - Images (→ `weakreference, picker[type='image']`)
69
+ - Links (→ `j:linkType / j:linknode / j:url`)
70
+ - Any value that should vary between instances
71
+
72
+ **Will be hardcoded in the view:**
73
+ - Layout wrapper divs
74
+ - Icon SVGs that are decorative / never change
75
+ - Animation class names and `data-*` config attributes
76
+ - ARIA labels that are structural (e.g. `aria-label="Main navigation"`)
77
+
78
+ Ask the developer to confirm or adjust. If they want something to be editable that wasn't identified, add it as a field.
79
+
80
+ ---
81
+
82
+ ## Step 4 — Identify CSS and JS dependencies
83
+
84
+ Scan the page `<head>` for resources that the target component depends on:
85
+
86
+ ```bash
87
+ # From downloaded HTML, extract stylesheet and script references
88
+ grep -E '<link[^>]+stylesheet|<script[^>]+src' /tmp/imported-page.html | head -30
89
+ ```
90
+
91
+ Categorize findings:
92
+
93
+ | Type | Examples | Action |
94
+ |---|---|---|
95
+ | **Animation library** | AOS, GSAP, ScrollReveal, Animate.css | Likely needed — check npm first |
96
+ | **Carousel/slider** | Swiper, Glide, Owl Carousel, Splide | Likely needed — check npm first |
97
+ | **Utility CSS** | Bootstrap, Tailwind | May already be in the module or can be imported |
98
+ | **Site-specific CSS** | `main.css`, `theme.css` | Targeted import only (see Step 5b) |
99
+ | **Fonts** | Google Fonts, custom woff2 | Import if not already in the module |
100
+
101
+ Report findings, then ask: **"Should I import any of these? (yes / no / specific ones)"**
102
+
103
+ ---
104
+
105
+ ## Step 5 — Create the Jahia component
106
+
107
+ ### Step 5a — CND and view
108
+
109
+ Using the confirmed field split from Step 3, run the `jahia-dev-define-content-type` and `jahia-dev-create-view` patterns to create:
110
+
111
+ - `src/components/<Category>/<Name>/definition.cnd`
112
+ - `src/components/<Category>/<Name>/types.ts`
113
+ - `src/components/<Category>/<Name>/default.server.tsx`
114
+ - `src/components/<Category>/<Name>/component.module.css`
115
+
116
+ **TSX conversion rules** (mechanical, not creative):
117
+
118
+ 1. `class="foo bar"` → `className="foo bar"` — keep class strings as-is if vendor CSS is imported, OR map to `classes.fooBar` if authoring new CSS
119
+ 2. Void elements: `<img>`, `<input>`, `<br>` → add ` />`
120
+ 3. `{placeholder}` → `{propName}` matching `Props`
121
+ 4. Every `data-*`, `aria-*`, `id`, `<noscript>`, `<source>` stays in the TSX
122
+
123
+ **CSS Modules:** Write new CSS in `component.module.css` that achieves the same visual result. Rename source class names to semantic camelCase keys (`hero__title` → `.heroTitle`). Exception: if you're importing the original CSS as a static asset, use the original class names as plain strings — CSS Modules would rename them and break the imported CSS.
124
+
125
+ **Interactive components** (animations, carousels, event handlers) → Island architecture:
126
+
127
+ ```tsx
128
+ // default.server.tsx — passes config, initializes nothing
129
+ ({ title, subtitle }: Props, { renderContext }) => (
130
+ <Island component={MyComponentClient} props={{ title, subtitle }} />
131
+ )
132
+
133
+ // MyComponent.client.tsx — owns the browser-side lifecycle
134
+ import { useEffect } from "react";
135
+
136
+ export default function MyComponentClient({ title, subtitle }: Props) {
137
+ useEffect(() => {
138
+ import("aos").then(({ default: AOS }) => AOS.init({ duration: 800 }));
139
+ }, []);
140
+
141
+ return (
142
+ <div data-aos="fade-up" className="hero">
143
+ <h1>{title}</h1>
144
+ </div>
145
+ );
146
+ }
147
+ ```
148
+
149
+ **Edit mode for carousels/sliders:** Render all items flat so editors can see and reorder them:
150
+
151
+ ```tsx
152
+ ({ slides }, { renderContext }) =>
153
+ renderContext.isEditMode() ? (
154
+ <div className={classes.editStack}>
155
+ <RenderChildren />
156
+ <p className={classes.hint}>Carousel — add or reorder slides above</p>
157
+ </div>
158
+ ) : (
159
+ <Island component={CarouselClient} props={{ count: slides?.length }} />
160
+ )
161
+ ```
162
+
163
+ ---
164
+
165
+ ### Step 5b — Import static assets (if confirmed in Step 4)
166
+
167
+ For each confirmed CSS file:
168
+
169
+ ```bash
170
+ mkdir -p static/css
171
+ curl -sL "<css-url>" -o "static/css/<filename>.css"
172
+ ```
173
+
174
+ For JS libraries — prefer npm over manual download:
175
+
176
+ ```bash
177
+ # Check if available on npm
178
+ npm info <library-name> version 2>/dev/null
179
+
180
+ # If available:
181
+ yarn add <library-name>
182
+ # Then import in the .client.tsx: import AOS from "aos";
183
+
184
+ # If not on npm, download to static:
185
+ mkdir -p static/js
186
+ curl -sL "<js-url>" -o "static/js/<filename>.js"
187
+ ```
188
+
189
+ For fonts:
190
+
191
+ ```bash
192
+ mkdir -p static/fonts
193
+ curl -sL "<font-url>" -o "static/fonts/<filename>.woff2"
194
+ ```
195
+
196
+ Update the module's `Layout` template (`src/templates/Layout.server.tsx` or `src/templates/Layout.jsx`) to include the assets:
197
+
198
+ ```tsx
199
+ import { AddResources, buildModuleFileUrl } from "@jahia/javascript-modules-library";
200
+
201
+ // In the <head> section:
202
+ <AddResources type="css" url={buildModuleFileUrl("static/css/vendor.css")} />
203
+ <AddResources type="javascript" url={buildModuleFileUrl("static/js/aos.js")} />
204
+ ```
205
+
206
+ Update `package.json` → `jahia.static-resources` to expose the static directories:
207
+
208
+ ```json
209
+ {
210
+ "jahia": {
211
+ "static-resources": "/dist/client,/dist/assets,/locales,/static/css,/static/js,/static/fonts"
212
+ }
213
+ }
214
+ ```
215
+
216
+ > **Never hardcode `/modules/<name>/...` paths** — use `buildModuleFileUrl` so the path resolves correctly across environments and module name changes.
217
+
218
+ ---
219
+
220
+ ## Step 6 — Build, deploy, and verify
221
+
222
+ ```bash
223
+ yarn build && yarn jahia-deploy
224
+ ```
225
+
226
+ Verify the component registered:
227
+
228
+ ```bash
229
+ docker logs $(docker ps --format '{{.Names}}' | grep -i jahia | head -1) 2>&1 \
230
+ | grep "Registered Jahia component" | grep "<ComponentName>"
231
+ ```
232
+
233
+ Expected: one line per view. If absent, check the build output for TypeScript errors in the new view file.
234
+
235
+ ---
236
+
237
+ ## Rules that always apply
238
+
239
+ - **CSS Modules for authored styles** — use `classes.propertyName`, not plain string class names
240
+ - **Vendor class names stay as-is** — when importing external CSS, don't route those classes through CSS Modules
241
+ - **No hardcoded links** — `href` and `src` must come from JCR props or `buildModuleFileUrl`
242
+ - **Island for anything interactive** — animations, browser events, `useState`, third-party JS → `.client.tsx`
243
+ - **All props optional in `types.ts`** — even CND `mandatory` fields
244
+ - **Edit mode awareness** — carousels, sliders, and tabs should render flat in edit mode
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: jahia-dev-java
3
+ description: |
4
+ Jahia 8.2 Java module development — creating OSGi modules, defining content types (CND),
5
+ building JSP views, implementing backend logic (rules, actions, queries), and extending
6
+ the Jahia UI (Content Editor, jContent, component registry).
7
+ Trigger when the user is: creating or modifying a Java module, writing CND content type
8
+ definitions, building JSP rendering views, implementing Jahia rules or actions, running
9
+ JCR SQL2 queries, extending Content Editor or jContent UI, configuring OSGi services,
10
+ or troubleshooting module deployment issues.
11
+ allowed-tools: Read
12
+ ---
13
+
14
+ # Jahia 8.2 Java Developer Skill
15
+
16
+ ## When to load which reference
17
+
18
+ | Task | Reference file |
19
+ |------|---------------|
20
+ | Creating a new module, Maven pom.xml, deployment, Java 11/17, static assets, deploy-free coding, troubleshooting bundle errors | `references/modules.md` |
21
+ | Writing CND definitions, content type hierarchy, property types, choicelist initializers, modifying existing definitions | `references/content-types.md` |
22
+ | JSP views, view selection, `@cache` tag, caching configuration, navigation menus, rendering filters, AMP | `references/rendering.md` |
23
+ | Drools rules (DRL), JCR event listeners, JCR SQL2 queries, external data provider, permissions and roles | `references/backend.md` |
24
+ | OSGi bundle lifecycle, Declarative Services, Blueprint XML, package Import/Export, service registry, Karaf tooling | `references/osgi.md` |
25
+ | Content Editor JSON overrides, jContent UI extension points, component registry, custom selectors, settings pages, CKEditor | `references/ui-extensions.md` |
26
+
27
+ ## Key Concepts Glossary
28
+
29
+ **Bundle / Module**
30
+ An OSGi JAR deployed into Jahia. Every Jahia module is an OSGi bundle. Jahia adds custom MANIFEST attributes (`Jahia-Module-Type`, `Jahia-Depends`, `Jahia-Root-Folder`) on top of standard OSGi headers.
31
+
32
+ **CND (Compact Namespace and Node Type Definition)**
33
+ Apache Jackrabbit standard file format (`definitions.cnd`) that declares content types. Lives at `src/main/resources/META-INF/definitions.cnd`.
34
+
35
+ **JCR (Java Content Repository)**
36
+ The underlying storage model. Content is a tree of nodes, each with a primary type and optional mixin types. Jahia uses Apache Jackrabbit Oak as the JCR implementation.
37
+
38
+ **jnt: prefix**
39
+ Jahia Node Types namespace (`http://www.jahia.org/jahia/nt/1.0`). Used for concrete content types like `jnt:content`, `jnt:page`, `jnt:file`.
40
+
41
+ **jmix: prefix**
42
+ Jahia Mixin namespace (`http://www.jahia.org/jahia/mix/1.0`). Used for abstract mixin types like `jmix:editorialContent`, `jmix:list`, `jmix:cache`.
43
+
44
+ **jmix:editorialContent**
45
+ Key mixin — makes a content type visible in jContent and enables content versioning. Required for any user-editable content type.
46
+
47
+ **jmix:droppableContent**
48
+ Base mixin for component categories. Types that inherit from this mixin create a component folder in the content picker sidebar.
49
+
50
+ **Declarative Services (DS)**
51
+ Preferred OSGi service mechanism in Jahia 8.2. Uses `@Component`, `@Activate`, `@Reference` annotations. Blueprint XML is deprecated as of Jahia 8.2.
52
+
53
+ **jahia-depends**
54
+ MANIFEST / pom.xml property declaring other module artifact IDs that this module requires. OSGi resolves dependencies before starting the bundle. Supports version ranges and optional dependencies.
55
+
56
+ **Embed-Dependency**
57
+ Felix Maven Bundle Plugin instruction to embed non-OSGi JARs inside the module JAR. Default scope: `compile|runtime`. Dependencies scoped `provided` are NOT embedded.
58
+
59
+ **Deploy-free coding**
60
+ Development workflow where source file changes (JSP, CSS, JS, CND) are picked up live without redeployment. Requires initial deploy and `Jahia-Source-Folders` MANIFEST attribute pointing to the project base directory.
61
+
62
+ **jahia:deploy Maven goal**
63
+ Deploys the compiled module JAR to a local Jahia server or Docker container. Usage: `mvn clean install jahia:deploy -P <profile>`.
64
+
65
+ **Content Editor**
66
+ Jahia's React-based form UI for creating/editing content. Forms are generated from CND definitions merged with JSON override files. Override files live in `META-INF/jahia-content-editor-forms/`.
67
+
68
+ **jContent**
69
+ Jahia's React-based content management UI. Extended via the component registry (`window.jahia.uiExtender.registry`). Used by editors to browse, create, and manage content.
70
+
71
+ **Component Registry**
72
+ JavaScript hashmap (`type + key → value`) used to inject UI elements (actions, accordions, nav items, selector types) into jContent and Content Editor at runtime. Access via `import {registry} from '@jahia/ui-extender'`.
73
+
74
+ **DRL (Drools Rule Language)**
75
+ Rule files placed at `META-INF/rules.drl` (all workspaces), `META-INF/default-rules.drl` (edit workspace only), or `META-INF/live-rules.drl` (live workspace only). Jahia provides a built-in DSL that simplifies rule conditions and consequences.
76
+
77
+ **Workspace**
78
+ Jahia has two JCR workspaces: `default` (edit/preview, where authors work) and `live` (what visitors see). Publication copies nodes from default to live.
79
+
80
+ **Felix Web Console**
81
+ OSGi administration UI at `http://localhost:8080/tools`. Shows bundle states, packages, services. Useful for diagnosing dependency issues.
82
+
83
+ **Karaf SSH Shell**
84
+ Command-line OSGi console accessible via `ssh -p 8101 jahia@localhost`. Key commands: `jahia:modules`, `bundle:requirements`, `jcr:query`.
85
+
86
+ **JCR SQL2**
87
+ Query language for the JCR. Syntax: `SELECT * FROM [nodetype] AS alias WHERE condition`. Use `ISDESCENDANTNODE(alias, '/path')` to scope queries. Do NOT query `nt:base` — use `jmix:searchable` instead for broad content queries.
88
+
89
+ **choicelist initializer**
90
+ Java class implementing `ModuleChoiceListInitializer` that populates dropdown values in Content Editor. Registered as an OSGi `@Component` service. Referenced in CND with `choicelist[keyName]` syntax.
91
+
92
+ **Rendering filter**
93
+ OSGi service implementing `RenderFilter`. Wraps every JSP/module render. Priority < 16 runs per-request; priority > 16 runs only on cache miss. Extend `AbstractFilter` to use condition setters.
94
+
95
+ **Migration scripts**
96
+ Groovy scripts in `src/main/resources/META-INF/patches/` that run once on module deployment to migrate JCR content or configuration.
97
+
98
+ **Module types**
99
+ `Jahia-Module-Type` MANIFEST value controls module behavior:
100
+ - `module` — regular content module (default)
101
+ - `system` — loaded early, provides system-level services
102
+ - `templatesSet` — template set module that defines site templates
103
+
104
+ **Static resources**
105
+ JS/CSS/images declared in `Jahia-Static-Resources` MANIFEST header (e.g. `/css,/icons,/javascript`). Served directly from the OSGi bundle JAR under `src/main/resources/`.
@@ -0,0 +1,331 @@
1
+ # Jahia Backend Capabilities Reference
2
+
3
+ ## Table of Contents
4
+ 1. [Drools rule engine](#1-drools-rule-engine)
5
+ 2. [JCR event listeners](#2-jcr-event-listeners)
6
+ 3. [JCR SQL2 cheat sheet](#3-jcr-sql2-cheat-sheet)
7
+ 4. [Queries and search indexing](#4-queries-and-search-indexing)
8
+ 5. [External data sources (Provider API)](#5-external-data-sources-provider-api)
9
+ 6. [Permissions and roles](#6-permissions-and-roles)
10
+
11
+ ---
12
+
13
+ ## 1. Drools rule engine
14
+
15
+ Jahia uses JBoss Drools 6 for a rules engine that reacts to JCR events.
16
+
17
+ ### Rule file locations
18
+
19
+ | File | Scope |
20
+ |------|-------|
21
+ | `META-INF/rules.drl` | All workspaces (default and live) |
22
+ | `META-INF/default-rules.drl` | Edit/preview workspace only |
23
+ | `META-INF/live-rules.drl` | Live workspace only |
24
+ | `META-INF/rules.dsl` | Custom DSL extensions |
25
+
26
+ ### Basic rule structure
27
+
28
+ ```drools
29
+ package org.example.mymodule.rules
30
+
31
+ import org.jahia.services.content.rules.*
32
+ import org.jahia.services.content.JCRContentUtils
33
+ import org.slf4j.Logger
34
+
35
+ global User user
36
+ global Service service
37
+ global Logger logger
38
+ global MyService myService
39
+
40
+ rule "Log new article creation"
41
+ when
42
+ A new node is created
43
+ - the node has the type jnt:article
44
+ then
45
+ Log "New article created: " + node.getName() at INFO level
46
+ end
47
+
48
+ rule "Notify on page publish"
49
+ salience 100
50
+ when
51
+ A node is published
52
+ - the node has the type jnt:page
53
+ then
54
+ myService.notifyPublish(node)
55
+ end
56
+ ```
57
+
58
+ **Critical rules:** Rule titles are globally unique across the platform — never reuse rule names between modules.
59
+
60
+ **Package names:** Use a unique package per module — do not share package names across modules.
61
+
62
+ ### Built-in DSL conditions (excerpt)
63
+
64
+ ```drools
65
+ A new node is created # AddedNodeFact
66
+ A node is published # PublishedNodeFact
67
+ A node is deleted # DeletedNodeFact
68
+ A node is modified # ChangedPropertyFact
69
+ - the node has the type {type} # Checks primaryType or mixin
70
+ ```
71
+
72
+ ### Built-in global objects
73
+
74
+ | Global | Type | Description |
75
+ |--------|------|-------------|
76
+ | `user` | `org.jahia.services.content.rules.User` | Current user context |
77
+ | `service` | `org.jahia.services.content.rules.Service` | Core JCR service shortcuts |
78
+ | `logger` | `org.slf4j.Logger` | SLF4J logger |
79
+ | `imageService` | `org.jahia.services.content.rules.ImageService` | Image operations |
80
+ | `extractionService` | `org.jahia.services.content.rules.ExtractionService` | Content extraction |
81
+
82
+ ### Registering a custom service as a rules global
83
+
84
+ Step 1 — Declare the service component:
85
+ ```java
86
+ @Component(service = MyService.class)
87
+ public class MyService {
88
+ public void doSomething(AddedNodeFact node) throws RepositoryException { }
89
+ }
90
+ ```
91
+
92
+ Step 2 — Register as a global rules object:
93
+ ```java
94
+ @Component(service = ModuleGlobalObject.class)
95
+ public class MyRulesGlobalObjects extends ModuleGlobalObject {
96
+ @Reference
97
+ public void setMyService(MyService myService) {
98
+ getGlobalRulesObject().put("myService", myService);
99
+ }
100
+ public void unsetMyService(MyService myService) {
101
+ getGlobalRulesObject().remove("myService");
102
+ }
103
+ }
104
+ ```
105
+
106
+ Step 3 — Declare global and import in rules.drl:
107
+ ```drools
108
+ import org.example.mymodule.MyService
109
+ global MyService myService
110
+ ```
111
+
112
+ **Important:** Export the package containing `MyService` so other modules can import it in DRL files.
113
+
114
+ ### Custom DSL extensions (rules.dsl)
115
+
116
+ ```drools
117
+ [condition][]A new article is created=node : AddedNodeFact (types contains "jnt:article")
118
+ [consequence][]Notify publish for {node}=myService.notifyPublish({node});
119
+ ```
120
+
121
+ ---
122
+
123
+ ## 2. JCR event listeners
124
+
125
+ Extend `DefaultEventListener` to react to JCR node events:
126
+
127
+ ```java
128
+ public class MyJCREventListener extends DefaultEventListener {
129
+
130
+ @Override
131
+ public int getEventTypes() {
132
+ return Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_CHANGED;
133
+ }
134
+
135
+ @Override
136
+ public String getPath() {
137
+ return "/sites";
138
+ }
139
+
140
+ @Override
141
+ public void onEvent(EventIterator events) {
142
+ while (events.hasNext()) {
143
+ Event event = events.nextEvent();
144
+ try {
145
+ String path = event.getPath();
146
+ } catch (RepositoryException e) {
147
+ logger.error("Error processing event", e);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ ```
153
+
154
+ **JCR Event types:** `Event.NODE_ADDED`, `Event.NODE_REMOVED`, `Event.PROPERTY_ADDED`, `Event.PROPERTY_CHANGED`, `Event.PROPERTY_REMOVED`, `Event.NODE_MOVED`
155
+
156
+ ---
157
+
158
+ ## 3. JCR SQL2 cheat sheet
159
+
160
+ JCR SQL2 syntax: `SELECT * FROM [nodeType] AS alias WHERE conditions ORDER BY alias.[prop]`
161
+
162
+ ### Querying node types
163
+
164
+ ```sql
165
+ -- Prefer jmix:searchable over nt:base for broad queries
166
+ SELECT * FROM [jmix:searchable] AS node
167
+
168
+ SELECT * FROM [jnt:page] AS page
169
+ SELECT * FROM [jnt:file] AS file
170
+ SELECT * FROM [jnt:article] AS article
171
+ ```
172
+
173
+ ### Path constraints (always include for performance)
174
+
175
+ ```sql
176
+ SELECT * FROM [jnt:article] AS node
177
+ WHERE ISDESCENDANTNODE(node, '/sites/mySite')
178
+
179
+ SELECT * FROM [jnt:page] AS child
180
+ WHERE ISCHILDNODE(child, '/sites/mySite/home')
181
+ ```
182
+
183
+ ### String matching
184
+
185
+ ```sql
186
+ SELECT * FROM [jnt:content] AS node WHERE node.[jcr:title] = 'My Title'
187
+ SELECT * FROM [jnt:content] AS node WHERE node.[jcr:title] LIKE '%news%'
188
+ SELECT * FROM [jnt:page] AS node WHERE LOWER(node.[jcr:title]) = 'home'
189
+ SELECT * FROM [jnt:page] AS page WHERE page.[jcr:title] IS NOT NULL
190
+ SELECT * FROM [jnt:content] AS node WHERE CONTAINS(node.*, 'digital')
191
+ ```
192
+
193
+ ### Property and type queries
194
+
195
+ ```sql
196
+ SELECT * FROM [jnt:page] AS page WHERE page.[j:published] > CAST('true' AS BOOLEAN)
197
+ SELECT * FROM [jnt:page] AS page
198
+ WHERE page.[j:published] > CAST('2021-01-01T00:00:01.000Z' AS DATE)
199
+ ```
200
+
201
+ ### Ordering and templates
202
+
203
+ ```sql
204
+ SELECT * FROM [jnt:page] AS page ORDER BY page.[j:lastModified] DESC
205
+ SELECT * FROM [jnt:page] AS page WHERE page.[j:templateName] = 'home'
206
+ ```
207
+
208
+ ### Non-query lookups (use instead of queries for performance)
209
+
210
+ ```java
211
+ // By UUID (preferred over UUID query)
212
+ session.getNodeByIdentifier("the-uuid-string");
213
+
214
+ // Set result limit (no LIMIT keyword in JCR SQL2)
215
+ QueryObjectModelImpl qom = ...;
216
+ qom.setLimit(20);
217
+ qom.setOffset(0);
218
+ ```
219
+
220
+ ---
221
+
222
+ ## 4. Queries and search indexing
223
+
224
+ ### Executing a JCR SQL2 query in Java
225
+
226
+ ```java
227
+ JCRSessionWrapper session = JCRSessionFactory.getInstance()
228
+ .getCurrentUserSession("default", Locale.ENGLISH);
229
+
230
+ QueryManager queryManager = session.getWorkspace().getQueryManager();
231
+ Query query = queryManager.createQuery(
232
+ "SELECT * FROM [jnt:article] WHERE ISDESCENDANTNODE('/sites/mySite')",
233
+ Query.JCR_SQL2
234
+ );
235
+ QueryResult result = query.execute();
236
+ NodeIterator nodes = result.getNodes();
237
+ while (nodes.hasNext()) {
238
+ JCRNodeWrapper node = (JCRNodeWrapper) nodes.nextNode();
239
+ }
240
+ ```
241
+
242
+ ### Index tuning via CND keywords
243
+
244
+ ```cnd
245
+ - title (string) i18n boost=3.0 # Higher search relevance
246
+ - code (string) analyzer=keyword # Index as single token
247
+ - internalNotes (string) nofulltext # Indexed but not in full-text search
248
+ - binaryData (binary) indexed=no # Not indexed at all
249
+ - category (string) facetable # Enables faceted search
250
+ ```
251
+
252
+ ---
253
+
254
+ ## 5. External data sources (Provider API)
255
+
256
+ The External Provider API allows exposing non-JCR data as virtual JCR nodes.
257
+
258
+ ### Key interfaces
259
+
260
+ | Interface | Purpose |
261
+ |-----------|---------|
262
+ | `ExternalDataSource` | Main interface to implement for external data |
263
+ | `ExternalDataSource.Searchable` | Add search support |
264
+ | `ExternalDataSource.Writable` | Add write support |
265
+ | `ExternalContentStoreProvider` | OSGi service to mount the provider |
266
+
267
+ ### Minimal ExternalDataSource implementation
268
+
269
+ ```java
270
+ @Component(service = ExternalDataSource.class)
271
+ public class MyExternalDataSource implements ExternalDataSource {
272
+
273
+ @Override
274
+ public List<String> getChildren(String path) throws PathNotFoundException {
275
+ return Arrays.asList("item1", "item2");
276
+ }
277
+
278
+ @Override
279
+ public ExternalData getItemByPath(String path) throws PathNotFoundException {
280
+ ExternalData data = new ExternalData("unique-id", path, "jnt:content",
281
+ new HashMap<String, String[]>());
282
+ data.getProperties().put("jcr:title", new String[]{"My Title"});
283
+ return data;
284
+ }
285
+
286
+ @Override
287
+ public ExternalData getItemByIdentifier(String identifier) throws ItemNotFoundException {
288
+ return null;
289
+ }
290
+
291
+ @Override
292
+ public Set<String> getSupportedNodeTypes() {
293
+ return Collections.singleton("jnt:content");
294
+ }
295
+
296
+ @Override public boolean isSupportsUuid() { return false; }
297
+ @Override public boolean isSupportsHierarchicalIdentifiers() { return false; }
298
+ @Override public boolean itemExists(String path) { return true; }
299
+ }
300
+ ```
301
+
302
+ ---
303
+
304
+ ## 6. Permissions and roles
305
+
306
+ ### Permission hierarchy
307
+
308
+ | Level | Description |
309
+ |-------|-------------|
310
+ | Server level | Global roles (e.g., Server Administrator) |
311
+ | Site level | Site-specific roles (e.g., Site Administrator, Editor) |
312
+ | Node level | Per-node ACL inheritance |
313
+
314
+ ### Checking permissions in code
315
+
316
+ ```java
317
+ if (currentNode.hasPermission("jcr:write")) { }
318
+
319
+ // In JSP
320
+ <c:if test="${jcr:hasPermission(currentNode, 'jcr:write')}">...</c:if>
321
+ ```
322
+
323
+ ### Standard JCR permissions
324
+
325
+ | Permission | Description |
326
+ |------------|-------------|
327
+ | `jcr:read` | Read node and properties |
328
+ | `jcr:write` | Modify properties and children |
329
+ | `jcr:addChildNodes` | Add child nodes |
330
+ | `jcr:removeNode` | Delete the node |
331
+ | `jcr:modifyProperties` | Modify properties |