Skip to content

Project and AI Commands

ldev project init

Create a new project scaffold linked to local tooling.

bash
ldev project init --list-liferay-versions
ldev project init my-project
ldev project init my-project --liferay-version dxp-2026.q1.7-lts --services postgres,elasticsearch
ldev project init --name my-project --dir ~/projects/my-project
ldev project init . --name my-project --liferay-version dxp-2026.q1.7-lts
ldev project init . --name my-project --services postgres
ldev project init . --name my-project --services postgres,elasticsearch
ldev project init --name my-project --dir . --commit

Options:

  • [dir] — destination directory; when --name is omitted, the project name defaults to the directory name
  • --name <name> — project name used for the scaffold
  • --dir <dir> — destination directory; overrides the optional [dir] argument
  • --list-liferay-versions — list promoted release keys from https://releases-cdn.liferay.com/releases.json
  • --all-liferay-versions — include non-promoted releases when listing versions
  • --liferay-version <release-key> — configure the generated workspace and Docker image for the selected release
  • --services postgres,elasticsearch — opt in to additional Docker services
  • --commit — create a git commit for the generated changes (by default, no commit is created)

After scaffold:

bash
cd my-project
ldev start --activation-key-file /path/to/activation-key.xml
ldev oauth install --write-env

ldev setup is optional. Use it only when you want to pre-pull Docker images or warm local runtime directories before starting.

ldev ai install

Install the standard reusable AI assets into a project.

bash
ldev ai install --target .
ldev ai install --target . --project-context
ldev ai install --target . --project --project-context
ldev ai install --target . --skills-only
ldev ai install --target . --skill liferay-expert --skill developing-liferay
ldev ai install --target . --force
ldev ai install --target . --local

Options:

  • --target <dir> (required) — project root
  • --force — overwrite AGENTS.md if it already exists
  • --local — keep AI tooling local by adding generated agent/editor files to .gitignore, while docs/ai stays versionable
  • --skills-only — only update vendor skills and managed rules from the manifest
  • --project-context — install project-owned context scaffolding (docs/ai/project-context.md + sample)
  • --project — install project-owned skills and agents, filtered by detected project type; also installs the project context scaffold
  • --skill <name> — install only specific vendor skills (repeatable)

What the install produces:

  • AGENTS.md and tool-specific rule directories (.claude/rules, .cursor/rules, .gemini, .github/instructions, .windsurf/rules, .workspace-rules)
  • vendor-managed skills under .agents/skills/
  • optional project-owned skills and agents (.agents/skills/project-*) and project menu-map scaffolding under docs/ai/menu/

ldev ai update

Safely refresh vendor skills and managed rules listed in the manifest.

bash
ldev ai update --target .
ldev ai update --target . --skill liferay-expert --skill developing-liferay

--skill <name> rewrites the vendor manifest to the selected skill set and refreshes managed rules.

ldev ai status

Inspect managed AI rules, manifest state, and drift.

bash
ldev ai status --target .
ldev ai status --target . --format text

Defaults to JSON. Use this before install or update on an existing project to see what is managed, what has drifted, and what is project-owned.

ldev ai bootstrap

Aggregate project context and the doctor checks needed for an agent intent.

bash
ldev ai bootstrap --intent=discover --json
ldev ai bootstrap --intent=develop --json
ldev --repo-root ../main-checkout ai bootstrap --intent=develop --json
ldev ai bootstrap --intent=develop --cache=60 --json
ldev ai bootstrap --intent=deploy --json
ldev ai bootstrap --intent=troubleshoot --json
ldev ai bootstrap --intent=migrate-resources --json
ldev ai bootstrap --intent=osgi-debug --json

Use this as the standard agent entrypoint. It returns context and, when the intent needs readiness, doctor.

  • discover stays context-only.
  • develop keeps doctor intentionally cheap: repo/config/tool presence and readiness for local editing, without runtime, portal, or OSGi probes.
  • --cache <seconds> reuses the full bootstrap result for the same intent and working tree while the cached entry is newer than the requested TTL.

When you are inside a worktree but need context from the main checkout, prefer the global form ldev --repo-root <path> ai bootstrap ....

Typical next steps

bash
ldev ai bootstrap --intent=develop --cache=60 --json

In Blade workspaces, ldev ai install coexists with the official AI folders and the .workspace-rules workflow instead of replacing them.

@mordonezdev/ldev for operational Liferay maintenance workflows. Built by Miguel Ordóñez