@jahia/agentic 0.2.0 → 0.4.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 (238) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +28 -0
  3. package/dist/claude/.claude/agents/cnd-child-nodes.md +74 -0
  4. package/dist/claude/.claude/agents/cnd-jahia-mixins.md +113 -0
  5. package/dist/claude/.claude/agents/cnd-numbers-dates.md +61 -0
  6. package/dist/claude/.claude/agents/cnd-string-selectors.md +94 -0
  7. package/dist/claude/.claude/agents/jahia-cnd-author.md +130 -0
  8. package/dist/claude/.claude/agents/jahia-dev-worker.md +264 -0
  9. package/dist/claude/.claude/agents/jahia-reviewer.md +105 -0
  10. package/dist/claude/.claude/rules/jahia.md +15 -6
  11. package/dist/claude/.claude/skills/jahia/SKILL.md +23 -11
  12. package/dist/claude/.claude/skills/jahia-content/SKILL.md +102 -84
  13. package/dist/claude/.claude/skills/jahia-content-create-content/SKILL.md +255 -280
  14. package/dist/claude/.claude/skills/jahia-content-explore-structure/SKILL.md +187 -96
  15. package/dist/claude/.claude/skills/jahia-content-media-upload/SKILL.md +197 -0
  16. package/dist/claude/.claude/skills/jahia-content-move-content/SKILL.md +160 -165
  17. package/dist/claude/.claude/skills/jahia-content-organize/SKILL.md +209 -0
  18. package/dist/claude/.claude/skills/jahia-content-publish/SKILL.md +181 -0
  19. package/dist/claude/.claude/skills/jahia-content-query-content/SKILL.md +122 -92
  20. package/dist/claude/.claude/skills/jahia-content-translate-content/SKILL.md +154 -225
  21. package/dist/claude/.claude/skills/jahia-dev-accessibility/SKILL.md +3 -3
  22. package/dist/claude/.claude/skills/jahia-dev-build-component/SKILL.md +10 -7
  23. package/dist/claude/.claude/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  24. package/dist/claude/.claude/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  25. package/dist/claude/.claude/skills/jahia-dev-create-view/SKILL.md +3 -3
  26. package/dist/claude/.claude/skills/jahia-dev-cypress/SKILL.md +150 -330
  27. package/dist/claude/.claude/skills/jahia-dev-define-content-type/SKILL.md +43 -486
  28. package/dist/claude/.claude/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
  29. package/dist/claude/.claude/skills/jahia-dev-query-content/SKILL.md +93 -296
  30. package/dist/claude/.claude/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  31. package/dist/claude/.claude/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  32. package/dist/claude/.claude/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  33. package/dist/claude/.claude/skills/jahia-dev-site-review/SKILL.md +70 -0
  34. package/dist/claude/.claude/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  35. package/dist/claude/.claude/skills/jahia-dev-start-local/SKILL.md +18 -26
  36. package/dist/claude/.claude/skills/jahia-jcr-sql2/SKILL.md +258 -0
  37. package/dist/claude/.claude/skills/jahia-orchestrate/SKILL.md +148 -0
  38. package/dist/claude/.claude/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
  39. package/dist/claude/CLAUDE.md +16 -13
  40. package/dist/codex/.agents/skills/jahia/SKILL.md +23 -11
  41. package/dist/codex/.agents/skills/jahia-content/SKILL.md +102 -84
  42. package/dist/codex/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
  43. package/dist/codex/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
  44. package/dist/codex/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
  45. package/dist/codex/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
  46. package/dist/codex/.agents/skills/jahia-content-organize/SKILL.md +209 -0
  47. package/dist/codex/.agents/skills/jahia-content-publish/SKILL.md +181 -0
  48. package/dist/codex/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
  49. package/dist/codex/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
  50. package/dist/codex/.agents/skills/jahia-dev-accessibility/SKILL.md +3 -3
  51. package/dist/codex/.agents/skills/jahia-dev-build-component/SKILL.md +10 -7
  52. package/dist/codex/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  53. package/dist/codex/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  54. package/dist/codex/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
  55. package/dist/codex/.agents/skills/jahia-dev-cypress/SKILL.md +150 -330
  56. package/dist/codex/.agents/skills/jahia-dev-define-content-type/SKILL.md +43 -486
  57. package/dist/codex/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
  58. package/dist/codex/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
  59. package/dist/codex/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  60. package/dist/codex/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  61. package/dist/codex/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  62. package/dist/codex/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  63. package/dist/codex/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  64. package/dist/codex/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
  65. package/dist/codex/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  66. package/dist/codex/.agents/skills/jahia-orchestrate/SKILL.md +148 -0
  67. package/dist/codex/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
  68. package/dist/codex/.codex/agents/cnd-child-nodes.toml +3 -0
  69. package/dist/codex/.codex/agents/cnd-jahia-mixins.toml +3 -0
  70. package/dist/codex/.codex/agents/cnd-numbers-dates.toml +3 -0
  71. package/dist/codex/.codex/agents/cnd-string-selectors.toml +3 -0
  72. package/dist/codex/.codex/agents/jahia-cnd-author.toml +3 -0
  73. package/dist/codex/.codex/agents/jahia-dev-worker.toml +3 -0
  74. package/dist/codex/.codex/agents/jahia-reviewer.toml +3 -0
  75. package/dist/codex/AGENTS.md +17 -10
  76. package/dist/copilot/.agents/skills/jahia/SKILL.md +23 -11
  77. package/dist/copilot/.agents/skills/jahia-content/SKILL.md +102 -84
  78. package/dist/copilot/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
  79. package/dist/copilot/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
  80. package/dist/copilot/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
  81. package/dist/copilot/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
  82. package/dist/copilot/.agents/skills/jahia-content-organize/SKILL.md +209 -0
  83. package/dist/copilot/.agents/skills/jahia-content-publish/SKILL.md +181 -0
  84. package/dist/copilot/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
  85. package/dist/copilot/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
  86. package/dist/copilot/.agents/skills/jahia-dev-accessibility/SKILL.md +3 -3
  87. package/dist/copilot/.agents/skills/jahia-dev-build-component/SKILL.md +10 -7
  88. package/dist/copilot/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  89. package/dist/copilot/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  90. package/dist/copilot/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
  91. package/dist/copilot/.agents/skills/jahia-dev-cypress/SKILL.md +150 -330
  92. package/dist/copilot/.agents/skills/jahia-dev-define-content-type/SKILL.md +43 -486
  93. package/dist/copilot/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
  94. package/dist/copilot/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
  95. package/dist/copilot/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  96. package/dist/copilot/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  97. package/dist/copilot/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  98. package/dist/copilot/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  99. package/dist/copilot/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  100. package/dist/copilot/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
  101. package/dist/copilot/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  102. package/dist/copilot/.agents/skills/jahia-orchestrate/SKILL.md +148 -0
  103. package/dist/copilot/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
  104. package/dist/copilot/AGENTS.md +17 -10
  105. package/dist/cursor/.agents/skills/jahia/SKILL.md +23 -11
  106. package/dist/cursor/.agents/skills/jahia-content/SKILL.md +102 -84
  107. package/dist/cursor/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
  108. package/dist/cursor/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
  109. package/dist/cursor/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
  110. package/dist/cursor/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
  111. package/dist/cursor/.agents/skills/jahia-content-organize/SKILL.md +209 -0
  112. package/dist/cursor/.agents/skills/jahia-content-publish/SKILL.md +181 -0
  113. package/dist/cursor/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
  114. package/dist/cursor/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
  115. package/dist/cursor/.agents/skills/jahia-dev-accessibility/SKILL.md +3 -3
  116. package/dist/cursor/.agents/skills/jahia-dev-build-component/SKILL.md +10 -7
  117. package/dist/cursor/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  118. package/dist/cursor/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  119. package/dist/cursor/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
  120. package/dist/cursor/.agents/skills/jahia-dev-cypress/SKILL.md +150 -330
  121. package/dist/cursor/.agents/skills/jahia-dev-define-content-type/SKILL.md +43 -486
  122. package/dist/cursor/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
  123. package/dist/cursor/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
  124. package/dist/cursor/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  125. package/dist/cursor/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  126. package/dist/cursor/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  127. package/dist/cursor/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  128. package/dist/cursor/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  129. package/dist/cursor/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
  130. package/dist/cursor/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  131. package/dist/cursor/.agents/skills/jahia-orchestrate/SKILL.md +148 -0
  132. package/dist/cursor/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
  133. package/dist/cursor/.cursor/agents/cnd-child-nodes.md +74 -0
  134. package/dist/cursor/.cursor/agents/cnd-jahia-mixins.md +113 -0
  135. package/dist/cursor/.cursor/agents/cnd-numbers-dates.md +61 -0
  136. package/dist/cursor/.cursor/agents/cnd-string-selectors.md +94 -0
  137. package/dist/cursor/.cursor/agents/jahia-cnd-author.md +130 -0
  138. package/dist/cursor/.cursor/agents/jahia-dev-worker.md +264 -0
  139. package/dist/cursor/.cursor/agents/jahia-reviewer.md +105 -0
  140. package/dist/cursor/.cursor/rules/jahia.mdc +15 -6
  141. package/dist/gemini/.agents/skills/jahia/SKILL.md +23 -11
  142. package/dist/gemini/.agents/skills/jahia-content/SKILL.md +102 -84
  143. package/dist/gemini/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
  144. package/dist/gemini/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
  145. package/dist/gemini/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
  146. package/dist/gemini/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
  147. package/dist/gemini/.agents/skills/jahia-content-organize/SKILL.md +209 -0
  148. package/dist/gemini/.agents/skills/jahia-content-publish/SKILL.md +181 -0
  149. package/dist/gemini/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
  150. package/dist/gemini/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
  151. package/dist/gemini/.agents/skills/jahia-dev-accessibility/SKILL.md +3 -3
  152. package/dist/gemini/.agents/skills/jahia-dev-build-component/SKILL.md +10 -7
  153. package/dist/gemini/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  154. package/dist/gemini/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  155. package/dist/gemini/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
  156. package/dist/gemini/.agents/skills/jahia-dev-cypress/SKILL.md +150 -330
  157. package/dist/gemini/.agents/skills/jahia-dev-define-content-type/SKILL.md +43 -486
  158. package/dist/gemini/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
  159. package/dist/gemini/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
  160. package/dist/gemini/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  161. package/dist/gemini/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  162. package/dist/gemini/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  163. package/dist/gemini/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  164. package/dist/gemini/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  165. package/dist/gemini/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
  166. package/dist/gemini/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  167. package/dist/gemini/.agents/skills/jahia-orchestrate/SKILL.md +148 -0
  168. package/dist/gemini/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
  169. package/dist/gemini/AGENTS.md +17 -10
  170. package/dist/gemini/GEMINI.md +2 -2
  171. package/dist/index.js +13 -0
  172. package/dist/opencode/.agents/skills/jahia/SKILL.md +23 -11
  173. package/dist/opencode/.agents/skills/jahia-content/SKILL.md +102 -84
  174. package/dist/opencode/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
  175. package/dist/opencode/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
  176. package/dist/opencode/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
  177. package/dist/opencode/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
  178. package/dist/opencode/.agents/skills/jahia-content-organize/SKILL.md +209 -0
  179. package/dist/opencode/.agents/skills/jahia-content-publish/SKILL.md +181 -0
  180. package/dist/opencode/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
  181. package/dist/opencode/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
  182. package/dist/opencode/.agents/skills/jahia-dev-accessibility/SKILL.md +3 -3
  183. package/dist/opencode/.agents/skills/jahia-dev-build-component/SKILL.md +10 -7
  184. package/dist/opencode/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  185. package/dist/opencode/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  186. package/dist/opencode/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
  187. package/dist/opencode/.agents/skills/jahia-dev-cypress/SKILL.md +150 -330
  188. package/dist/opencode/.agents/skills/jahia-dev-define-content-type/SKILL.md +43 -486
  189. package/dist/opencode/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
  190. package/dist/opencode/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
  191. package/dist/opencode/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  192. package/dist/opencode/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  193. package/dist/opencode/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  194. package/dist/opencode/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  195. package/dist/opencode/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  196. package/dist/opencode/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
  197. package/dist/opencode/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  198. package/dist/opencode/.agents/skills/jahia-orchestrate/SKILL.md +148 -0
  199. package/dist/opencode/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
  200. package/dist/opencode/.opencode/agents/cnd-child-nodes.md +74 -0
  201. package/dist/opencode/.opencode/agents/cnd-jahia-mixins.md +113 -0
  202. package/dist/opencode/.opencode/agents/cnd-numbers-dates.md +61 -0
  203. package/dist/opencode/.opencode/agents/cnd-string-selectors.md +94 -0
  204. package/dist/opencode/.opencode/agents/jahia-cnd-author.md +130 -0
  205. package/dist/opencode/.opencode/agents/jahia-dev-worker.md +264 -0
  206. package/dist/opencode/.opencode/agents/jahia-reviewer.md +105 -0
  207. package/dist/opencode/AGENTS.md +17 -10
  208. package/dist/windsurf/.windsurf/rules/jahia.md +15 -6
  209. package/dist/windsurf/.windsurf/skills/jahia/SKILL.md +23 -11
  210. package/dist/windsurf/.windsurf/skills/jahia-content/SKILL.md +102 -84
  211. package/dist/windsurf/.windsurf/skills/jahia-content-create-content/SKILL.md +255 -280
  212. package/dist/windsurf/.windsurf/skills/jahia-content-explore-structure/SKILL.md +187 -96
  213. package/dist/windsurf/.windsurf/skills/jahia-content-media-upload/SKILL.md +197 -0
  214. package/dist/windsurf/.windsurf/skills/jahia-content-move-content/SKILL.md +160 -165
  215. package/dist/windsurf/.windsurf/skills/jahia-content-organize/SKILL.md +209 -0
  216. package/dist/windsurf/.windsurf/skills/jahia-content-publish/SKILL.md +181 -0
  217. package/dist/windsurf/.windsurf/skills/jahia-content-query-content/SKILL.md +122 -92
  218. package/dist/windsurf/.windsurf/skills/jahia-content-translate-content/SKILL.md +154 -225
  219. package/dist/windsurf/.windsurf/skills/jahia-dev-accessibility/SKILL.md +3 -3
  220. package/dist/windsurf/.windsurf/skills/jahia-dev-build-component/SKILL.md +10 -7
  221. package/dist/windsurf/.windsurf/skills/jahia-dev-create-page-template/SKILL.md +59 -21
  222. package/dist/windsurf/.windsurf/skills/jahia-dev-create-template-set/SKILL.md +20 -47
  223. package/dist/windsurf/.windsurf/skills/jahia-dev-create-view/SKILL.md +3 -3
  224. package/dist/windsurf/.windsurf/skills/jahia-dev-cypress/SKILL.md +150 -330
  225. package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/SKILL.md +43 -486
  226. package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
  227. package/dist/windsurf/.windsurf/skills/jahia-dev-query-content/SKILL.md +93 -296
  228. package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  229. package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  230. package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  231. package/dist/windsurf/.windsurf/skills/jahia-dev-site-review/SKILL.md +70 -0
  232. package/dist/windsurf/.windsurf/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  233. package/dist/windsurf/.windsurf/skills/jahia-dev-start-local/SKILL.md +18 -26
  234. package/dist/windsurf/.windsurf/skills/jahia-jcr-sql2/SKILL.md +258 -0
  235. package/dist/windsurf/.windsurf/skills/jahia-orchestrate/SKILL.md +148 -0
  236. package/dist/windsurf/.windsurf/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
  237. package/dist/windsurf/AGENTS.md +17 -10
  238. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # `@jahia/agentic`
2
2
 
3
+ ## 0.4.0
4
+
5
+ * Specialized content modeling agent.
6
+
7
+ ## 0.3.0
8
+
9
+ * Replaced GraphQL with MCP for content operations. (#6)
10
+
3
11
  ## 0.2.0
4
12
 
5
13
  * Added Java reviewer and Jahia-specific skills with concurrency pattern. (#4)
package/README.md CHANGED
@@ -46,3 +46,31 @@ On harness changes, we task an agent to complete a long Jahia task end-to-end, a
46
46
  - SEO score
47
47
 
48
48
  There's room for improvement on these axes, but once perfected we will introduce a more complex prompt and assess the quality of the code and the edition experience produced.
49
+
50
+ ### Running a benchmark from a branch
51
+
52
+ Trigger the benchmark workflow on any branch:
53
+
54
+ ```bash
55
+ gh workflow run benchmark.yml --ref feat/my-branch
56
+ ```
57
+
58
+ Monitor the run:
59
+
60
+ ```bash
61
+ gh run list --workflow=benchmark.yml
62
+ gh run watch # live tail of the latest run
63
+ ```
64
+
65
+ ### Checking results
66
+
67
+ Results are pushed to the `results` branch after each run. Fetch and inspect:
68
+
69
+ ```bash
70
+ git fetch origin results
71
+ git show origin/results:benchmark.json | jq '.[-1]'
72
+ ```
73
+
74
+ This shows the latest result with pages, scores, duration, and token usage. Screenshots are stored alongside the JSON on the same branch.
75
+
76
+ The aggregated dashboard for the `main` branch is published at [jahia.github.io/agentic](https://jahia.github.io/agentic/).
@@ -0,0 +1,74 @@
1
+ # CND Child Nodes
2
+
3
+ ## Syntax
4
+
5
+ ```cnd
6
+ + childName (ns:type) // named child — exactly one
7
+ + childName (ns:type) multiple // named child — list
8
+ + * (ns:type) // any-name child of a specific type
9
+ + * (jmix:droppableContent) // open container — any droppable component
10
+ ```
11
+
12
+ ## When to use child nodes vs `weakreference multiple`
13
+
14
+ | Use child nodes when… | Use `weakreference multiple` when… |
15
+ |---|---|
16
+ | Each item has multiple properties (label + link) | Each item is just a reference (a page, an image) |
17
+ | Items have no life outside the parent | Items are managed elsewhere and reused |
18
+ | You always create them together | Editors need to pick from existing content |
19
+
20
+ ## Repeatable CTA pattern
21
+
22
+ **NEVER put `ctaText + ctaLink/ctaUrl` on the parent type as flat properties.**
23
+ Model CTAs as child nodes — editors can then add multiple CTAs.
24
+
25
+ ```cnd
26
+ // ✅ Correct — supports multiple CTAs
27
+ [ns:heroSection] > jnt:content, nsmix:component, mix:title
28
+ - subtitle (string, richtext) i18n
29
+ - backgroundImage (weakreference, picker[type='image']) < jmix:image
30
+ + * (ns:heroCallToAction)
31
+
32
+ [ns:heroCallToAction] > jnt:content, nsmix:component
33
+ - label (string) i18n mandatory
34
+ - j:linkType (string, choicelist[linkTypeInitializer]) mandatory
35
+
36
+ // ❌ Wrong — forces exactly one CTA, editors can't add more
37
+ [ns:heroSection] > jnt:content, nsmix:component
38
+ - ctaText (string) i18n
39
+ - ctaLink (string) i18n // also wrong type for links
40
+ ```
41
+
42
+ ## Ordering
43
+
44
+ Add `orderable` to the parent type when editors need to reorder children:
45
+
46
+ ```cnd
47
+ [ns:featureList] > jnt:content, nsmix:component orderable
48
+ + * (ns:featureItem)
49
+ ```
50
+
51
+ ## Hidden structural nodes
52
+
53
+ Child nodes that editors should never add manually (structural containers, auto-created nodes):
54
+
55
+ ```cnd
56
+ [ns:heroSection] > jnt:content, nsmix:component, mix:title
57
+ + ctaContainer (ns:ctaContainer) autocreated
58
+
59
+ [ns:ctaContainer] > jnt:content, jmix:hiddenType orderable
60
+ + * (ns:callToAction)
61
+ ```
62
+
63
+ `jmix:hiddenType` hides a type from the Page Builder component picker.
64
+ **Never use `jmix:studioOnly`** — it causes silent rendering issues.
65
+
66
+ ## Open container (accept any droppable)
67
+
68
+ ```cnd
69
+ [ns:gridRow] > jnt:content, nsmix:component
70
+ - columns (long) = '3' autocreated mandatory < '1', '2', '3', '4'
71
+ + * (jmix:droppableContent)
72
+ ```
73
+
74
+ `+ * (jmix:droppableContent)` accepts any component the editor can drop.
@@ -0,0 +1,113 @@
1
+ # Jahia Native Mixins & Types
2
+
3
+ Source: https://github.com/Jahia/jahia/tree/master/war/src/main/webapp/WEB-INF/etc/repository/nodetypes
4
+ Fetch this URL to verify before using any mixin not listed here.
5
+
6
+ ## Base types — always extend these
7
+
8
+ | Type | Purpose |
9
+ |---|---|
10
+ | `jnt:content` | Base for all user content nodes — **always include** |
11
+ | `jnt:page` | Page node — only for `jmix:mainResource` full-page types |
12
+ | `jnt:file` | File node — for file references |
13
+
14
+ ## Mixins by use case
15
+
16
+ ### `mix:title` — preferred over a raw title property
17
+
18
+ Adds `jcr:title` (string). Jahia's UI, breadcrumbs, SEO, and sitemap generation all read `jcr:title`.
19
+ **Extend this instead of declaring `- title (string) i18n mandatory`.**
20
+
21
+ ```cnd
22
+ [ns:article] > jnt:content, nsmix:component, mix:title
23
+ ```
24
+
25
+ Access in view: `props["jcr:title"]`
26
+
27
+ ### `jmix:mainResource` — full-page content types only
28
+
29
+ Makes a node accessible at its own URL. Use **only** for content that needs both a listing card AND a detail page (e.g. blog posts, team members, events). Do not add to navigation or visual composition types.
30
+
31
+ ```cnd
32
+ [ns:blogPost] > jnt:content, mix:title, jmix:mainResource, nsmix:component
33
+ ```
34
+
35
+ ### `jmix:image` — image constraint for weakreference
36
+
37
+ Use as the type constraint on image weakreference properties:
38
+
39
+ ```cnd
40
+ - backgroundImage (weakreference, picker[type='image']) < jmix:image
41
+ ```
42
+
43
+ **Never use `< 'jnt:file'`** (quoted string form) — it does not enforce image type correctly.
44
+
45
+ **Never declare `imageAlt (string) i18n`** alongside an image weakreference. The referenced image node already has `jcr:title` (from `mix:title`). Use that as the alt text in the view:
46
+
47
+ ```tsx
48
+ const imageAlt = props.image?.getPropertyAsString("jcr:title") ?? "";
49
+ ```
50
+
51
+ Remove any `imageAlt` property — it forces editors to enter duplicate data.
52
+
53
+ ### `jmix:droppableContent` — never extend directly
54
+
55
+ Always define a module-level component mixin and extend that:
56
+
57
+ ```cnd
58
+ // In settings/definitions.cnd
59
+ [nsmix:component] > jmix:droppableContent, jmix:accessControllableContent mixin
60
+ ```
61
+
62
+ Then all component types extend `nsmix:component`.
63
+
64
+ ### `jmix:hiddenType` — hide from Page Builder picker
65
+
66
+ Structural/container types editors should not add manually:
67
+
68
+ ```cnd
69
+ [ns:ctaContainer] > jnt:content, jmix:hiddenType orderable
70
+ ```
71
+
72
+ **Never use `jmix:studioOnly`** — it causes silent rendering issues in some contexts.
73
+
74
+ ### `jmix:accessControllableContent` — per-component access control
75
+
76
+ Add to your base module mixin so all components support it:
77
+
78
+ ```cnd
79
+ [nsmix:component] > jmix:droppableContent, jmix:accessControllableContent mixin
80
+ ```
81
+
82
+ ### `jmix:link` — built-in link type
83
+
84
+ Provides `j:linkType`, `j:linknode`, `j:url`, `j:linkTitle`. Extend this mixin as an alternative to declaring `j:linkType` directly on a type that needs only link behavior and nothing else.
85
+
86
+ ## picker[] selector
87
+
88
+ | Selector | Use |
89
+ |---|---|
90
+ | `picker[type='image']` | Image assets only |
91
+ | `picker[type='file']` | Any file asset |
92
+
93
+ ```cnd
94
+ - backgroundImage (weakreference, picker[type='image']) < jmix:image
95
+ - attachment (weakreference, picker[type='file']) < jnt:file
96
+ ```
97
+
98
+ ## Two-tier component mixin system
99
+
100
+ If the module uses custom area types (see `jahia-dev-create-page-template`):
101
+
102
+ ```cnd
103
+ [nsmix:component] > jmix:droppableContent, jmix:accessControllableContent mixin
104
+ [nsmix:pageComponent] > nsmix:component mixin
105
+ ```
106
+
107
+ | Component will be… | Extend |
108
+ |---|---|
109
+ | Dropped in page areas | `nsmix:pageComponent` |
110
+ | Child of another component | `nsmix:component` |
111
+ | Listed programmatically | `nsmix:component` |
112
+
113
+ A component extending only `nsmix:component` **cannot** be dropped in areas that use `nsmix:pageComponent`.
@@ -0,0 +1,61 @@
1
+ # CND Numeric, Date & Boolean Properties
2
+
3
+ ## Types
4
+
5
+ | Type | Editor widget | Notes |
6
+ |---|---|---|
7
+ | `long` | Integer number input | Counts, limits, columns |
8
+ | `double` | Decimal number input | Coordinates, prices, ratios |
9
+ | `boolean` | Checkbox | Feature flags, toggles |
10
+ | `date` | Date picker | ISO 8601 stored, string in TypeScript |
11
+ | `date, datepicker` | Date + time picker | Same storage, richer widget |
12
+
13
+ ## Default values with `autocreated`
14
+
15
+ Always combine `autocreated` with `= 'value'`:
16
+
17
+ ```cnd
18
+ - columns (long) = '3' autocreated mandatory < '1', '2', '3', '4'
19
+ - isHighlighted (boolean) = 'false' autocreated
20
+ - country (string, choicelist[country]) = 'US' autocreated mandatory
21
+ ```
22
+
23
+ ## Range constraints
24
+
25
+ ```cnd
26
+ // Numeric range — inclusive brackets
27
+ - latitude (double) mandatory < "[-90,90]"
28
+ - longitude (double) mandatory < "[-180,180]"
29
+ - rating (long) mandatory < "[1,5]"
30
+ ```
31
+
32
+ **Star ratings always need a range constraint.** Never write `rating (long)` without `< "[1,5]"`:
33
+
34
+ ```cnd
35
+ // WRONG
36
+ - rating (long) = 5 indexed=no
37
+
38
+ // CORRECT
39
+ - rating (long) = '3' autocreated mandatory < "[1,5]"
40
+ ```
41
+
42
+ ## Date range constraints
43
+
44
+ Parentheses = exclusive bound, brackets = inclusive. Leave a side empty for open-ended:
45
+
46
+ ```cnd
47
+ // Any date after 2020-01-01 (exclusive)
48
+ - eventDate (date, datepicker) < '(2020-01-01T00:00:00.000,)'
49
+
50
+ // Bounded campaign window
51
+ - campaignDate (date, datepicker) < '(2020-01-01T00:00:00.000,2030-12-31T00:00:00.000)'
52
+ ```
53
+
54
+ ## TypeScript mapping
55
+
56
+ | CND type | TypeScript |
57
+ |---|---|
58
+ | `long` | `number` |
59
+ | `double` | `number` |
60
+ | `boolean` | `boolean` |
61
+ | `date` | `string` (ISO 8601) |
@@ -0,0 +1,94 @@
1
+ # CND String & Selector Properties
2
+
3
+ ## String type variants
4
+
5
+ | Type declaration | Editor widget | When to use |
6
+ |---|---|---|
7
+ | `(string)` | Single-line text input | Short labels, IDs, slugs |
8
+ | `(string, textarea)` | Multi-line text area | Paragraphs, descriptions |
9
+ | `(string, richtext)` | Rich text editor (TinyMCE) | Body content, formatted text |
10
+ | `(string) multiple` | Tag input / list | Lists of plain strings |
11
+
12
+ ## Fixed-choice dropdowns
13
+
14
+ Use `(string, choicelist)` + `< 'val1', 'val2'` for a dropdown with a hard-coded list.
15
+ **Never use `choicelist[val1,val2]`** — the bracket syntax is for initializer keywords, not values.
16
+
17
+ ```cnd
18
+ - difficulty (string, choicelist) i18n < 'beginner', 'intermediate', 'advanced'
19
+ - variant (string, choicelist) < 'primary', 'secondary', 'ghost'
20
+ ```
21
+
22
+ ## `mix:title` instead of a title string property
23
+
24
+ **NEVER write `- title (string) i18n mandatory`.**
25
+ Extend `mix:title` instead — it adds `jcr:title`, which Jahia's UI, breadcrumbs, and search use natively.
26
+
27
+ ```cnd
28
+ // ✅ Correct
29
+ [ns:heroSection] > jnt:content, nsmix:component, mix:title
30
+
31
+ // ❌ Wrong — duplicates what mix:title already provides
32
+ [ns:heroSection] > jnt:content, nsmix:component
33
+ - title (string) i18n mandatory
34
+ ```
35
+
36
+ Access in the view as `props["jcr:title"]`.
37
+
38
+ ## Link picker — `choicelist[linkTypeInitializer]`
39
+
40
+ **NEVER use `(string)` for a link, URL, href, or path.**
41
+ Use `choicelist[linkTypeInitializer]` — it renders an internal/external/none picker in the editor.
42
+
43
+ **Declare ONLY `j:linkType` in the CND. Do NOT add `j:linknode` or `j:url` — Jahia injects them automatically.**
44
+
45
+ ```cnd
46
+ // ✅ Correct — bare minimum
47
+ [ns:callToAction] > jnt:content, nsmix:component
48
+ - label (string) i18n mandatory
49
+ - j:linkType (string, choicelist[linkTypeInitializer]) mandatory
50
+
51
+ // ❌ Wrong — do not declare companion fields
52
+ - j:linknode (weakreference) // injected by Jahia — remove this
53
+ - j:url (string) // injected by Jahia — remove this
54
+ ```
55
+
56
+ TypeScript discriminated union for the view:
57
+
58
+ ```ts
59
+ import type { JCRNodeWrapper } from "org.jahia.services.content";
60
+ export type Props =
61
+ | { label?: string; "j:linkType": "none" }
62
+ | { label?: string; "j:linkType": "internal"; "j:linknode"?: JCRNodeWrapper }
63
+ | { label?: string; "j:linkType": "external"; "j:url"?: string; "j:linkTitle"?: string };
64
+ ```
65
+
66
+ In the view, switch on `props["j:linkType"]`.
67
+
68
+ ## Other `choicelist[...]` initializers
69
+
70
+ | Initializer | What it renders |
71
+ |---|---|
72
+ | `choicelist[country]` | Country selector (ISO codes, localized labels) |
73
+ | `choicelist[resourceBundle]` | Labels from `.properties` file keys |
74
+ | `choicelist[nodes=/path;type=jnt:content]` | Nodes under a JCR path |
75
+ | `choicelist[componentTypes=jnt:page]` | Registered views of a node type |
76
+ | `choicelist[menus]` | Site menus |
77
+
78
+ ## Regex constraints on strings
79
+
80
+ ```cnd
81
+ - contactEmail (string) < '^$|[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}'
82
+ - slug (string) < '^[a-z0-9-]+$'
83
+ - externalUrl (string) < '^https?://'
84
+ ```
85
+
86
+ ## Common attributes
87
+
88
+ | Attribute | Meaning |
89
+ |---|---|
90
+ | `i18n` | Translatable per language — **default to always on user-facing fields** |
91
+ | `mandatory` | Required |
92
+ | `multiple` | List of values |
93
+ | `primary` | Highlighted field in editor (one per type) |
94
+ | `autocreated` | Auto-created on node creation — always combine with `= 'defaultValue'` |
@@ -0,0 +1,130 @@
1
+ ---
2
+ name: jahia-cnd-author
3
+ description: Use when you need to write a Jahia CND content type definition and its TypeScript props interface. Receives a component spec and produces a per-component definition.cnd + types.ts with correct Jahia-specific syntax. Self-validates output before returning.
4
+ allowed-tools: Read, Write, Edit, Bash
5
+ tools:
6
+ Read: true
7
+ Write: true
8
+ Edit: true
9
+ Bash: true
10
+ ---
11
+
12
+ You are a Jahia CND specialist. Your sole job is to write correct `definition.cnd` and `types.ts` files for a single component type. You have no MCP tools and should not perform content operations or deployments.
13
+
14
+ ## Your inputs
15
+
16
+ You will receive a structured spec:
17
+
18
+ ```
19
+ Component: <name>
20
+ Namespace prefix: <ns>
21
+ Module path: <path to module root>
22
+ Fields:
23
+ - <field name>: <type description> [mandatory] [i18n] [multiple]
24
+ Usage: <where this component appears>
25
+ Children: <repeatable sub-items if any>
26
+ ```
27
+
28
+ ## Step 1 — Locate and load reference files
29
+
30
+ Reference files live next to this agent file. First, discover where they are:
31
+
32
+ ```bash
33
+ # Find the directory that contains the cnd-jahia-mixins reference file
34
+ find . -maxdepth 4 -name "cnd-jahia-mixins*" 2>/dev/null | head -5
35
+ ```
36
+
37
+ Then read the files you need (using whichever path the find command returned):
38
+
39
+ - **Always read**: `cnd-jahia-mixins` (required — tells you which native mixins to extend)
40
+ - **If text, link, or choice properties**: `cnd-string-selectors`
41
+ - **If repeatable child items**: `cnd-child-nodes`
42
+ - **If numbers, dates, or booleans**: `cnd-numbers-dates`
43
+
44
+ Do not skip this step. These files contain the exact CND patterns you must use. If the find returns nothing, something is wrong with the harness installation — stop and report.
45
+
46
+ ## Step 2 — Resolve namespace and location
47
+
48
+ ```bash
49
+ # Get namespace prefix
50
+ grep "^<" <module-path>/settings/definitions.cnd | head -5
51
+
52
+ # Check for two-tier mixin
53
+ grep "pageComponent" <module-path>/settings/definitions.cnd
54
+
55
+ # Find the right category directory
56
+ ls <module-path>/src/components/
57
+ ```
58
+
59
+ If `namespacemix:pageComponent` exists: use it for components dropped in page areas, use `namespacemix:component` for children of other components.
60
+
61
+ **File locations — collocation is mandatory:**
62
+
63
+ Each component type lives in its own file, next to its view. NEVER put all types in `settings/definitions.cnd`.
64
+
65
+ ```
66
+ src/
67
+ components/
68
+ Sections/
69
+ HeroSection/
70
+ definition.cnd ← one type per file, co-located here
71
+ default.server.tsx
72
+ types.ts
73
+ Cards/
74
+ TextCard/
75
+ definition.cnd ← separate file per component
76
+ types.ts
77
+ settings/
78
+ definitions.cnd ← namespace declarations + shared mixins ONLY
79
+ ```
80
+
81
+ ## Step 3 — Write the CND
82
+
83
+ Create `<module-path>/src/components/<Category>/<Name>/definition.cnd`.
84
+
85
+ Rules from the reference files you loaded — apply all of them:
86
+ 1. **Links**: `j:linkType (string, choicelist[linkTypeInitializer]) mandatory` — never `(string)` for `*Url`, `*Href`, `*Link`
87
+ 2. **Titles**: extend `mix:title` — never `- title (string)` or `- jcr:title (string)`
88
+ 3. **Repeatable CTAs**: child nodes `+ * (ns:callToAction)` — never flat `ctaText + ctaUrl` on the parent
89
+ 4. **Images**: `(weakreference, picker[type='image']) < jmix:image` — never `(string)` for image URLs
90
+ 5. **i18n**: on every user-facing string/textarea/richtext property
91
+ 6. **Component mixin**: extend `namespacemix:component` or `namespacemix:pageComponent` — never `jmix:droppableContent` directly on a concrete type
92
+
93
+ Each per-component `definition.cnd` must include the namespace declarations at the top:
94
+ ```cnd
95
+ <ns = 'http://...'>
96
+ <nsmix = 'http://...'>
97
+ ```
98
+
99
+ ## Step 4 — Write types.ts
100
+
101
+ Create `<module-path>/src/components/<Category>/<Name>/types.ts`. All fields use `?:` even if mandatory in CND.
102
+
103
+ For `j:linkType` properties, use the discriminated union from the reference file you loaded.
104
+
105
+ ## Step 5 — Self-validate
106
+
107
+ ```bash
108
+ CND=<module-path>/src/components/<Category>/<Name>/definition.cnd
109
+
110
+ # Error: raw string for a link/URL property
111
+ grep -En "^[[:space:]]*-[[:space:]]+[a-zA-Z]*(Url|Href|Link)[[:space:]]+\(string" "$CND"
112
+
113
+ # Error: title declared as raw property instead of mix:title
114
+ grep -En "^[[:space:]]*-[[:space:]]+(title|jcr:title)[[:space:]]+\(string" "$CND"
115
+
116
+ # Error: concrete type extends jmix:droppableContent directly
117
+ grep -n "jmix:droppableContent" "$CND" | grep -v "mixin"
118
+
119
+ # Error: image as plain string URL
120
+ grep -En "^[[:space:]]*-[[:space:]]+[a-zA-Z]*(Image|Photo|Avatar|Logo)[[:space:]]+\(string" "$CND"
121
+ ```
122
+
123
+ If any of these print matches, fix the issue and re-run before reporting.
124
+
125
+ ## Step 6 — Report
126
+
127
+ - Files written: paths
128
+ - Type name(s) defined
129
+ - Self-validate result: PASS / fixed N errors
130
+ - Any warnings not fixed and why