@jahia/agentic 0.0.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/README.md +48 -0
- package/dist/claude/.claude/rules/jahia.md +76 -0
- package/dist/claude/.claude/skills/jahia/SKILL.md +136 -0
- package/dist/claude/.claude/skills/jahia-content/SKILL.md +139 -0
- package/dist/claude/.claude/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/claude/.claude/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/claude/.claude/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/claude/.claude/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/claude/.claude/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/claude/.claude/skills/jahia-dev/SKILL.md +124 -0
- package/dist/claude/.claude/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/claude/.claude/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/claude/.claude/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/claude/.claude/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/claude/.claude/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/claude/.claude/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/claude/.claude/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/claude/.claude/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/claude/.claude/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/claude/.claude/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/claude/.claude/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/claude/.claude/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/claude/.claude/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/claude/.claude/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/claude/.claude/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/claude/.claude/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/claude/.claude/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/claude/.claude/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/claude/.claude/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/claude/.claude/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/claude/.claude/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/claude/.claude/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/claude/.claude/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/claude/.claude/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/claude/.claude/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/claude/.claude/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/claude/.claude/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/claude/.claude/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/claude/.claude/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/claude/CLAUDE.md +90 -0
- package/dist/codex/.agents/skills/jahia/SKILL.md +136 -0
- package/dist/codex/.agents/skills/jahia-content/SKILL.md +139 -0
- package/dist/codex/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/codex/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/codex/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/codex/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/codex/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/codex/.agents/skills/jahia-dev/SKILL.md +124 -0
- package/dist/codex/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/codex/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/codex/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/codex/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/codex/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/codex/.agents/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/codex/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/codex/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/codex/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/codex/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/codex/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/codex/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/codex/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/codex/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/codex/.agents/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/codex/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/codex/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/codex/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/codex/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/codex/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/codex/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/codex/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/codex/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/codex/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/codex/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/codex/.agents/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/codex/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/codex/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/codex/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/codex/AGENTS.md +89 -0
- package/dist/copilot/.agents/skills/jahia/SKILL.md +136 -0
- package/dist/copilot/.agents/skills/jahia-content/SKILL.md +139 -0
- package/dist/copilot/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/copilot/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/copilot/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/copilot/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/copilot/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/copilot/.agents/skills/jahia-dev/SKILL.md +124 -0
- package/dist/copilot/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/copilot/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/copilot/.agents/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/copilot/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/copilot/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/copilot/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/copilot/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/copilot/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/copilot/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/copilot/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/copilot/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/copilot/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/copilot/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/copilot/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/copilot/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/copilot/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/copilot/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/copilot/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/copilot/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/copilot/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/copilot/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/copilot/.agents/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/copilot/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/copilot/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/copilot/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/copilot/AGENTS.md +89 -0
- package/dist/cursor/.agents/skills/jahia/SKILL.md +136 -0
- package/dist/cursor/.agents/skills/jahia-content/SKILL.md +139 -0
- package/dist/cursor/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/cursor/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/cursor/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/cursor/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/cursor/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/cursor/.agents/skills/jahia-dev/SKILL.md +124 -0
- package/dist/cursor/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/cursor/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/cursor/.agents/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/cursor/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/cursor/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/cursor/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/cursor/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/cursor/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/cursor/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/cursor/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/cursor/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/cursor/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/cursor/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/cursor/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/cursor/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/cursor/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/cursor/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/cursor/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/cursor/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/cursor/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/cursor/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/cursor/.agents/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/cursor/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/cursor/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/cursor/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/cursor/.cursor/rules/jahia.mdc +80 -0
- package/dist/gemini/.agents/skills/jahia/SKILL.md +136 -0
- package/dist/gemini/.agents/skills/jahia-content/SKILL.md +139 -0
- package/dist/gemini/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/gemini/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/gemini/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/gemini/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/gemini/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/gemini/.agents/skills/jahia-dev/SKILL.md +124 -0
- package/dist/gemini/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/gemini/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/gemini/.agents/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/gemini/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/gemini/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/gemini/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/gemini/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/gemini/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/gemini/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/gemini/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/gemini/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/gemini/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/gemini/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/gemini/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/gemini/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/gemini/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/gemini/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/gemini/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/gemini/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/gemini/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/gemini/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/gemini/.agents/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/gemini/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/gemini/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/gemini/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/gemini/AGENTS.md +89 -0
- package/dist/gemini/GEMINI.md +6 -0
- package/dist/index.js +975 -0
- package/dist/opencode/.agents/skills/jahia/SKILL.md +136 -0
- package/dist/opencode/.agents/skills/jahia-content/SKILL.md +139 -0
- package/dist/opencode/.agents/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/opencode/.agents/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/opencode/.agents/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/opencode/.agents/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/opencode/.agents/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/opencode/.agents/skills/jahia-dev/SKILL.md +124 -0
- package/dist/opencode/.agents/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/opencode/.agents/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/opencode/.agents/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/opencode/.agents/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/opencode/.agents/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/opencode/.agents/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/opencode/.agents/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/opencode/.agents/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/opencode/.agents/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/opencode/.agents/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/opencode/.agents/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/opencode/.agents/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/opencode/.agents/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/opencode/.agents/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/opencode/.agents/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/opencode/.agents/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/opencode/.agents/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/opencode/.agents/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/opencode/.agents/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/opencode/.agents/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/opencode/.agents/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/opencode/.agents/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/opencode/.agents/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/opencode/.agents/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/opencode/.agents/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/opencode/AGENTS.md +89 -0
- package/dist/windsurf/.windsurf/rules/jahia.md +80 -0
- package/dist/windsurf/.windsurf/skills/jahia/SKILL.md +136 -0
- package/dist/windsurf/.windsurf/skills/jahia-content/SKILL.md +139 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-create-content/SKILL.md +384 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-explore-structure/SKILL.md +164 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-move-content/SKILL.md +236 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-query-content/SKILL.md +144 -0
- package/dist/windsurf/.windsurf/skills/jahia-content-translate-content/SKILL.md +297 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev/SKILL.md +124 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-accessibility/SKILL.md +271 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/SKILL.md +52 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/authentication.md +484 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/graphql.md +657 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/jcr-api.md +465 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-apis/references/security.md +541 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-build-component/SKILL.md +140 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-page-template/SKILL.md +303 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-template-set/SKILL.md +232 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-create-view/SKILL.md +838 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-cypress/SKILL.md +445 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-debug/SKILL.md +176 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-define-content-type/SKILL.md +536 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-import-from/SKILL.md +244 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/SKILL.md +105 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/backend.md +331 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/content-types.md +273 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/modules.md +218 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/osgi.md +208 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/rendering.md +191 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-java/references/ui-extensions.md +344 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-jexperience/SKILL.md +269 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-ops/SKILL.md +50 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-ops/references/docker.md +151 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-ops/references/monitoring.md +195 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-ops/references/provisioning.md +269 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-osgi-module/SKILL.md +297 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-properties/SKILL.md +147 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-properties/references/all-properties.md +231 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-query-content/SKILL.md +407 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-review/SKILL.md +228 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-screenshot/SKILL.md +177 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-start-local/SKILL.md +129 -0
- package/dist/windsurf/.windsurf/skills/jahia-dev-ui-extension/SKILL.md +559 -0
- package/dist/windsurf/AGENTS.md +89 -0
- package/package.json +28 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jahia-content-explore-structure
|
|
3
|
+
user-invocable: false
|
|
4
|
+
description: Efficiently maps an unknown Jahia website's content structure before creating or editing content. Discovers available content types, their properties (i18n vs non-i18n), valid enum values, mixin requirements, and image assets — in the minimum number of API calls. Works on any Jahia instance including fresh installs with no reference site.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: jahia-content-explore-structure
|
|
8
|
+
|
|
9
|
+
Use this skill **before** creating content on an unfamiliar Jahia site. It produces a reusable property map so that `/jahia-content-create-content` can work without trial-and-error mutations.
|
|
10
|
+
|
|
11
|
+
**No reference site required.** All content type definitions, property names, i18n flags, and enum constraints are retrieved directly from the GraphQL API via the `nodeTypeByName` and `nodeTypes` queries.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Prerequisites
|
|
16
|
+
|
|
17
|
+
- Jahia running at `http://localhost:8080`
|
|
18
|
+
- Credentials: `root` / `root1234`
|
|
19
|
+
- Always include `-H "Origin: http://localhost:8080"` — omitting it causes `Permission denied`
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Step 1 — Batch site exploration (ONE call)
|
|
24
|
+
|
|
25
|
+
Use GraphQL aliases to retrieve everything you need in a **single HTTP request**: site metadata, page structure, file assets, and available content types.
|
|
26
|
+
|
|
27
|
+
First, find the site key:
|
|
28
|
+
```bash
|
|
29
|
+
curl -s -u root:root1234 -H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
|
|
30
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
31
|
+
-d '{"query":"{ jcr { nodeByPath(path: \"/sites\") { children { nodes { name } } } } }"}'
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Then run the full batch query (replace `SITE_KEY` and `TEMPLATE_MODULE`):
|
|
35
|
+
```bash
|
|
36
|
+
curl -s -u root:root1234 \
|
|
37
|
+
-H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
|
|
38
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
39
|
+
-d '{"query":"{ jcr { site: nodeByPath(path: \"/sites/SITE_KEY\") { properties(names: [\"j:templatesSet\",\"j:defaultLanguage\"]) { name value } } home: nodeByPath(path: \"/sites/SITE_KEY/home\") { children { nodes { name primaryNodeType { name } children { nodes { name primaryNodeType { name } } } } } } files: nodeByPath(path: \"/sites/SITE_KEY/files\") { children { nodes { name uuid } } } contentTypes: nodeTypes(filter: {siteKey: \"SITE_KEY\", includeMixins: false, includeAbstract: false}) { nodes { name systemId } } } }"}'
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
From the response:
|
|
43
|
+
- `site.properties` → `j:templatesSet` (the template module name) and `j:defaultLanguage`
|
|
44
|
+
- `home.children` → page area structure; look for area nodes and check their children to see which content types are in use
|
|
45
|
+
- `files.children` → existing file folders and UUIDs
|
|
46
|
+
- `contentTypes.nodes` → all deployed types; filter by `systemId` matching `j:templatesSet` to find the site's own types
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Step 2 — Get ALL type definitions for the template module (ONE call)
|
|
51
|
+
|
|
52
|
+
Once you know `j:templatesSet` (e.g. `mymodule`) from Step 1, fetch **every type with all its properties** in a single call:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
curl -s -u root:root1234 \
|
|
56
|
+
-H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
|
|
57
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
58
|
+
-d '{
|
|
59
|
+
"query": "{ jcr { nodeTypes(filter: {modules: [\"TEMPLATE_MODULE\"], includeMixins: false, includeAbstract: false}) { nodes { name mixin supertypes { name } properties { name requiredType internationalized mandatory multiple constraints } nodes { name mandatory requiredPrimaryType { name } } } } } }"
|
|
60
|
+
}'
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
> ✅ **This is the only type-definition call you need.** The `properties` array already includes **all inherited properties from supertypes and mixins** — the Jahia GraphQL API resolves inheritance automatically. Do **NOT** query supertypes separately, do **NOT** call `nodeTypeByName` for individual types, do **NOT** query mixin definitions.
|
|
64
|
+
|
|
65
|
+
If you also need properties from standard Jahia types (e.g. `jnt:bigText`, `jnt:text`), add them with `nodeTypesByNames`:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
curl -s -u root:root1234 \
|
|
69
|
+
-H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
|
|
70
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
71
|
+
-d '{"query":"{ jcr { nodeTypesByNames(names: [\"jnt:bigText\", \"jnt:text\"]) { name properties { name requiredType internationalized mandatory constraints } } } }"}'
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Step 3 — Identify image assets
|
|
77
|
+
|
|
78
|
+
File assets are already returned by the Step 1 batch query under `files.children`. No additional call needed unless you need UUIDs of files inside sub-folders:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
curl -s -u root:root1234 \
|
|
82
|
+
-H "Content-Type: application/json" -H "Origin: http://localhost:8080" \
|
|
83
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
84
|
+
-d '{"query":"{ jcr { nodeByPath(path: \"/sites/SITE_KEY/files/SUBFOLDER\") { children { nodes { name uuid } } } } }"}'
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
> `image` properties have `requiredType: WEAKREFERENCE`. Set them with `type: WEAKREFERENCE` and the file node UUID. The file must have `jmix:image` mixin — always include `mixins: [\"jmix:image\"]` when uploading (see `/jahia-content-create-content`).
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Step 4 — Build the property map
|
|
92
|
+
|
|
93
|
+
After Step 2, summarise the data before creating content:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
Content type: NAMESPACE:typeName
|
|
97
|
+
Supertypes: [from API response — no need to query separately]
|
|
98
|
+
Required mixins (must be in addNode mixins[]): jmix:renderable, jmix:internalLink, etc.
|
|
99
|
+
|
|
100
|
+
Mandatory non-i18n properties (set in addNode, no language needed):
|
|
101
|
+
image WEAKREF UUID of jmix:image file
|
|
102
|
+
|
|
103
|
+
i18n properties (set with language: "en" in mutation):
|
|
104
|
+
jcr:title STRING from mix:title
|
|
105
|
+
body STRING rich HTML text
|
|
106
|
+
|
|
107
|
+
Optional non-i18n:
|
|
108
|
+
[name] STRING value1 | value2 (from constraints array)
|
|
109
|
+
|
|
110
|
+
Mixin properties (set AFTER addNode in a separate mutation):
|
|
111
|
+
j:view STRING (from jmix:renderable)
|
|
112
|
+
j:linknode WEAKREF i18n (from jmix:internalLink)
|
|
113
|
+
j:url STRING i18n (from jmix:externalLink — set with language: "en")
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Critical gotchas
|
|
119
|
+
|
|
120
|
+
### 1. `j:view` cannot be set in `addNode` — set it after
|
|
121
|
+
|
|
122
|
+
```graphql
|
|
123
|
+
# Step 1: create node with mixin declared
|
|
124
|
+
addNode(... mixins: ["jmix:renderable"] ...)
|
|
125
|
+
|
|
126
|
+
# Step 2: set j:view in a separate mutation
|
|
127
|
+
mutateNode(...) { mutateProperty(name: "j:view") { setValue(value: "cover") } }
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 2. `j:url` (from `jmix:externalLink`) requires `language: "en"` — it is an i18n property
|
|
131
|
+
|
|
132
|
+
```graphql
|
|
133
|
+
addNode(
|
|
134
|
+
mixins: ["jmix:externalLink"]
|
|
135
|
+
properties: [
|
|
136
|
+
{name: "j:url", type: STRING, value: "https://example.com", language: "en"}
|
|
137
|
+
]
|
|
138
|
+
)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### 3. GraphQL `properties()` without `language:` hides i18n property values at query time
|
|
142
|
+
|
|
143
|
+
When **reading** existing nodes: use `properties(language: "en")`. When **writing** i18n properties: add `language: "en"` to the `setValue` call.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Next step — Create content with the property map
|
|
148
|
+
|
|
149
|
+
Once you have the property map from Step 4, hand it off to **`/jahia-content-create-content`**:
|
|
150
|
+
|
|
151
|
+
- Use the mandatory properties list to populate `addNode` / `addChild` mutations correctly the first time
|
|
152
|
+
- Use the i18n flags to know which properties need `language: "en"`
|
|
153
|
+
- Use the enum constraints to pass only valid values
|
|
154
|
+
- Use nested `addChild` calls to create an entire content tree in one mutation (see the `⚡ Minimum-call workflow` section in `/jahia-content-create-content`)
|
|
155
|
+
|
|
156
|
+
> Skipping this skill and guessing property names leads to `ConstraintViolationException` and `Couldn't find definition for property` errors. Always explore first.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## References
|
|
161
|
+
|
|
162
|
+
- GraphQL API playground: `http://localhost:8080/modules/graphql`
|
|
163
|
+
- GraphQL schema introspection for node type fields: `{ __type(name: "JCRNodeType") { fields { name } } }`
|
|
164
|
+
- GraphQL schema introspection for property definition fields: `{ __type(name: "JCRPropertyDefinition") { fields { name } } }`
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: jahia-content-move-content
|
|
3
|
+
description: Moves and reorganizes JCR content nodes in Jahia. Use when asked to restructure content folders, nest flat content into sections, rename or move nodes, or tidy up a content tree.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: jahia-content-move-content
|
|
7
|
+
|
|
8
|
+
Reorganizes the JCR content tree — moving nodes into sub-folders, renaming them, and reordering them — using the Jahia GraphQL API.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
- Jahia running at `http://localhost:8080`
|
|
15
|
+
- Credentials: `root` / `root1234` (default)
|
|
16
|
+
- GraphQL endpoint: `http://localhost:8080/modules/graphql`
|
|
17
|
+
|
|
18
|
+
**Always include both auth flags:**
|
|
19
|
+
```bash
|
|
20
|
+
curl -s -u root:root1234 \
|
|
21
|
+
-H "Content-Type: application/json" \
|
|
22
|
+
-H "Origin: http://localhost:8080" \
|
|
23
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
24
|
+
-d '{"query": "..."}'
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
> ⚠️ The `Origin` header is **required** — omitting it returns `Permission denied`.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Step 1 — Audit the current content tree
|
|
32
|
+
|
|
33
|
+
Before moving anything, map out what exists and where:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# List all content folders and their direct children
|
|
37
|
+
curl -s -u root:root1234 \
|
|
38
|
+
-H "Content-Type: application/json" \
|
|
39
|
+
-H "Origin: http://localhost:8080" \
|
|
40
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
41
|
+
-d '{
|
|
42
|
+
"query": "{ jcr { nodeByPath(path: \"/sites/mySite/contents\") { descendants(fieldFilter: {filters: [{fieldName: \"primaryNodeType.name\", evaluation: EQUAL, value: \"jnt:contentFolder\"}]}) { nodes { path name } } } } }"
|
|
43
|
+
}'
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Or use a JCR-SQL2 query for a flat list of all content items:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
curl -s -u root:root1234 \
|
|
50
|
+
-H "Content-Type: application/json" \
|
|
51
|
+
-H "Origin: http://localhost:8080" \
|
|
52
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
53
|
+
-d '{
|
|
54
|
+
"query": "{ jcr { nodesByQuery(query: \"SELECT * FROM [jnt:content] WHERE ISDESCENDANTNODE(\u0027/sites/mySite/contents\u0027) ORDER BY [jcr:path] ASC\", queryLanguage: SQL2) { nodes { path primaryNodeType { name } } } } }"
|
|
55
|
+
}'
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Step 2 — Create target sub-folders
|
|
61
|
+
|
|
62
|
+
If destination folders don't exist yet, create them with `mix:title` for a proper display label:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Create a sub-folder
|
|
66
|
+
curl -s -u root:root1234 \
|
|
67
|
+
-H "Content-Type: application/json" \
|
|
68
|
+
-H "Origin: http://localhost:8080" \
|
|
69
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
70
|
+
-d '{
|
|
71
|
+
"query": "mutation { jcr { addNode(parentPathOrId: \"/sites/mySite/contents/articles\", name: \"getting-started\", primaryNodeType: \"jnt:contentFolder\") { node { path } } } }"
|
|
72
|
+
}'
|
|
73
|
+
|
|
74
|
+
# Set a human-readable title on the folder
|
|
75
|
+
curl -s -u root:root1234 \
|
|
76
|
+
-H "Content-Type: application/json" \
|
|
77
|
+
-H "Origin: http://localhost:8080" \
|
|
78
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
79
|
+
-d '{
|
|
80
|
+
"query": "mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles/getting-started\") { addMixins(mixins: [\"mix:title\"]) mutateProperty(name: \"jcr:title\") { setValue(language: \"en\", value: \"Getting Started\") } } } }"
|
|
81
|
+
}'
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Step 3 — Move a node
|
|
87
|
+
|
|
88
|
+
Use `move` on a `mutateNode` to relocate a node to a new parent. The node keeps its name:
|
|
89
|
+
|
|
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 '{
|
|
96
|
+
"query": "mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles/my-article\") { move(parentPathOrId: \"/sites/mySite/contents/articles/getting-started\") } } }"
|
|
97
|
+
}'
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
> ⚠️ `move` does **not** support a `name` argument — use `rename` separately if needed.
|
|
101
|
+
|
|
102
|
+
### Rename a node in place
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
curl -s -u root:root1234 \
|
|
106
|
+
-H "Content-Type: application/json" \
|
|
107
|
+
-H "Origin: http://localhost:8080" \
|
|
108
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
109
|
+
-d '{
|
|
110
|
+
"query": "mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles\") { rename(name: \"reference-pages\") } } }"
|
|
111
|
+
}'
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
To move **and** rename, call `move` then `rename` in sequence, or combine in one mutation:
|
|
115
|
+
|
|
116
|
+
```graphql
|
|
117
|
+
mutation {
|
|
118
|
+
jcr {
|
|
119
|
+
mutateNode(pathOrId: "/sites/mySite/contents/articles/old-name") {
|
|
120
|
+
move(parentPathOrId: "/sites/mySite/contents/articles/getting-started")
|
|
121
|
+
}
|
|
122
|
+
rename: mutateNode(pathOrId: "/sites/mySite/contents/articles/getting-started/old-name") {
|
|
123
|
+
rename(name: "new-name")
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Batch move with Python
|
|
130
|
+
|
|
131
|
+
```python
|
|
132
|
+
import subprocess, json
|
|
133
|
+
|
|
134
|
+
def gql(q):
|
|
135
|
+
r = subprocess.run(["curl","-s","-u","root:root1234",
|
|
136
|
+
"-H","Origin: http://localhost:8080",
|
|
137
|
+
"-H","Content-Type: application/json",
|
|
138
|
+
"-X","POST","http://localhost:8080/modules/graphql",
|
|
139
|
+
"-d", json.dumps({"query": q})], capture_output=True, text=True)
|
|
140
|
+
d = json.loads(r.stdout)
|
|
141
|
+
if "errors" in d: print("ERR:", d["errors"][0]["message"][:80])
|
|
142
|
+
return d
|
|
143
|
+
|
|
144
|
+
moves = [
|
|
145
|
+
("/sites/mySite/contents/articles/getting-started",
|
|
146
|
+
"/sites/mySite/contents/articles/core-concepts"),
|
|
147
|
+
("/sites/mySite/contents/articles/graphql-api",
|
|
148
|
+
"/sites/mySite/contents/articles/api-reference"),
|
|
149
|
+
]
|
|
150
|
+
|
|
151
|
+
for src, dest in moves:
|
|
152
|
+
r = gql(f'mutation {{ jcr {{ mutateNode(pathOrId: "{src}") {{ move(parentPathOrId: "{dest}") }} }} }}')
|
|
153
|
+
ok = "errors" not in r
|
|
154
|
+
print(f" {'✓' if ok else '✗'} {src.split('/')[-1]} → {dest.split('/')[-1]}")
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Step 4 — Reorder siblings
|
|
160
|
+
|
|
161
|
+
To control the display order within a folder, use `reorder` after moving:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
curl -s -u root:root1234 \
|
|
165
|
+
-H "Content-Type: application/json" \
|
|
166
|
+
-H "Origin: http://localhost:8080" \
|
|
167
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
168
|
+
-d '{
|
|
169
|
+
"query": "mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles/intro\") { reorder(reorderNodes: {moveBeforeOrAfter: BEFORE, target: \"advanced\"}) } } }"
|
|
170
|
+
}'
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Step 5 — Publish after moving
|
|
176
|
+
|
|
177
|
+
Moving a node unpublishes it in the live workspace. Always republish after reorganizing:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
# Publish a single node
|
|
181
|
+
curl -s -u root:root1234 \
|
|
182
|
+
-H "Content-Type: application/json" \
|
|
183
|
+
-H "Origin: http://localhost:8080" \
|
|
184
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
185
|
+
-d '{
|
|
186
|
+
"query": "mutation { jcr { mutateNode(pathOrId: \"/sites/mySite/contents/articles/getting-started/my-article\") { publish(languages: [\"en\"]) } } }"
|
|
187
|
+
}'
|
|
188
|
+
|
|
189
|
+
# Publish everything under a folder at once
|
|
190
|
+
curl -s -u root:root1234 \
|
|
191
|
+
-H "Content-Type: application/json" \
|
|
192
|
+
-H "Origin: http://localhost:8080" \
|
|
193
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
194
|
+
-d '{
|
|
195
|
+
"query": "mutation { jcr { mutateNodesByQuery(query: \"SELECT * FROM [jnt:content] WHERE ISDESCENDANTNODE(\u0027/sites/mySite/contents\u0027)\", queryLanguage: SQL2) { publish(languages: [\"en\"]) } } }"
|
|
196
|
+
}'
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Step 6 — Verify
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
curl -s -u root:root1234 \
|
|
205
|
+
-H "Content-Type: application/json" \
|
|
206
|
+
-H "Origin: http://localhost:8080" \
|
|
207
|
+
-X POST http://localhost:8080/modules/graphql \
|
|
208
|
+
-d '{
|
|
209
|
+
"query": "{ jcr { nodesByQuery(query: \"SELECT * FROM [jnt:content] WHERE ISDESCENDANTNODE(\u0027/sites/mySite/contents\u0027)\", queryLanguage: SQL2) { nodes { path } } } }"
|
|
210
|
+
}'
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Common errors
|
|
216
|
+
|
|
217
|
+
| Error | Cause | Fix |
|
|
218
|
+
|-------|-------|-----|
|
|
219
|
+
| `Permission denied` | Missing `Origin` header | Add `-H "Origin: http://localhost:8080"` |
|
|
220
|
+
| `ItemExistsException` | A node with that name already exists at the destination | Choose a different name or use `rename` after moving |
|
|
221
|
+
| `PathNotFoundException` | Source or destination path doesn't exist | Verify paths with `nodeByPath` first |
|
|
222
|
+
| `move` returns `null` | Node was already at that location | Verify the current path first |
|
|
223
|
+
| Content disappears from live after move | Move unpublishes — normal JCR behaviour | Run `publish` after every move |
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Workflow summary
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
1. Audit → list current paths and types
|
|
231
|
+
2. Plan → map old paths to new paths/folders
|
|
232
|
+
3. Create → addNode for any new folders needed
|
|
233
|
+
4. Move → mutateNode { move(...) } for each item
|
|
234
|
+
5. Publish → mutateNodesByQuery { publish(...) } for all affected content
|
|
235
|
+
6. Verify → query back and confirm structure
|
|
236
|
+
```
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
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.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: jahia-content-query-content
|
|
7
|
+
|
|
8
|
+
Retrieves JCR content from a running Jahia instance using the GraphQL JCR query API.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
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.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Query patterns
|
|
31
|
+
|
|
32
|
+
### 1 — Get a node by path
|
|
33
|
+
|
|
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
|
+
}'
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2 — Query by node type (JCR-SQL2)
|
|
45
|
+
|
|
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
|
+
}'
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 3 — Read node properties (including i18n)
|
|
57
|
+
|
|
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
|
+
}'
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
> ⚠️ **i18n properties require `language:` in the `properties()` call.** Without it, i18n properties are returned empty.
|
|
69
|
+
|
|
70
|
+
### 4 — Filter by property value
|
|
71
|
+
|
|
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
|
+
}'
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 5 — List all sites
|
|
83
|
+
|
|
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
|
+
}'
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 6 — Check publication status
|
|
95
|
+
|
|
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
|
+
}'
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Publication status values: `PUBLISHED`, `MODIFIED`, `NOT_PUBLISHED`, `UNPUBLISHED`, `MARKED_FOR_DELETION`
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## JCR-SQL2 quick reference
|
|
111
|
+
|
|
112
|
+
```sql
|
|
113
|
+
-- All nodes of a type under a path
|
|
114
|
+
SELECT * FROM [ns:typeName] WHERE ISDESCENDANTNODE('/sites/mySite')
|
|
115
|
+
|
|
116
|
+
-- Direct children only
|
|
117
|
+
SELECT * FROM [ns:typeName] WHERE ISCHILDNODE('/sites/mySite/contents/articles')
|
|
118
|
+
|
|
119
|
+
-- Filter by property
|
|
120
|
+
SELECT * FROM [ns:typeName] WHERE [propName] = 'value'
|
|
121
|
+
|
|
122
|
+
-- Order by date (newest first)
|
|
123
|
+
SELECT * FROM [ns:typeName] WHERE ISDESCENDANTNODE('/sites/mySite') ORDER BY [jcr:created] DESC
|
|
124
|
+
|
|
125
|
+
-- Limit results (pass limit/offset as query params)
|
|
126
|
+
-- nodesByQuery(query: "...", queryLanguage: SQL2, limit: 10, offset: 0)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Common errors
|
|
132
|
+
|
|
133
|
+
| Error | Cause | Fix |
|
|
134
|
+
|-------|-------|-----|
|
|
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
|