Use to list Liferay worktrees with their assigned ports, running status, offset, and database, or to print the port and database summary for a single worktree.
Scanned 8/31/2026
Install to Claude Code
npx -y skills add liferay/liferay-portal --skill worktree-status --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Worktree Status?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/liferay-worktree-status)More formats (shields.io, HTML) on the badges page.
---
allowed-tools: [Bash, Read]
argument-hint: "[list | status]"
description: Use to list Liferay worktrees with their assigned ports, running status, offset, and database, or to print the port and database summary for a single worktree.
name: worktree-status
---
# 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.
1. 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.
1. Read `<bundles>/.worktree-port-offset` to obtain the offset, then derive the HTTP port and database name.
1. 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.
```bash
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.Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!