From aiup-alfresco
Generates Share Surf extension artifacts including metadata XML, webscript descriptors, FreeMarker templates, and message bundles for Alfresco Share JAR projects from REQUIREMENTS.md.
npx claudepluginhub aborroy/aiup-alfresco[path to REQUIREMENTS.md or description]# /surf — Share Surf Extension Generator > **Share JAR only** — deploys into the Share web tier, not into the ACS repository tier. Generate classic Share Surf artefacts from requirements. ## Input Read `REQUIREMENTS.md` and identify Share-tier UI requirements that need Surf pages, Surf components, extension modules, or Share web-tier web scripts. Resolve: - the **Share JAR** project's `Root path` from Section 2 (Project Architecture) - the **Platform JAR** project's `Root path`, if one exists, so page/component logic can align with repository-side APIs or model names If Section 2 con...
/f5-webGenerates frontend pages, components, hooks, API routes, contexts, and more for auto-detected stack (Next.js default; also React/Vite, Nuxt/Vue 3, Vue 3/Vite, Angular). Usage: <type> <name/path> e.g. page dashboard.
/initDetects project tech stack from root files (Shopify priority, then Next.js, React, etc.) and creates or updates project.json.
Share bugs, ideas, or general feedback.
Share JAR only — deploys into the Share web tier, not into the ACS repository tier.
Generate classic Share Surf artefacts from requirements.
Read REQUIREMENTS.md and identify Share-tier UI requirements that need Surf pages, Surf components, extension modules, or Share web-tier web scripts.
Resolve:
Root path from Section 2 (Project Architecture)Root path, if one exists, so page/component logic can align with repository-side APIs or model namesIf Section 2 contains no Share JAR project, stop and explain that /surf only applies to Share-tier addon projects.
If the request is really for modern ACA/ADF/custom frontend work instead of Surf-based Share customization, stop and explain that /surf is the wrong generator.
{share-project-root}/src/main/resources/alfresco/web-extension/site-data/extensions/{extension-name}.xml
Use this file to register extension modules, evaluators, component overrides, or page wiring:
<extension>
<modules>
<module>
<id>{prefix}-{page-id}-module</id>
<version>1.0</version>
<auto-deploy>true</auto-deploy>
<components>
<component>
<region-id>{regionId}</region-id>
<source-id>{pageId}</source-id>
<scope>page</scope>
<url>/components/{extension-name}/{component-name}</url>
</component>
</components>
</module>
</modules>
</extension>
{share-project-root}/src/main/resources/alfresco/site-webscripts/{path}/{page-id}.get.desc.xml
<webscript>
<shortname>{Page Title}</shortname>
<description>{Page purpose}</description>
<url>/page/{page-id}</url>
<family>Share</family>
<authentication>user</authentication>
<transaction>none</transaction>
</webscript>
Generate as required by the requested Surf pattern:
{share-project-root}/src/main/resources/alfresco/site-webscripts/{path}/{page-id}.get.config.xml{share-project-root}/src/main/resources/alfresco/site-webscripts/{path}/{page-id}.get.html.ftl{share-project-root}/src/main/resources/alfresco/site-webscripts/components/{extension-name}/{component-name}.*{share-project-root}/src/main/resources/alfresco/web-extension/messages/{extension-name}.properties
Generate when the page/component references labels or titles by message key.
Generate only when the requested Surf customization requires custom Java-side visibility logic.
{share-project-root}/src/main/java/{java-package}/share/{Name}Evaluator.java
alfresco/module/.../surfsite-data/extensions/{extension-name}.xml already exists, merge relevant modules/components instead of discarding unrelated configuration{share-project-root} is . for Share-only mode, or {name}-share/ for mixed layoutssrc/main/resources/alfresco/web-extension/site-data/extensions/src/main/resources/alfresco/site-webscripts/{java-package}.shareAfter generating files, verify at least the following:
alfresco/module/...