From dev-assistant
/etendo:install — Install Etendo on an existing project
npx claudepluginhub etendosoftware/etendo_claude_marketplace --plugin dev-assistantThis skill uses the workspace's default tool permissions.
**Arguments:** `$ARGUMENTS` (optional: `fresh` to force reinstall)
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides agent creation for Claude Code plugins with file templates, frontmatter specs (name, description, model), triggering examples, system prompts, and best practices.
Arguments: $ARGUMENTS (optional: fresh to force reinstall)
First, read skills/etendo-_guidelines/SKILL.md and skills/etendo-_context/SKILL.md.
For infrastructure modes (Source vs JAR, Docker flags), read references/infrastructure-modes.md. For Gradle task details, read references/gradle-tasks-reference.md.
This command installs Etendo on an already-cloned project (runs setup.web or install). Use it when:
gradle.properties is already configuredRead gradle.properties and build.gradle to determine:
config/Openbravo.properties already exists (indicates previous setup ran)If config/Openbravo.properties exists and $ARGUMENTS is not fresh:
Ask: "Etendo appears to already be set up (config/ exists). Do you want to: (1) Run update.database + smartbuild to sync, or (2) Force a full reinstall?"
Check:
gradle.properties has githubUser and githubToken set -- required to download artifactsbbdd.* properties are setdocker ps --filter name=etendo --format "{{.Names}} {{.Status}}"
psql -U {bbdd.user} -d postgres -h localhost -p {bbdd.port} -c "SELECT 1;" 2>&1
If Docker containers are not running:
./gradlew resources.up
Wait 10 seconds and re-check.
Convention: All
./gradlewcalls redirect output to/tmp/etendo-{task}.log. Read only on error.
# Detect JAVA_HOME (must be Java 17):
JAVA_HOME=$(/usr/libexec/java_home -v 17 2>/dev/null || echo "$JAVA_HOME")
# Always first -- initializes config/Openbravo.properties from gradle.properties
JAVA_HOME=${JAVA_HOME} ./gradlew setup > /tmp/etendo-setup.log 2>&1
# Source mode only: expand core source
JAVA_HOME=${JAVA_HOME} ./gradlew expandCore > /tmp/etendo-expandcore.log 2>&1
# Docker mode: start containers (setup must have run first to generate correct .env)
JAVA_HOME=${JAVA_HOME} ./gradlew resources.up > /tmp/etendo-resources-up.log 2>&1
# Install DB schema and deploy WAR
JAVA_HOME=${JAVA_HOME} ./gradlew install > /tmp/etendo-install.log 2>&1
# Compile and deploy
JAVA_HOME=${JAVA_HOME} ./gradlew smartbuild > /tmp/etendo-smartbuild.log 2>&1
On failure:
grep -E "ERROR|Exception|FAILED" /tmp/etendo-{task}.log | tail -30
Common errors:
Connection refused -> DB not running -> start containers or local PostgreSQLAuthentication failed -> wrong bbdd.* -> check gradle.propertiesCould not resolve -> check githubTokeninvalid mount path -> setup not run before resources.updocker exec etendo-tomcat-1 sh -c 'tail -n 100 /usr/local/tomcat/logs/openbravo.log'curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/{context.name}/security/Login
Show result:
+ Etendo is running at http://localhost:8080/etendo
Login with your configured user credentials
Next: /etendo:context to set your active module
/etendo:smartbuild after making changes