Ppds webresources
PPDS Skills — knowledge layer teaching AI coding agents to drive the Power Platform Developer Suite
npx -y skills add joshsmithxrm/ppds-skills --skill ppds-webresourcesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Manage Dataverse web resources with PPDS — pull JavaScript/CSS/HTML/image web resources to a local folder with tracking metadata, edit locally, push changes back with conflict detection, and publish. Use when the user wants to download web resources for editing, sync local script changes to Dataverse, publish a web resource, or get its Maker portal URL. Read ppds-core first for auth and safety rules.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.6 KB, as published. Nobody here has run it
PPDS Web Resources — pull, edit, push, publish
Exact flags: references/cli-webresources.md.
Surface routing: the pull/push loop is CLI-only (it manages local
tracking metadata). MCP read/publish tools for shell-less hosts:
ppds_web_resources_list, ppds_web_resources_get,
ppds_web_resources_publish.
The edit loop
# 1. Pull to a local folder (writes tracking metadata for conflict detection)
ppds webresources pull ./webres --solution MySolution --type js --strip-prefix
# 2. Edit files locally with normal tooling
# 3. Preview the push (still queries the server for conflicts)
ppds webresources push ./webres --dry-run
# 4. Push + publish (publish is required before apps see the change)
ppds webresources push ./webres --publish
Key behaviors (verified against the released CLI):
pullfilters:--solution,--type(text,image,data, or a specific type likejs,css,html,png),--name(partial match).--strip-prefixremoves the publisher prefix from local paths (new_/scripts/app.js→scripts/app.js); the prefix is restored on push.pushdetects server conflicts (someone edited since your pull) and environment mismatch (folder pulled from a different environment than the current connection).--forceskips both checks — that is a safety override: re-pull and merge instead unless the user explicitly accepts clobbering (WebResource.Conflictis the error code you'll see).push --dry-runis the preview step the safety model requires.- Publishing alone (no content change):
ppds webresources publish <names>. - Single-file writes without the tracked folder:
ppds webresources create <file> --name <logical-name>(new —--nameis required, e.g.--name new_/scripts/app.js) andppds webresources update <name> <file>(existing). The pull/push loop is still preferred for ongoing edits — it adds conflict detection — but these are the right tool for a one-off create/update. - Browse/read:
ppds webresources list "<name-pattern>",ppds webresources get <name>,ppds webresources url <name>.
Common mistakes (do not invent these)
| Wrong | Correct |
|---|---|
ppds webresources upload <file> | single file: ppds webresources create <file> --name <logical-name> (new) or update <name> <file> (existing); for ongoing edits, pull/edit/push the folder |
ppds webresources push --file app.js | push takes the tracked folder: ppds webresources push ./webres |
| Forgetting publish | push --publish, or ppds webresources publish <names> afterward |
--web-resource-type 3 (numeric API codes) | human types: --type js, --type css, ... |
| Editing managed web resources | WebResource.NotEditable — change them in the unmanaged source solution |
Skill boundaries
| Need | Use instead |
|---|---|
| Ship web resources to another environment | ppds-solutions-alm (solution export/import) |
| Forms that reference these scripts | ppds-metadata (ppds forms ...) |
| Auth, environment selection, error codes | ppds-core |