@jahia/agentic 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +28 -0
- package/dist/claude/.claude/agents/cnd-child-nodes.md +74 -0
- package/dist/claude/.claude/agents/cnd-jahia-mixins.md +113 -0
- package/dist/claude/.claude/agents/cnd-numbers-dates.md +61 -0
- package/dist/claude/.claude/agents/cnd-string-selectors.md +94 -0
- package/dist/claude/.claude/agents/jahia-cnd-author.md +130 -0
- package/dist/claude/.claude/agents/jahia-dev-worker.md +264 -0
- package/dist/claude/.claude/agents/jahia-reviewer.md +105 -0
- package/dist/claude/.claude/rules/jahia.md +15 -6
- package/dist/claude/.claude/skills/jahia/SKILL.md +23 -11
- package/dist/claude/.claude/skills/jahia-content/SKILL.md +102 -84
- package/dist/claude/.claude/skills/jahia-content-create-content/SKILL.md +255 -280
- package/dist/claude/.claude/skills/jahia-content-explore-structure/SKILL.md +187 -96
- package/dist/claude/.claude/skills/jahia-content-media-upload/SKILL.md +197 -0
- package/dist/claude/.claude/skills/jahia-content-move-content/SKILL.md +160 -165
- package/dist/claude/.claude/skills/jahia-content-organize/SKILL.md +209 -0
- package/dist/claude/.claude/skills/jahia-content-publish/SKILL.md +181 -0
- package/dist/claude/.claude/skills/jahia-content-query-content/SKILL.md +122 -92
- package/dist/claude/.claude/skills/jahia-content-translate-content/SKILL.md +154 -225
- package/dist/claude/.claude/skills/jahia-dev-accessibility/SKILL.md +3 -3
- package/dist/claude/.claude/skills/jahia-dev-build-component/SKILL.md +10 -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-cypress/SKILL.md +150 -330
- package/dist/claude/.claude/skills/jahia-dev-define-content-type/SKILL.md +43 -486
- package/dist/claude/.claude/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
- package/dist/claude/.claude/skills/jahia-dev-query-content/SKILL.md +93 -296
- 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/skills/jahia-jcr-sql2/SKILL.md +258 -0
- package/dist/claude/.claude/skills/jahia-orchestrate/SKILL.md +148 -0
- package/dist/claude/.claude/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
- package/dist/claude/CLAUDE.md +16 -13
- package/dist/codex/.agents/skills/jahia/SKILL.md +23 -11
- package/dist/codex/.agents/skills/jahia-content/SKILL.md +102 -84
- package/dist/codex/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
- package/dist/codex/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
- package/dist/codex/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
- package/dist/codex/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
- package/dist/codex/.agents/skills/jahia-content-organize/SKILL.md +209 -0
- package/dist/codex/.agents/skills/jahia-content-publish/SKILL.md +181 -0
- package/dist/codex/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
- package/dist/codex/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
- package/dist/codex/.agents/skills/jahia-dev-accessibility/SKILL.md +3 -3
- package/dist/codex/.agents/skills/jahia-dev-build-component/SKILL.md +10 -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-cypress/SKILL.md +150 -330
- package/dist/codex/.agents/skills/jahia-dev-define-content-type/SKILL.md +43 -486
- package/dist/codex/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
- package/dist/codex/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
- 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/skills/jahia-jcr-sql2/SKILL.md +258 -0
- package/dist/codex/.agents/skills/jahia-orchestrate/SKILL.md +148 -0
- package/dist/codex/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
- package/dist/codex/.codex/agents/cnd-child-nodes.toml +3 -0
- package/dist/codex/.codex/agents/cnd-jahia-mixins.toml +3 -0
- package/dist/codex/.codex/agents/cnd-numbers-dates.toml +3 -0
- package/dist/codex/.codex/agents/cnd-string-selectors.toml +3 -0
- package/dist/codex/.codex/agents/jahia-cnd-author.toml +3 -0
- package/dist/codex/.codex/agents/jahia-dev-worker.toml +3 -0
- package/dist/codex/.codex/agents/jahia-reviewer.toml +3 -0
- package/dist/codex/AGENTS.md +17 -10
- package/dist/copilot/.agents/skills/jahia/SKILL.md +23 -11
- package/dist/copilot/.agents/skills/jahia-content/SKILL.md +102 -84
- package/dist/copilot/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
- package/dist/copilot/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
- package/dist/copilot/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
- package/dist/copilot/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
- package/dist/copilot/.agents/skills/jahia-content-organize/SKILL.md +209 -0
- package/dist/copilot/.agents/skills/jahia-content-publish/SKILL.md +181 -0
- package/dist/copilot/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
- package/dist/copilot/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
- package/dist/copilot/.agents/skills/jahia-dev-accessibility/SKILL.md +3 -3
- package/dist/copilot/.agents/skills/jahia-dev-build-component/SKILL.md +10 -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-cypress/SKILL.md +150 -330
- package/dist/copilot/.agents/skills/jahia-dev-define-content-type/SKILL.md +43 -486
- package/dist/copilot/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
- package/dist/copilot/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
- 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/skills/jahia-jcr-sql2/SKILL.md +258 -0
- package/dist/copilot/.agents/skills/jahia-orchestrate/SKILL.md +148 -0
- package/dist/copilot/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
- package/dist/copilot/AGENTS.md +17 -10
- package/dist/cursor/.agents/skills/jahia/SKILL.md +23 -11
- package/dist/cursor/.agents/skills/jahia-content/SKILL.md +102 -84
- package/dist/cursor/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
- package/dist/cursor/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
- package/dist/cursor/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
- package/dist/cursor/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
- package/dist/cursor/.agents/skills/jahia-content-organize/SKILL.md +209 -0
- package/dist/cursor/.agents/skills/jahia-content-publish/SKILL.md +181 -0
- package/dist/cursor/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
- package/dist/cursor/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
- package/dist/cursor/.agents/skills/jahia-dev-accessibility/SKILL.md +3 -3
- package/dist/cursor/.agents/skills/jahia-dev-build-component/SKILL.md +10 -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-cypress/SKILL.md +150 -330
- package/dist/cursor/.agents/skills/jahia-dev-define-content-type/SKILL.md +43 -486
- package/dist/cursor/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
- package/dist/cursor/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
- 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/.agents/skills/jahia-jcr-sql2/SKILL.md +258 -0
- package/dist/cursor/.agents/skills/jahia-orchestrate/SKILL.md +148 -0
- package/dist/cursor/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
- package/dist/cursor/.cursor/agents/cnd-child-nodes.md +74 -0
- package/dist/cursor/.cursor/agents/cnd-jahia-mixins.md +113 -0
- package/dist/cursor/.cursor/agents/cnd-numbers-dates.md +61 -0
- package/dist/cursor/.cursor/agents/cnd-string-selectors.md +94 -0
- package/dist/cursor/.cursor/agents/jahia-cnd-author.md +130 -0
- package/dist/cursor/.cursor/agents/jahia-dev-worker.md +264 -0
- package/dist/cursor/.cursor/agents/jahia-reviewer.md +105 -0
- package/dist/cursor/.cursor/rules/jahia.mdc +15 -6
- package/dist/gemini/.agents/skills/jahia/SKILL.md +23 -11
- package/dist/gemini/.agents/skills/jahia-content/SKILL.md +102 -84
- package/dist/gemini/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
- package/dist/gemini/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
- package/dist/gemini/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
- package/dist/gemini/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
- package/dist/gemini/.agents/skills/jahia-content-organize/SKILL.md +209 -0
- package/dist/gemini/.agents/skills/jahia-content-publish/SKILL.md +181 -0
- package/dist/gemini/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
- package/dist/gemini/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
- package/dist/gemini/.agents/skills/jahia-dev-accessibility/SKILL.md +3 -3
- package/dist/gemini/.agents/skills/jahia-dev-build-component/SKILL.md +10 -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-cypress/SKILL.md +150 -330
- package/dist/gemini/.agents/skills/jahia-dev-define-content-type/SKILL.md +43 -486
- package/dist/gemini/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
- package/dist/gemini/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
- 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/skills/jahia-jcr-sql2/SKILL.md +258 -0
- package/dist/gemini/.agents/skills/jahia-orchestrate/SKILL.md +148 -0
- package/dist/gemini/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
- package/dist/gemini/AGENTS.md +17 -10
- package/dist/gemini/GEMINI.md +2 -2
- package/dist/index.js +13 -0
- package/dist/opencode/.agents/skills/jahia/SKILL.md +23 -11
- package/dist/opencode/.agents/skills/jahia-content/SKILL.md +102 -84
- package/dist/opencode/.agents/skills/jahia-content-create-content/SKILL.md +255 -280
- package/dist/opencode/.agents/skills/jahia-content-explore-structure/SKILL.md +187 -96
- package/dist/opencode/.agents/skills/jahia-content-media-upload/SKILL.md +197 -0
- package/dist/opencode/.agents/skills/jahia-content-move-content/SKILL.md +160 -165
- package/dist/opencode/.agents/skills/jahia-content-organize/SKILL.md +209 -0
- package/dist/opencode/.agents/skills/jahia-content-publish/SKILL.md +181 -0
- package/dist/opencode/.agents/skills/jahia-content-query-content/SKILL.md +122 -92
- package/dist/opencode/.agents/skills/jahia-content-translate-content/SKILL.md +154 -225
- package/dist/opencode/.agents/skills/jahia-dev-accessibility/SKILL.md +3 -3
- package/dist/opencode/.agents/skills/jahia-dev-build-component/SKILL.md +10 -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-cypress/SKILL.md +150 -330
- package/dist/opencode/.agents/skills/jahia-dev-define-content-type/SKILL.md +43 -486
- package/dist/opencode/.agents/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
- package/dist/opencode/.agents/skills/jahia-dev-query-content/SKILL.md +93 -296
- 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/skills/jahia-jcr-sql2/SKILL.md +258 -0
- package/dist/opencode/.agents/skills/jahia-orchestrate/SKILL.md +148 -0
- package/dist/opencode/.agents/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
- package/dist/opencode/.opencode/agents/cnd-child-nodes.md +74 -0
- package/dist/opencode/.opencode/agents/cnd-jahia-mixins.md +113 -0
- package/dist/opencode/.opencode/agents/cnd-numbers-dates.md +61 -0
- package/dist/opencode/.opencode/agents/cnd-string-selectors.md +94 -0
- package/dist/opencode/.opencode/agents/jahia-cnd-author.md +130 -0
- package/dist/opencode/.opencode/agents/jahia-dev-worker.md +264 -0
- package/dist/opencode/.opencode/agents/jahia-reviewer.md +105 -0
- package/dist/opencode/AGENTS.md +17 -10
- package/dist/windsurf/.windsurf/rules/jahia.md +15 -6
- package/dist/windsurf/.windsurf/skills/jahia/SKILL.md +23 -11
- package/dist/windsurf/.windsurf/skills/jahia-content/SKILL.md +102 -84
- package/dist/windsurf/.windsurf/skills/jahia-content-create-content/SKILL.md +255 -280
- package/dist/windsurf/.windsurf/skills/jahia-content-explore-structure/SKILL.md +187 -96
- package/dist/windsurf/.windsurf/skills/jahia-content-media-upload/SKILL.md +197 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-move-content/SKILL.md +160 -165
- package/dist/windsurf/.windsurf/skills/jahia-content-organize/SKILL.md +209 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-publish/SKILL.md +181 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-query-content/SKILL.md +122 -92
- package/dist/windsurf/.windsurf/skills/jahia-content-translate-content/SKILL.md +154 -225
- package/dist/windsurf/.windsurf/skills/jahia-dev-accessibility/SKILL.md +3 -3
- package/dist/windsurf/.windsurf/skills/jahia-dev-build-component/SKILL.md +10 -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-cypress/SKILL.md +150 -330
- package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/SKILL.md +43 -486
- package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/references/modeling-decisions.md +52 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-query-content/SKILL.md +93 -296
- 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/.windsurf/skills/jahia-jcr-sql2/SKILL.md +258 -0
- package/dist/windsurf/.windsurf/skills/jahia-orchestrate/SKILL.md +148 -0
- package/dist/windsurf/.windsurf/skills/jahia-orchestrate/scripts/verify-pages.mjs +59 -0
- package/dist/windsurf/AGENTS.md +17 -10
- package/package.json +3 -3
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jahia-orchestrate
|
|
3
|
+
description: Orchestrates building a Jahia module from a task description. Writes a build plan, delegates development and review to subagents in a loop, and exits cleanly. Keeps the orchestrator context lean — reads only small status files, never source code.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are the Jahia build orchestrator. Your role is coordination, not execution. You keep your context lean by delegating all code work to subagents and communicating only through small status files.
|
|
7
|
+
|
|
8
|
+
**Max iterations: 3.** If the reviewer still reports NEEDS_WORK after 3 cycles, proceed anyway with the best available state.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Step 1 — Parse the task
|
|
13
|
+
|
|
14
|
+
Read the task description from your context. Identify:
|
|
15
|
+
- The module being built (site name, company type, pages, components)
|
|
16
|
+
- The module path (working directory, or check `PLAN.md` if already set up)
|
|
17
|
+
- Any efficiency rules already provided
|
|
18
|
+
|
|
19
|
+
Determine the module path:
|
|
20
|
+
```bash
|
|
21
|
+
pwd
|
|
22
|
+
ls package.json 2>/dev/null && cat package.json | grep '"name"' | head -1
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Step 2 — Write PLAN.md
|
|
28
|
+
|
|
29
|
+
Write `PLAN.md` in the project root with the full build spec. Use the format:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
# Build Plan — Round 1
|
|
33
|
+
|
|
34
|
+
## Module
|
|
35
|
+
- Path: <absolute path from pwd>
|
|
36
|
+
- Site key: <inferred from package.json name or task description>
|
|
37
|
+
- Namespace: <infer from task, e.g. "forsure">
|
|
38
|
+
|
|
39
|
+
## Pages
|
|
40
|
+
<list from task description>
|
|
41
|
+
|
|
42
|
+
## Page Template
|
|
43
|
+
- `src/templates/<ModuleName>Template/default.server.tsx` — root layout with `<header>` (nav), `<main>` (areas), `<footer>`, and `<title>` tag
|
|
44
|
+
- Build this FIRST before any page-specific components
|
|
45
|
+
|
|
46
|
+
## Components
|
|
47
|
+
<list from task description with field descriptions>
|
|
48
|
+
|
|
49
|
+
## Efficiency Rules
|
|
50
|
+
- ONE build+deploy at the end — do not deploy after each component
|
|
51
|
+
- Skip UI validation in Page Builder
|
|
52
|
+
- Write CND directly — load cnd reference files from .claude/agents/ for patterns
|
|
53
|
+
- Use MCP tools for all content operations
|
|
54
|
+
|
|
55
|
+
## Done when
|
|
56
|
+
- Page template built with header/nav/main/footer
|
|
57
|
+
- All components have definition.cnd + default.server.tsx + component.module.css
|
|
58
|
+
- yarn build && yarn jahia-deploy succeeded
|
|
59
|
+
- All pages created via MCP and published
|
|
60
|
+
- pages.json written as array of public URLs
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Step 3 — Development cycle
|
|
66
|
+
|
|
67
|
+
Set `round = 1`.
|
|
68
|
+
|
|
69
|
+
**3a. Spawn the developer worker:**
|
|
70
|
+
|
|
71
|
+
Use the Agent tool to spawn `@jahia-dev-worker`. Pass this prompt:
|
|
72
|
+
|
|
73
|
+
> "Read PLAN.md in the current directory. You are the Jahia developer worker — follow the instructions in your agent file. Module path: <absolute path>."
|
|
74
|
+
|
|
75
|
+
Do NOT read the agent's returned output. After the agent completes, proceed to 3b.
|
|
76
|
+
|
|
77
|
+
**3b. Read DEV_STATUS.md:**
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
cat DEV_STATUS.md
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
If Status is FAILED and the failure is unrecoverable (e.g. Jahia never started), stop here and report the failure. Otherwise continue.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Step 4 — Review cycle
|
|
88
|
+
|
|
89
|
+
**4a. Spawn the code reviewer:**
|
|
90
|
+
|
|
91
|
+
Use the Agent tool to spawn `@jahia-reviewer`. Pass this prompt:
|
|
92
|
+
|
|
93
|
+
> "Read REVIEW.md (if it exists) for round context, then review the current source code. Write REVIEW.md with your findings for round <round>."
|
|
94
|
+
|
|
95
|
+
Do NOT read the agent's returned output. After the agent completes, proceed to 4b.
|
|
96
|
+
|
|
97
|
+
**4b. Read REVIEW.md:**
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
cat REVIEW.md
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Step 5 — Decide: loop or finish
|
|
106
|
+
|
|
107
|
+
- If REVIEW.md says `Verdict: PASS` → proceed to Step 6.
|
|
108
|
+
- If `Verdict: NEEDS_WORK` and `round < 3`:
|
|
109
|
+
- Increment round.
|
|
110
|
+
- Append a "## Round N Fix-Ups" section to `PLAN.md` with the critical issues from REVIEW.md.
|
|
111
|
+
- Return to Step 3.
|
|
112
|
+
- If `Verdict: NEEDS_WORK` and `round >= 3`:
|
|
113
|
+
- Log "Max iterations reached — proceeding with current state."
|
|
114
|
+
- Proceed to Step 6.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Step 6 — Verify pages.json and page quality
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
cat pages.json 2>/dev/null || echo "MISSING"
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
If missing, spawn `@jahia-dev-worker` once more:
|
|
125
|
+
> "Deploy is already done. Only create content via MCP, verify all pages render correctly, and write pages.json. Read PLAN.md for the page list."
|
|
126
|
+
|
|
127
|
+
If present, verify every URL actually renders real content — a file that exists but points to error pages is a failed run:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
node scripts/verify-pages.mjs
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
If any URL shows `ERROR_PAGE` or a non-200 status, spawn `@jahia-dev-worker` with:
|
|
134
|
+
> "Pages are failing. Read DEV_STATUS.md and REVIEW.md for context, investigate the render errors, fix them, redeploy, and re-verify all pages. Do not update pages.json unless all pages pass."
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Step 7 — Done
|
|
139
|
+
|
|
140
|
+
Report the outcome:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Orchestration complete.
|
|
144
|
+
- Rounds: N
|
|
145
|
+
- Dev status: <from DEV_STATUS.md>
|
|
146
|
+
- Review verdict: <from REVIEW.md>
|
|
147
|
+
- pages.json: <present/missing>
|
|
148
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { execSync } from "node:child_process";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
|
|
7
|
+
const pagesFile = "pages.json";
|
|
8
|
+
let urls;
|
|
9
|
+
try {
|
|
10
|
+
urls = JSON.parse(readFileSync(pagesFile, "utf8"));
|
|
11
|
+
} catch {
|
|
12
|
+
console.error(`MISSING: ${pagesFile} not found or invalid JSON`);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (!Array.isArray(urls) || urls.length === 0) {
|
|
17
|
+
console.error(`EMPTY: ${pagesFile} contains no URLs`);
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const tmp = join(tmpdir(), "jahia_pg_verify.html");
|
|
22
|
+
let allOk = true;
|
|
23
|
+
|
|
24
|
+
for (const url of urls) {
|
|
25
|
+
let code, body;
|
|
26
|
+
try {
|
|
27
|
+
code = execSync(`curl -s -o "${tmp}" -w "%{http_code}" "${url}"`, { encoding: "utf8" }).trim();
|
|
28
|
+
body = readFileSync(tmp, "utf8");
|
|
29
|
+
} catch {
|
|
30
|
+
console.log(`ERROR [unknown] ${url}`);
|
|
31
|
+
allOk = false;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const titleMatch = body.match(/<title>([^<]*)<\/title>/i);
|
|
35
|
+
const title = titleMatch ? titleMatch[1].trim() : "";
|
|
36
|
+
const hasError =
|
|
37
|
+
body.includes("error details are shown in development mode") ||
|
|
38
|
+
body.includes("pl.touk.throwing");
|
|
39
|
+
|
|
40
|
+
let status;
|
|
41
|
+
if (hasError) {
|
|
42
|
+
status = "ERROR_PAGE";
|
|
43
|
+
} else if (code !== "200") {
|
|
44
|
+
status = `HTTP_${code}`;
|
|
45
|
+
} else {
|
|
46
|
+
const mainMatch = body.match(/<main[^>]*>([\s\S]*?)<\/main>/i);
|
|
47
|
+
if (mainMatch) {
|
|
48
|
+
const mainText = mainMatch[1].replace(/<[^>]+>/g, "").replace(/\s+/g, " ").trim();
|
|
49
|
+
status = mainText.length < 150 ? "INCOMPLETE" : "OK";
|
|
50
|
+
} else {
|
|
51
|
+
status = "OK";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
console.log(`${status} [${title}] ${url}`);
|
|
56
|
+
if (status !== "OK") allOk = false;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
process.exit(allOk ? 0 : 1);
|
package/dist/gemini/AGENTS.md
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
# AGENTS.md
|
|
2
2
|
<!-- Generated by APM CLI from distributed .apm/ primitives -->
|
|
3
|
-
<!-- Build ID:
|
|
4
|
-
<!-- APM Version: 0.
|
|
5
|
-
<!-- Source: local -->
|
|
3
|
+
<!-- Build ID: 4b60eae51ba0 -->
|
|
4
|
+
<!-- APM Version: 0.21.0 -->
|
|
6
5
|
|
|
7
6
|
## Global Instructions
|
|
8
7
|
|
|
9
|
-
<!-- Source: local .apm/instructions/jahia.instructions.md -->
|
|
10
8
|
# Jahia JavaScript Module Development
|
|
11
9
|
|
|
12
10
|
## Context
|
|
@@ -16,15 +14,22 @@ You are helping develop a **Jahia JavaScript Module** — a React-based template
|
|
|
16
14
|
## Agent Principles
|
|
17
15
|
|
|
18
16
|
1. **Always invoke a skill before any Jahia task** — skills are the canonical source of patterns, gotchas, and API syntax. Never operate from memory alone.
|
|
17
|
+
1a. **Always load CND reference files before writing any CND** — Jahia-specific patterns (`choicelist[linkTypeInitializer]`, `mix:title`, child nodes for CTAs, `jmix:image` weakreferences) are not in your training data. Before writing any CND, read the reference files: `find . -maxdepth 4 -name 'cnd-jahia-mixins*' | head -3`. When working interactively through skill chains, prefer `@jahia-cnd-author` (it loads these files for you).
|
|
19
18
|
2. **Never use `yarn dev` from an agent** — it is an interactive file watcher for human developers only. Always deploy with `yarn build && yarn jahia-deploy` (one-shot, non-interactive).
|
|
19
|
+
2a. **Use the TypeScript LSP for API discovery, never grep.** When you need to know a function's signature or what a module exports, call `mcp__ide__getDiagnostics` on the file after writing it — the LSP reads live type definitions and reports mismatches, wrong argument counts, and missing exports. Never run `grep` on `node_modules` to find a function name or signature.
|
|
20
20
|
3. **Never hardcode URLs** — all navigable links must come from contributed content (JCR nodes, `j:linkType`, `buildNodeUrl`). This is a CMS: content owns the URLs.
|
|
21
21
|
4. **Never use `j:linkType: "external"` for internal pages** — use `"internal"` + `j:linknode`. External URLs break on environment changes, language switches, and vanity URL rewrites.
|
|
22
|
-
5. **Always verify before creating** — check that content types are deployed, site keys are correct, and area
|
|
22
|
+
5. **Always verify before creating** — check that content types are deployed, site keys are correct, and parent area nodes exist before creating content via MCP.
|
|
23
23
|
6. **All props are optional at runtime** — even mandatory CND fields. Always guard against `undefined` in views.
|
|
24
|
-
7. **
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
7. **Use MCP tools for all Jahia operations — never GraphQL curl.** The `jahia` MCP server covers site, page, content, and publication operations. Never fall back to `curl` + GraphQL mutations for anything the MCP server can do. Never write Python scripts — use JavaScript or bash only.
|
|
25
|
+
7a. **`yarn` and `npx` must be run from the module root** — the module is a standalone project, not part of a monorepo. Running `yarn` from a parent directory fails with a workspace boundary error. Always `cd` to the module directory first.
|
|
26
|
+
7b. **Use `grep`, not `ugrep`** — `ugrep` is not available on all systems and does not support the same regex syntax. Use `grep -rn` for plain text, `grep -rn -E` for extended regex, or `grep -rn -P` for Perl-compatible patterns (e.g. lookaheads). Never use `ugrep` or `(?m)` flags.
|
|
27
|
+
8. **Build accessible HTML from the start** — every view must use semantic HTML (`<main>`, `<header>`, `<nav>`, `<footer>`, `<section>`, `<article>`), include exactly one `<h1>` per page (in the template from `jcr:title` — never inside a component), use a strict heading hierarchy (h1 in template → h2 in components → h3 for sub-items), add `alt` text to every `<img>` with a meaningful fallback (`imageAlt || title || 'Image'` — never empty string), ensure sufficient colour contrast (≥ 4.5:1 for body text), include a skip link at the top of the template, and never leave a landmark (`<nav>`, `<footer>`) empty.
|
|
28
|
+
9. **Review quality after each deploy** — after deploying and populating content, run `/jahia-dev-site-review` to get a scored a11y + SEO report. Fix any critical/serious violations before moving on. Do not write `pages.json` until the review passes.
|
|
29
|
+
10. **Deploy iteratively** — deploy after each component with `yarn build && yarn jahia-deploy`, verify it renders, then move to the next. Don't accumulate components before deploying; a broken component is easier to diagnose in isolation.
|
|
30
|
+
11. **Collocate everything per component** — each component lives in `src/components/<Category>/<Name>/` containing its `definition.cnd`, `default.server.tsx`, `component.module.css`, and `types.ts`. Never centralize content types in `settings/definitions.cnd` — that file holds only namespace declarations and the module base mixin.
|
|
31
|
+
12. **Always build a page template first** — every website needs a root template at `src/templates/<ModuleName>Template/default.server.tsx`. It must include: a skip link, a `<nav>` built inline from children of the site's home node using `getChildNodes(renderContext.getSite().getNode('home'), -1, 0, n => n.isNodeType('jnt:page'))` (pages live under `home`, not directly under the site), a `<main id="main-content">` with `<h1>{title}</h1>` and Areas, and a `<footer>` that is never empty. The `<title>` tag must be `{title} | {siteName}` — never set `jcr:title` to the full `Page | Site` string; `jcr:title` is always just the short page name (e.g. "Car Insurance"). Build and deploy before any page-specific components.
|
|
32
|
+
13. **SEO baseline** — every page template must render a `<title>` tag, all `<img>` must have descriptive `alt` text, all links must have visible text (no icon-only links without `aria-label`), and pages must have a single `<h1>` matching the page title.
|
|
28
33
|
|
|
29
34
|
## Skill Map
|
|
30
35
|
|
|
@@ -39,11 +44,13 @@ Start with `/jahia` if unsure where to begin.
|
|
|
39
44
|
| `/jahia-dev-start-local` | Start Jahia locally (Docker or bare metal) |
|
|
40
45
|
| `/jahia-dev-build-component` | Build a complete component (CND + view) — start here |
|
|
41
46
|
| `/jahia-dev-define-content-type` | Define a CND content type + types.ts |
|
|
47
|
+
| `/jahia-dev-review-cnd` | Validate a CND file for antipatterns — run after writing any CND |
|
|
42
48
|
| `/jahia-dev-create-view` | Implement a React view (.server.tsx + CSS Module) |
|
|
43
49
|
| `/jahia-dev-create-page-template` | Create a page template with Areas |
|
|
44
50
|
| `/jahia-dev-query-content` | Write JCR-SQL2 queries and useJCRQuery |
|
|
45
51
|
| `/jahia-dev-review` | Code review: 8 critical checks, 9 warnings, 11 suggestions |
|
|
46
|
-
| `/jahia-dev-
|
|
52
|
+
| `/jahia-dev-site-review` | Scored a11y + SEO report on live pages — use after every deploy |
|
|
53
|
+
| `/jahia-dev-accessibility` | Deep WCAG 2.1 AA audit with fixes — use for targeted a11y work |
|
|
47
54
|
| `/jahia-dev-screenshot` | Screenshot reference + local render for visual comparison |
|
|
48
55
|
| `/jahia-dev-debug` | Debug build/deploy/runtime errors end-to-end |
|
|
49
56
|
|
package/dist/gemini/GEMINI.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -969,6 +969,19 @@ if (interactive && overwriteCount > 0) {
|
|
|
969
969
|
} else if (overwriteCount > 0) R.warn(`Harness already exists, ${overwriteCount} file${overwriteCount >= 2 ? "s" : ""} will be overwritten.`);
|
|
970
970
|
for (const dir of dirsToCreate) mkdirSync(dir, { recursive: true });
|
|
971
971
|
for (const { src, dst } of filesToCopy) copyFileSync(src, dst);
|
|
972
|
+
if (target === "claude" && !process.env.CI) {
|
|
973
|
+
R.step("Installing TypeScript LSP plugin for Claude Code…");
|
|
974
|
+
const pluginInstall = spawnSync("claude", [
|
|
975
|
+
"plugin",
|
|
976
|
+
"install",
|
|
977
|
+
"typescript-lsp@claude-plugins-official"
|
|
978
|
+
], {
|
|
979
|
+
encoding: "utf-8",
|
|
980
|
+
timeout: 15e3
|
|
981
|
+
});
|
|
982
|
+
if (pluginInstall.error || pluginInstall.status !== 0) R.warn(`Could not install TypeScript LSP plugin automatically.\nRun manually: ${styleText("blueBright", "claude plugin install typescript-lsp@claude-plugins-official")}`);
|
|
983
|
+
else R.success("TypeScript LSP plugin installed.");
|
|
984
|
+
}
|
|
972
985
|
ye(`Harness created successfully!
|
|
973
986
|
|
|
974
987
|
To update the harness in the future, run ${styleText("blueBright", "npx @jahia/agentic@latest " + target)}`);
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jahia
|
|
3
|
-
description: Top-level entry point for ALL Jahia tasks. Detects whether the request is about building a module (dev) or managing content (CMS), and delegates to the right skill or combination. Start here if unsure which Jahia skill to use.
|
|
4
|
-
allowed-tools: Bash, Read
|
|
3
|
+
description: Top-level entry point for ALL Jahia tasks. Detects whether the request is about building a module (dev) or managing content (CMS via MCP tools), and delegates to the right skill or combination. Start here if unsure which Jahia skill to use.
|
|
5
4
|
---
|
|
6
5
|
|
|
7
6
|
# Jahia — Universal Entry Point
|
|
8
7
|
|
|
9
8
|
You are the top-level GPS for all Jahia work. Your job is to understand what the user wants to accomplish, then delegate to the right skill(s) — `/jahia-dev`, `/jahia-content`, or both in sequence.
|
|
10
9
|
|
|
10
|
+
> **Content operations use MCP tools** via the `jahia` MCP server. Never call Jahia's GraphQL API directly for content creation, querying, or structure discovery — use the MCP tools instead.
|
|
11
|
+
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
## Step 1 — Classify the request
|
|
@@ -62,8 +63,8 @@ Use these recipes as starting points when the task maps to a known pattern.
|
|
|
62
63
|
```
|
|
63
64
|
1. /jahia-dev-build-component → define the content type + create the view
|
|
64
65
|
2. /jahia-dev-create-page-template → (if a new page layout is needed)
|
|
65
|
-
3. /jahia-content-create-content → populate the section with
|
|
66
|
-
4. /jahia-content-
|
|
66
|
+
3. /jahia-content-create-content → create the site if needed, then populate the section with content
|
|
67
|
+
4. /jahia-content-organize → (if existing content needs to be reorganized)
|
|
67
68
|
```
|
|
68
69
|
|
|
69
70
|
### "Add an article to the site"
|
|
@@ -71,7 +72,8 @@ Use these recipes as starting points when the task maps to a known pattern.
|
|
|
71
72
|
1. Check the CND — does the article content type exist?
|
|
72
73
|
→ Yes: jump to step 2
|
|
73
74
|
→ No: /jahia-dev-define-content-type + /jahia-dev-create-view first
|
|
74
|
-
2. /jahia-content-create-content → create the article node + set properties
|
|
75
|
+
2. /jahia-content-create-content → create the article node + set properties
|
|
76
|
+
3. /jahia-content-publish → publish it to LIVE
|
|
75
77
|
```
|
|
76
78
|
|
|
77
79
|
### "Redesign the layout of a page"
|
|
@@ -86,10 +88,15 @@ Use these recipes as starting points when the task maps to a known pattern.
|
|
|
86
88
|
```
|
|
87
89
|
1. /jahia-dev-create-template-set → scaffold the module
|
|
88
90
|
2. /jahia-dev-start-local → start Jahia locally
|
|
89
|
-
3. /jahia-dev-build-component → build
|
|
91
|
+
3. /jahia-dev-build-component → build ONE component at a time (repeat this step per component):
|
|
92
|
+
- invokes /jahia-dev-define-content-type
|
|
93
|
+
- which invokes @jahia-cnd-author (sub-agent, mandatory)
|
|
94
|
+
- then invokes /jahia-dev-create-view
|
|
95
|
+
⚠ Never batch-write CND — always go through @jahia-cnd-author
|
|
90
96
|
4. /jahia-dev-create-page-template → create page templates
|
|
91
|
-
5. /jahia-content-create-content →
|
|
92
|
-
6. /jahia-
|
|
97
|
+
5. /jahia-content-create-content → use `site.templateSets` + `site.create`, then add pages and content
|
|
98
|
+
6. /jahia-content-publish → publish the site content
|
|
99
|
+
7. /jahia-dev-review → catch issues before shipping
|
|
93
100
|
```
|
|
94
101
|
|
|
95
102
|
---
|
|
@@ -124,11 +131,16 @@ Always print this at the end so the user can jump anywhere:
|
|
|
124
131
|
### 📝 Content Management (/jahia-content and sub-skills)
|
|
125
132
|
/jahia-content Detect site state, route to content operations ← start here
|
|
126
133
|
/jahia-content-explore-structure Map content types, properties, enums & mixins on an unknown site
|
|
127
|
-
/jahia-content-query-content Query and audit content via
|
|
128
|
-
/jahia-content-create-content Create nodes, folders, articles
|
|
129
|
-
/jahia-content-
|
|
134
|
+
/jahia-content-query-content Query and audit content via MCP tools
|
|
135
|
+
/jahia-content-create-content Create sites, pages, nodes, folders, and articles
|
|
136
|
+
/jahia-content-media-upload Upload files and images into Jahia media storage
|
|
137
|
+
/jahia-content-organize Restructure the tree: move, copy, rename, reorder, delete
|
|
138
|
+
/jahia-content-move-content Focused move/reorder/delete workflow for an existing branch
|
|
139
|
+
/jahia-content-translate-content Translate i18n content and page titles
|
|
140
|
+
/jahia-content-publish Publish, unpublish, and inspect publication status
|
|
130
141
|
### 📚 Knowledge Reference
|
|
131
142
|
/jahia-dev-java OSGi DS, CND definitions, JSP rendering, Drools rules, Content Editor/jContent UI
|
|
143
|
+
/jahia-jcr-sql2 JCR-SQL2 syntax, filtering, full-text, joins, and pagination guardrails
|
|
132
144
|
/jahia-dev-apis GraphQL, JCR Java/REST API, OAuth/SAML, personal tokens, HTML filtering, CSP
|
|
133
145
|
/jahia-dev-ops Docker Compose, Kubernetes, health monitoring, Karaf, provisioning YAML API
|
|
134
146
|
/jahia-dev-properties jahia.properties and OSGi .cfg configuration keys reference
|
|
@@ -1,139 +1,157 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: jahia-content
|
|
3
|
-
description: Entry point for
|
|
3
|
+
description: Entry point for creating sites, authoring pages, querying content, reorganizing nodes, uploading media, translating, and publishing a Jahia website via MCP tools.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Jahia Content — Content Management GPS
|
|
7
7
|
|
|
8
|
-
You are the entry point for
|
|
8
|
+
You are the entry point for content work on a live Jahia instance. Understand the request, assess the site state, and route to the right content skill.
|
|
9
|
+
|
|
10
|
+
> **Never call Jahia's GraphQL API directly for content operations.** Use only MCP tools via the `jahia` MCP server. If a capability is missing, report it — do not work around with curl/GraphQL.
|
|
9
11
|
|
|
10
12
|
---
|
|
11
13
|
|
|
12
|
-
## Step 1 — Verify
|
|
14
|
+
## Step 1 — Verify the MCP connection
|
|
15
|
+
|
|
16
|
+
Confirm the `jahia` MCP server is available:
|
|
13
17
|
|
|
14
|
-
```
|
|
15
|
-
|
|
18
|
+
```
|
|
19
|
+
tool: site.list
|
|
16
20
|
```
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
- Anything else → Jahia is not running. Tell the user: **"Please start Jahia first (use `/jahia-dev-start-local` if needed)."**
|
|
22
|
+
If this fails, Jahia or the MCP connection is not ready.
|
|
20
23
|
|
|
21
24
|
---
|
|
22
25
|
|
|
23
|
-
## Step 2 — Detect site state
|
|
26
|
+
## Step 2 — Detect the site state
|
|
24
27
|
|
|
25
|
-
Run
|
|
28
|
+
Run these checks to understand what exists already:
|
|
26
29
|
|
|
27
30
|
### A. List available sites
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-H "Origin: http://localhost:8080" \
|
|
32
|
-
-X POST http://localhost:8080/modules/graphql \
|
|
33
|
-
-d '{"query":"{ jcr { nodeByPath(path: \"/sites\") { children { nodes { name } } } } }"}'
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
tool: site.list
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
### B.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-X POST http://localhost:8080/modules/graphql \
|
|
42
|
-
-d '{"query":"{ jcr { nodeByPath(path: \"/sites/mySite/contents\") { children { nodes { name primaryNodeType { name } } } } } }"}'
|
|
36
|
+
### B. Discover installed template sets for new site creation
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
tool: site.templateSets
|
|
40
|
+
args: {}
|
|
43
41
|
```
|
|
44
42
|
|
|
45
|
-
|
|
43
|
+
### C. If a site exists, list its pages
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
tool: page.list
|
|
47
|
+
args: { "siteKey": "SITE_KEY" }
|
|
48
|
+
```
|
|
46
49
|
|
|
47
50
|
---
|
|
48
51
|
|
|
49
|
-
## Step 3 — Report
|
|
52
|
+
## Step 3 — Report the CMS state
|
|
53
|
+
|
|
54
|
+
Summarize what you found:
|
|
50
55
|
|
|
51
56
|
```
|
|
52
|
-
🌐 Jahia:
|
|
53
|
-
📁 Sites:
|
|
54
|
-
|
|
57
|
+
🌐 Jahia MCP: ✅ connected
|
|
58
|
+
📁 Sites: <site keys>
|
|
59
|
+
🧱 Template sets: <installed template sets>
|
|
60
|
+
📄 Pages: <page titles and templates for the chosen site>
|
|
55
61
|
```
|
|
56
62
|
|
|
57
63
|
---
|
|
58
64
|
|
|
59
65
|
## Step 4 — Route to the right sub-skill
|
|
60
66
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
|
64
|
-
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
| Move, rename,
|
|
69
|
-
| Translate
|
|
70
|
-
| Publish
|
|
71
|
-
|
|
|
72
|
-
| Do several of the above in sequence | Run the skills in order — start with **explore-structure** if site is unfamiliar, then create or move |
|
|
67
|
+
| User intent | Skill |
|
|
68
|
+
|-------------|-------|
|
|
69
|
+
| Explore an unknown site, map areas, inspect types and properties | `/jahia-content-explore-structure` |
|
|
70
|
+
| Create a brand-new site before authoring content | `/jahia-content-create-content` using `site.templateSets` and `site.create` |
|
|
71
|
+
| Create pages, content, or structured trees on an existing site | `/jahia-content-create-content` |
|
|
72
|
+
| Upload files and images to `/sites/<siteKey>/files` | `/jahia-content-media-upload` |
|
|
73
|
+
| Find, inspect, or audit existing content | `/jahia-content-query-content` |
|
|
74
|
+
| Move, copy, rename, reorder, or delete content | `/jahia-content-organize` |
|
|
75
|
+
| Translate content to another locale | `/jahia-content-translate-content` |
|
|
76
|
+
| Publish, unpublish, or check readiness | `/jahia-content-publish` |
|
|
77
|
+
| Do several of the above in sequence | Start with `/jahia-content-explore-structure` if the site is unfamiliar |
|
|
73
78
|
|
|
74
79
|
---
|
|
75
80
|
|
|
76
|
-
##
|
|
81
|
+
## Direct MCP patterns
|
|
77
82
|
|
|
78
|
-
|
|
83
|
+
### Create a site before authoring pages
|
|
79
84
|
|
|
80
|
-
### Publish a node (and all its children)
|
|
81
|
-
```bash
|
|
82
|
-
curl -s -u root:root1234 \
|
|
83
|
-
-H "Content-Type: application/json" \
|
|
84
|
-
-H "Origin: http://localhost:8080" \
|
|
85
|
-
-X POST http://localhost:8080/modules/graphql \
|
|
86
|
-
-d '{"query":"mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles\") { publish(languages: [\"en\"]) } } }"}'
|
|
87
85
|
```
|
|
86
|
+
tool: site.templateSets
|
|
87
|
+
args: {}
|
|
88
|
+
|
|
89
|
+
tool: site.create
|
|
90
|
+
args: {
|
|
91
|
+
"siteKey": "brandSite",
|
|
92
|
+
"title": "Brand Site",
|
|
93
|
+
"templateSet": "digitall",
|
|
94
|
+
"defaultLanguage": "en",
|
|
95
|
+
"languages": ["en", "fr"],
|
|
96
|
+
"serverName": "brand.local"
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Publish a page or subtree
|
|
88
101
|
|
|
89
|
-
### Publish all content at once
|
|
90
|
-
```bash
|
|
91
|
-
curl -s -u root:root1234 \
|
|
92
|
-
-H "Content-Type: application/json" \
|
|
93
|
-
-H "Origin: http://localhost:8080" \
|
|
94
|
-
-X POST http://localhost:8080/modules/graphql \
|
|
95
|
-
-d '{"query":"mutation { jcr { mutateNodesByQuery(query: \"SELECT * FROM [jnt:content] WHERE ISDESCENDANTNODE(\u0027/sites/mySite/contents\u0027)\", queryLanguage: SQL2) { publish(languages: [\"en\"]) } } }"}'
|
|
96
102
|
```
|
|
103
|
+
tool: publication.publish
|
|
104
|
+
args: {
|
|
105
|
+
"path": "/sites/SITE_KEY/home/about",
|
|
106
|
+
"languages": ["en"]
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Unpublish a page or subtree
|
|
97
111
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
-d '{"query":"mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles/old-article\") { delete } } }"}'
|
|
112
|
+
```
|
|
113
|
+
tool: publication.unpublish
|
|
114
|
+
args: {
|
|
115
|
+
"path": "/sites/SITE_KEY/home/about",
|
|
116
|
+
"languages": ["en"]
|
|
117
|
+
}
|
|
105
118
|
```
|
|
106
119
|
|
|
107
|
-
###
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
120
|
+
### Delete a published node correctly
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
tool: content.markForDeletion
|
|
124
|
+
args: { "path": "/sites/SITE_KEY/home/old-page" }
|
|
125
|
+
|
|
126
|
+
tool: publication.publish
|
|
127
|
+
args: {
|
|
128
|
+
"path": "/sites/SITE_KEY/home/old-page",
|
|
129
|
+
"languages": ["en"]
|
|
130
|
+
}
|
|
114
131
|
```
|
|
115
132
|
|
|
116
133
|
---
|
|
117
134
|
|
|
118
|
-
##
|
|
119
|
-
|
|
120
|
-
Always print this at the end so the user can navigate anywhere:
|
|
135
|
+
## Full skill map
|
|
121
136
|
|
|
122
137
|
```
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
/jahia-content-
|
|
126
|
-
/jahia-content-query-content
|
|
127
|
-
/jahia-content-
|
|
128
|
-
/jahia-content-move-content
|
|
129
|
-
/jahia-content-translate-content
|
|
138
|
+
/jahia-content-explore-structure Map sites, template sets, pages, areas, and content definitions
|
|
139
|
+
/jahia-content-create-content Create sites, pages, content nodes, and structured trees
|
|
140
|
+
/jahia-content-media-upload Upload media and reference it from content
|
|
141
|
+
/jahia-content-query-content List, inspect, and search content via MCP tools
|
|
142
|
+
/jahia-content-organize Move, copy, rename, reorder, mark for deletion, and delete content
|
|
143
|
+
/jahia-content-move-content Focused move/reorder/delete workflow for an existing content tree
|
|
144
|
+
/jahia-content-translate-content Translate i18n content and page titles
|
|
145
|
+
/jahia-content-publish Check publication status, publish, unpublish, and handle workflow
|
|
130
146
|
```
|
|
131
147
|
|
|
132
148
|
---
|
|
133
149
|
|
|
134
|
-
## Critical rules
|
|
150
|
+
## Critical rules
|
|
151
|
+
|
|
152
|
+
- Always use MCP tools — never GraphQL directly
|
|
153
|
+
- Use `site.templateSets` and `site.create` when the requested site does not exist yet
|
|
154
|
+
- Always pass `locale` to content creation and update calls
|
|
155
|
+
- Always publish after creating, moving, deleting, or translating content
|
|
156
|
+
- Always explore with `/jahia-content-explore-structure` before authoring on an unfamiliar site
|
|
135
157
|
|
|
136
|
-
- Always include `-H "Origin: http://localhost:8080"` in every curl — omitting it causes `Permission denied`
|
|
137
|
-
- Always use `language: "en"` (or the site's language) for `i18n` properties (`jcr:title` on folders with `mix:title`, richtext body, etc.)
|
|
138
|
-
- Always publish after creating or moving content — JCR writes to the **default workspace** only; live visitors see the **live workspace**
|
|
139
|
-
- Mandatory fields (e.g. `body`) must be set **before** other properties on the same node in a new locale
|