From aiup-alfresco
Validates Alfresco Activiti BPMN 2.0 definitions and workflow model XML for structural correctness: namespaces, task assignees, variable naming, formKey alignment, and forbidden Flowable patterns.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aiup-alfresco:workflow-bpmn-validatorThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Validate the given Alfresco Activiti BPMN process definition (and companion workflow model, if present) against these rules.
Validate the given Alfresco Activiti BPMN process definition (and companion workflow model, if present) against these rules.
<definitions> with BPMN 2.0 namespace:
xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"xmlns:activiti="http://activiti.org/bpmn" — must be present; Alfresco Activiti extensions use this namespaceorg.flowable.* class reference in class attributes of <activiti:taskListener>, <activiti:executionListener>, or <serviceTask activiti:class="...">. ACS 26.1 uses Activiti 5.22.x; the Flowable API is not on the classpath.<process> element must have:
id attribute (camelCase identifier)name attribute (human-readable)isExecutable="true"<startEvent> is missing activiti:formKey in a non-trivial process (more than one user task)<userTask> must have either activiti:assignee or activiti:candidateGroups:
activiti:formKey<exclusiveGateway> with multiple outgoing sequence flows must have <conditionExpression> on all but one outgoing flow:
default<serviceTask> must have either activiti:class or activiti:expression or activiti:delegateExpression:
<activiti:string> blocks inside <activiti:field name="script"> elements and inside <conditionExpression> elementsexecution.setVariable(...) or task.getVariableLocal(...) uses a variable name containing a colon (e.g. acme:outcome). The correct form uses underscore (acme_outcome). Alfresco maps content model properties {prefix}wf:{propName} → process variable {prefix}wf_{propName} (colon → underscore).<conditionExpression> references a variable with a colon in the name (e.g. ${acme:count == 2}). Use ${acme_count == 2}.<activiti:taskListener> or <activiti:executionListener> using a class attribute:
org.flowable.*org.alfresco.repo.workflow.activiti.tasklistener.ScriptTaskListener, org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListenerorg.alfresco.*) — confirm it implements org.activiti.engine.delegate.TaskListener<boundaryEvent> containing a <timerEventDefinition> must have:
cancelActivity attribute explicitly set to "true" or "false" — WARNING if missing<timeDuration>: PT{N}S, PT{N}M, PT{N}H, P{N}D, or combinations — ERROR if the format does not match ISO 8601If a companion *-workflow-model.xml exists in the same module's model/ directory:
activiti:formKey value in the BPMN must correspond to a <type name="..."> declared in the workflow model:
bpm namespace:
<import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/>
bpm:startTask, bpm:activitiOutcomeTask, or bpm:workflowTask:
bpm: parent<mandatory enforced="true"> — the integrity checker fires before addAspect() writes properties, causing a spurious IntegrityExceptionIf a bootstrap-context.xml exists in the module's context/ directory:
<bean> with parent="dictionaryModelBootstrap" that lists a .bpmn file in its models property — BPMN files must be registered via parent="workflowDeployer", not dictionaryModelBootstrapworkflowDeployer bean has <prop key="redeploy">true</prop> — this causes duplicate process definitions on every restartReport all violations with:
If no violations are found, confirm: "BPMN and workflow model are valid for ACS 26.1 / Activiti 5.x."
npx claudepluginhub aborroy/aiup-alfrescoAuthors, inspects, validates, packages, operates, and diagnoses UiPath Maestro BPMN Process Orchestration projects. Activates on .bpmn, project.uiproj, entry-points.json, operate.json, bindings_v2.json, and package-descriptor.json files.
Validates Alfresco content model XML files for namespace format, type/aspect declarations, property data types, and reserved prefix usage. Automatically activates when editing *-model*.xml or *-context.xml files.
Interprets n8n validation errors and warnings, distinguishes false positives from real errors, and guides through the fix loop. Activate on validate_node/validate_workflow failures.