@jahia/agentic 0.4.1 → 0.5.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 (80) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/antigravity/.agents/rules/jahia.md +51 -0
  3. package/dist/antigravity/.agents/skills/jahia-cnd-author/SKILL.md +94 -0
  4. package/dist/antigravity/.agents/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
  5. package/dist/antigravity/.agents/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
  6. package/dist/antigravity/.agents/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
  7. package/dist/antigravity/.agents/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
  8. package/dist/antigravity/.agents/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
  9. package/dist/antigravity/.agents/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
  10. package/dist/antigravity/.agents/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
  11. package/dist/antigravity/.agents/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
  12. package/dist/antigravity/.agents/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
  13. package/dist/antigravity/.agents/skills/jahia-dev-accessibility/SKILL.md +11 -0
  14. package/dist/antigravity/.agents/skills/jahia-dev-build-component/SKILL.md +133 -0
  15. package/dist/antigravity/.agents/skills/jahia-dev-create-page-template/SKILL.md +341 -0
  16. package/dist/antigravity/.agents/skills/jahia-dev-create-template-set/SKILL.md +205 -0
  17. package/dist/antigravity/.agents/skills/jahia-dev-create-view/SKILL.md +896 -0
  18. package/dist/antigravity/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
  19. package/dist/antigravity/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
  20. package/dist/antigravity/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
  21. package/dist/antigravity/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
  22. package/dist/antigravity/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
  23. package/dist/antigravity/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
  24. package/dist/antigravity/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
  25. package/dist/antigravity/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
  26. package/dist/antigravity/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
  27. package/dist/antigravity/.agents/skills/jahia-dev-query-content/SKILL.md +204 -0
  28. package/dist/antigravity/.agents/skills/jahia-dev-review/SKILL.md +228 -0
  29. package/dist/antigravity/.agents/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  30. package/dist/antigravity/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  31. package/dist/antigravity/.agents/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  32. package/dist/antigravity/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
  33. package/dist/antigravity/.agents/skills/jahia-dev-site-review/SKILL.md +70 -0
  34. package/dist/antigravity/.agents/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  35. package/dist/antigravity/.agents/skills/jahia-dev-start-local/SKILL.md +121 -0
  36. package/dist/antigravity/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  37. package/dist/antigravity/AGENTS.md +62 -0
  38. package/dist/claude/.mcp.json +11 -0
  39. package/dist/cursor/.cursor/mcp.json +11 -0
  40. package/dist/gemini/.gemini/settings.json +10 -0
  41. package/dist/index.js +12 -0
  42. package/dist/kiro/.kiro/settings/mcp.json +10 -0
  43. package/dist/kiro/.kiro/skills/jahia-cnd-author/SKILL.md +94 -0
  44. package/dist/kiro/.kiro/skills/jahia-cnd-author/references/cnd-area-types.md +55 -0
  45. package/dist/kiro/.kiro/skills/jahia-cnd-author/references/cnd-authoring-experience.md +92 -0
  46. package/dist/kiro/.kiro/skills/jahia-cnd-author/references/cnd-child-nodes.md +74 -0
  47. package/dist/kiro/.kiro/skills/jahia-cnd-author/references/cnd-jahia-mixins.md +510 -0
  48. package/dist/kiro/.kiro/skills/jahia-cnd-author/references/cnd-modeling-decisions.md +87 -0
  49. package/dist/kiro/.kiro/skills/jahia-cnd-author/references/cnd-numbers-dates.md +92 -0
  50. package/dist/kiro/.kiro/skills/jahia-cnd-author/references/cnd-string-selectors.md +133 -0
  51. package/dist/kiro/.kiro/skills/jahia-cnd-author/references/cnd-syntax.md +119 -0
  52. package/dist/kiro/.kiro/skills/jahia-cnd-author/references/types-ts-mapping.md +73 -0
  53. package/dist/kiro/.kiro/skills/jahia-dev-accessibility/SKILL.md +11 -0
  54. package/dist/kiro/.kiro/skills/jahia-dev-build-component/SKILL.md +133 -0
  55. package/dist/kiro/.kiro/skills/jahia-dev-create-page-template/SKILL.md +341 -0
  56. package/dist/kiro/.kiro/skills/jahia-dev-create-template-set/SKILL.md +205 -0
  57. package/dist/kiro/.kiro/skills/jahia-dev-create-view/SKILL.md +896 -0
  58. package/dist/kiro/.kiro/skills/jahia-dev-debug/SKILL.md +176 -0
  59. package/dist/kiro/.kiro/skills/jahia-dev-import-from/SKILL.md +244 -0
  60. package/dist/kiro/.kiro/skills/jahia-dev-jexperience/SKILL.md +269 -0
  61. package/dist/kiro/.kiro/skills/jahia-dev-ops/SKILL.md +50 -0
  62. package/dist/kiro/.kiro/skills/jahia-dev-ops/references/docker.md +151 -0
  63. package/dist/kiro/.kiro/skills/jahia-dev-ops/references/monitoring.md +195 -0
  64. package/dist/kiro/.kiro/skills/jahia-dev-ops/references/provisioning.md +269 -0
  65. package/dist/kiro/.kiro/skills/jahia-dev-properties/SKILL.md +147 -0
  66. package/dist/kiro/.kiro/skills/jahia-dev-properties/references/all-properties.md +231 -0
  67. package/dist/kiro/.kiro/skills/jahia-dev-query-content/SKILL.md +204 -0
  68. package/dist/kiro/.kiro/skills/jahia-dev-review/SKILL.md +228 -0
  69. package/dist/kiro/.kiro/skills/jahia-dev-review-cnd/SKILL.md +79 -0
  70. package/dist/kiro/.kiro/skills/jahia-dev-review-cnd/scripts/check-cnd.d.mts +13 -0
  71. package/dist/kiro/.kiro/skills/jahia-dev-review-cnd/scripts/check-cnd.mjs +198 -0
  72. package/dist/kiro/.kiro/skills/jahia-dev-screenshot/SKILL.md +177 -0
  73. package/dist/kiro/.kiro/skills/jahia-dev-site-review/SKILL.md +70 -0
  74. package/dist/kiro/.kiro/skills/jahia-dev-site-review/scripts/review-pages.mjs +85 -0
  75. package/dist/kiro/.kiro/skills/jahia-dev-start-local/SKILL.md +121 -0
  76. package/dist/kiro/.kiro/skills/jahia-jcr-sql2/SKILL.md +258 -0
  77. package/dist/kiro/.kiro/steering/jahia.md +55 -0
  78. package/dist/kiro/AGENTS.md +62 -0
  79. package/dist/opencode/opencode.json +12 -0
  80. package/package.json +1 -1
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: jahia-dev-properties
3
+ description: |
4
+ Reference and guidance for configuring Jahia 8.2 via jahia.properties,
5
+ jahia.node.properties, and OSGi .cfg files. Use when: setting operating mode
6
+ (dev/production), configuring clustering, changing authentication (CAS, SPNEGO,
7
+ cookie), tuning JCR/search index settings, adjusting URL rewriting, changing
8
+ disk paths, or looking up any specific Jahia property key and its default value.
9
+ allowed-tools: Read
10
+ ---
11
+
12
+ ## Configuration Files
13
+
14
+ | File | Location | Purpose |
15
+ |---|---|---|
16
+ | `jahia.properties` | `digital-factory-config/jahia/` | Main Jahia configuration |
17
+ | `jahia.node.properties` | `digital-factory-config/jahia/` | Cluster / node-specific settings |
18
+ | OSGi `.cfg` files | `digital-factory-data/karaf/etc/` | Module and subsystem settings |
19
+
20
+ `jahia.properties` is read at startup. Changes require a restart unless overridden via OSGi config at runtime.
21
+
22
+ ## Variable Interpolation
23
+
24
+ Jahia resolves these variables in property values:
25
+
26
+ | Variable | Resolves to |
27
+ |---|---|
28
+ | `${jahiaWebAppRoot}` | Webapp root (e.g. `.../webapps/ROOT`) |
29
+ | `${jahia.data.dir}` | Same as `jahiaVarDiskPath` once resolved |
30
+ | `${jahia.jackrabbit.home}` | JCR repository home |
31
+
32
+ Default data layout:
33
+ ```
34
+ digital-factory-data/ ← jahiaVarDiskPath
35
+ modules/ ← jahiaModulesDiskPath
36
+ imports/ ← jahiaImportsDiskPath
37
+ repository/ ← jahia.jackrabbit.home
38
+ repository/datastore/ ← jahia.jackrabbit.datastore.path
39
+ generated-resources/ ← must be shared in cluster
40
+ ```
41
+
42
+ ## Common Production Setup
43
+
44
+ Properties to change when going to production:
45
+
46
+ ```properties
47
+ # jahia.properties
48
+ operatingMode = production
49
+
50
+ # Disable development-only endpoints
51
+ jahia.find.disabled = true
52
+ repositoryDirectoryListingDisabled = false
53
+
54
+ # URL rewriting (already on by default)
55
+ urlRewriteSeoRulesEnabled = true
56
+ urlRewriteRemoveCmsPrefix = true
57
+ permanentMoveForVanityURL = true
58
+
59
+ # Protect against semicolon injection
60
+ shiro.blockSemicolon = true
61
+ ```
62
+
63
+ ## Cluster Setup (jahia.node.properties)
64
+
65
+ ```properties
66
+ cluster.activated = true
67
+ cluster.node.serverId = my-node-1 # unique per node
68
+ processingServer = true # only ONE node should be true
69
+ cluster.tcp.bindAddress = # leave empty to auto-detect, or set IP
70
+ cluster.tcp.bindPort = 7870 # JGroups
71
+ cluster.hazelcast.bindPort = 7860 # Hazelcast
72
+
73
+ # In jahia.properties — must be on shared filesystem
74
+ jahiaGeneratedResourcesDiskPath = /shared-nfs/generated-resources/
75
+ ```
76
+
77
+ ## Authentication Quick Reference
78
+
79
+ | Auth method | Enable property |
80
+ |---|---|
81
+ | Cookie (default) | `auth.cookie.enabled = true` |
82
+ | CAS | `auth.cas.enabled = true` + set `auth.cas.serverUrlPrefix` |
83
+ | SPNEGO (Windows) | `auth.spnego.enabled = true` |
84
+ | Container | `auth.container.enabled = true` |
85
+
86
+ CAS minimum config:
87
+ ```properties
88
+ auth.cas.enabled = true
89
+ auth.cas.serverUrlPrefix = https://cas.example.com/cas
90
+ auth.cas.loginUrl = ${auth.cas.serverUrlPrefix}/login
91
+ auth.cas.logoutUrl = ${auth.cas.serverUrlPrefix}/logout
92
+ ```
93
+
94
+ ## JCR / Search Tuning
95
+
96
+ ```properties
97
+ # Check + auto-repair search index on startup (costly — use for one-time fixes)
98
+ jahia.jackrabbit.searchIndex.enableConsistencyCheck = true
99
+ jahia.jackrabbit.searchIndex.autoRepair = true
100
+
101
+ # Full reindex on startup (very slow on large repos — use only when needed)
102
+ jahia.jackrabbit.reindexOnStartup = true
103
+
104
+ # Workspace consistency check
105
+ jahia.jackrabbit.consistencyCheck = true
106
+ jahia.jackrabbit.consistencyFix = true
107
+
108
+ # Query stats (useful for diagnosing slow queries)
109
+ jahia.jackrabbit.queryStatsEnabled = true
110
+ ```
111
+
112
+ ## Performance Tuning
113
+
114
+ ```properties
115
+ # Reduce parallel module generation threads if CPU-bound
116
+ maxModulesToGenerateInParallel = 50
117
+
118
+ # Increase LRU caches for large sites
119
+ accessManagerPathPermissionCacheMaxSize = 100
120
+ jahia.jcr.nodesCachePerSessionMaxSize = 100
121
+
122
+ # Limit max request render time (ms); -1 = no limit
123
+ maxRequestRenderTime = 60000
124
+
125
+ # Mass import: expand to disk first for very large imports
126
+ expandImportedFilesOnDisk = true
127
+ expandImportedFilesOnDiskPath = /tmp
128
+ importMaxBatch = 500
129
+ ```
130
+
131
+ ## OSGi / Karaf Shell
132
+
133
+ ```properties
134
+ karaf.remoteShell.port = 8101 # SSH into Karaf; set negative to disable
135
+ karaf.remoteShell.host = 127.0.0.1 # bind address; restrict to localhost in prod
136
+ ```
137
+
138
+ Connect: `ssh -p 8101 karaf@localhost`
139
+
140
+ ## Full Property Reference
141
+
142
+ See [references/all-properties.md](references/all-properties.md) for all ~90 properties grouped by category with keys, defaults, and descriptions.
143
+
144
+ Search tip:
145
+ ```bash
146
+ grep -i "keyword" ~/.claude/skills/jahia-properties/references/all-properties.md
147
+ ```
@@ -0,0 +1,231 @@
1
+ # Jahia 8.2 — All Properties Reference
2
+
3
+ ## Jahia Modes
4
+
5
+ | Property | Default | Description |
6
+ |---|---|---|
7
+ | `operatingMode` | `development` | `development`, `production`, or `distantPublicationServer` |
8
+ | `maintenanceMode` | `false` | Serve requests only to `/tools/` |
9
+ | `readOnlyMode` | `false` | Disable Page Composer, Content Editor, Studio |
10
+ | `sessionExpiryTime` | `60` | Session lifetime in minutes |
11
+
12
+ ## Disk Paths
13
+
14
+ | Property | Default | Description |
15
+ |---|---|---|
16
+ | `jahiaVarDiskPath` | `${jahiaWebAppRoot}/../../../digital-factory-data` | Runtime data root |
17
+ | `tmpContentDiskPath` | `${jahia.data.dir}/content/tmp/` | Temporary files |
18
+ | `jahiaModulesDiskPath` | `${jahia.data.dir}/modules/` | Deployed modules |
19
+ | `jahiaImportsDiskPath` | `${jahia.data.dir}/imports/` | Import files |
20
+ | `modulesSourcesDiskPath` | `${jahia.data.dir}/sources/` | Module sources |
21
+ | `jahiaGeneratedResourcesDiskPath` | `${jahia.data.dir}/generated-resources/` | **Must be shared across cluster nodes** |
22
+ | `jahia.jackrabbit.home` | `${jahia.data.dir}/repository` | JCR repository home |
23
+ | `jahia.jackrabbit.datastore.path` | `${jahia.jackrabbit.home}/datastore` | JCR file datastore |
24
+
25
+ ## URL Settings
26
+
27
+ | Property | Default | Description |
28
+ |---|---|---|
29
+ | `jahiaWebAppsDeployerBaseURL` | `http://127.0.0.1:8080/manager/html/` | WAR deployer URL |
30
+ | `permanentMoveForVanityURL` | `true` | HTTP 301 for vanity URLs |
31
+ | `urlRewriteSeoRulesEnabled` | `true` | Shorten content URLs in live mode |
32
+ | `urlRewriteRemoveCmsPrefix` | `true` | Remove `/cms` prefix when SEO rewriting active |
33
+ | `urlRewriteUseAbsoluteUrls` | `true` | Generate absolute URLs for cross-site links |
34
+ | `siteURLPortOverride` | `0` | Force port in generated URLs (0 = disabled) |
35
+ | `disableJsessionIdParameter` | `true` | Disable jsessionid URL tracking |
36
+ | `shiro.blockSemicolon` | `true` | Block requests with semicolon in URI |
37
+
38
+ ## Authentication
39
+
40
+ | Property | Default | Description |
41
+ |---|---|---|
42
+ | `auth.container.enabled` | `false` | Container authentication valve |
43
+ | `auth.cookie.enabled` | `true` | Cookie-based authentication |
44
+ | `auth.cas.enabled` | `false` | CAS SSO authentication |
45
+ | `auth.cas.serverUrlPrefix` | `https://localhost:8443/cas` | CAS server base URL |
46
+ | `auth.cas.loginUrl` | `${auth.cas.serverUrlPrefix}/login` | CAS login redirect |
47
+ | `auth.cas.logoutUrl` | `${auth.cas.serverUrlPrefix}/logout` | CAS logout redirect |
48
+ | `auth.spnego.enabled` | `false` | SPNEGO (Windows-integrated auth) |
49
+
50
+ ## Database
51
+
52
+ | Property | Default | Description |
53
+ |---|---|---|
54
+ | `db_script` | `derby_embedded.script` | Database initialization script |
55
+ | `hibernate.dialect` | `org.hibernate.dialect.DerbyTenSevenDialect` | Hibernate dialect |
56
+ | `org.quartz.driverDelegateClass` | `org.quartz.impl.jdbcjobstore.StdJDBCDelegate` | Quartz JDBC delegate |
57
+
58
+ ## Search Index Consistency
59
+
60
+ | Property | Default | Description |
61
+ |---|---|---|
62
+ | `jahia.jackrabbit.searchIndex.enableConsistencyCheck` | `false` | Check index on startup |
63
+ | `jahia.jackrabbit.searchIndex.forceConsistencyCheck` | `false` | Check on every startup |
64
+ | `jahia.jackrabbit.searchIndex.autoRepair` | `true` | Auto-repair index errors |
65
+ | `jahia.jackrabbit.searchIndex.spellChecker.distanceImplementation` | `org.apache.lucene.search.spell.LevensteinDistance` | Spell checker algorithm |
66
+ | `jahia.jackrabbit.searchIndex.spellChecker.minimumScore` | `0.7` | Min similarity for suggestions |
67
+ | `jahia.jackrabbit.reindexOnStartup` | `false` | Full reindex on every startup |
68
+ | `queryApproxCountLimit` | `100` | Results before switching to approximate count |
69
+ | `jahia.jackrabbit.queryStatsEnabled` | `true` | Collect JCR query statistics |
70
+
71
+ ## Workspace / JCR
72
+
73
+ | Property | Default | Description |
74
+ |---|---|---|
75
+ | `jahia.jackrabbit.consistencyCheck` | `false` | JCR workspace consistency check on startup |
76
+ | `jahia.jackrabbit.consistencyFix` | `false` | Auto-fix workspace issues |
77
+ | `repositoryDirectoryListingDisabled` | `false` | Disable `/repository` WebDAV listing |
78
+ | `repositoryAllowedNodeTypes` | `rep:root,jnt:virtualsitesFolder,jnt:virtualsite,jnt:folder,jnt:file` | Node types exposed via WebDAV |
79
+ | `jahia.publication.versionedTypes` | `jmix:editorialContent,jnt:file` | Types versioned on publish |
80
+ | `jahia.publication.excludedVersionedTypes` | _(empty)_ | Types excluded from versioning |
81
+ | `jahia.fileServlet.statisticsEnabled` | `false` | File access statistics |
82
+ | `jahia.jcr.maxNameSize` | `32` | Maximum node name length |
83
+ | `jahia.ui.contentTab.defaultSynchronizeNameWithTitle` | `true` | Auto-sync system name with title |
84
+ | `accessManagerPathPermissionCacheMaxSize` | `100` | JCR ACL cache size (LRU entries) |
85
+ | `jahia.jcr.nodesCachePerSessionMaxSize` | `100` | JCRNodeWrapper instance cache per session |
86
+
87
+ ## Concurrent Processing / Performance
88
+
89
+ | Property | Default | Description |
90
+ |---|---|---|
91
+ | `maxModulesToGenerateInParallel` | `50` | Max threads for module generation |
92
+ | `moduleGenerationWaitTime` | `10000` | Wait before generation starts (ms) |
93
+ | `moduleGenerationThreadDumpToSystemOut` | `true` | Thread dump to stdout on timeout |
94
+ | `moduleGenerationTthreadDumpToFile` | `true` | Thread dump to file on timeout |
95
+ | `minimumIntervalAfterLastAutoThreadDump` | `60000` | Minimum interval between auto dumps (-1 = disabled) |
96
+ | `maxRequestRenderTime` | `60000` | Max render time per request in ms (-1/0 = no limit) |
97
+
98
+ ## Error Handling
99
+
100
+ | Property | Default | Description |
101
+ |---|---|---|
102
+ | `dumpErrorsToFiles` | `true` | Write error dumps to files |
103
+ | `fileDumpMaxRegroupingOfPreviousException` | `500` | Max recurrences before new dump file |
104
+ | `useJstackForThreadDumps` | `false` | Use external `jstack` for thread dumps |
105
+ | `mail_maxRegroupingOfPreviousException` | `500` | Max recurrences before sending error email |
106
+ | `site.error.enabled` | `true` | Site-specific error document pages |
107
+
108
+ ## Mass Imports
109
+
110
+ | Property | Default | Description |
111
+ |---|---|---|
112
+ | `expandImportedFilesOnDisk` | `false` | Expand binary files to disk before import |
113
+ | `expandImportedFilesOnDiskPath` | `/tmp` | Expansion target path |
114
+ | `importMaxBatch` | `500` | Node save rate during mass import |
115
+
116
+ ## Publication
117
+
118
+ | Property | Default | Description |
119
+ |---|---|---|
120
+ | `jahia.publication.batchSize` | `100` | Publication batch size |
121
+ | `jahia.publicationManagerNodeTypes` | `jmix:publication,jmix:workflowRulesable,jnt:navMenuText` | Types shown in Publication Manager |
122
+ | `jahia.ui.pickers.suppressPublicationInfo` | `false` | Hide publication status in pickers |
123
+ | `area.auto.activated` | `true` | Auto-activate areas on first Page Composer display |
124
+
125
+ ## User & Group Management
126
+
127
+ | Property | Default | Description |
128
+ |---|---|---|
129
+ | `userManagementUserNamePattern` | `[0-9a-z_A-Z\\-\\{\\}\\.@]+` | Username validation regex |
130
+ | `userManagementGroupNamePattern` | `[0-9a-z_A-Z\\-\\{\\}]+` | Group name validation regex |
131
+ | `jahiaJCRUserCountLimit` | `100` | Max JCR users loaded on Users page |
132
+ | `jahia.settings.userDisplayLimit` | `100` | Default user display count |
133
+ | `jahia.settings.memberDisplayLimit` | `100` | Default group member display count |
134
+ | `external.users.properties.readonly` | `j:firstName,j:lastName,j:organization,j:email` | Read-only properties for external users |
135
+ | `considerPreferredLanguageAfterLogin` | `false` | Switch to user's preferred language after login |
136
+
137
+ ## Multilingual
138
+
139
+ | Property | Default | Description |
140
+ |---|---|---|
141
+ | `characterEncoding` | `UTF-8` | Response and email charset |
142
+ | `org.jahia.multilang.default_language_code` | `en` | Fallback language code |
143
+
144
+ ## Image & Video
145
+
146
+ | Property | Default | Description |
147
+ |---|---|---|
148
+ | `imageService` | `ImageJAndJava2DImageService` | `ImageJAndJava2DImageService` or ImageMagick service |
149
+ | `imageMagickPath` | _(empty)_ | Path to ImageMagick and exiftools |
150
+ | `jahia.dm.thumbnails.video.enabled` | `false` | Auto video thumbnail generation |
151
+ | `jahia.dm.thumbnails.video.ffmpeg` | `ffmpeg` | Path to ffmpeg executable |
152
+
153
+ ## Source Control & Build Tools
154
+
155
+ | Property | Default | Description |
156
+ |---|---|---|
157
+ | `gitPath` | `git` | Git executable |
158
+ | `svnPath` | `svn` | SVN executable |
159
+ | `mvnPath` | `mvn` | Maven executable |
160
+
161
+ ## REST API
162
+
163
+ | Property | Default | Description |
164
+ |---|---|---|
165
+ | `jahia.find.disabled` | `true` | Disable the `/find` JCR REST API |
166
+ | `jahia.find.nodeTypesToSkip` | `jnt:passwordHistory,jnt:passwordHistoryEntry` | Node types excluded from find API |
167
+
168
+ ## OSGi / Karaf
169
+
170
+ | Property | Default | Description |
171
+ |---|---|---|
172
+ | `karaf.remoteShell.port` | `8101` | Karaf SSH shell port (negative = disabled) |
173
+ | `karaf.remoteShell.host` | `127.0.0.1` | SSH shell bind address |
174
+
175
+ ## UI / Contribution
176
+
177
+ | Property | Default | Description |
178
+ |---|---|---|
179
+ | `jahia.ui.dragAndDrop` | `DRAG_ZONE_IN_EDIT_AREA` | `ENABLED`, `DRAG_ZONE_IN_EDIT_AREA`, or `DISABLED` |
180
+ | `jahia.ui.createChildrenDirectButtons.limit` | `5` | Content type button threshold |
181
+ | `jahia.jquery.version` | `3.6.0` | jQuery version (`1.12.4`, `3.4.1`, `3.6.0`) |
182
+ | `jahia.jquery.plugins` | `jquery-migrate-3.0.1.min.js` | jQuery plugin mappings |
183
+ | `wip.checkbox.checked` | `false` | WIP checkbox state on Content Editor open |
184
+ | `loadJahiaContext` | `true` | Inject `initJahiaContext.js` in live mode |
185
+ | `protectedResourceAccessStrategy` | `silent` | `silent` (404) or `authorizationError` (401/403) |
186
+ | `useNewAggregateAndCacheImplementation` | `false` | Render chain V2 (true) vs V1 (false) |
187
+
188
+ ## Tagging & Search
189
+
190
+ | Property | Default | Description |
191
+ |---|---|---|
192
+ | `tag.suggester.faceted` | `false` | Use faceted query for tag suggestions |
193
+
194
+ ## Misc
195
+
196
+ | Property | Default | Description |
197
+ |---|---|---|
198
+ | `default_templates_set` | `sample-bootstrap-templates` | Default template set module |
199
+ | `jahiaFileUploadMaxSize` | `104857600` | Max file upload size in bytes (100 MB) |
200
+ | `jahia.atmosphere.heartbeat` | `60` | Session validity check interval (seconds) |
201
+ | `jahia.site.import.scanner.interval` | `30000` | Site import file watcher interval (ms) |
202
+ | `documentation.link` | `https://academy.jahia.com/...` | Documentation URL shown in admin UI |
203
+
204
+ ---
205
+
206
+ ## Cluster Settings — jahia.node.properties
207
+
208
+ | Property | Default | Description |
209
+ |---|---|---|
210
+ | `cluster.activated` | `false` | Enable cluster communication |
211
+ | `cluster.node.serverId` | `dx-<uuid>` | Unique node identifier |
212
+ | `processingServer` | `true` | Run background jobs (only ONE node) |
213
+ | `cluster.tcp.bindAddress` | _(empty)_ | JGroups bind address (empty = auto-detect) |
214
+ | `cluster.tcp.bindPort` | `7870` | JGroups communication port |
215
+ | `cluster.hazelcast.bindPort` | `7860` | Hazelcast bundle deployment port |
216
+
217
+ ---
218
+
219
+ ## OSGi Module Config Files
220
+
221
+ ### jContent — `org.jahia.modules.jcontent.cfg`
222
+
223
+ | Property | Default | Description |
224
+ |---|---|---|
225
+ | `showPageComposer` | `false` | Show Page Composer inside jContent |
226
+
227
+ ### Content Editor — `org.jahia.modules.contentEditor.cfg`
228
+
229
+ | Property | Default | Description |
230
+ |---|---|---|
231
+ | `createChildrenDirectButtons.limit` | `5` | Content type button threshold |
@@ -0,0 +1,204 @@
1
+ ---
2
+ name: jahia-dev-query-content
3
+ description: Designs JCR-SQL2 content queries for Jahia page-builder listings and JS module views. Use when asked to list content from folders, filter items, sort results, or wire `useJCRQuery` into a template-set component.
4
+ ---
5
+
6
+ # Skill: jahia-dev-query-content
7
+
8
+ Use this skill when building content listings in Jahia template sets.
9
+ For pure JCR-SQL2 language rules, full-text syntax, joins, pagination, and performance guardrails, also use `/jahia-jcr-sql2`.
10
+
11
+ ---
12
+
13
+ ## Overview
14
+
15
+ Jahia stores editorial content in the JCR. In template sets, you usually query it in one of three ways:
16
+
17
+ 1. **Page Builder query component** — no-code listing using a JCR query string
18
+ 2. **Server-side view** — `useJCRQuery` inside a `.server.tsx` component
19
+ 3. **Client-driven experience** — use a dedicated API strategy only when a server-side query is not enough
20
+
21
+ ---
22
+
23
+ ## Step 1 — Understand where content lives
24
+
25
+ Reusable content usually lives under `/sites/<siteKey>/contents/...` instead of directly under pages.
26
+ Create and manage those folders in jContent.
27
+
28
+ If editors need the folder visible in the Page Builder content tree, add `jmix:visibleInContentTree` to the folder type:
29
+
30
+ ```cnd
31
+ [namespace:blogFolder] > jnt:contentFolder, jmix:visibleInContentTree
32
+ ```
33
+
34
+ ---
35
+
36
+ ## Step 2 — Start with the right SQL2 shape
37
+
38
+ ### List all items of a type under a folder
39
+
40
+ ```sql
41
+ SELECT *
42
+ FROM [namespace:typeName] AS item
43
+ WHERE ISDESCENDANTNODE(item, '/sites/<siteKey>/contents/<folderName>')
44
+ ```
45
+
46
+ ### Only direct children of a folder
47
+
48
+ ```sql
49
+ SELECT *
50
+ FROM [namespace:blogPost] AS post
51
+ WHERE ISCHILDNODE(post, '/sites/<siteKey>/contents/blog')
52
+ ```
53
+
54
+ ### Filter drafts and sort newest first
55
+
56
+ ```sql
57
+ SELECT *
58
+ FROM [namespace:blogPost] AS post
59
+ WHERE ISDESCENDANTNODE(post, '/sites/<siteKey>/contents/blog')
60
+ AND post.[publicationDate] IS NOT NULL
61
+ ORDER BY post.[publicationDate] DESC
62
+ ```
63
+
64
+ ---
65
+
66
+ ## Step 3 — Use the right SQL2 clauses
67
+
68
+ | Need | Pattern |
69
+ |------|---------|
70
+ | Recursive subtree | `ISDESCENDANTNODE(alias, '/path')` |
71
+ | Direct children only | `ISCHILDNODE(alias, '/path')` |
72
+ | Property equality | `alias.[prop] = 'value'` |
73
+ | Pattern match | `alias.[prop] LIKE '%keyword%'` |
74
+ | Exclude empty values | `alias.[prop] IS NOT NULL` |
75
+ | Sort | `ORDER BY alias.[prop] DESC` |
76
+ | Full-text | `CONTAINS(alias.*, 'term')` |
77
+ | Relevance sort | `ORDER BY SCORE(alias) DESC` |
78
+
79
+ **Performance rule:** always constrain queries by path.
80
+
81
+ ---
82
+
83
+ ## Step 4 — Add full-text and filtering when needed
84
+
85
+ ### Phrase search sorted by relevance
86
+
87
+ ```sql
88
+ SELECT *
89
+ FROM [namespace:blogPost] AS post
90
+ WHERE ISDESCENDANTNODE(post, '/sites/<siteKey>/contents/blog')
91
+ AND CONTAINS(post.*, '"annual report"')
92
+ ORDER BY SCORE(post) DESC
93
+ ```
94
+
95
+ ### Search one property only
96
+
97
+ ```sql
98
+ SELECT *
99
+ FROM [namespace:blogPost] AS post
100
+ WHERE ISDESCENDANTNODE(post, '/sites/<siteKey>/contents/blog')
101
+ AND CONTAINS(post.[jcr:title], 'welcome')
102
+ ORDER BY post.[publicationDate] DESC
103
+ ```
104
+
105
+ ### Filter by date
106
+
107
+ ```sql
108
+ SELECT *
109
+ FROM [namespace:blogPost] AS post
110
+ WHERE ISDESCENDANTNODE(post, '/sites/<siteKey>/contents/blog')
111
+ AND post.[publicationDate] > CAST('2026-01-01T00:00:00.000Z' AS DATE)
112
+ ORDER BY post.[publicationDate] DESC
113
+ ```
114
+
115
+ Use the millisecond form `yyyy-MM-dd'T'HH:mm:ss.SSSX` for SQL2 date casts.
116
+
117
+ ---
118
+
119
+ ## Step 5 — Use queries in Jahia UI or code
120
+
121
+ ### Page Builder query component
122
+
123
+ For a simple listing, use **Jahia - Queries > Content items using JCR Query** and paste the SQL2 query there.
124
+
125
+ ### `useJCRQuery` in a `.server.tsx` view
126
+
127
+ ```tsx
128
+ import { jahiaComponent, useJCRQuery, Render } from '@jahia/javascript-modules-library';
129
+ import type { JCRNodeWrapper } from 'org.jahia.services.content';
130
+
131
+ jahiaComponent(
132
+ { componentType: 'view', nodeType: 'namespace:blogListing' },
133
+ (_, { renderContext }) => {
134
+ const siteKey = renderContext.getSite().getName();
135
+ const posts = useJCRQuery({
136
+ query: `SELECT * FROM [namespace:blogPost] AS post
137
+ WHERE ISDESCENDANTNODE(post, '/sites/${siteKey}/contents/blog')
138
+ AND post.[publicationDate] IS NOT NULL
139
+ ORDER BY post.[publicationDate] DESC`,
140
+ });
141
+
142
+ return (
143
+ <section>
144
+ {posts.map((post: JCRNodeWrapper) => (
145
+ <Render key={post.getPath()} node={post} />
146
+ ))}
147
+ </section>
148
+ );
149
+ },
150
+ );
151
+ ```
152
+
153
+ ---
154
+
155
+ ## Step 6 — Patterns commonly needed in template sets
156
+
157
+ ### Make a content type renderable at its own URL
158
+
159
+ Use `jmix:mainResource` only for content that needs both a listing card and a full detail page.
160
+
161
+ ```cnd
162
+ [namespace:blogPost] > jnt:content, mix:title, jmix:mainResource, namespacemix:component
163
+ ```
164
+
165
+ Then add a `fullPage.server.tsx` view and link to the node with `buildNodeUrl(currentNode)`.
166
+
167
+ ### Draft gate with `publicationDate`
168
+
169
+ A common pattern is:
170
+
171
+ ```cnd
172
+ - publicationDate (date)
173
+ ```
174
+
175
+ and the query:
176
+
177
+ ```sql
178
+ AND post.[publicationDate] IS NOT NULL
179
+ ORDER BY post.[publicationDate] DESC
180
+ ```
181
+
182
+ ### Nested content folders
183
+
184
+ Use `ISDESCENDANTNODE` to cover nested folder trees automatically. Switch to `ISCHILDNODE` only when you intentionally want one level.
185
+
186
+ ---
187
+
188
+ ## Query checklist
189
+
190
+ - [ ] Query is constrained to `/sites/<siteKey>/contents/...` or another specific subtree
191
+ - [ ] Node type is specific, not overly broad
192
+ - [ ] Sort order matches the UX need
193
+ - [ ] Draft or publish filtering is explicit
194
+ - [ ] Detail-page types use `jmix:mainResource` only when needed
195
+ - [ ] The query has been validated against `/jahia-jcr-sql2` guardrails
196
+
197
+ ---
198
+
199
+ ## Related skills
200
+
201
+ - `/jahia-jcr-sql2` — SQL2 syntax, full-text, joins, pagination, and performance
202
+ - `/jahia-dev-build-component` — build the listing component that renders query results
203
+ - `/jahia-dev-define-content-type` — create the queried content type and folder types
204
+