@jahia/agentic 0.1.1 → 0.3.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 (174) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +28 -0
  3. package/dist/claude/.claude/rules/jahia.md +3 -1
  4. package/dist/claude/.claude/skills/jahia/SKILL.md +18 -10
  5. package/dist/claude/.claude/skills/jahia-content/SKILL.md +102 -84
  6. package/dist/claude/.claude/skills/jahia-content-create-content/SKILL.md +255 -280
  7. package/dist/claude/.claude/skills/jahia-content-explore-structure/SKILL.md +187 -96
  8. package/dist/claude/.claude/skills/jahia-content-media-upload/SKILL.md +197 -0
  9. package/dist/claude/.claude/skills/jahia-content-move-content/SKILL.md +160 -165
  10. package/dist/claude/.claude/skills/jahia-content-organize/SKILL.md +209 -0
  11. package/dist/claude/.claude/skills/jahia-content-publish/SKILL.md +181 -0
  12. package/dist/claude/.claude/skills/jahia-content-query-content/SKILL.md +122 -92
  13. package/dist/claude/.claude/skills/jahia-content-translate-content/SKILL.md +154 -225
  14. package/dist/claude/.claude/skills/jahia-dev-build-component/SKILL.md +7 -22
  15. package/dist/claude/.claude/skills/jahia-dev-create-view/SKILL.md +58 -0
  16. package/dist/claude/.claude/skills/jahia-dev-cypress/SKILL.md +150 -330
  17. package/dist/claude/.claude/skills/jahia-dev-java/SKILL.md +7 -2
  18. package/dist/claude/.claude/skills/jahia-dev-query-content/SKILL.md +93 -296
  19. package/dist/claude/.claude/skills/jahia-java-concurrency/SKILL.md +308 -0
  20. package/dist/claude/.claude/skills/jahia-java-jcr/SKILL.md +153 -0
  21. package/dist/claude/.claude/skills/jahia-java-osgi/SKILL.md +134 -0
  22. package/dist/claude/.claude/skills/jahia-java-persistence/SKILL.md +177 -0
  23. package/dist/claude/.claude/skills/jahia-java-security/SKILL.md +84 -0
  24. package/dist/claude/.claude/skills/jahia-jcr-sql2/SKILL.md +258 -0
  25. package/dist/claude/.claude/skills/jahia-review-java/SKILL.md +131 -0
  26. package/dist/claude/.claude/skills/jahia-review-java/references/code-review-output.md +121 -0
  27. package/dist/claude/CLAUDE.md +4 -8
  28. package/dist/codex/.agents/skills/jahia/SKILL.md +18 -10
  29. package/dist/codex/.agents/skills/jahia-content/SKILL.md +102 -84
  30. package/dist/codex/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
  31. package/dist/codex/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
  32. package/dist/codex/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
  33. package/dist/codex/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
  34. package/dist/codex/.agents/skills/jahia-content-organize/SKILL.md +209 -0
  35. package/dist/codex/.agents/skills/jahia-content-publish/SKILL.md +181 -0
  36. package/dist/codex/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
  37. package/dist/codex/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
  38. package/dist/codex/.agents/skills/jahia-dev-build-component/SKILL.md +7 -22
  39. package/dist/codex/.agents/skills/jahia-dev-create-view/SKILL.md +58 -0
  40. package/dist/codex/.agents/skills/jahia-dev-cypress/SKILL.md +150 -330
  41. package/dist/codex/.agents/skills/jahia-dev-java/SKILL.md +7 -2
  42. package/dist/codex/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
  43. package/dist/codex/.agents/skills/jahia-java-concurrency/SKILL.md +308 -0
  44. package/dist/codex/.agents/skills/jahia-java-jcr/SKILL.md +153 -0
  45. package/dist/codex/.agents/skills/jahia-java-osgi/SKILL.md +134 -0
  46. package/dist/codex/.agents/skills/jahia-java-persistence/SKILL.md +177 -0
  47. package/dist/codex/.agents/skills/jahia-java-security/SKILL.md +84 -0
  48. package/dist/codex/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  49. package/dist/codex/.agents/skills/jahia-review-java/SKILL.md +131 -0
  50. package/dist/codex/.agents/skills/jahia-review-java/references/code-review-output.md +121 -0
  51. package/dist/codex/AGENTS.md +5 -5
  52. package/dist/copilot/.agents/skills/jahia/SKILL.md +18 -10
  53. package/dist/copilot/.agents/skills/jahia-content/SKILL.md +102 -84
  54. package/dist/copilot/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
  55. package/dist/copilot/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
  56. package/dist/copilot/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
  57. package/dist/copilot/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
  58. package/dist/copilot/.agents/skills/jahia-content-organize/SKILL.md +209 -0
  59. package/dist/copilot/.agents/skills/jahia-content-publish/SKILL.md +181 -0
  60. package/dist/copilot/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
  61. package/dist/copilot/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
  62. package/dist/copilot/.agents/skills/jahia-dev-build-component/SKILL.md +7 -22
  63. package/dist/copilot/.agents/skills/jahia-dev-create-view/SKILL.md +58 -0
  64. package/dist/copilot/.agents/skills/jahia-dev-cypress/SKILL.md +150 -330
  65. package/dist/copilot/.agents/skills/jahia-dev-java/SKILL.md +7 -2
  66. package/dist/copilot/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
  67. package/dist/copilot/.agents/skills/jahia-java-concurrency/SKILL.md +308 -0
  68. package/dist/copilot/.agents/skills/jahia-java-jcr/SKILL.md +153 -0
  69. package/dist/copilot/.agents/skills/jahia-java-osgi/SKILL.md +134 -0
  70. package/dist/copilot/.agents/skills/jahia-java-persistence/SKILL.md +177 -0
  71. package/dist/copilot/.agents/skills/jahia-java-security/SKILL.md +84 -0
  72. package/dist/copilot/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  73. package/dist/copilot/.agents/skills/jahia-review-java/SKILL.md +131 -0
  74. package/dist/copilot/.agents/skills/jahia-review-java/references/code-review-output.md +121 -0
  75. package/dist/copilot/AGENTS.md +5 -5
  76. package/dist/cursor/.agents/skills/jahia/SKILL.md +18 -10
  77. package/dist/cursor/.agents/skills/jahia-content/SKILL.md +102 -84
  78. package/dist/cursor/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
  79. package/dist/cursor/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
  80. package/dist/cursor/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
  81. package/dist/cursor/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
  82. package/dist/cursor/.agents/skills/jahia-content-organize/SKILL.md +209 -0
  83. package/dist/cursor/.agents/skills/jahia-content-publish/SKILL.md +181 -0
  84. package/dist/cursor/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
  85. package/dist/cursor/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
  86. package/dist/cursor/.agents/skills/jahia-dev-build-component/SKILL.md +7 -22
  87. package/dist/cursor/.agents/skills/jahia-dev-create-view/SKILL.md +58 -0
  88. package/dist/cursor/.agents/skills/jahia-dev-cypress/SKILL.md +150 -330
  89. package/dist/cursor/.agents/skills/jahia-dev-java/SKILL.md +7 -2
  90. package/dist/cursor/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
  91. package/dist/cursor/.agents/skills/jahia-java-concurrency/SKILL.md +308 -0
  92. package/dist/cursor/.agents/skills/jahia-java-jcr/SKILL.md +153 -0
  93. package/dist/cursor/.agents/skills/jahia-java-osgi/SKILL.md +134 -0
  94. package/dist/cursor/.agents/skills/jahia-java-persistence/SKILL.md +177 -0
  95. package/dist/cursor/.agents/skills/jahia-java-security/SKILL.md +84 -0
  96. package/dist/cursor/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  97. package/dist/cursor/.agents/skills/jahia-review-java/SKILL.md +131 -0
  98. package/dist/cursor/.agents/skills/jahia-review-java/references/code-review-output.md +121 -0
  99. package/dist/cursor/.cursor/rules/jahia.mdc +3 -1
  100. package/dist/gemini/.agents/skills/jahia/SKILL.md +18 -10
  101. package/dist/gemini/.agents/skills/jahia-content/SKILL.md +102 -84
  102. package/dist/gemini/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
  103. package/dist/gemini/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
  104. package/dist/gemini/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
  105. package/dist/gemini/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
  106. package/dist/gemini/.agents/skills/jahia-content-organize/SKILL.md +209 -0
  107. package/dist/gemini/.agents/skills/jahia-content-publish/SKILL.md +181 -0
  108. package/dist/gemini/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
  109. package/dist/gemini/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
  110. package/dist/gemini/.agents/skills/jahia-dev-build-component/SKILL.md +7 -22
  111. package/dist/gemini/.agents/skills/jahia-dev-create-view/SKILL.md +58 -0
  112. package/dist/gemini/.agents/skills/jahia-dev-cypress/SKILL.md +150 -330
  113. package/dist/gemini/.agents/skills/jahia-dev-java/SKILL.md +7 -2
  114. package/dist/gemini/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
  115. package/dist/gemini/.agents/skills/jahia-java-concurrency/SKILL.md +308 -0
  116. package/dist/gemini/.agents/skills/jahia-java-jcr/SKILL.md +153 -0
  117. package/dist/gemini/.agents/skills/jahia-java-osgi/SKILL.md +134 -0
  118. package/dist/gemini/.agents/skills/jahia-java-persistence/SKILL.md +177 -0
  119. package/dist/gemini/.agents/skills/jahia-java-security/SKILL.md +84 -0
  120. package/dist/gemini/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  121. package/dist/gemini/.agents/skills/jahia-review-java/SKILL.md +131 -0
  122. package/dist/gemini/.agents/skills/jahia-review-java/references/code-review-output.md +121 -0
  123. package/dist/gemini/AGENTS.md +5 -5
  124. package/dist/gemini/GEMINI.md +2 -2
  125. package/dist/opencode/.agents/skills/jahia/SKILL.md +18 -10
  126. package/dist/opencode/.agents/skills/jahia-content/SKILL.md +102 -84
  127. package/dist/opencode/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
  128. package/dist/opencode/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
  129. package/dist/opencode/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
  130. package/dist/opencode/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
  131. package/dist/opencode/.agents/skills/jahia-content-organize/SKILL.md +209 -0
  132. package/dist/opencode/.agents/skills/jahia-content-publish/SKILL.md +181 -0
  133. package/dist/opencode/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
  134. package/dist/opencode/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
  135. package/dist/opencode/.agents/skills/jahia-dev-build-component/SKILL.md +7 -22
  136. package/dist/opencode/.agents/skills/jahia-dev-create-view/SKILL.md +58 -0
  137. package/dist/opencode/.agents/skills/jahia-dev-cypress/SKILL.md +150 -330
  138. package/dist/opencode/.agents/skills/jahia-dev-java/SKILL.md +7 -2
  139. package/dist/opencode/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
  140. package/dist/opencode/.agents/skills/jahia-java-concurrency/SKILL.md +308 -0
  141. package/dist/opencode/.agents/skills/jahia-java-jcr/SKILL.md +153 -0
  142. package/dist/opencode/.agents/skills/jahia-java-osgi/SKILL.md +134 -0
  143. package/dist/opencode/.agents/skills/jahia-java-persistence/SKILL.md +177 -0
  144. package/dist/opencode/.agents/skills/jahia-java-security/SKILL.md +84 -0
  145. package/dist/opencode/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
  146. package/dist/opencode/.agents/skills/jahia-review-java/SKILL.md +131 -0
  147. package/dist/opencode/.agents/skills/jahia-review-java/references/code-review-output.md +121 -0
  148. package/dist/opencode/AGENTS.md +5 -5
  149. package/dist/windsurf/.windsurf/rules/jahia.md +3 -1
  150. package/dist/windsurf/.windsurf/skills/jahia/SKILL.md +18 -10
  151. package/dist/windsurf/.windsurf/skills/jahia-content/SKILL.md +102 -84
  152. package/dist/windsurf/.windsurf/skills/jahia-content-create-content/SKILL.md +255 -280
  153. package/dist/windsurf/.windsurf/skills/jahia-content-explore-structure/SKILL.md +187 -96
  154. package/dist/windsurf/.windsurf/skills/jahia-content-media-upload/SKILL.md +197 -0
  155. package/dist/windsurf/.windsurf/skills/jahia-content-move-content/SKILL.md +160 -165
  156. package/dist/windsurf/.windsurf/skills/jahia-content-organize/SKILL.md +209 -0
  157. package/dist/windsurf/.windsurf/skills/jahia-content-publish/SKILL.md +181 -0
  158. package/dist/windsurf/.windsurf/skills/jahia-content-query-content/SKILL.md +122 -92
  159. package/dist/windsurf/.windsurf/skills/jahia-content-translate-content/SKILL.md +154 -225
  160. package/dist/windsurf/.windsurf/skills/jahia-dev-build-component/SKILL.md +7 -22
  161. package/dist/windsurf/.windsurf/skills/jahia-dev-create-view/SKILL.md +58 -0
  162. package/dist/windsurf/.windsurf/skills/jahia-dev-cypress/SKILL.md +150 -330
  163. package/dist/windsurf/.windsurf/skills/jahia-dev-java/SKILL.md +7 -2
  164. package/dist/windsurf/.windsurf/skills/jahia-dev-query-content/SKILL.md +93 -296
  165. package/dist/windsurf/.windsurf/skills/jahia-java-concurrency/SKILL.md +308 -0
  166. package/dist/windsurf/.windsurf/skills/jahia-java-jcr/SKILL.md +153 -0
  167. package/dist/windsurf/.windsurf/skills/jahia-java-osgi/SKILL.md +134 -0
  168. package/dist/windsurf/.windsurf/skills/jahia-java-persistence/SKILL.md +177 -0
  169. package/dist/windsurf/.windsurf/skills/jahia-java-security/SKILL.md +84 -0
  170. package/dist/windsurf/.windsurf/skills/jahia-jcr-sql2/SKILL.md +258 -0
  171. package/dist/windsurf/.windsurf/skills/jahia-review-java/SKILL.md +131 -0
  172. package/dist/windsurf/.windsurf/skills/jahia-review-java/references/code-review-output.md +121 -0
  173. package/dist/windsurf/AGENTS.md +5 -5
  174. package/package.json +7 -3
@@ -0,0 +1,181 @@
1
+ ---
2
+ name: jahia-content-publish
3
+ description: Publishes and unpublishes Jahia content via MCP tools. Use when asked to make edits live, remove content from live, or check whether a page or subtree is ready for publication.
4
+ ---
5
+
6
+ # Skill: jahia-content-publish
7
+
8
+ Handles publication workflows using MCP tools via the `jahia` MCP server.
9
+
10
+ > **Never call Jahia's GraphQL API directly.** Use only MCP tools. If a capability is missing, report it — do not work around with curl/GraphQL.
11
+
12
+ ---
13
+
14
+ ## Core concepts
15
+
16
+ - **EDIT workspace** — where authors create and modify draft content
17
+ - **LIVE workspace** — what public visitors see
18
+ - **Publication is language-scoped** — you publish specific language versions
19
+ - **Publishing a parent can include its subtree**
20
+ - **Workflow may apply** — `publication.publish` may start approval instead of publishing directly
21
+
22
+ ---
23
+
24
+ ## Step 1 — Check publication status
25
+
26
+ ```
27
+ tool: publication.status
28
+ args: {
29
+ "path": "/sites/SITE_KEY/home/about",
30
+ "language": "en",
31
+ "subNodes": true,
32
+ "references": true
33
+ }
34
+ ```
35
+
36
+ This tells you:
37
+ - whether the node or subtree is already published
38
+ - whether descendants are modified or unpublished
39
+ - whether references may block publication
40
+ - whether the current user can publish
41
+
42
+ ---
43
+
44
+ ## Step 2 — Publish
45
+
46
+ ```
47
+ tool: publication.publish
48
+ args: {
49
+ "path": "/sites/SITE_KEY/home/about",
50
+ "languages": ["en", "fr"]
51
+ }
52
+ ```
53
+
54
+ Possible outcomes:
55
+ - direct publish to LIVE
56
+ - workflow started for approval
57
+
58
+ ---
59
+
60
+ ## Step 3 — If approval workflow starts, complete it
61
+
62
+ List pending tasks:
63
+
64
+ ```
65
+ tool: workflow.tasks
66
+ args: {}
67
+ ```
68
+
69
+ Approve:
70
+
71
+ ```
72
+ tool: workflow.complete
73
+ args: {
74
+ "taskId": "TASK_ID",
75
+ "outcome": "accept",
76
+ "comment": "Approved — reviewed and ready"
77
+ }
78
+ ```
79
+
80
+ Reject:
81
+
82
+ ```
83
+ tool: workflow.complete
84
+ args: {
85
+ "taskId": "TASK_ID",
86
+ "outcome": "reject",
87
+ "comment": "Needs revision"
88
+ }
89
+ ```
90
+
91
+ ---
92
+
93
+ ## Step 4 — Unpublish
94
+
95
+ Remove content from LIVE while keeping EDIT:
96
+
97
+ ```
98
+ tool: publication.unpublish
99
+ args: {
100
+ "path": "/sites/SITE_KEY/home/about/main/outdated-section",
101
+ "languages": ["en"]
102
+ }
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Common publication patterns
108
+
109
+ ### Publish a newly created page and its content
110
+
111
+ ```
112
+ tool: publication.publish
113
+ args: {
114
+ "path": "/sites/SITE_KEY/home/new-page",
115
+ "languages": ["en"]
116
+ }
117
+ ```
118
+
119
+ ### Publish translated content
120
+
121
+ ```
122
+ tool: publication.publish
123
+ args: {
124
+ "path": "/sites/SITE_KEY/home/about",
125
+ "languages": ["fr"]
126
+ }
127
+ ```
128
+
129
+ ### Publish a deletion after `content.markForDeletion`
130
+
131
+ ```
132
+ tool: publication.publish
133
+ args: {
134
+ "path": "/sites/SITE_KEY/home/old-page",
135
+ "languages": ["en"]
136
+ }
137
+ ```
138
+
139
+ ### Check whether a subtree is ready
140
+
141
+ ```
142
+ tool: publication.status
143
+ args: {
144
+ "path": "/sites/SITE_KEY/home",
145
+ "language": "en",
146
+ "subNodes": true,
147
+ "references": true
148
+ }
149
+ ```
150
+
151
+ ---
152
+
153
+ ## Key rules
154
+
155
+ | Rule | Detail |
156
+ |------|--------|
157
+ | Always specify languages | Publication is language-scoped |
158
+ | Publish is subtree-aware | Publishing a page includes its content areas and descendants |
159
+ | Workflow is automatic | `publication.publish` decides whether it can publish directly |
160
+ | References matter | Use `references: true` in status checks when media or linked content is involved |
161
+ | Mark-for-deletion needs publish | The deletion becomes live only after publication |
162
+
163
+ ---
164
+
165
+ ## Common errors
166
+
167
+ | Error | Cause | Fix |
168
+ |-------|-------|-----|
169
+ | `NODE_NOT_FOUND` | The path does not exist in EDIT | Verify with `content.get` |
170
+ | `NO_PUBLISH_PERMISSION` | User lacks publishing rights | Check the user's roles |
171
+ | Workflow started but content is still not live | Approval is still pending | Complete the task via `workflow.tasks` and `workflow.complete` |
172
+ | `MANDATORY_LANGUAGE_UNPUBLISHABLE` | Required language content is missing | Add the missing translation first |
173
+
174
+ ---
175
+
176
+ ## Related skills
177
+
178
+ - `/jahia-content-create-content` — create pages and content before publishing them
179
+ - `/jahia-content-translate-content` — translate content before publishing new locales
180
+ - `/jahia-content-organize` — publish after moves, copies, reorders, or deletions
181
+
@@ -1,29 +1,20 @@
1
1
  ---
2
2
  name: jahia-content-query-content
3
- description: Queries JCR content from a running Jahia instance via the GraphQL API. Use when asked to list, inspect, or retrieve content nodes, check what content exists, or audit a site's content.
3
+ description: Queries JCR content from a running Jahia instance via MCP tools. Use when asked to list, inspect, or retrieve content nodes, check what content exists, or audit a site's content.
4
4
  ---
5
5
 
6
6
  # Skill: jahia-content-query-content
7
7
 
8
- Retrieves JCR content from a running Jahia instance using the GraphQL JCR query API.
8
+ Retrieves JCR content from a running Jahia instance using MCP tools (via the `jahia` MCP server).
9
+
10
+ > **Never call Jahia's GraphQL API directly.** Use only MCP tools. If a capability is missing, report it — do not work around with curl/GraphQL.
9
11
 
10
12
  ---
11
13
 
12
14
  ## Prerequisites
13
15
 
14
- - Jahia running at `http://localhost:8080`
15
- - Credentials: `root` / `root1234` (default)
16
- - GraphQL endpoint: `http://localhost:8080/modules/graphql`
17
-
18
- **Auth pattern — always use both flags:**
19
- ```bash
20
- curl -u root:root1234 \
21
- -H "Content-Type: application/json" \
22
- -H "Origin: http://localhost:8080" \
23
- ...
24
- ```
25
-
26
- > ⚠️ The `Origin: http://localhost:8080` header is **required**. Requests without it return `Permission denied` even with correct credentials.
16
+ - MCP server `jahia` connected with a valid API token
17
+ - Know the target **siteKey** (call `site.list` if unsure)
27
18
 
28
19
  ---
29
20
 
@@ -31,99 +22,145 @@ curl -u root:root1234 \
31
22
 
32
23
  ### 1 — Get a node by path
33
24
 
34
- ```bash
35
- curl -s -u root:root1234 \
36
- -H "Content-Type: application/json" \
37
- -H "Origin: http://localhost:8080" \
38
- -X POST http://localhost:8080/modules/graphql \
39
- -d '{
40
- "query": "{ jcr { nodeByPath(path: \"/sites/mySite/contents/articles\") { children { nodes { name path primaryNodeType { name } } } } } }"
41
- }'
25
+ ```
26
+ tool: content.get
27
+ args: { "path": "/sites/mySite/home/about/main/intro-text" }
28
+ ```
29
+
30
+ Returns all readable properties, mixins, and metadata. Also accepts `uuid`.
31
+
32
+ ### 2 — List children of a node
33
+
34
+ ```
35
+ tool: content.list
36
+ args: {
37
+ "parentPath": "/sites/mySite/home/about/main",
38
+ "limit": 50
39
+ }
40
+ ```
41
+
42
+ Optional: `childNodeType` to filter, `projectProperties` to include specific properties.
43
+
44
+ ### 3 — Search by node type
45
+
46
+ ```
47
+ tool: content.search
48
+ args: {
49
+ "siteKey": "mySite",
50
+ "nodeType": "mymodule:article",
51
+ "locale": "en",
52
+ "sortBy": "jcr:created",
53
+ "order": "desc",
54
+ "limit": 10
55
+ }
42
56
  ```
43
57
 
44
- ### 2Query by node type (JCR-SQL2)
58
+ ### 4Full-text search
45
59
 
46
- ```bash
47
- curl -s -u root:root1234 \
48
- -H "Content-Type: application/json" \
49
- -H "Origin: http://localhost:8080" \
50
- -X POST http://localhost:8080/modules/graphql \
51
- -d '{
52
- "query": "{ jcr { nodesByQuery(query: \"SELECT * FROM [namespace:typeName] WHERE ISDESCENDANTNODE(\u0027/sites/mySite\u0027) ORDER BY [jcr:created] DESC\", queryLanguage: SQL2) { nodes { name path uuid } } } }"
53
- }'
60
+ ```
61
+ tool: content.search
62
+ args: {
63
+ "siteKey": "mySite",
64
+ "nodeType": "jmix:droppableContent",
65
+ "locale": "en",
66
+ "fullText": "insurance",
67
+ "sortBy": "_score",
68
+ "order": "desc"
69
+ }
54
70
  ```
55
71
 
56
- ### 3Read node properties (including i18n)
72
+ ### 5Filter by property value
57
73
 
58
- ```bash
59
- curl -s -u root:root1234 \
60
- -H "Content-Type: application/json" \
61
- -H "Origin: http://localhost:8080" \
62
- -X POST http://localhost:8080/modules/graphql \
63
- -d '{
64
- "query": "{ jcr { nodeByPath(path: \"/sites/mySite/contents/articles/my-article\") { name uuid properties(language: \"en\") { name value } } } }"
65
- }'
74
+ ```
75
+ tool: content.search
76
+ args: {
77
+ "siteKey": "mySite",
78
+ "nodeType": "mymodule:article",
79
+ "locale": "en",
80
+ "properties": [
81
+ { "name": "jcr:createdBy", "op": "eq", "value": "root" }
82
+ ]
83
+ }
66
84
  ```
67
85
 
68
- > ⚠️ **i18n properties require `language:` in the `properties()` call.** Without it, i18n properties are returned empty.
86
+ Operators: `eq`, `like`, `gt`, `gte`, `lt`, `lte`, `isNull`, `isNotNull`
69
87
 
70
- ### 4Filter by property value
88
+ ### 6List all sites
71
89
 
72
- ```bash
73
- curl -s -u root:root1234 \
74
- -H "Content-Type: application/json" \
75
- -H "Origin: http://localhost:8080" \
76
- -X POST http://localhost:8080/modules/graphql \
77
- -d '{
78
- "query": "{ jcr { nodesByQuery(query: \"SELECT * FROM [namespace:article] WHERE [product] = \u0027jahia\u0027 AND ISDESCENDANTNODE(\u0027/sites/mySite\u0027)\", queryLanguage: SQL2) { nodes { name path } } } }"
79
- }'
90
+ ```
91
+ tool: site.list
80
92
  ```
81
93
 
82
- ### 5 — List all sites
94
+ ### 7 — List all pages
83
95
 
84
- ```bash
85
- curl -s -u root:root1234 \
86
- -H "Content-Type: application/json" \
87
- -H "Origin: http://localhost:8080" \
88
- -X POST http://localhost:8080/modules/graphql \
89
- -d '{
90
- "query": "{ jcr { nodesByQuery(query: \"SELECT * FROM [jnt:virtualsite] WHERE ISCHILDNODE(\u0027/sites\u0027)\", queryLanguage: SQL2) { nodes { name path } } } }"
91
- }'
96
+ ```
97
+ tool: page.list
98
+ args: { "siteKey": "mySite" }
92
99
  ```
93
100
 
94
- ### 6 Check publication status
101
+ Supports: `templateName`, `titleContains`, `createdAfter`, `modifiedAfter`, `sortBy`, `order`.
95
102
 
96
- ```bash
97
- curl -s -u root:root1234 \
98
- -H "Content-Type: application/json" \
99
- -H "Origin: http://localhost:8080" \
100
- -X POST http://localhost:8080/modules/graphql \
101
- -d '{
102
- "query": "{ jcr { nodeByPath(path: \"/sites/mySite/contents/articles/my-article\") { name aggregatedPublicationInfo(language: \"en\") { publicationStatus } } } }"
103
- }'
103
+ ### 8 — Check publication status
104
+
105
+ ```
106
+ tool: publication.status
107
+ args: {
108
+ "path": "/sites/mySite/home/about",
109
+ "language": "en",
110
+ "subNodes": true
111
+ }
104
112
  ```
105
113
 
106
- Publication status values: `PUBLISHED`, `MODIFIED`, `NOT_PUBLISHED`, `UNPUBLISHED`, `MARKED_FOR_DELETION`
114
+ Returns publication status, lock/WIP flags, and permission info.
107
115
 
108
116
  ---
109
117
 
110
- ## JCR-SQL2 quick reference
118
+ ## content.search parameter reference
111
119
 
112
- ```sql
113
- -- All nodes of a type under a path
114
- SELECT * FROM [ns:typeName] WHERE ISDESCENDANTNODE('/sites/mySite')
120
+ **Required:**
121
+ - `siteKey` scopes search under `/sites/<siteKey>`
122
+ - `nodeType` JCR type (e.g. `jnt:page`, `jnt:file`, `jmix:droppableContent`)
115
123
 
116
- -- Direct children only
117
- SELECT * FROM [ns:typeName] WHERE ISCHILDNODE('/sites/mySite/contents/articles')
124
+ **Optional:**
125
+ - `locale` locale for i18n property resolution (e.g. `"en"`)
126
+ - `fullText` — full-text expression (phrase `"..."`, OR, exclusion `-term`)
127
+ - `fullTextField` — scope full-text to one property
128
+ - `basePath` — restrict to a subtree
129
+ - `properties` — array of property filters (AND-combined)
130
+ - `projectProperties` — properties to include in results
131
+ - `sortBy` — property name (default: `"jcr:lastModified"`) or `"_score"` with fullText
132
+ - `order` — `"asc"` or `"desc"` (default: `"desc"`)
133
+ - `offset` — skip N results (default: 0)
134
+ - `limit` — max results 1–100 (default: 20)
118
135
 
119
- -- Filter by property
120
- SELECT * FROM [ns:typeName] WHERE [propName] = 'value'
136
+ ---
121
137
 
122
- -- Order by date (newest first)
123
- SELECT * FROM [ns:typeName] WHERE ISDESCENDANTNODE('/sites/mySite') ORDER BY [jcr:created] DESC
138
+ ## Common search patterns
124
139
 
125
- -- Limit results (pass limit/offset as query params)
126
- -- nodesByQuery(query: "...", queryLanguage: SQL2, limit: 10, offset: 0)
140
+ Last 5 created contents:
141
+ ```
142
+ tool: content.search
143
+ args: {
144
+ "siteKey": "mySite",
145
+ "nodeType": "jmix:droppableContent",
146
+ "locale": "en",
147
+ "sortBy": "jcr:created",
148
+ "order": "desc",
149
+ "limit": 5
150
+ }
151
+ ```
152
+
153
+ Recently modified pages:
154
+ ```
155
+ tool: content.search
156
+ args: {
157
+ "siteKey": "mySite",
158
+ "nodeType": "jnt:page",
159
+ "locale": "en",
160
+ "sortBy": "jcr:lastModified",
161
+ "order": "desc",
162
+ "limit": 10
163
+ }
127
164
  ```
128
165
 
129
166
  ---
@@ -132,13 +169,6 @@ SELECT * FROM [ns:typeName] WHERE ISDESCENDANTNODE('/sites/mySite') ORDER BY [jc
132
169
 
133
170
  | Error | Cause | Fix |
134
171
  |-------|-------|-----|
135
- | `Permission denied` | Missing `Origin` header | Add `-H "Origin: http://localhost:8080"` |
136
- | i18n properties returned empty | `language:` not specified | Add `language: "en"` to `properties()` call |
137
- | Node not found | Wrong path or node doesn't exist | Verify path with `nodeByPath(path: "/sites")` first |
138
-
139
- ---
140
-
141
- ## References
142
-
143
- - Jahia GraphQL API: `http://localhost:8080/modules/graphql` (open in browser for interactive playground)
144
- - JCR-SQL2 language spec: https://docs.adobe.com/content/docs/en/spec/jcr/2.0/6_Query.html
172
+ | `PATH_NOT_FOUND` | Node doesn't exist at given path | Verify path with `content.list` on parent |
173
+ | No results returned | Wrong `nodeType` or `siteKey` | Check available types with `site.types` |
174
+ | Missing i18n properties | `locale` not passed | Always include `locale` for i18n content |