agentsclimarketplace

Ppds core

Skill joshsmithxrm/ppds-skills/skills/ppds-core

Install, authenticate, and safely operate the Power Platform Developer Suite (PPDS) CLI and MCP server against Microsoft Dataverse — auth profiles, environment selection, the environment-safety model, and error interpretation. Use when the user wants to connect to Dataverse with PPDS, set up `ppds` or `ppds-mcp-server`, manage auth profiles or environments, decide between the PPDS CLI and MCP surfaces, or interpret a PPDS error or exit code. Load this skill first before any other ppds-* skill.From its SKILL.md

Install
npx -y skills add joshsmithxrm/ppds-skills --skill ppds-core

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

3 things to look at

  • reads credentialsReads from 1 credential source: `--clientSecret`.
  • 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.
  • runs commandsInstructs the agent to run 5 commands, including `dotnet tool install -g PPDS.Cli` and 4 more.

What its file declares

Copied from the file, not written here

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

7.3 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it

PPDS Core — connect, select, stay safe

PPDS (Power Platform Developer Suite) is a single .NET global tool giving you a typed CLI, an MCP server, a TUI, and NuGet libraries over Microsoft Dataverse. One install, no Python, no PAC CLI dependency. Docs: https://joshsmithxrm.github.io/ppds-docs/

dotnet tool install -g PPDS.Cli   # CLI: `ppds`   (update: dotnet tool update -g PPDS.Cli)
dotnet tool install -g PPDS.Mcp   # MCP server: `ppds-mcp-server`

Verify: ppds --version. These skills target the 1.2.0 surface (flag tables generated from 1.2.0 stable). If the installed major/minor differs, prefer live --help.

Surface routing (applies to every ppds-* skill)

The CLI is the primary surface for terminal agents. Use the MCP server instead when either holds:

  1. The host has no shell (an MCP-only client), or
  2. You want protocol-level session safety the shell cannot give you — --read-only (all DML rejected for the session) and --allowed-env (environment switching locked to an allowlist). Setup: references/mcp-server.md.

Where an MCP tool mirrors a CLI command this package names it, e.g. ppds env listppds_env_list. The released server (1.0.0) exposes 41 tools — the authoritative list is references/mcp-tools.md. The CLI surface is wider; anything without an MCP tool routes to the CLI.

Authentication profiles

Profiles are stored per-machine and shared by CLI, MCP server, and TUI. All methods and exact flags: references/cli-auth.md.

ppds auth create --name dev                    # interactive browser (default)
ppds auth create --name dev --deviceCode      # headless / SSH / containers
ppds auth create --name ci --applicationId <app-id> --clientSecret <secret> --tenant <tenant-id>

Also supported: certificate file/store (--certificateDiskPath / --certificateThumbprint), --managedIdentity, and workload identity federation (--githubFederated, --azureDevOpsFederated).

Manage: ppds auth list, ppds auth select --index <n> (or --name <n>), ppds auth who, ppds auth update, ppds auth delete, ppds auth clear.

Environment selection

A profile has one selected environment; commands accept per-call overrides. Exact flags: references/cli-env.md.

ppds env list --filter contoso          # discover (name/URL/ID, partial ok)
ppds env select --environment <url-or-name>
ppds env who                            # identity + selected environment

Per-call override on most commands: --environment <url> (alias -env) and --profile <name> (-p). ppds org ... is an alias for ppds env ....

The safety model — hard rules

These rules are not style; agents must follow them.

  1. Know your target before any mutation. Run ppds env who (CLI) or ppds_auth_who (MCP) and state the environment to the user before the first write of a session. Environments have a configured EnvironmentConfig.Type: Production, Sandbox, Development, Test, Trial, or Unknown. Production gets blocked-by-default DML that requires confirmation with a preview; treat Unknown with the same suspicion.

  2. Multi-environment confirmation. When a session has touched more than one environment, or a command carries an explicit --environment override, restate the exact target (URL, not nickname) and get the user's confirmation before executing any mutation. Cross-environment DML defaults to read-only (cross_env_dml_policy: ReadOnly); a Production target always prompts even when the policy is Allow.

  3. Preview before you execute. Most PPDS mutation surfaces have a --dry-run preview: use it, show the user the result, then execute. ppds query sql --dry-run (DML plan), ppds plugins deploy --dry-run, ppds plugintraces delete --dry-run, and friends. Only add --confirm / --force after a human has seen the preview. Where no --dry-run exists — notably ppds data import, ppds data copy, ppds solutions import — import into a sandbox first and lean on the rule 1–2 confirmation gates; for data moves, ppds data analyze --schema <schema.xml> previews dependencies.

  4. MCP sessions get pinned. Launch ppds-mcp-server with --read-only for analysis sessions, and --allowed-env <url> (repeatable) when switching must be possible. No --allowed-env flags means ppds_env_select is disabled — that is a feature, not a bug.

  5. Never bypass a refusal. Exit code 9 (Forbidden), exit code 11 (ConfirmationRequired), Query.DmlBlocked, Safety.ShakedownActive — these are answers, not obstacles. Surface them to the user.

Reading PPDS output

  • stdout is data, stderr is status. Pipe-safe by design. Parse stdout; show stderr to humans.
  • Machine-readable: add -f json (--output-format Json); CSV is -f csv.
  • Quiet/verbose: -q warnings+errors only; -v debug; --debug trace.
  • Non-zero exits carry a structured JSON error envelope on stderr with an error.code like Connection.Throttled. Exit codes 0–11 and per-code agent actions: references/error-codes.md.

Common mistakes (do not invent these)

WrongCorrect
ppds env select <name> (positional)ppds env select --environment <name> — the flag is required
ppds auth select 1ppds auth select --index 1
ppds auth login / ppds loginppds auth create (first time) or ppds auth select (existing)
ppds env switchppds env select --environment <name>
--format json / --json-f json / --output-format Json
pac auth create patterns (e.g. --url)PPDS is not PAC CLI — check references/cli-auth.md

Where to go next

NeedSkill
SQL / FetchXML queries, DML, explain, historyppds-query
Plugin registration, deployment, trace debuggingppds-plugins
Solutions, import jobs, env vars, connection refsppds-solutions-alm
Tables, columns, relationships, keys, choices, views, formsppds-metadata
Bulk data export/import/copy/load/deleteppds-data
Web resources pull/push/publishppds-webresources
Users, roles, diagnosticsreferences/cli-users.md, references/cli-roles.md, references/cli-logs.md
Model-driven apps, data sources/providers, flowsno dedicated skill yet — ppds model-driven-app, ppds data-sources, ppds data-providers, ppds flows, or ppds api request
Anything else (raw Web API escape hatch)ppds api request — prefer a typed command when one exists

What ships with it: 8 files

35.1 KB alongside SKILL.md

Gives 0 of the 12 instructions most mcp tooling skills give in ~1.8k tokens

Counted across 780 of the 1,136 authors here whose files we hold, read 2026-09-06

  • Use Zod for input validationin 34 of 780, across 21 files
  • Use stdio for local clientsin 27 of 780, across 10 files
  • Restart Claude Code after configurationin 26 of 780, across 23 files
  • Verify MCP server connection before using toolsin 23 of 780, across 17 files
  • Define input schemas for every toolin 20 of 780, across 11 files
  • Use Streamable HTTP for remote clientsin 18 of 780, across 8 files
  • Pin SDK version in package.jsonin 17 of 780, across 6 files
  • Keep server logic independent of transportin 16 of 780, across 6 files
  • Verify SDK methods against official documentationin 15 of 780, across 5 files
  • Format evaluation results as an XML filein 15 of 780, across 12 files
  • Test servers using the MCP Inspectorin 15 of 780, across 14 files
  • Create ten complex and independent evaluation questionsin 14 of 780, across 11 files

Said here and by no other author read

  • Load this skill before any other ppds skill
  • Verify installation with ppds --version
  • Use CLI for terminal agents
  • Use MCP server for shell-less hosts or session safety
  • Run ppds env who before the first write
  • State the environment to the user before mutation

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.