skills/extensions/umbraco-cli/SKILL.md
Use the Umbraco CLI in this repo to inspect and mutate Umbraco Management API resources with agent-safe patterns, schema introspection, dry runs, and compact machine-readable output
npx skillsauth add albanist/umbraco_cli umbraco-cliInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use the umbraco CLI in this repository when a task involves reading or changing Umbraco Management API resources from the terminal.
This skill is for operating the CLI, not for developing the CLI itself.
Use this skill when the user wants to:
umbraco schema ...Do not use this skill when the task is to change the CLI source code. For that, work directly in the repo.
--dry-run first for mutating commands whenever the command supports it.--json and --params over convenience flags when the payload is non-trivial.--fields on reads to reduce output size whenever the endpoint supports it.--output json when downstream parsing matters.The CLI resolves config in this order:
UMBRACO_*).umbracorc.json or .umbracorc.umbraco-cli.env.env~/.umbraco/config.json.NET URL discovery (Properties/launchSettings.json, appsettings*.json)Before assuming auth or base URL are missing, check the local config sources above.
Confirm the CLI is available
umbraco --help
Inspect schema first when payload shape is unclear
umbraco schema --list
umbraco schema document.update
umbraco schema datatype.search
Use compact reads to discover IDs or current state
umbraco document get <id> --fields "id,name,updateDate" --output json
umbraco media get <id> --fields "id,name,urls" --output json
umbraco datatype list --skip 0 --take 50 --output json
Rehearse writes with --dry-run
umbraco document publish <id> --json '{"cultures":["en-US"]}' --dry-run --output json
umbraco datatype add-extension <id> My.Extension --dry-run --output json
Then run the real command only after the dry run looks correct
umbraco document get <id> --fields "id,name,updateDate" --output json
umbraco document children <id> --fields "id,name" --output json
umbraco media get <id> --fields "id,name,urls" --output json
umbraco doctype get <id> --fields "id,name" --output json
umbraco datatype list --skip 0 --take 50 --output json
umbraco logs list --level Error --take 50 --output json
umbraco server status --output json
umbraco document search --params '{"query":"home","skip":0,"take":20}' --output json
umbraco document search --query "home" --under <parent-id> --skip 0 --take 20 --output json
umbraco datatype search --query "rich text" --skip 0 --take 25 --output json
umbraco dictionary list --filter "site." --skip 0 --take 100 --output json
umbraco document update <id> --json '{"values":[{"alias":"title","value":"New title"}]}' --dry-run --output json
umbraco document update <id> --json '{"values":[{"alias":"title","value":"New title"}]}' --output json
umbraco document update <id> --merge-json '{"values":[{"alias":"title","value":"New title"}]}' --dry-run --output json
umbraco document bulk-update --id <id> --id <id> --merge-json '{"values":[{"alias":"title","value":"New title"}]}' --dry-run --output json
umbraco datatype update <id> --merge-json '{"configuration":{"toolbar":{"italic":false}}}' --dry-run --output json
umbraco datatype add-value <id> --alias extensions --value My.Extension --dry-run --output json
umbraco datatype add-extension <id> My.Extension --dry-run --output json
umbraco datatype remove-extension <id> My.Extension --dry-run --output json
Use these commands instead of hand-editing whole datatype payloads when possible:
umbraco datatype extensions <id>umbraco datatype update <id> --merge-json ...umbraco datatype add-value <id> --alias <alias> --value <value>umbraco datatype remove-value <id> --alias <alias> --value <value>umbraco datatype add-extension <id> <extension-alias>umbraco datatype remove-extension <id> <extension-alias>--output json when another command, script, or agent step will consume the result.table is only useful for quick human scanning of simple maps or arrays.--fields with --output json.umbraco schema ... and confirm the target resource or endpoint is valid for the installed Umbraco version.NODE_TLS_REJECT_UNAUTHORIZED=0 does not affect this Go CLI.Read these files when you need more detail:
README.md for install, config precedence, and release contextCONTEXT.md for quick command reference and repo-specific CLI conventionstools
Front-office member operations (login, profile, groups)
tools
Member group lookups (for 'member set-groups' GUID discovery)
development
Trigger and inspect ModelsBuilder source generation
tools
Umbraco Forms operations (read-only)