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.
How this command is triggered — by the user, by Claude, or both
Slash command
/aiup-alfresco:surf [path to REQUIREMENTS.md or description]This command is limited to the following tools:
The summary Claude sees in its command listing — used to decide when to auto-load this command
# /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...
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/...npx claudepluginhub aborroy/aiup-alfresco