umbraco

package-script-writer

Generate Umbraco CMS installation scripts using the Package Script Writer CLI

umbraco 23 12 Updated 4mo ago
GitHub

Install

npx skillscat add umbraco/umbraco-cms-backoffice-skills/package-script-writer

Install via the SkillsCat registry.

SKILL.md

Package Script Writer (psw)

Generate and run Umbraco CMS installation scripts using the psw CLI tool.

Workflow

  1. Check if PSW CLI is installed:

    psw --version

    If command not found, the .NET tools path may not be in PATH. Try:

    • Linux/Mac: export PATH="$PATH:$HOME/.dotnet/tools" && psw --version
    • Windows: %USERPROFILE%\.dotnet\tools\psw --version
  2. If not installed, install it:

    dotnet tool install --global PackageScriptWriter.Cli
  3. Then run the psw command (see below)

Non-Interactive Usage (Claude Code)

This is the command to use:

export PATH="$PATH:$HOME/.dotnet/tools"
psw -d -n ProjectName -s ProjectName -u --database-type SQLite --admin-email admin@test.com --admin-password SecurePass1234 --auto-run

Run this with run_in_background: true since Umbraco is a long-running web server.

Critical flags:

  • -d - REQUIRED - generates the full installation script (without this, only dotnet run is generated which fails)
  • -u - use unattended install defaults
  • --auto-run - execute the script immediately
  • Never combine -o with --auto-run (truncates the script)

Default credentials: admin@test.com / SecurePass1234

With Packages

psw -d -n ProjectName -s ProjectName -u --database-type SQLite --admin-email admin@test.com --admin-password "SecurePass1234" -p "uSync,Umbraco.Forms" --auto-run

With specific versions:

psw -d -n ProjectName -s ProjectName -u --database-type SQLite --admin-email admin@test.com --admin-password "SecurePass1234" -p "uSync|17.0.0,Umbraco.Forms|17.0.1" --auto-run

IMPORTANT

Do not use characters that are escapable in passwords or usernames

Key Options

Flag Description
-d, --default REQUIRED - generates full installation script
-n, --project-name Project name
-s, --solution Solution name
-u, --unattended-defaults Use unattended install defaults
--database-type SQLite, LocalDb, SQLServer, SQLAzure, SQLCE
--admin-email Admin email for unattended install
--admin-password Admin password for unattended install
--auto-run Execute the generated script
-p, --packages Comma-separated packages (e.g., "uSync,Umbraco.Forms")
-t, --template-package Umbraco template with optional version
-da, --delivery-api Enable Content Delivery API

Waiting for Umbraco to Start

After running the command in background, poll for readiness:

# Check the output for the port number (e.g., "Now listening on: https://localhost:44356")
# Then poll until ready:
for i in {1..30}; do
  if nc -z localhost 44356 2>/dev/null; then
    echo "Umbraco is ready!"
    break
  fi
  sleep 2
done

Other Commands

psw versions              # Show Umbraco versions with support status
psw history list          # Show recent scripts
psw history rerun 1       # Re-run script #1
psw --clear-cache         # Clear cached API responses