@jahia/agentic 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/claude/.claude/rules/jahia.md +13 -40
- package/dist/claude/.claude/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/claude/.claude/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/claude/.claude/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/claude/.claude/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/claude/.claude/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/claude/.claude/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/claude/.claude/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/claude/.claude/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/claude/.claude/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/claude/.claude/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/claude/.claude/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/claude/.claude/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/claude/.claude/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/claude/CLAUDE.md +14 -41
- package/dist/codex/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/codex/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/codex/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/codex/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/codex/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/codex/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/codex/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/codex/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/codex/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/codex/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/codex/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/codex/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/codex/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/codex/AGENTS.md +15 -42
- package/dist/copilot/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/copilot/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/copilot/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/copilot/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/copilot/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/copilot/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/copilot/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/copilot/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/copilot/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/copilot/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/copilot/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/copilot/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/copilot/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/copilot/AGENTS.md +15 -42
- package/dist/cursor/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/cursor/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/cursor/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/cursor/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/cursor/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/cursor/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/cursor/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/cursor/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/cursor/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/cursor/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/cursor/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/cursor/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/cursor/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/cursor/.cursor/rules/jahia.mdc +13 -40
- package/dist/gemini/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/gemini/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/gemini/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/gemini/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/gemini/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/gemini/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/gemini/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/gemini/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/gemini/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/gemini/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/gemini/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/gemini/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/gemini/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/gemini/AGENTS.md +15 -42
- package/dist/gemini/GEMINI.md +2 -2
- package/dist/index.js +13 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/opencode/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/opencode/.agents/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/opencode/.agents/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/opencode/.agents/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/opencode/.agents/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/opencode/.agents/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/opencode/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/opencode/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/opencode/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/opencode/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/opencode/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/opencode/.agents/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/opencode/AGENTS.md +15 -42
- package/dist/windsurf/.windsurf/rules/jahia.md +13 -40
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/SKILL.md +94 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
- package/dist/windsurf/.windsurf/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-accessibility/SKILL.md +5 -265
- package/dist/windsurf/.windsurf/skills/jahia-dev-build-component/SKILL.md +15 -7
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-page-template/SKILL.md +59 -21
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-template-set/SKILL.md +20 -47
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-view/SKILL.md +3 -3
- package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/SKILL.md +79 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-site-review/SKILL.md +70 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-start-local/SKILL.md +18 -26
- package/dist/windsurf/AGENTS.md +15 -42
- package/package.json +1 -1
- package/dist/claude/.claude/skills/jahia/SKILL.md +0 -144
- package/dist/claude/.claude/skills/jahia-content/SKILL.md +0 -157
- package/dist/claude/.claude/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/claude/.claude/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/claude/.claude/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/claude/.claude/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/claude/.claude/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/claude/.claude/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/claude/.claude/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/claude/.claude/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/claude/.claude/skills/jahia-dev/SKILL.md +0 -124
- package/dist/claude/.claude/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/claude/.claude/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/claude/.claude/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/claude/.claude/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/claude/.claude/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/claude/.claude/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/claude/.claude/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/claude/.claude/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/claude/.claude/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/claude/.claude/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/claude/.claude/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/claude/.claude/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/claude/.claude/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/claude/.claude/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/claude/.claude/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/claude/.claude/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/claude/.claude/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/claude/.claude/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/claude/.claude/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/claude/.claude/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/claude/.claude/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/claude/.claude/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/claude/.claude/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/codex/.agents/skills/jahia/SKILL.md +0 -144
- package/dist/codex/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/codex/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/codex/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/codex/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/codex/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/codex/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/codex/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/codex/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/codex/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/codex/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/codex/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/codex/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/codex/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/codex/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/codex/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/codex/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/codex/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/codex/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/codex/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/codex/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/codex/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/codex/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/codex/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/codex/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/codex/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/codex/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/codex/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/codex/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/codex/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/codex/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/codex/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/codex/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/codex/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/copilot/.agents/skills/jahia/SKILL.md +0 -144
- package/dist/copilot/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/copilot/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/copilot/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/copilot/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/copilot/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/copilot/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/copilot/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/copilot/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/copilot/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/copilot/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/copilot/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/copilot/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/copilot/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/copilot/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/copilot/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/copilot/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/copilot/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/copilot/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/copilot/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/copilot/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/copilot/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/copilot/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/copilot/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/copilot/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/copilot/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/copilot/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/copilot/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/copilot/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/copilot/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/cursor/.agents/skills/jahia/SKILL.md +0 -144
- package/dist/cursor/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/cursor/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/cursor/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/cursor/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/cursor/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/cursor/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/cursor/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/cursor/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/cursor/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/cursor/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/cursor/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/cursor/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/cursor/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/cursor/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/cursor/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/cursor/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/cursor/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/cursor/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/cursor/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/cursor/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/cursor/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/cursor/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/cursor/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/cursor/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/cursor/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/cursor/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/cursor/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/cursor/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/cursor/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/gemini/.agents/skills/jahia/SKILL.md +0 -144
- package/dist/gemini/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/gemini/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/gemini/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/gemini/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/gemini/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/gemini/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/gemini/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/gemini/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/gemini/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/gemini/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/gemini/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/gemini/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/gemini/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/gemini/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/gemini/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/gemini/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/gemini/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/gemini/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/gemini/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/gemini/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/gemini/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/gemini/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/gemini/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/gemini/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/gemini/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/gemini/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/gemini/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/gemini/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/gemini/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/opencode/.agents/skills/jahia/SKILL.md +0 -144
- package/dist/opencode/.agents/skills/jahia-content/SKILL.md +0 -157
- package/dist/opencode/.agents/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/opencode/.agents/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/opencode/.agents/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/opencode/.agents/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/opencode/.agents/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/opencode/.agents/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/opencode/.agents/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/opencode/.agents/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/opencode/.agents/skills/jahia-dev/SKILL.md +0 -124
- package/dist/opencode/.agents/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/opencode/.agents/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/opencode/.agents/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/opencode/.agents/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/opencode/.agents/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/opencode/.agents/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/opencode/.agents/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/opencode/.agents/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/opencode/.agents/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/opencode/.agents/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/opencode/.agents/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/opencode/.agents/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/opencode/.agents/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/opencode/.agents/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/opencode/.agents/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/opencode/.agents/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/opencode/.agents/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/opencode/.agents/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/opencode/.agents/skills/jahia-review-java/references/code-review-output.md +0 -121
- package/dist/windsurf/.windsurf/skills/jahia/SKILL.md +0 -144
- package/dist/windsurf/.windsurf/skills/jahia-content/SKILL.md +0 -157
- package/dist/windsurf/.windsurf/skills/jahia-content-create-content/SKILL.md +0 -359
- package/dist/windsurf/.windsurf/skills/jahia-content-explore-structure/SKILL.md +0 -255
- package/dist/windsurf/.windsurf/skills/jahia-content-media-upload/SKILL.md +0 -197
- package/dist/windsurf/.windsurf/skills/jahia-content-move-content/SKILL.md +0 -231
- package/dist/windsurf/.windsurf/skills/jahia-content-organize/SKILL.md +0 -209
- package/dist/windsurf/.windsurf/skills/jahia-content-publish/SKILL.md +0 -181
- package/dist/windsurf/.windsurf/skills/jahia-content-query-content/SKILL.md +0 -174
- package/dist/windsurf/.windsurf/skills/jahia-content-translate-content/SKILL.md +0 -226
- package/dist/windsurf/.windsurf/skills/jahia-dev/SKILL.md +0 -124
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/SKILL.md +0 -52
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/authentication.md +0 -484
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/graphql.md +0 -657
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/jcr-api.md +0 -465
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/security.md +0 -541
- package/dist/windsurf/.windsurf/skills/jahia-dev-cypress/SKILL.md +0 -265
- package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/SKILL.md +0 -536
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/SKILL.md +0 -110
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/backend.md +0 -331
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/content-types.md +0 -273
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/modules.md +0 -218
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/osgi.md +0 -208
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/rendering.md +0 -191
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/ui-extensions.md +0 -344
- package/dist/windsurf/.windsurf/skills/jahia-dev-osgi-module/SKILL.md +0 -297
- package/dist/windsurf/.windsurf/skills/jahia-dev-ui-extension/SKILL.md +0 -559
- package/dist/windsurf/.windsurf/skills/jahia-java-concurrency/SKILL.md +0 -308
- package/dist/windsurf/.windsurf/skills/jahia-java-jcr/SKILL.md +0 -153
- package/dist/windsurf/.windsurf/skills/jahia-java-osgi/SKILL.md +0 -134
- package/dist/windsurf/.windsurf/skills/jahia-java-persistence/SKILL.md +0 -177
- package/dist/windsurf/.windsurf/skills/jahia-java-security/SKILL.md +0 -84
- package/dist/windsurf/.windsurf/skills/jahia-review-java/SKILL.md +0 -131
- package/dist/windsurf/.windsurf/skills/jahia-review-java/references/code-review-output.md +0 -121
|
@@ -1,536 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: jahia-dev-define-content-type
|
|
3
|
-
description: Creates a Jahia CND content type definition from a natural language description. Use when asked to model content, create a new content type, or define node types.
|
|
4
|
-
allowed-tools: Bash, Read, Write, Edit
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Overview
|
|
8
|
-
|
|
9
|
-
All Jahia development starts with content modeling. Content types are defined in **CND files** (Compact Node Definition). Each component follows the **Single Directory Component (SDC)** pattern: one folder per component, containing a `definition.cnd`, a view, and optional CSS.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## Step 0 — Write a spec before coding
|
|
14
|
-
|
|
15
|
-
Before writing any CND, capture the content type spec. Ask the user to confirm:
|
|
16
|
-
|
|
17
|
-
| Field | Answer |
|
|
18
|
-
|---|---|
|
|
19
|
-
| **Name** | e.g. `BlogPost` |
|
|
20
|
-
| **Description** | What is this type for? |
|
|
21
|
-
| **Fields** | name / type / i18n? / mandatory? |
|
|
22
|
-
| **Views** | default only, or also: small / card / fullPage |
|
|
23
|
-
| **Used where** | Inside an Area? Nested in another type? |
|
|
24
|
-
|
|
25
|
-
Only proceed to the CND once this spec is agreed.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Step 0b — Modeling decisions
|
|
30
|
-
|
|
31
|
-
### Semantic vs generic types
|
|
32
|
-
|
|
33
|
-
| Use **semantic types** for… | Use **generic types** for… |
|
|
34
|
-
|---|---|
|
|
35
|
-
| Business entities: articles, team members, events | Visual composition: banners, feature rows |
|
|
36
|
-
| Items that appear in listings | One-off sections, layout containers |
|
|
37
|
-
| Anything reused across pages | Unique per-page UI blocks |
|
|
38
|
-
|
|
39
|
-
### Children vs weakreference
|
|
40
|
-
|
|
41
|
-
| Use **child nodes** when… | Use **weakreference** when… |
|
|
42
|
-
|---|---|
|
|
43
|
-
| Parent is the visual container (e.g. CTA buttons inside a hero) | Linking to content managed elsewhere |
|
|
44
|
-
| Children have no life outside the parent | Many-to-many relationships |
|
|
45
|
-
| You always create the children together | Content editors need to reuse the referenced item |
|
|
46
|
-
|
|
47
|
-
### Mixins are the primary reuse mechanism
|
|
48
|
-
|
|
49
|
-
**Mixins are how you share fields across multiple content types.** Whenever a set of properties appears on more than one type — a CTA block, a link, a badge, a price field — extract them into a mixin. This avoids duplication and keeps CND definitions focused.
|
|
50
|
-
|
|
51
|
-
The module-level `settings/definitions.cnd` defines all mixins and base types. Component-level `definition.cnd` files define the content types that extend them.
|
|
52
|
-
|
|
53
|
-
**Example: reusable CTA mixin**
|
|
54
|
-
|
|
55
|
-
```cnd
|
|
56
|
-
// settings/definitions.cnd
|
|
57
|
-
[nsmix:cta] mixin
|
|
58
|
-
- ctaLabel (string) i18n
|
|
59
|
-
- ctaType (string, choicelist[linkTypeInitializer]) = 'none' autocreated mandatory
|
|
60
|
-
// j:linknode and j:url are injected automatically — do NOT declare them
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Any content type that needs a call-to-action simply extends `nsmix:cta`:
|
|
64
|
-
|
|
65
|
-
```cnd
|
|
66
|
-
// src/components/Hero/definition.cnd
|
|
67
|
-
[ns:hero] > jnt:content, nsmix:component, nsmix:cta
|
|
68
|
-
- title (string) i18n mandatory primary
|
|
69
|
-
- subtitle (string, textarea) i18n
|
|
70
|
-
- backgroundImage (weakreference, picker[type='image']) < jmix:image
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
The `ctaLabel`, `ctaType`, `j:linknode`, `j:url` fields are inherited and ready to use in the view without duplicating a single line of CND. Build your mixin library from day one — once two types need the same field, it belongs in a mixin.
|
|
74
|
-
|
|
75
|
-
**Common reusable mixin patterns:**
|
|
76
|
-
|
|
77
|
-
| Mixin | Properties it adds | When to use |
|
|
78
|
-
|---|---|---|
|
|
79
|
-
| `nsmix:cta` | `ctaLabel`, `ctaType` (+ injected `j:linknode`/`j:url`) | Any type with a button or link |
|
|
80
|
-
| `nsmix:badge` | `badgeText`, `badgeColor` | Cards, teasers, any labelled content |
|
|
81
|
-
| `nsmix:seo` | `metaTitle`, `metaDescription`, `seoKeywords` | Any `jmix:mainResource` type |
|
|
82
|
-
| `nsmix:media` | `image` (weakreference), `imageAltText`, `imageCaption` | Any type with a visual asset |
|
|
83
|
-
| `nsmix:trackable` | `analyticsId`, `trackingLabel` | Any CTA or interactive element |
|
|
84
|
-
|
|
85
|
-
**Generic container — accept any droppable child:**
|
|
86
|
-
|
|
87
|
-
```cnd
|
|
88
|
-
[ns:gridRow] > jnt:content, nsmix:component
|
|
89
|
-
- columns (long) = '3' autocreated mandatory < '1', '2', '3', '4'
|
|
90
|
-
+ * (jmix:droppableContent) // ← accepts ANY droppable component as a child
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Use `+ * (jmix:droppableContent)` for layout containers that should not restrict which components editors can place inside them.
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
### Never use `jmix:droppableContent` directly
|
|
98
|
-
|
|
99
|
-
Always define a custom component mixin for your module and extend it:
|
|
100
|
-
|
|
101
|
-
```cnd
|
|
102
|
-
// In settings/definitions.cnd
|
|
103
|
-
[namespacemix:component] > jmix:droppableContent, jmix:accessControllableContent mixin
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Then all component types extend `namespacemix:component` — **never** `jmix:droppableContent` directly. This is what controls which types appear in the content picker.
|
|
107
|
-
|
|
108
|
-
> Add `jmix:accessControllableContent` to the base mixin — it enables per-component access control in jcontent, allowing editors to restrict who can see or edit individual components.
|
|
109
|
-
|
|
110
|
-
### Two-tier mixin system: `component` vs `pageComponent`
|
|
111
|
-
|
|
112
|
-
If the module uses a custom area type with `pageComponent` (see `jahia-dev-create-page-template`), there are two tiers:
|
|
113
|
-
|
|
114
|
-
```cnd
|
|
115
|
-
[namespacemix:component] > jmix:droppableContent mixin // general droppable
|
|
116
|
-
[namespacemix:pageComponent] > namespacemix:component mixin // for page areas only
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
**When creating a new content type, choose the right mixin:**
|
|
120
|
-
|
|
121
|
-
| Component will be… | Extend |
|
|
122
|
-
|---|---|
|
|
123
|
-
| Dropped in page areas (hero, sections, cards on a page) | `namespacemix:pageComponent` |
|
|
124
|
-
| Used only as a child of another component (e.g. CTA inside a hero) | `namespacemix:component` |
|
|
125
|
-
| A `jmix:mainResource` type stored in a content folder and listed programmatically | `namespacemix:component` |
|
|
126
|
-
|
|
127
|
-
> ⚠️ A component that extends only `namespacemix:component` **cannot be dropped in page areas** that use a `namespacemix:pageComponent` area type. This is the most common cause of editors not being able to contribute content to a new page.
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
## Step 1 — Identify the component location
|
|
132
|
-
|
|
133
|
-
CND files can live in two places:
|
|
134
|
-
|
|
135
|
-
- **Component-level** (preferred): `src/components/<Category>/<Name>/definition.cnd`
|
|
136
|
-
- **Module-level**: `settings/definitions.cnd` (for mixins and shared base types)
|
|
137
|
-
|
|
138
|
-
For a new standalone component, always create a component-level `definition.cnd`.
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## Step 2 — Determine the namespace
|
|
143
|
-
|
|
144
|
-
Check `settings/definitions.cnd` for the module's namespace declaration. It looks like:
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
<ns = 'http://www.mymodule.com/...'>
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
The short prefix (e.g. `ns`) is the namespace to use for all node types in this module.
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
## Step 3 — Write the CND definition
|
|
155
|
-
|
|
156
|
-
### Basic template
|
|
157
|
-
|
|
158
|
-
```cnd
|
|
159
|
-
[namespace:typeName] > jnt:content, namespacemix:component
|
|
160
|
-
- propertyName (type) [hints] [attributes] [< constraint]
|
|
161
|
-
+ childName (namespace:childType)
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Property types
|
|
165
|
-
|
|
166
|
-
| Type | Usage |
|
|
167
|
-
|---|---|
|
|
168
|
-
| `string` | Single-line text |
|
|
169
|
-
| `string, textarea` | Multi-line text |
|
|
170
|
-
| `string, richtext` | Rich text editor |
|
|
171
|
-
| `weakreference, picker[type='image']` | Image picker |
|
|
172
|
-
| `weakreference multiple` | List of references (e.g. links to multiple pages) |
|
|
173
|
-
| `string, choicelist[linkTypeInitializer]` | Link type discriminator (internal page / external URL / none) — **special initializer, not a value list** |
|
|
174
|
-
| `string, choicelist` with `< 'val1', 'val2'` constraints | Dropdown with fixed choices (see below) |
|
|
175
|
-
| `date` | Date picker |
|
|
176
|
-
| `boolean` | Checkbox |
|
|
177
|
-
| `double` | Decimal number (e.g. latitude/longitude) |
|
|
178
|
-
| `long` | Integer number |
|
|
179
|
-
| `string multiple` | List of strings |
|
|
180
|
-
|
|
181
|
-
### Fixed-choice dropdowns (constrained string)
|
|
182
|
-
|
|
183
|
-
Use `(string, choicelist)` combined with value constraints (`< 'val1', 'val2'`) to render a dropdown in the editor. **Do NOT use `choicelist[val1,val2]`** — that syntax is invalid:
|
|
184
|
-
|
|
185
|
-
```cnd
|
|
186
|
-
[namespace:article] > jnt:content
|
|
187
|
-
- difficulty (string, choicelist) i18n < 'beginner', 'intermediate', 'advanced'
|
|
188
|
-
- product (string, choicelist) i18n < 'jahia', 'jexperience', 'cloud'
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### Choicelist initializer variants
|
|
192
|
-
|
|
193
|
-
`choicelist[...]` takes an **initializer keyword**, not a value list. Valid initializers:
|
|
194
|
-
|
|
195
|
-
| Initializer | What editor sees |
|
|
196
|
-
|---|---|
|
|
197
|
-
| `choicelist[linkTypeInitializer]` | Internal page / External URL / None link picker |
|
|
198
|
-
| `choicelist[nodes=/path/to/folder;type=jnt:content]` | Picker populated from JCR nodes under a path |
|
|
199
|
-
| `choicelist[componentTypes=jnt:page]` | Picker showing all registered views of a node type |
|
|
200
|
-
| `choicelist[country]` | Country selector (ISO codes with localized labels) |
|
|
201
|
-
| `choicelist[menus]` | Picker for existing menus defined on the site |
|
|
202
|
-
| `choicelist[resourceBundle]` | Labels come from `.properties` file keys matching `ns_type.field.value` |
|
|
203
|
-
|
|
204
|
-
```cnd
|
|
205
|
-
// Country picker — stores ISO code, shows localized country name in editor
|
|
206
|
-
- country (string, choicelist[country]) i18n
|
|
207
|
-
|
|
208
|
-
// Node picker — editor selects from nodes under a specific folder
|
|
209
|
-
- template (string, choicelist[nodes=/sites/mySite/templates;type=jnt:content])
|
|
210
|
-
|
|
211
|
-
// Component type picker — shows all views of jnt:page registered in the module
|
|
212
|
-
- pageLayout (string, choicelist[componentTypes=jnt:page])
|
|
213
|
-
|
|
214
|
-
// Resource bundle labels — values come from .properties keys
|
|
215
|
-
- status (string, choicelist[resourceBundle]) i18n < 'draft', 'review', 'published'
|
|
216
|
-
// In .properties: namespace_typeName.status.draft=Draft
|
|
217
|
-
// namespace_typeName.status.review=In Review
|
|
218
|
-
// namespace_typeName.status.published=Published
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
> ⚠️ `choicelist[linkTypeInitializer]` is a **special initializer keyword** (not a value list) — see the link pattern section below. For fixed lists without dynamic labels, always use `(string, choicelist)` + `< 'val1', 'val2'`.
|
|
222
|
-
|
|
223
|
-
Use `< "[-90,90]"` to restrict a numeric property to a range:
|
|
224
|
-
|
|
225
|
-
```cnd
|
|
226
|
-
- latitude (double) mandatory < "[-90,90]"
|
|
227
|
-
- longitude (double) mandatory < "[-180,180]"
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
### `weakreference multiple` vs child nodes
|
|
231
|
-
|
|
232
|
-
| Use `weakreference multiple` when… | Use child nodes when… |
|
|
233
|
-
|---|---|
|
|
234
|
-
| Each item is just a reference (a page link, an image) | Each item has multiple properties (label + URL) |
|
|
235
|
-
| The list is simpler to author and implement | Items need a rich editing interface |
|
|
236
|
-
|
|
237
|
-
```cnd
|
|
238
|
-
// Simpler: list of page links (weakreference multiple)
|
|
239
|
-
[namespace:footer] > jnt:content, namespacemix:component
|
|
240
|
-
- links (weakreference) multiple < jnt:page
|
|
241
|
-
|
|
242
|
-
// More flexible: each CTA has label + link (child nodes)
|
|
243
|
-
[namespace:heroSection] > jnt:content, namespacemix:component
|
|
244
|
-
+ * (namespace:heroCallToAction)
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
Render a `weakreference multiple` list in the view:
|
|
248
|
-
|
|
249
|
-
```tsx
|
|
250
|
-
// links is JCRNodeWrapper[] | undefined
|
|
251
|
-
{links?.filter(link => link !== null).map(link => (
|
|
252
|
-
<a key={link.getPath()} href={buildNodeUrl(link)}>
|
|
253
|
-
{link.getDisplayableName()}
|
|
254
|
-
</a>
|
|
255
|
-
))}
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### Common attributes
|
|
259
|
-
|
|
260
|
-
| Attribute | Meaning |
|
|
261
|
-
|---|---|
|
|
262
|
-
| `i18n` | Translatable per language |
|
|
263
|
-
| `mandatory` | Required field |
|
|
264
|
-
| `multiple` | Allows a list of values |
|
|
265
|
-
| `autocreated` | Auto-creates the property on node creation — always combine with a default: `= 'value'` |
|
|
266
|
-
| `primary` | Marks the most important field — Jahia's editor UI highlights it. One per type only. |
|
|
267
|
-
| `orderable` | Allows reordering child nodes |
|
|
268
|
-
|
|
269
|
-
```cnd
|
|
270
|
-
[ns:blogPost] > jnt:content, nsmix:component
|
|
271
|
-
- title (string) i18n mandatory primary // ← highlighted in the editor
|
|
272
|
-
- country (string, choicelist[country]) = 'US' autocreated mandatory // ← pre-populated on create
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
### `linkTypeInitializer` — the full link pattern
|
|
276
|
-
|
|
277
|
-
`choicelist[linkTypeInitializer]` creates a link picker where the editor selects *internal page*, *external URL*, or *none*. Declare **only the `j:linkType` field** in the CND — the companion fields `j:linknode` and `j:url` are **added automatically by Jahia's mixins** at runtime. Do NOT add them to your CND.
|
|
278
|
-
|
|
279
|
-
```cnd
|
|
280
|
-
[namespace:callToAction] > jnt:content, namespacemix:component
|
|
281
|
-
- label (string) i18n mandatory
|
|
282
|
-
- j:linkType (string, choicelist[linkTypeInitializer]) mandatory
|
|
283
|
-
// ✅ Stop here — j:linknode and j:url are injected by Jahia, not declared by you
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
In `types.ts`, use a **discriminated union** — the mixin fields ARE available at runtime as props:
|
|
287
|
-
|
|
288
|
-
```ts
|
|
289
|
-
import type { JCRNodeWrapper } from "org.jahia.services.content";
|
|
290
|
-
|
|
291
|
-
export type Props =
|
|
292
|
-
| { label?: string; "j:linkType": "none" }
|
|
293
|
-
| { label?: string; "j:linkType": "internal"; "j:linknode"?: JCRNodeWrapper }
|
|
294
|
-
| { label?: string; "j:linkType": "external"; "j:url"?: string; "j:linkTitle"?: string };
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
In the view, use a `switch` on `props["j:linkType"]` (see `jahia-dev-create-view` skill).
|
|
298
|
-
|
|
299
|
-
### i18n rule
|
|
300
|
-
|
|
301
|
-
**Default to `i18n` on every user-facing field** — titles, subtitles, body text, button labels, alt text, captions, people names. Even on monolingual sites, adding `i18n` from the start avoids costly CND migrations later.
|
|
302
|
-
|
|
303
|
-
> ⚠️ **Child nodes do not support `i18n`.** The content tree is shared across all languages. If you need locale-specific child content, use per-language **visibility conditions** in the Jahia editor (Advanced Editing → Visibility → Languages) instead.
|
|
304
|
-
|
|
305
|
-
> Under the hood: non-i18n fields are stored directly on the node; i18n fields are stored as properties of auto-created `jnt:translation_<language>` child nodes. You don't manage these directly, but knowing this helps when debugging missing translated values.
|
|
306
|
-
|
|
307
|
-
### Common mixins to extend
|
|
308
|
-
|
|
309
|
-
| Mixin | Adds |
|
|
310
|
-
|---|---|
|
|
311
|
-
| `jnt:content` | Base type for all user content (always include) |
|
|
312
|
-
| `namespacemix:component` | Makes this type available as a droppable component in Page Builder |
|
|
313
|
-
| `mix:title` | Adds a `jcr:title` field |
|
|
314
|
-
| `jmix:mainResource` | Makes the node accessible at its own URL — use only for content that needs **both a listing card AND a full detail page** (e.g. blog posts). Do not add to navigation-only or visual composition types. |
|
|
315
|
-
| `jmix:hiddenType` | Hides a type from the Page Builder component picker (use for structural/container nodes editors should not add manually). Prefer over `jmix:studioOnly` which can cause silent rendering issues. |
|
|
316
|
-
| `jmix:accessControllableContent` | Enables per-component access control in jcontent — add to the base module mixin |
|
|
317
|
-
| `jmix:image` | Constraint: only image nodes |
|
|
318
|
-
| `jmix:link` | Built-in link type |
|
|
319
|
-
|
|
320
|
-
### Constraints
|
|
321
|
-
|
|
322
|
-
- `< jmix:image` — restricts a weakreference to image nodes only
|
|
323
|
-
- `< namespace:typeName` — restricts child nodes to a specific type
|
|
324
|
-
|
|
325
|
-
**Regex constraints** — validate a `string` field against a pattern:
|
|
326
|
-
|
|
327
|
-
```cnd
|
|
328
|
-
// Email address (or empty — regex starts with ^$ to allow clearing the field)
|
|
329
|
-
- contactEmail (string) < '^$|[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}'
|
|
330
|
-
|
|
331
|
-
// URL-safe slug — lowercase letters, digits, hyphens only
|
|
332
|
-
- slug (string) < '^[a-z0-9-]+$'
|
|
333
|
-
|
|
334
|
-
// Must start with http:// or https://
|
|
335
|
-
- externalUrl (string) < '^https?://'
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
**Date-range constraints** — bound a `date` field to a window. Use `(` / `)` for exclusive bounds, `[` / `]` for inclusive. Leave either side empty for open-ended:
|
|
339
|
-
|
|
340
|
-
```cnd
|
|
341
|
-
// Any date after 2020-01-01 (exclusive lower bound, no upper bound)
|
|
342
|
-
- eventDate (date, datepicker) < '(2020-01-01T00:00:00.000,)'
|
|
343
|
-
|
|
344
|
-
// From 2020 onwards inclusive (events can't be backdated before the platform launched)
|
|
345
|
-
- startDate (date, datepicker) < '[2020-01-01T00:00:00.000,]'
|
|
346
|
-
|
|
347
|
-
// Bounded window — exclusive on both sides
|
|
348
|
-
- campaignDate (date, datepicker) < '(2020-01-01T00:00:00.000,2030-12-31T00:00:00.000)'
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
### Example — Hero Section with CTA (link pattern)
|
|
352
|
-
|
|
353
|
-
```cnd
|
|
354
|
-
[ns:heroSection] > jnt:content, nsmix:component
|
|
355
|
-
- title (string) i18n mandatory
|
|
356
|
-
- subtitle (string, textarea) i18n mandatory
|
|
357
|
-
- background (weakreference, picker[type='image']) mandatory < jmix:image
|
|
358
|
-
+ * (ns:heroCallToAction)
|
|
359
|
-
|
|
360
|
-
[ns:heroCallToAction] > jnt:content, nsmix:component
|
|
361
|
-
- title (string) i18n mandatory
|
|
362
|
-
- j:linkType (string, choicelist[linkTypeInitializer]) mandatory
|
|
363
|
-
// j:linknode and j:url are injected by Jahia — do not declare them
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
### Example — Blog Post
|
|
367
|
-
|
|
368
|
-
```cnd
|
|
369
|
-
[ns:blogPost] > jnt:content, mix:title, jmix:mainResource, nsmix:component
|
|
370
|
-
- subtitle (string) i18n mandatory
|
|
371
|
-
- authors (string) multiple
|
|
372
|
-
- cover (weakreference, picker[type='image']) mandatory < jmix:image
|
|
373
|
-
- body (string, richtext) i18n mandatory
|
|
374
|
-
- publicationDate (date)
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
---
|
|
378
|
-
|
|
379
|
-
## Step 4 — Create a `types.ts` file
|
|
380
|
-
|
|
381
|
-
For each new content type, create a `types.ts` alongside the `definition.cnd` to define the TypeScript props interface. This will be imported by views.
|
|
382
|
-
|
|
383
|
-
> ⚠️ **All props must use `?:` (optional)** — even mandatory CND fields. Jahia does not guarantee a value is present at render time (e.g. content created before a field was added, or incomplete saves). If a view uses a prop without guarding it, it will crash at runtime.
|
|
384
|
-
|
|
385
|
-
```ts
|
|
386
|
-
import type { JCRNodeWrapper } from "org.jahia.services.content";
|
|
387
|
-
|
|
388
|
-
export interface Props {
|
|
389
|
-
title?: string;
|
|
390
|
-
subtitle?: string;
|
|
391
|
-
background?: JCRNodeWrapper;
|
|
392
|
-
}
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
Map CND types to TypeScript:
|
|
396
|
-
|
|
397
|
-
| CND type | TypeScript type |
|
|
398
|
-
|---|---|
|
|
399
|
-
| `string` | `string` |
|
|
400
|
-
| `string` multiple | `string[]` |
|
|
401
|
-
| `weakreference` | `JCRNodeWrapper` |
|
|
402
|
-
| `weakreference` multiple | `JCRNodeWrapper[]` |
|
|
403
|
-
| `date` | `string` (ISO 8601) |
|
|
404
|
-
| `boolean` | `boolean` |
|
|
405
|
-
| `double` | `number` |
|
|
406
|
-
| `long` | `number` |
|
|
407
|
-
|
|
408
|
-
All fields use `?:` regardless of whether they are mandatory in the CND.
|
|
409
|
-
|
|
410
|
-
---
|
|
411
|
-
|
|
412
|
-
## Step 5 — Add UI translations and icon
|
|
413
|
-
|
|
414
|
-
Editors see raw technical names without translations. Always add labels for every new content type.
|
|
415
|
-
|
|
416
|
-
### Translations
|
|
417
|
-
|
|
418
|
-
Open `settings/resources/<module-name>.properties` (English) and `<module-name>_fr.properties` (French) and add:
|
|
419
|
-
|
|
420
|
-
```properties
|
|
421
|
-
# Node type label (shown in the content picker and editor)
|
|
422
|
-
namespace_typeName=Human-readable name
|
|
423
|
-
|
|
424
|
-
# Field labels
|
|
425
|
-
namespace_typeName.fieldName=Field label
|
|
426
|
-
namespace_typeName.fieldName.ui.tooltip=Optional tooltip shown next to the field in the editor.
|
|
427
|
-
|
|
428
|
-
# choicelist[resourceBundle] option labels
|
|
429
|
-
namespace_typeName.fieldName.optionKey=Option label
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
All `ui.tooltip` values support basic HTML. Escape `<` and `>` as `<` and `>`.
|
|
433
|
-
|
|
434
|
-
> For `choicelist[resourceBundle]` fields, the constraint values (e.g. `< 'house', 'apartment'`) must match the property keys (e.g. `namespace_type.field.house=House`).
|
|
435
|
-
|
|
436
|
-
### Content editor forms (fieldsets)
|
|
437
|
-
|
|
438
|
-
For fine-grained control over how fields appear in Jahia's content editor UI — changing a `string` to a radio button, reordering fields, grouping fields into sections — add a JSON fieldset definition:
|
|
439
|
-
|
|
440
|
-
```
|
|
441
|
-
settings/content-editor-forms/fieldsets/<cnd-namespace>_<typeName>.json
|
|
442
|
-
```
|
|
443
|
-
|
|
444
|
-
Example — override `ctaTarget` to render as a radio group and `ctaVariant` as a select:
|
|
445
|
-
|
|
446
|
-
```json
|
|
447
|
-
{
|
|
448
|
-
"nodeType": "ns:card",
|
|
449
|
-
"priority": 1,
|
|
450
|
-
"sections": [{
|
|
451
|
-
"name": "content",
|
|
452
|
-
"fieldSets": [{
|
|
453
|
-
"name": "ns:card",
|
|
454
|
-
"fields": [
|
|
455
|
-
{
|
|
456
|
-
"name": "ctaTarget",
|
|
457
|
-
"selectorType": "RadioChoiceList"
|
|
458
|
-
},
|
|
459
|
-
{
|
|
460
|
-
"name": "ctaVariant",
|
|
461
|
-
"selectorType": "Choicelist",
|
|
462
|
-
"selectorOptions": [{ "name": "context", "value": "true" }]
|
|
463
|
-
}
|
|
464
|
-
]
|
|
465
|
-
}]
|
|
466
|
-
}]
|
|
467
|
-
}
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
`selectorType` overrides the default editor widget for the field. Common overrides:
|
|
471
|
-
|
|
472
|
-
| `selectorType` | Use for |
|
|
473
|
-
|---|---|
|
|
474
|
-
| `RadioChoiceList` | Short fixed-value lists (2–4 options) |
|
|
475
|
-
| `Choicelist` | Longer dropdowns, dynamic lists |
|
|
476
|
-
| `RichText` | Force rich text editor on a `string, richtext` property |
|
|
477
|
-
| `DateTimePicker` | Date + time (vs date only) |
|
|
478
|
-
| `Tag` | Free-form tag input |
|
|
479
|
-
|
|
480
|
-
Fieldset files are optional — only create them when the default editor rendering is insufficient.
|
|
481
|
-
|
|
482
|
-
### Icon
|
|
483
|
-
|
|
484
|
-
Create a 32×32 PNG icon at:
|
|
485
|
-
|
|
486
|
-
```
|
|
487
|
-
settings/content-types-icons/<cnd-namespace>_<typeName>.png
|
|
488
|
-
```
|
|
489
|
-
|
|
490
|
-
The prefix is the **CND namespace** (e.g. `ns`, `nsmix`), **not** the module name. For example:
|
|
491
|
-
- `ns_heroSection.png` ✅
|
|
492
|
-
- `my-module_heroSection.png` ❌ (module name with hyphen — wrong)
|
|
493
|
-
|
|
494
|
-
You can source free icons from [flaticon.com](https://www.flaticon.com/) (download at 32px). If no icon is available, copy an existing one as a placeholder — editors will see a blank space otherwise.
|
|
495
|
-
|
|
496
|
-
---
|
|
497
|
-
|
|
498
|
-
## Step 6 — Deploy to Jahia
|
|
499
|
-
|
|
500
|
-
After creating or modifying a `definition.cnd`, build and deploy the module:
|
|
501
|
-
|
|
502
|
-
```bash
|
|
503
|
-
# Always use this — never use yarn dev from an agent (it's interactive-only)
|
|
504
|
-
yarn build && yarn jahia-deploy
|
|
505
|
-
```
|
|
506
|
-
|
|
507
|
-
If Jahia rejects the type definition (e.g. breaking change), use the **Installed definitions browser** to remove the old definition first:
|
|
508
|
-
> http://localhost:8080/modules/tools/definitionsBrowser.jsp
|
|
509
|
-
|
|
510
|
-
---
|
|
511
|
-
|
|
512
|
-
## Validation checklist
|
|
513
|
-
- [ ] Spec confirmed before writing CND (name, fields, views, usage)
|
|
514
|
-
- [ ] Namespace matches the module (check `settings/definitions.cnd`)
|
|
515
|
-
- [ ] Extends `jnt:content` and appropriate mixins
|
|
516
|
-
- [ ] Uses `namespacemix:component` or `namespacemix:pageComponent` — **never** `jmix:droppableContent` directly
|
|
517
|
-
- [ ] All required properties have the `mandatory` attribute
|
|
518
|
-
- [ ] All user-facing string/text fields have `i18n` (default to always)
|
|
519
|
-
- [ ] Structural/container types have `jmix:hiddenType` (not shown in picker) — do NOT use `jmix:studioOnly`
|
|
520
|
-
- [ ] `jmix:mainResource` only used for listing + detail content (not visual composition)
|
|
521
|
-
- [ ] `types.ts` created with correct TypeScript types
|
|
522
|
-
- [ ] Views handle null/missing values gracefully (mandatory does not guarantee a value)
|
|
523
|
-
- [ ] Translation keys added to `.properties` files (EN + FR minimum)
|
|
524
|
-
- [ ] Icon created at `settings/content-types-icons/<namespace>_<typeName>.png`
|
|
525
|
-
- [ ] `yarn build && yarn jahia-deploy` run and type appears in Jahia content editor with correct label and icon
|
|
526
|
-
|
|
527
|
-
## Troubleshooting
|
|
528
|
-
> https://academy.jahia.com/tutorials-get-started/front-end-developer/making-a-hero-section
|
|
529
|
-
|
|
530
|
-
## References
|
|
531
|
-
|
|
532
|
-
- Native Jahia mixins & node types: https://github.com/Jahia/jahia/tree/master/war/src/main/webapp/WEB-INF/etc/repository/nodetypes
|
|
533
|
-
- Developer training: https://github.com/Jahia/developer-training/blob/main/js-training/slides.md
|
|
534
|
-
- JavaScript modules monorepo: https://github.com/Jahia/javascript-modules
|
|
535
|
-
|
|
536
|
-
> For CND questions about native mixins (e.g. does `jmix:nolive` exist?), fetch the nodetypes directory above to verify before using.
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: jahia-dev-java
|
|
3
|
-
description: |
|
|
4
|
-
Jahia 8.2 Java module development — creating OSGi modules, defining content types (CND),
|
|
5
|
-
building JSP views, implementing backend logic (rules, actions, queries), and extending
|
|
6
|
-
the Jahia UI (Content Editor, jContent, component registry).
|
|
7
|
-
Trigger when the user is: creating or modifying a Java module, writing CND content type
|
|
8
|
-
definitions, building JSP rendering views, implementing Jahia rules or actions, running
|
|
9
|
-
JCR SQL2 queries, extending Content Editor or jContent UI, configuring OSGi services,
|
|
10
|
-
or troubleshooting module deployment issues.
|
|
11
|
-
allowed-tools: Read
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# Jahia 8.2 Java Developer Skill
|
|
15
|
-
|
|
16
|
-
## When to load which reference
|
|
17
|
-
|
|
18
|
-
| Task | Reference |
|
|
19
|
-
|------|-----------|
|
|
20
|
-
| Creating a new module, Maven pom.xml, deployment, Java 11/17, static assets, deploy-free coding, troubleshooting bundle errors | `references/modules.md` |
|
|
21
|
-
| Writing CND definitions, content type hierarchy, property types, choicelist initializers, modifying existing definitions | `references/content-types.md` |
|
|
22
|
-
| JSP views, view selection, `@cache` tag, caching configuration, navigation menus, rendering filters, AMP | `references/rendering.md` |
|
|
23
|
-
| Drools rules (DRL), JCR event listeners, JCR SQL2 queries, external data provider, permissions and roles | `references/backend.md` |
|
|
24
|
-
| OSGi bundle lifecycle, Declarative Services, Blueprint XML, package Import/Export, service registry, Karaf tooling | `references/osgi.md` |
|
|
25
|
-
| Content Editor JSON overrides, jContent UI extension points, component registry, custom selectors, settings pages, CKEditor | `references/ui-extensions.md` |
|
|
26
|
-
| JCR session lifecycle, workspace, node names, SNS, mixins, locks, versioning — **correct patterns and pitfalls** | `/jahia-java-jcr` skill |
|
|
27
|
-
| OSGi `@Component` state, `@Reference`, lifecycle side effects, Export-Package — **correct patterns and pitfalls** | `/jahia-java-osgi` skill |
|
|
28
|
-
| Securing HTTP-reachable surfaces (servlets, GraphQL, filters) — Security Filter, CSRF Guard, ACLs | `/jahia-java-security` skill |
|
|
29
|
-
| Relational persistence alongside JCR — N+1, timestamp consistency, entity model, transactional asymmetry | `/jahia-java-persistence` skill |
|
|
30
|
-
| Thread safety in a multi-threaded webapp — `volatile`, locking, atomic variables, thread-safe collections, JCR session threading | `/jahia-java-concurrency` skill |
|
|
31
|
-
|
|
32
|
-
## Key Concepts Glossary
|
|
33
|
-
|
|
34
|
-
**Bundle / Module**
|
|
35
|
-
An OSGi JAR deployed into Jahia. Every Jahia module is an OSGi bundle. Jahia adds custom MANIFEST attributes (`Jahia-Module-Type`, `Jahia-Depends`, `Jahia-Root-Folder`) on top of standard OSGi headers.
|
|
36
|
-
|
|
37
|
-
**CND (Compact Namespace and Node Type Definition)**
|
|
38
|
-
Apache Jackrabbit standard file format (`definitions.cnd`) that declares content types. Lives at `src/main/resources/META-INF/definitions.cnd`.
|
|
39
|
-
|
|
40
|
-
**JCR (Java Content Repository)**
|
|
41
|
-
The underlying storage model. Content is a tree of nodes, each with a primary type and optional mixin types. Jahia uses Apache Jackrabbit Oak as the JCR implementation.
|
|
42
|
-
|
|
43
|
-
**jnt: prefix**
|
|
44
|
-
Jahia Node Types namespace (`http://www.jahia.org/jahia/nt/1.0`). Used for concrete content types like `jnt:content`, `jnt:page`, `jnt:file`.
|
|
45
|
-
|
|
46
|
-
**jmix: prefix**
|
|
47
|
-
Jahia Mixin namespace (`http://www.jahia.org/jahia/mix/1.0`). Used for abstract mixin types like `jmix:editorialContent`, `jmix:list`, `jmix:cache`.
|
|
48
|
-
|
|
49
|
-
**jmix:editorialContent**
|
|
50
|
-
Key mixin — makes a content type visible in jContent and enables content versioning. Required for any user-editable content type.
|
|
51
|
-
|
|
52
|
-
**jmix:droppableContent**
|
|
53
|
-
Base mixin for component categories. Types that inherit from this mixin create a component folder in the content picker sidebar.
|
|
54
|
-
|
|
55
|
-
**Declarative Services (DS)**
|
|
56
|
-
Preferred OSGi service mechanism in Jahia 8.2. Uses `@Component`, `@Activate`, `@Reference` annotations. Blueprint XML is deprecated as of Jahia 8.2.
|
|
57
|
-
|
|
58
|
-
**jahia-depends**
|
|
59
|
-
MANIFEST / pom.xml property declaring other module artifact IDs that this module requires. OSGi resolves dependencies before starting the bundle. Supports version ranges and optional dependencies.
|
|
60
|
-
|
|
61
|
-
**Embed-Dependency**
|
|
62
|
-
Felix Maven Bundle Plugin instruction to embed non-OSGi JARs inside the module JAR. Default scope: `compile|runtime`. Dependencies scoped `provided` are NOT embedded.
|
|
63
|
-
|
|
64
|
-
**Deploy-free coding**
|
|
65
|
-
Development workflow where source file changes (JSP, CSS, JS, CND) are picked up live without redeployment. Requires initial deploy and `Jahia-Source-Folders` MANIFEST attribute pointing to the project base directory.
|
|
66
|
-
|
|
67
|
-
**jahia:deploy Maven goal**
|
|
68
|
-
Deploys the compiled module JAR to a local Jahia server or Docker container. Usage: `mvn clean install jahia:deploy -P <profile>`.
|
|
69
|
-
|
|
70
|
-
**Content Editor**
|
|
71
|
-
Jahia's React-based form UI for creating/editing content. Forms are generated from CND definitions merged with JSON override files. Override files live in `META-INF/jahia-content-editor-forms/`.
|
|
72
|
-
|
|
73
|
-
**jContent**
|
|
74
|
-
Jahia's React-based content management UI. Extended via the component registry (`window.jahia.uiExtender.registry`). Used by editors to browse, create, and manage content.
|
|
75
|
-
|
|
76
|
-
**Component Registry**
|
|
77
|
-
JavaScript hashmap (`type + key → value`) used to inject UI elements (actions, accordions, nav items, selector types) into jContent and Content Editor at runtime. Access via `import {registry} from '@jahia/ui-extender'`.
|
|
78
|
-
|
|
79
|
-
**DRL (Drools Rule Language)**
|
|
80
|
-
Rule files placed at `META-INF/rules.drl` (all workspaces), `META-INF/default-rules.drl` (edit workspace only), or `META-INF/live-rules.drl` (live workspace only). Jahia provides a built-in DSL that simplifies rule conditions and consequences.
|
|
81
|
-
|
|
82
|
-
**Workspace**
|
|
83
|
-
Jahia has two JCR workspaces: `default` (edit/preview, where authors work) and `live` (what visitors see). Publication copies nodes from default to live.
|
|
84
|
-
|
|
85
|
-
**Felix Web Console**
|
|
86
|
-
OSGi administration UI at `http://localhost:8080/tools`. Shows bundle states, packages, services. Useful for diagnosing dependency issues.
|
|
87
|
-
|
|
88
|
-
**Karaf SSH Shell**
|
|
89
|
-
Command-line OSGi console accessible via `ssh -p 8101 jahia@localhost`. Key commands: `jahia:modules`, `bundle:requirements`, `jcr:query`.
|
|
90
|
-
|
|
91
|
-
**JCR SQL2**
|
|
92
|
-
Query language for the JCR. Syntax: `SELECT * FROM [nodetype] AS alias WHERE condition`. Use `ISDESCENDANTNODE(alias, '/path')` to scope queries. Do NOT query `nt:base` — use `jmix:searchable` instead for broad content queries.
|
|
93
|
-
|
|
94
|
-
**choicelist initializer**
|
|
95
|
-
Java class implementing `ModuleChoiceListInitializer` that populates dropdown values in Content Editor. Registered as an OSGi `@Component` service. Referenced in CND with `choicelist[keyName]` syntax.
|
|
96
|
-
|
|
97
|
-
**Rendering filter**
|
|
98
|
-
OSGi service implementing `RenderFilter`. Wraps every JSP/module render. Priority < 16 runs per-request; priority > 16 runs only on cache miss. Extend `AbstractFilter` to use condition setters.
|
|
99
|
-
|
|
100
|
-
**Migration scripts**
|
|
101
|
-
Groovy scripts in `src/main/resources/META-INF/patches/` that run once on module deployment to migrate JCR content or configuration.
|
|
102
|
-
|
|
103
|
-
**Module types**
|
|
104
|
-
`Jahia-Module-Type` MANIFEST value controls module behavior:
|
|
105
|
-
- `module` — regular content module (default)
|
|
106
|
-
- `system` — loaded early, provides system-level services
|
|
107
|
-
- `templatesSet` — template set module that defines site templates
|
|
108
|
-
|
|
109
|
-
**Static resources**
|
|
110
|
-
JS/CSS/images declared in `Jahia-Static-Resources` MANIFEST header (e.g. `/css,/icons,/javascript`). Served directly from the OSGi bundle JAR under `src/main/resources/`.
|