PPDS Skills
A knowledge-layer skills package that teaches AI coding agents (Claude Code, GitHub Copilot CLI, and any Agent Skills-compatible host) to drive the Power Platform Developer Suite (PPDS) well against Microsoft Dataverse.
Free, MIT-licensed, runs entirely on your machine with zero telemetry — no hosted broker, no per-call credits, no data leaving your environment.
Skills are Markdown documentation, not code: each skills/<name>/SKILL.md
carries frontmatter the agent uses for discovery, a lean body with workflows
and hard safety rules, and a references/ directory whose CLI flag tables
are generated verbatim from real ppds <command> --help output — never
hand-written. That last part is the point: exact-flag reference tables are the
technique Microsoft's Dataverse skills package credits for sharply reducing
agent flag hallucination, and the same discipline — an eval that rejects any
command or flag absent from the captured surface — caught 9 real flag/command
errors while these skills were being authored.
The skills
| Skill | Covers |
|---|---|
ppds-core |
Install, auth profiles (browser / device code / service principal / managed identity / federated), environment selection, the safety model (environment types, dry-run-first, MCP --read-only / --allowed-env, multi-environment confirmation), error/exit-code interpretation, CLI↔MCP routing |
ppds-query |
SQL→FetchXML engine (joins, CTEs, aggregates, window functions), guarded DML, FetchXML fallback, explain/history, TDS routing |
ppds-plugins |
Declarative plugin registration (attributes → extract → diff → deploy), Custom APIs, plugin trace debugging recipe (list/get/timeline) |
ppds-solutions-alm |
Solution export/import, import jobs, environment variables, connection references, deployment settings |
ppds-metadata |
Browse + author tables, columns, relationships, keys, choices; schema compare; views and forms |
ppds-data |
Schema-driven bulk export/import/copy, CSV load, bulk update/delete/truncate, user mapping |
ppds-webresources |
Pull/edit/push/publish loop with conflict detection |
These skills target the 1.2.0 CLI surface (flag tables captured at
1.2.0) and PPDS.Mcp server 1.0.0. The exact tested versions live in
each skill's frontmatter (metadata.ppds_cli_version_tested /
ppds_mcp_version_tested) and are enforced by the eval suite.
Prerequisite
dotnet tool install -g PPDS.Cli # the `ppds` CLI
dotnet tool install -g PPDS.Mcp # optional: `ppds-mcp-server`
Update later with dotnet tool update -g PPDS.Cli. These skills target the
1.2.0 surface, which now ships as a stable release.
Install — Claude Code
As a plugin (recommended):
/plugin marketplace add joshsmithxrm/ppds-skills
/plugin install ppds@ppds-skills
Or without the plugin system, copy the skill directories:
git clone https://github.com/joshsmithxrm/ppds-skills
cp -r ppds-skills/skills/* ~/.claude/skills/ # personal, all projects
# or into a repo: cp -r ppds-skills/skills/* <your-repo>/.claude/skills/
Install — GitHub Copilot CLI
Copilot CLI reads Agent Skills from ~/.copilot/skills/ (personal) or, per
repo, from .github/skills/, .claude/skills/, or .agents/skills/:
git clone https://github.com/joshsmithxrm/ppds-skills
mkdir -p ~/.copilot/skills && cp -r ppds-skills/skills/* ~/.copilot/skills/
Then in a Copilot session: /skills list should show the seven ppds-*
skills (/skills reload after copying mid-session).
Smoke test
- Create an auth profile once:
ppds auth create - Ask your agent: "List my Dataverse environments."
The agent should load ppds-core and run ppds env list (or the
ppds_env_list MCP tool) — not a pac command, and not an invented flag.
Follow up with "How many accounts are in ?" and it should route to
ppds query sql with a COUNT(*).
Evals — static and behavioral
Two layers:
- Static (
evals/check_skills.py, zero-dependency, every PR) — proves the skills only cite real commands/flags, frontmatter matches the captured versions, generated references are fresh, and the plugin manifests agree. A capture-freshness check additionally fails locally when an installedppdsdiffers from the captures — a pre-publish nudge to re-capture (or to upgrade your CLI to the targeted surface); it self-skips in CI, which installs no CLI to keep the suite zero-dependency. - Behavioral (
evals/live/) — proves an agent given a real task actually loads the right skill and routes PPDS correctly (SKILL_LOADED/CONTAINS/NOT_CONTAINS/ LLM-judgedsemantic, at P1–P3). The mechanical half (harness self-test + scenario validation against the captured surface) runs free on every PR; the billed, LLM-judged run is opt-in (.github/workflows/live-evals.yml, orpython3 evals/live/run_live_evals.pylocally). See evals/live/README.md.
Maintainers: the reference-regeneration and release process (re-capture, version bump, publish) lives in CONTRIBUTING.md.
Conventions
- Frontmatter:
name(= directory),descriptionwith a "Use when …" trigger clause (≤1024 chars),license, andmetadata.ppds_cli_version_tested/metadata.ppds_mcp_version_tested. SKILL.mdbody ≤150 lines; depth goes toreferences/(loaded on demand).- Every non-cross-cutting skill ends with a
## Skill boundariesrouting table; every skill states CLI↔MCP routing. - Versioning: semver in
.claude-plugin/plugin.json+.claude-plugin/marketplace.json(kept equal by the eval suite). MAJOR = skill renames/removals; MINOR = new skills or capabilities; PATCH = fixes.
Related projects
| Project | Description |
|---|---|
| power-platform-developer-suite | The PPDS CLI, MCP server, TUI, VS Code extension, and NuGet libraries these skills drive |
| ppds-docs | PPDS documentation site |
| VS Code extension | PPDS in the editor — profiles, solutions browser, .ppdsnb notebooks |
Contributing
See CONTRIBUTING.md for how the captured-help layer and reference tables are regenerated, how to run the evals, and the release process. By participating you agree to the Code of Conduct. Security reports: see SECURITY.md.
Trademarks
This is an independent, community project and is not affiliated with, endorsed by, or sponsored by Microsoft, Anthropic, or GitHub. Microsoft, Dataverse, Power Platform, Power Apps, Power Automate, and Dynamics 365 are trademarks of Microsoft Corporation. Claude and Anthropic are trademarks of Anthropic, PBC. GitHub and GitHub Copilot are trademarks of GitHub, Inc. All third-party marks are used nominatively to identify the products this package interoperates with; their use does not imply endorsement.
License
MIT — matching PPDS itself. See LICENSE.
No comments yet
Be the first to share your take.