Install
npx skillscat add umbraco/umbraco-cms-backoffice-skills/package-script-writer Install via the SkillsCat registry.
The skill generates Umbraco CMS installation scripts via the Package Script Writer CLI, creating a script that can be run to set up an Umbraco site with specified parameters. It solves the need to automate initial Umbraco deployments without manual configuration. Use it when an agent or developer needs to quickly provision a new Umbraco environment using unattended, scripted installation.
Package 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.CliThen 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-runRun 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: 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-runWith 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-runIMPORTANT
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
doneOther 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