About package-script-writer
Package Script Writer is a CLI-focused skill for generating and running Umbraco CMS installation scripts. It guides unattended setup, optional package selection, and rerunning script history.
Key features
- 01Generate Umbraco installation scripts
- 02Run unattended installations
- 03Add packages and versions
- 04List and rerun script history
Use cases
- 01Set up an Umbraco project with SQLite
- 02Install Umbraco with selected packages
- 03Rerun a previously generated script
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ umbraco/ umbraco-cms-backoffice-skills --skill package-script-writerAfter installing, type/package-script-writerin Claude Code to confirm it loaded.
Details
From the project READMEPackage Script Writer (psw)
Generate and run Umbraco CMS installation scripts using the psw CLI tool.
Workflow
-
Check if PSW CLI is installed:
psw --versionIf 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
- Linux/Mac:
-
If not installed, install it:
dotnet tool install --global PackageScriptWriter.Cli -
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 [email protected] --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, onlydotnet runis generated which fails)-u- use unattended install defaults--auto-run- execute the script immediately- Never combine
-owith--auto-run(truncates the script)
Default credentials: [email protected] / SecurePass1234
With Packages
psw -d -n ProjectName -s ProjectName -u --database-type SQLite --admin-email [email protected] --admin-password "SecurePass1234" -p "uSync,Umbraco.Forms" --auto-run
With specific versions:
psw -d -n ProjectName -s ProjectName -u --database-type SQLite --admin-email [email protected] --admin-password "SecurePass1234" -p "uSync|18.0.0,Umbraco.Forms|18.0.0" --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