Install in seconds
Install this skill
Copy the command and run it in your terminal. You can review the source before installing.
terminal
git clone https://github.com/liferay/liferay-portal

Works with Git. The repository opens in your current directory.

๐Ÿ“Š
AutomationJava

Worktree Status

by liferay

Lists Liferay Git worktrees showing assigned HTTP ports, running status, offset, and database names. Use to quickly see which worktrees are running and on which ports.

2.3K stars3.8K forksAdded 2026/07/20

Documentation

README

Worktree Status

Inspect Liferay worktrees and the ports and databases they are configured to use. The skill never mutates state.

Determine Action

Parse ${ARGUMENTS} and conversation context:

  • "list" or user asks which worktrees exist or what is running โ†’ List All
  • "status" or user asks what ports a single worktree uses โ†’ Status Check
  • No argument โ†’ default to List All

Port Defaults

Offset 0 is reserved for the main worktree. All ports shift by the same offset N: port = default + N.

Service Default Config Location
Arquillian 32763 <bundles>/osgi/configs/...ArquillianConnector.config
DataGuard 42763 <bundles>/osgi/configs/...DataGuardConnector.config
Elasticsearch Sidecar HTTP 9201 <bundles>/osgi/configs/...ElasticsearchConfiguration.config
Elasticsearch Transport 9301 <bundles>/osgi/configs/...ElasticsearchConfiguration.config
Glowroot 4000 <bundles>/glowroot/admin.json
HTTPS Redirect 8443 <tomcat>/conf/server.xml
JPDA Debug 8000 <tomcat>/bin/setenv.sh
OSGi Console 11311 <tomcat>/webapps/ROOT/WEB-INF/classes/portal-developer.properties
Tomcat AJP 8009 <tomcat>/conf/server.xml
Tomcat HTTP 8080 <tomcat>/conf/server.xml
Tomcat Shutdown 8005 <tomcat>/conf/server.xml

Database Naming

The database name is derived from the worktree directory name, not the offset:

liferay-portal-LPD-12345  โ†’  lportal_lpd_12345
liferay-portal-hotfix     โ†’  lportal_hotfix
liferay-portal            โ†’  lportal (main)

Apply this rule: strip the liferay-portal- prefix, lowercase, replace nonalphanumeric runs with _, collapse consecutive _, truncate to 56 characters, then prepend lportal_.

List All

Show a summary table of every Git worktree with its HTTP port, running status, offset, and database.

  1. Run git worktree list --porcelain to enumerate all worktrees.

  2. For each worktree, resolve <bundles> by reading app.server.parent.dir from app.server.${USER}.properties in the worktree root (falling back to app.server.properties). Substitute ${project.dir} with the worktree path.

  3. Read <bundles>/.worktree-port-offset to obtain the offset, then derive the HTTP port and database name.

  4. Detect the running status by matching -Dcatalina.base against each worktree's <tomcat> directory. Use process matching, not port scanning โ€” port scanning cannot distinguish which Tomcat owns which port.

    ps -eo args | grep --only-matching "\-Dcatalina\.base=[^ ]*" | sed "s/-Dcatalina.base=//"
    

Render the output like this:

Worktree                                 Port     Status     Offset    Database
liferay-portal                           -        NO TOMCAT  (none)    -
liferay-portal-LPD-00000                 8081     RUNNING    1         lportal_lpd_00000
liferay-portal-LPD-12345                 8082     STOPPED    2         lportal_lpd_12345

Status Check

Read <bundles>/.worktree-port-offset for the current worktree and print the full port table plus the derived database name. Make no modifications.

More from liferay

Other Claude Code skills by this author in the directory.