@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,136 @@
1
+ ---
2
+ name: jahia
3
+ description: Top-level entry point for ALL Jahia tasks. Detects whether the request is about building a module (dev) or managing content (CMS), and delegates to the right skill or combination. Start here if unsure which Jahia skill to use.
4
+ allowed-tools: Bash, Read
5
+ ---
6
+
7
+ # Jahia — Universal Entry Point
8
+
9
+ You are the top-level GPS for all Jahia work. Your job is to understand what the user wants to accomplish, then delegate to the right skill(s) — `/jahia-dev`, `/jahia-content`, or both in sequence.
10
+
11
+ ---
12
+
13
+ ## Step 1 — Classify the request
14
+
15
+ Read the user's request and classify it using the table below. A task can span multiple categories.
16
+
17
+ | Category | Keywords / intent | Skill |
18
+ |----------|-------------------|-------|
19
+ | **Module development** | create module, scaffold, content type, CND, view, React, TSX, page template, CSS, build, deploy, compile | `/jahia-dev` |
20
+ | **Personalization / analytics** | jExperience, jCustomer, window.wem, visitor events, Kibana dashboard, personalization, DXP | `/jahia-dev-jexperience` |
21
+ | **Content management** | create content, add article, populate, move, reorganize, publish, query what's in the CMS | `/jahia-content` |
22
+ | **OSGi / back-office** | Java bundle, OSGi service, jcontent action, admin panel, toolbar button, Webpack, Module Federation | `/jahia-dev-osgi-module` or `/jahia-dev-ui-extension` |
23
+ | **E2E testing** | Cypress, test spec, edit mode, component interaction, publish workflow | `/jahia-dev-cypress` |
24
+ | **Java module reference** | OSGi DS, CND definitions, JSP rendering, Drools rules, JCR SQL2, Content Editor JSON, component registry | `/jahia-dev-java` |
25
+ | **API reference** | GraphQL schema, JCR Java/REST API, OAuth/SAML auth, personal tokens, HTML filtering, CSP, security scopes | `/jahia-dev-apis` |
26
+ | **Operations / DevOps** | Docker Compose, Kubernetes, health endpoints, logs, Karaf, provisioning YAML scripts | `/jahia-dev-ops` |
27
+ | **Configuration reference** | jahia.properties keys, cluster setup, operating mode, auth settings, JCR/search tuning | `/jahia-dev-properties` |
28
+ | **Both** | build a component AND fill it with content, design a section AND add pages to it, set up a site end-to-end | Run `/jahia-dev` first, then `/jahia-content` |
29
+
30
+ If the request is ambiguous, ask one clarifying question:
31
+ > "Are you building or changing **code** (module, views, templates) — or managing **content** (articles, pages, folders) inside a running Jahia site?"
32
+
33
+ ---
34
+
35
+ ## Step 2 — Run the right GPS(es)
36
+
37
+ ### Dev only → invoke `/jahia-dev`
38
+ `/jahia-dev` will detect the project state and route to the correct dev sub-skill.
39
+
40
+ ### CMS only → invoke `/jahia-content`
41
+ `/jahia-content` will check the live site and route to the right content management sub-skill.
42
+
43
+ ### Both → run in order
44
+
45
+ When a task requires code changes **and** content changes, always execute in this order:
46
+
47
+ ```
48
+ 1. /jahia-dev ← build/update the module code
49
+ 2. yarn build && yarn jahia-deploy ← push the updated module to Jahia (never use yarn dev)
50
+ 3. /jahia-content ← populate or reorganize content
51
+ ```
52
+
53
+ Rationale: content types must exist in the CMS before you can create nodes of those types.
54
+
55
+ ---
56
+
57
+ ## Step 3 — Common compound workflows
58
+
59
+ Use these recipes as starting points when the task maps to a known pattern.
60
+
61
+ ### "Build a new section on the site"
62
+ ```
63
+ 1. /jahia-dev-build-component → define the content type + create the view
64
+ 2. /jahia-dev-create-page-template → (if a new page layout is needed)
65
+ 3. /jahia-content-create-content → populate the section with real or dummy content
66
+ 4. /jahia-content-move-content → (if existing content needs to be reorganized)
67
+ ```
68
+
69
+ ### "Add an article to the site"
70
+ ```
71
+ 1. Check the CND — does the article content type exist?
72
+ → Yes: jump to step 2
73
+ → No: /jahia-dev-define-content-type + /jahia-dev-create-view first
74
+ 2. /jahia-content-create-content → create the article node + set properties + publish
75
+ ```
76
+
77
+ ### "Redesign the layout of a page"
78
+ ```
79
+ 1. /jahia-dev-screenshot → capture current state for before/after comparison
80
+ 2. /jahia-dev-create-view → update the view / CSS
81
+ 3. yarn build && yarn jahia-deploy → push changes (never use yarn dev)
82
+ 4. /jahia-dev-screenshot → validate the result
83
+ ```
84
+
85
+ ### "Set up a new site from scratch"
86
+ ```
87
+ 1. /jahia-dev-create-template-set → scaffold the module
88
+ 2. /jahia-dev-start-local → start Jahia locally
89
+ 3. /jahia-dev-build-component → build content types + views (repeat per component)
90
+ 4. /jahia-dev-create-page-template → create page templates
91
+ 5. /jahia-content-create-content → populate with articles, pages, folders
92
+ 6. /jahia-dev-review → catch issues before shipping
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Step 4 — Print the full skill map
98
+
99
+ Always print this at the end so the user can jump anywhere:
100
+
101
+ ```
102
+ ## All Jahia Skills
103
+
104
+ ### 🏗 Development (/jahia-dev and sub-skills)
105
+ /jahia-dev Detect project state, guide to next step ← start here
106
+ /jahia-dev-create-template-set Scaffold a new JS/React Jahia module
107
+ /jahia-dev-start-local Start Jahia locally (Docker or bare metal)
108
+ /jahia-dev-build-component Build a complete component (CND + view) ← shortcut
109
+ /jahia-dev-define-content-type Define a CND content type + types.ts
110
+ /jahia-dev-create-view Implement a React view (.server.tsx + CSS Module)
111
+ /jahia-dev-create-page-template Create a page template with Areas
112
+ /jahia-dev-query-content Write JCR-SQL2 / useJCRQuery for content listings
113
+ /jahia-dev-review Code review: 8 critical checks, 9 warnings, 10 suggestions
114
+ /jahia-dev-screenshot Screenshot reference + local render for visual comparison
115
+ /jahia-dev-debug Debug build/deploy/runtime errors end-to-end
116
+ /jahia-dev-cypress Write Cypress E2E tests for Jahia components
117
+ /jahia-dev-import-from Implement a component inspired by one on an external URL
118
+ /jahia-dev-jexperience jExperience + jCustomer: push events, Kibana dashboards, local DXP stack
119
+
120
+ ### ⚙️ OSGi / Back-office extensions
121
+ /jahia-dev-osgi-module Build or configure an OSGi Java bundle module
122
+ /jahia-dev-ui-extension Extend jcontent back-office with React 18/Webpack actions or panels
123
+
124
+ ### 📝 Content Management (/jahia-content and sub-skills)
125
+ /jahia-content Detect site state, route to content operations ← start here
126
+ /jahia-content-explore-structure Map content types, properties, enums & mixins on an unknown site
127
+ /jahia-content-query-content Query and audit content via GraphQL
128
+ /jahia-content-create-content Create nodes, folders, articles, bulk-populate
129
+ /jahia-content-move-content Restructure the content tree: move, rename, reorder
130
+ ### 📚 Knowledge Reference
131
+ /jahia-dev-java OSGi DS, CND definitions, JSP rendering, Drools rules, Content Editor/jContent UI
132
+ /jahia-dev-apis GraphQL, JCR Java/REST API, OAuth/SAML, personal tokens, HTML filtering, CSP
133
+ /jahia-dev-ops Docker Compose, Kubernetes, health monitoring, Karaf, provisioning YAML API
134
+ /jahia-dev-properties jahia.properties and OSGi .cfg configuration keys reference
135
+ ```
136
+
@@ -0,0 +1,139 @@
1
+ ---
2
+ name: jahia-content
3
+ description: Entry point for managing content on a running Jahia website via the GraphQL API. Detects the current site state and routes to the right sub-skill. Use for any task involving creating, querying, moving, updating, or publishing JCR content.
4
+ ---
5
+
6
+ # Jahia Content — Content Management GPS
7
+
8
+ You are the entry point for managing content on a live Jahia instance. Your job is to understand what the user needs, assess the current site state, and route to the right sub-skill.
9
+
10
+ ---
11
+
12
+ ## Step 1 — Verify Jahia is reachable
13
+
14
+ ```bash
15
+ curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/cms/login
16
+ ```
17
+
18
+ - `200` → Jahia is running ✅
19
+ - Anything else → Jahia is not running. Tell the user: **"Please start Jahia first (use `/jahia-dev-start-local` if needed)."**
20
+
21
+ ---
22
+
23
+ ## Step 2 — Detect site state
24
+
25
+ Run both checks in parallel to understand what's currently in the CMS:
26
+
27
+ ### A. List available sites
28
+ ```bash
29
+ curl -s -u root:root1234 \
30
+ -H "Content-Type: application/json" \
31
+ -H "Origin: http://localhost:8080" \
32
+ -X POST http://localhost:8080/modules/graphql \
33
+ -d '{"query":"{ jcr { nodeByPath(path: \"/sites\") { children { nodes { name } } } } }"}'
34
+ ```
35
+
36
+ ### B. List top-level content folders
37
+ ```bash
38
+ curl -s -u root:root1234 \
39
+ -H "Content-Type: application/json" \
40
+ -H "Origin: http://localhost:8080" \
41
+ -X POST http://localhost:8080/modules/graphql \
42
+ -d '{"query":"{ jcr { nodeByPath(path: \"/sites/mySite/contents\") { children { nodes { name primaryNodeType { name } } } } } }"}'
43
+ ```
44
+
45
+ > Replace `mySite` with the actual site key if different.
46
+
47
+ ---
48
+
49
+ ## Step 3 — Report site state
50
+
51
+ ```
52
+ 🌐 Jahia: ✅ running at http://localhost:8080
53
+ 📁 Sites: <list site keys>
54
+ 📂 Content root: <list folder names under /contents>
55
+ ```
56
+
57
+ ---
58
+
59
+ ## Step 4 — Route to the right sub-skill
60
+
61
+ Use the task description to pick the right skill(s):
62
+
63
+ | What the user wants to do | Skill |
64
+ |---------------------------|-------|
65
+ | Explore an unknown site's content types, property names, enum values, mixins | **`/jahia-content-explore-structure`** |
66
+ | Find out what content exists, audit the tree, run a search | **`/jahia-content-query-content`** |
67
+ | Create pages, articles, tutorials, folders, populate a site | **`/jahia-content-create-content`** |
68
+ | Move, rename, restructure content into sub-folders | **`/jahia-content-move-content`** |
69
+ | Translate existing content to another language | **`/jahia-content-translate-content`** |
70
+ | Publish content to the live site | Use `publish` mutation (see below) |
71
+ | Delete content | Use `deleteNode` mutation (see below) |
72
+ | Do several of the above in sequence | Run the skills in order — start with **explore-structure** if site is unfamiliar, then create or move |
73
+
74
+ ---
75
+
76
+ ## Step 5 — Direct patterns for one-off operations
77
+
78
+ Use these when the task is simple enough to not need a full sub-skill.
79
+
80
+ ### Publish a node (and all its children)
81
+ ```bash
82
+ curl -s -u root:root1234 \
83
+ -H "Content-Type: application/json" \
84
+ -H "Origin: http://localhost:8080" \
85
+ -X POST http://localhost:8080/modules/graphql \
86
+ -d '{"query":"mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles\") { publish(languages: [\"en\"]) } } }"}'
87
+ ```
88
+
89
+ ### Publish all content at once
90
+ ```bash
91
+ curl -s -u root:root1234 \
92
+ -H "Content-Type: application/json" \
93
+ -H "Origin: http://localhost:8080" \
94
+ -X POST http://localhost:8080/modules/graphql \
95
+ -d '{"query":"mutation { jcr { mutateNodesByQuery(query: \"SELECT * FROM [jnt:content] WHERE ISDESCENDANTNODE(\u0027/sites/mySite/contents\u0027)\", queryLanguage: SQL2) { publish(languages: [\"en\"]) } } }"}'
96
+ ```
97
+
98
+ ### Delete a node
99
+ ```bash
100
+ curl -s -u root:root1234 \
101
+ -H "Content-Type: application/json" \
102
+ -H "Origin: http://localhost:8080" \
103
+ -X POST http://localhost:8080/modules/graphql \
104
+ -d '{"query":"mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles/old-article\") { delete } } }"}'
105
+ ```
106
+
107
+ ### Update a property on an existing node
108
+ ```bash
109
+ curl -s -u root:root1234 \
110
+ -H "Content-Type: application/json" \
111
+ -H "Origin: http://localhost:8080" \
112
+ -X POST http://localhost:8080/modules/graphql \
113
+ -d '{"query":"mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles/my-article\") { mutateProperty(name: \"jcr:title\") { setValue(language: \"en\", value: \"Updated Title\") } } } }"}'
114
+ ```
115
+
116
+ ---
117
+
118
+ ## Step 6 — Print the full CMS skill map
119
+
120
+ Always print this at the end so the user can navigate anywhere:
121
+
122
+ ```
123
+ ## Jahia Content Skills
124
+
125
+ /jahia-content-explore-structure Map content types, properties, enums, mixins on an unknown site ← start here
126
+ /jahia-content-query-content List, inspect, and search content via GraphQL
127
+ /jahia-content-create-content Create nodes, folders, articles, and bulk-populate a site
128
+ /jahia-content-move-content Restructure the content tree: move, rename, reorder nodes
129
+ /jahia-content-translate-content Translate existing nodes to a new language and publish
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Critical rules (always enforce)
135
+
136
+ - Always include `-H "Origin: http://localhost:8080"` in every curl — omitting it causes `Permission denied`
137
+ - Always use `language: "en"` (or the site's language) for `i18n` properties (`jcr:title` on folders with `mix:title`, richtext body, etc.)
138
+ - Always publish after creating or moving content — JCR writes to the **default workspace** only; live visitors see the **live workspace**
139
+ - Mandatory fields (e.g. `body`) must be set **before** other properties on the same node in a new locale
@@ -0,0 +1,384 @@
1
+ ---
2
+ name: jahia-content-create-content
3
+ description: Creates and publishes JCR content nodes in a running Jahia instance via the GraphQL API. Use when asked to populate a site with content, create articles, tutorials, or any JCR node programmatically.
4
+ ---
5
+
6
+ # Skill: jahia-content-create-content
7
+
8
+ Creates content nodes in a running Jahia instance using the GraphQL JCR mutation API, then publishes them.
9
+
10
+ ---
11
+
12
+ ## Prerequisites
13
+
14
+ - Jahia running at `http://localhost:8080`
15
+ - Credentials: `root` / `root1234` (default)
16
+ - GraphQL endpoint: `http://localhost:8080/modules/graphql`
17
+
18
+ **Auth pattern — always use both flags:**
19
+ ```bash
20
+ curl -u root:root1234 \
21
+ -H "Content-Type: application/json" \
22
+ -H "Origin: http://localhost:8080" \
23
+ ...
24
+ ```
25
+
26
+ > ⚠️ The `Origin: http://localhost:8080` header is **required**. Requests without it return `Permission denied` even with correct credentials.
27
+
28
+ ---
29
+
30
+ ## ⚡ Minimum-call workflow
31
+
32
+ Use these patterns to minimise the number of API round-trips:
33
+
34
+ ### 1. Batch site exploration — one call instead of four
35
+
36
+ Use GraphQL aliases to retrieve site metadata, page structure, files, and available content types in a **single request**:
37
+
38
+ ```bash
39
+ curl -s -u root:root1234 \
40
+ -H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
41
+ -X POST http://localhost:8080/modules/graphql \
42
+ -d '{"query":"{ jcr { site: nodeByPath(path: \"/sites/SITE_KEY\") { properties(names: [\"j:templatesSet\",\"j:defaultLanguage\"]) { name value } } home: nodeByPath(path: \"/sites/SITE_KEY/home\") { children { nodes { name primaryNodeType { name } children { nodes { name primaryNodeType { name } } } } } } files: nodeByPath(path: \"/sites/SITE_KEY/files\") { children { nodes { name uuid } } } contentTypes: nodeTypes(filter: {siteKey: \"SITE_KEY\", includeMixins: false, includeAbstract: false}) { nodes { name systemId } } } }"}'
43
+ ```
44
+
45
+ Then fetch all needed type definitions in one more call using `nodeTypesByNames` (see `/jahia-content-explore-structure`).
46
+
47
+ ### 2. Upload images in parallel
48
+
49
+ Run all uploads simultaneously using background processes:
50
+
51
+ ```bash
52
+ for f in /path/to/img1.jpg /path/to/img2.jpg /path/to/img3.jpg; do
53
+ name=$(basename "$f")
54
+ curl -s -u root:root1234 \
55
+ -H "Origin: http://localhost:8080" \
56
+ -X POST http://localhost:8080/modules/graphql \
57
+ -F "operations={\"query\":\"mutation { jcr { addNode(name: \\\"${name}\\\", parentPathOrId: \\\"/sites/SITE_KEY/files\\\", primaryNodeType: \\\"jnt:file\\\", mixins: [\\\"jmix:image\\\"]) { addChild(name: \\\"jcr:content\\\", primaryNodeType: \\\"jnt:resource\\\") { content: mutateProperty(name: \\\"jcr:data\\\") { setValue(type: BINARY, value: \\\"fc\\\") } contentType: mutateProperty(name: \\\"jcr:mimeType\\\") { setValue(value: \\\"image/jpeg\\\") } } uuid } } }\"}" \
58
+ -F 'map={"fc":["variables.f"]}' \
59
+ -F "fc=@${f};type=image/jpeg" &
60
+ done
61
+ wait # all uploads complete in parallel
62
+ ```
63
+
64
+ > ⚠️ Always include `mixins: ["jmix:image"]` in the upload. Without it, the file node **cannot be used as a WEAKREFERENCE** in image properties.
65
+
66
+ To collect UUIDs after parallel uploads, query them in one batch:
67
+ ```bash
68
+ curl -s -u root:root1234 -H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
69
+ -X POST http://localhost:8080/modules/graphql \
70
+ -d '{"query":"{ jcr { nodesByQuery(query: \"SELECT * FROM [jnt:file] WHERE ISDESCENDANTNODE(\u0027/sites/SITE_KEY/files/FOLDER\u0027)\", queryLanguage: SQL2) { nodes { name uuid } } } }"}'
71
+ ```
72
+
73
+ ### 3. Create an entire content tree in one mutation
74
+
75
+ Use nested `addChild` calls inside a single `addNode` mutation to build a complete page hierarchy without sequential round-trips:
76
+
77
+ ```bash
78
+ curl -s -u root:root1234 -H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
79
+ -X POST http://localhost:8080/modules/graphql \
80
+ -d '{"query":"mutation { jcr { addNode(parentPathOrId: \"/sites/SITE_KEY/home\", name: \"my-page\", primaryNodeType: \"jnt:page\", properties: [{name: \"j:templateName\", value: \"TEMPLATE\"}, {name: \"jcr:title\", value: \"Page Title\", language: \"en\"}]) { uuid addChild(name: \"AREA_NAME\", primaryNodeType: \"AREA_TYPE\") { addChild(name: \"section-1\", primaryNodeType: \"NAMESPACE:section\", properties: [{name: \"jcr:title\", value: \"Section 1\", language: \"en\"}]) { uuid addChild(name: \"item-1\", primaryNodeType: \"NAMESPACE:item\", properties: [{name: \"jcr:title\", value: \"Item 1\", language: \"en\"}, {name: \"body\", value: \"<p>Content</p>\", language: \"en\"}]) { uuid } } } } } }"}'
81
+ ```
82
+
83
+ > This creates the full `page → area → section → item` hierarchy atomically.
84
+
85
+ ### 4. Publish the entire page in one call
86
+
87
+ ```bash
88
+ curl -s -u root:root1234 -H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
89
+ -X POST http://localhost:8080/modules/graphql \
90
+ -d '{"query":"mutation { jcr { mutateNode(pathOrId: \"/sites/SITE_KEY/home/my-page\") { publish(languages: [\"en\"]) } } }"}'
91
+ ```
92
+
93
+ ---
94
+
95
+ ## Uploading image files
96
+
97
+ Use the GraphQL API with a **multipart request** to upload files.
98
+
99
+ > ⚠️ Do **not** use `Content-Type: application/json` for uploads — use multipart form-data.
100
+ > Do **not** use `type: BINARY` inside the `properties: [...]` array of `addNode` or `addChild` — it won't work. Always use the separate `mutateProperty.setValue` step.
101
+
102
+ ### Upload a single file
103
+
104
+ > ⚠️ Always include `mixins: ["jmix:image"]` when uploading images. Without this mixin, the file node **cannot be used as a WEAKREFERENCE** in image properties — you will get a constraint error.
105
+
106
+ ```bash
107
+ curl -s -u root:root1234 \
108
+ -H "Origin: http://localhost:8080" \
109
+ -X POST http://localhost:8080/modules/graphql \
110
+ -F 'operations={"query":"mutation { jcr { addNode(name: \"image.jpg\", parentPathOrId: \"/sites/SITE_KEY/files\", primaryNodeType: \"jnt:file\", mixins: [\"jmix:image\"]) { addChild(name: \"jcr:content\", primaryNodeType: \"jnt:resource\") { content: mutateProperty(name: \"jcr:data\") { setValue(type: BINARY, value: \"fc\") } contentType: mutateProperty(name: \"jcr:mimeType\") { setValue(value: \"image/jpeg\") } } uuid } } }"}' \
111
+ -F 'map={"fc":["variables.f"]}' \
112
+ -F "fc=@/absolute/path/to/image.jpg;type=image/jpeg"
113
+ ```
114
+
115
+ The response contains the UUID:
116
+ ```json
117
+ {"data":{"jcr":{"addNode":{"addChild":{"content":{"setValue":true},"contentType":{"setValue":true}},"uuid":"xxxxxxxx-..."}}}}
118
+ ```
119
+
120
+ ### Use a file UUID as an image property
121
+
122
+ Image properties in CND have `requiredType: WEAKREFERENCE`. Pass the UUID with `type: WEAKREFERENCE`:
123
+
124
+ ```graphql
125
+ properties: [
126
+ {name: "image", value: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", type: WEAKREFERENCE}
127
+ ]
128
+ ```
129
+
130
+ > After uploading, publish the files folder so images are accessible on the live site:
131
+ > ```bash
132
+ > curl -s -u root:root1234 -H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
133
+ > -X POST http://localhost:8080/modules/graphql \
134
+ > -d '{"query":"mutation { jcr { mutateNode(pathOrId: \"/sites/SITE_KEY/files\") { publish(languages: [\"en\"]) } } }"}'
135
+ > ```
136
+
137
+ ---
138
+
139
+ ## Creating pages (jnt:page) — Area structure is mandatory
140
+
141
+ > ⚠️ If your task involves creating a **page**, read this section first.
142
+
143
+ In Jahia, a `jnt:page` uses a template that declares named **Areas**. Content added as **direct children of the page node** is silently ignored by the renderer — it will never appear on the page.
144
+
145
+ Content must be created as children of the **Area sub-node** (e.g. `/sites/mySite/home/my-page/AREA_NAME/hero`).
146
+
147
+ ### Step A — Discover the correct Area structure from an existing page
148
+
149
+ Pick any working sibling page and inspect its children:
150
+
151
+ ```bash
152
+ curl -s -u root:root1234 \
153
+ -H "Content-Type: application/json" \
154
+ -H "Origin: http://localhost:8080" \
155
+ -X POST http://localhost:8080/modules/graphql \
156
+ -d '{"query":"{ jcr { nodeByPath(path: \"/sites/SITE_KEY/home\") { children { nodes { name primaryNodeType { name } children { nodes { name primaryNodeType { name } } } } } } } }"}'
157
+ ```
158
+
159
+ Look for a child node that is a content list or area type (e.g. `jnt:contentList`, `jnt:area`, or a custom area type). Note its **name** — that is your Area node name.
160
+
161
+ ### Step B — Check the page template
162
+
163
+ ```bash
164
+ curl -s -u root:root1234 \
165
+ -H "Content-Type: application/json" \
166
+ -H "Origin: http://localhost:8080" \
167
+ -X POST http://localhost:8080/modules/graphql \
168
+ -d '{"query":"{ jcr { nodeByPath(path: \"/sites/SITE_KEY/home/EXISTING_PAGE\") { properties(names: [\"j:templateName\"]) { name value } } } }"}'
169
+ ```
170
+
171
+ Use this exact template name for your new page.
172
+
173
+ ### Step C — Create the page, then add content inside the Area
174
+
175
+ ```bash
176
+ # 1. Create the page
177
+ curl -s -u root:root1234 -H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
178
+ -X POST http://localhost:8080/modules/graphql \
179
+ -d '{"query":"mutation { jcr { addNode(parentPathOrId: \"/sites/SITE_KEY/home\", name: \"my-page\", primaryNodeType: \"jnt:page\", properties: [{name: \"jcr:title\", value: \"My Page\", language: \"en\"}, {name: \"j:templateName\", value: \"TEMPLATE_NAME\"}]) { uuid node { path } } } }"}'
180
+
181
+ # 2. Create the Area sub-node (same type and name as the sibling page's area)
182
+ curl -s -u root:root1234 -H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
183
+ -X POST http://localhost:8080/modules/graphql \
184
+ -d '{"query":"mutation { jcr { addNode(parentPathOrId: \"/sites/SITE_KEY/home/my-page\", name: \"AREA_NAME\", primaryNodeType: \"AREA_TYPE\") { uuid node { path } } } }"}'
185
+
186
+ # 3. Add content INSIDE the area (not on the page directly)
187
+ curl -s -u root:root1234 -H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
188
+ -X POST http://localhost:8080/modules/graphql \
189
+ -d '{"query":"mutation { jcr { addNode(parentPathOrId: \"/sites/SITE_KEY/home/my-page/AREA_NAME\", name: \"hero\", primaryNodeType: \"jnt:text\", properties: [{name: \"text\", value: \"<h1>Hello<\\/h1>\", language: \"en\"}]) { uuid node { path } } } }"}'
190
+ ```
191
+
192
+ ### Step D — Publish the page
193
+
194
+ ```bash
195
+ curl -s -u root:root1234 -H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
196
+ -X POST http://localhost:8080/modules/graphql \
197
+ -d '{"query":"mutation { jcr { mutateNode(pathOrId: \"/sites/SITE_KEY/home/my-page\") { publish(languages: [\"en\"]) } } }"}'
198
+ ```
199
+
200
+ ---
201
+
202
+ ## Step 1 — Identify target site and content folder
203
+
204
+ Standard content folder paths:
205
+ - `/sites/<siteKey>/contents/articles/` — for article nodes
206
+ - `/sites/<siteKey>/contents/tutorials/` — for tutorial nodes
207
+ - `/sites/<siteKey>/contents/` — for any other content folder
208
+
209
+ ---
210
+
211
+ ## Step 2 — Look up the content type's properties
212
+
213
+ > 💡 **If the site is unfamiliar**, use **`/jahia-content-explore-structure`** first.
214
+
215
+ ```bash
216
+ curl -s -u root:root1234 \
217
+ -H "Content-Type: application/json" \
218
+ -H "Origin: http://localhost:8080" \
219
+ -X POST http://localhost:8080/modules/graphql \
220
+ -d '{
221
+ "query": "{ jcr { nodeTypeByName(name: \"NAMESPACE:typeName\") { properties { name requiredType internationalized mandatory constraints } } } }"
222
+ }'
223
+ ```
224
+
225
+ ---
226
+
227
+ ## Step 3 — Create a node
228
+
229
+ ```bash
230
+ curl -s -u root:root1234 \
231
+ -H "Content-Type: application/json" \
232
+ -H "Origin: http://localhost:8080" \
233
+ -X POST http://localhost:8080/modules/graphql \
234
+ -d '{
235
+ "query": "mutation { jcr { addNode(parentPathOrId: \"/sites/mySite/contents/articles\", name: \"my-article\", primaryNodeType: \"namespace:docArticle\", properties: [{name: \"jcr:title\", value: \"My Article\", language: \"en\"}, {name: \"body\", value: \"<p>Content here</p>\", language: \"en\"}]) { uuid node { path } } } }"
236
+ }'
237
+ ```
238
+
239
+ ### Property rules
240
+
241
+ | Situation | GraphQL syntax |
242
+ |-----------|---------------|
243
+ | i18n property (declared `i18n` in CND) | `{name: "body", value: "...", language: "en"}` |
244
+ | Non-i18n property | `{name: "product", value: "jahia"}` |
245
+ | Title (from `mix:title`) | `{name: "jcr:title", value: "...", language: "en"}` |
246
+ | Date property | `{name: "updatedAt", value: "2024-01-15T00:00:00.000Z", type: DATE}` |
247
+ | Multiple values | `{name: "tags", values: ["a", "b"]}` |
248
+
249
+ ### Node name rules
250
+ - Use lowercase kebab-case: `my-article`, `getting-started`
251
+ - No spaces, no special characters
252
+ - Must be unique within the parent folder
253
+ - Use `useAvailableNodeName: true` to auto-suffix if name is taken
254
+
255
+ ---
256
+
257
+ ## Step 4 — Publish the node
258
+
259
+ ```bash
260
+ curl -s -u root:root1234 \
261
+ -H "Content-Type: application/json" \
262
+ -H "Origin: http://localhost:8080" \
263
+ -X POST http://localhost:8080/modules/graphql \
264
+ -d '{
265
+ "query": "mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles/my-article\") { publish(languages: [\"en\"]) } } }"
266
+ }'
267
+ ```
268
+
269
+ Expected response: `{"data": {"jcr": {"mutateNode": {"publish": true}}}}`
270
+
271
+ ---
272
+
273
+ ## Step 5 — Batch creation
274
+
275
+ To create multiple nodes efficiently, use `addNodesBatch`:
276
+
277
+ ```bash
278
+ curl -s -u root:root1234 \
279
+ -H "Content-Type: application/json" \
280
+ -H "Origin: http://localhost:8080" \
281
+ -X POST http://localhost:8080/modules/graphql \
282
+ -d '{
283
+ "query": "mutation { jcr { addNodesBatch(nodes: [{parentPathOrId: \"/sites/mySite/contents/articles\", name: \"article-1\", primaryNodeType: \"namespace:docArticle\", properties: [{name: \"jcr:title\", value: \"Article One\", language: \"en\"}, {name: \"body\", value: \"<p>Body 1</p>\", language: \"en\"}]}, {parentPathOrId: \"/sites/mySite/contents/articles\", name: \"article-2\", primaryNodeType: \"namespace:docArticle\", properties: [{name: \"jcr:title\", value: \"Article Two\", language: \"en\"}, {name: \"body\", value: \"<p>Body 2</p>\", language: \"en\"}]}]) { uuid node { path } } } }"
284
+ }'
285
+ ```
286
+
287
+ Then publish all at once using `mutateNodesByQuery`:
288
+
289
+ ```bash
290
+ curl -s -u root:root1234 \
291
+ -H "Content-Type: application/json" \
292
+ -H "Origin: http://localhost:8080" \
293
+ -X POST http://localhost:8080/modules/graphql \
294
+ -d '{
295
+ "query": "mutation { jcr { mutateNodesByQuery(query: \"SELECT * FROM [namespace:docArticle] WHERE ISDESCENDANTNODE(\u0027/sites/mySite/contents/articles\u0027)\", queryLanguage: SQL2) { publish(languages: [\"en\"]) } } }"
296
+ }'
297
+ ```
298
+
299
+ ---
300
+
301
+ ## Step 6 — Verify
302
+
303
+ ```bash
304
+ curl -s -u root:root1234 \
305
+ -H "Content-Type: application/json" \
306
+ -H "Origin: http://localhost:8080" \
307
+ -X POST http://localhost:8080/modules/graphql \
308
+ -d '{
309
+ "query": "{ jcr { nodesByQuery(query: \"SELECT * FROM [namespace:docArticle] WHERE ISDESCENDANTNODE(\u0027/sites/mySite/contents/articles\u0027)\", queryLanguage: SQL2) { nodes { name path properties(names: [\"jcr:title\"], language: \"en\") { name value } } } } }"
310
+ }'
311
+ ```
312
+
313
+ ---
314
+
315
+ ## Common errors
316
+
317
+ | Error | Cause | Fix |
318
+ |-------|-------|-----|
319
+ | `Permission denied` | Missing `Origin` header | Add `-H "Origin: http://localhost:8080"` |
320
+ | `Couldn't find definition for property X` | Wrong property name or non-i18n prop given with `language:` | Check CND definition; remove `language:` for non-i18n props |
321
+ | `ConstraintViolationException: mandatory property` | A mandatory CND property was not provided | Provide all mandatory properties |
322
+ | `ItemExistsException` | Node name already taken | Use `useAvailableNodeName: true` or choose a different name |
323
+ | WEAKREFERENCE image constraint error | Uploaded file missing `jmix:image` mixin | Always include `mixins: ["jmix:image"]` in the `addNode` upload mutation |
324
+ | `deletePropertiesBatch fails with missing required fields` | `language` is NON_NULL in `InputJCRDeletedProperty` — required even for non-i18n properties | Always provide `language: "en"` in every `deletePropertiesBatch` entry |
325
+
326
+ ---
327
+
328
+ ## Setting `j:linkType` links via GraphQL
329
+
330
+ > 🚫 **NEVER use `j:linkType: "external"` to link to an internal Jahia page.** Always use `"internal"` with `j:linknode`. Hardcoding an internal URL as an external link will break on environment changes, language switching, vanity URLs, and live/preview workspace toggling.
331
+
332
+ ### Internal link (`j:linkType: "internal"`)
333
+
334
+ `j:linknode` is an **internationalized** weakreference. Add the mixin first, then set the property with `language:`.
335
+
336
+ ```graphql
337
+ # Step 1 — add mixin + set j:linkType
338
+ mutation {
339
+ jcr {
340
+ mutateNode(pathOrId: "/sites/mySite/home/features/my-card") {
341
+ addMixins(mixins: ["jmix:internalLink"])
342
+ setPropertiesBatch(properties: [
343
+ {name: "j:linkType", value: "internal"}
344
+ ]) { path }
345
+ }
346
+ }
347
+ }
348
+
349
+ # Step 2 — set j:linknode (i18n weakreference — must include language)
350
+ mutation {
351
+ jcr {
352
+ mutateNode(pathOrId: "/sites/mySite/home/features/my-card") {
353
+ mutateProperty(name: "j:linknode") {
354
+ setValue(value: "<target-node-uuid>", language: "en", type: WEAKREFERENCE)
355
+ }
356
+ }
357
+ }
358
+ }
359
+ ```
360
+
361
+ ### External link (`j:linkType: "external"`)
362
+
363
+ ```graphql
364
+ mutation {
365
+ jcr {
366
+ mutateNode(pathOrId: "/sites/mySite/home/features/my-card") {
367
+ addMixins(mixins: ["jmix:externalLink"])
368
+ setPropertiesBatch(properties: [
369
+ {name: "j:linkType", value: "external"}
370
+ {name: "j:url", value: "https://example.com", language: "en"}
371
+ {name: "j:linkTitle", value: "Visit Example", language: "en"}
372
+ ]) { path }
373
+ }
374
+ }
375
+ }
376
+ ```
377
+
378
+ ---
379
+
380
+ ## References
381
+
382
+ - Jahia GraphQL API playground: `http://localhost:8080/modules/graphql` (GET in browser, POST for queries)
383
+ - JCR mutation docs: https://academy.jahia.com/documentation/developer/jahia/8/api-documentation/graphql-api
384
+ - Native Jahia node types (CND source): https://github.com/Jahia/jahia/tree/master/war/src/main/webapp/WEB-INF/etc/repository/nodetypes