agentsclimarketplace

Ppds plugins

Skill joshsmithxrm/ppds-skills/skills/ppds-plugins

Register, deploy, and debug Dataverse plugins declaratively with PPDS — attribute-driven registration ([PluginStep]/[PluginImage]/[CustomApi]), the extract → diff → deploy loop, assembly management, Custom APIs, service endpoints, and plugin trace log debugging (list/get/timeline). Use when the user wants to register or deploy a plugin assembly, sync plugin steps from code, diagnose a plugin error or performance problem, read plugin trace logs, or manage Custom APIs. Read ppds-core first for auth and safety rules.From its SKILL.md

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

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

2 things 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.
  • runs commandsInstructs the agent to run 8 commands, including `ppds plugins extract --input bin/Release/net462/MyPlugins.dll --output registrations.json` and 7 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

5.3 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

PPDS Plugins — registration as code, traces as evidence

PPDS replaces Plugin Registration Tool clicks with attributes on the plugin class. Registration metadata is extracted from the compiled assembly, reviewed as JSON, diffed against the environment, and deployed deterministically. Attribute reference (all properties, verified): references/plugin-attributes.md. Exact CLI flags: references/cli-plugins.md.

Surface routing: deployment is CLI-only. For read-side analysis from an MCP-only host: ppds_plugins_list, ppds_plugins_get, ppds_plugin_traces_list, ppds_plugin_traces_get, ppds_plugin_traces_timeline, ppds_plugin_traces_delete.

The declarative loop

# 0. Code: decorate plugin classes with [PluginStep] / [PluginImage] / [CustomApi]
#    (PPDS.Plugins NuGet package, net462) and build.

# 1. Extract attribute metadata from the assembly to JSON
ppds plugins extract --input bin/Release/net462/MyPlugins.dll --output registrations.json

# 2. Diff against what the environment actually has
ppds plugins diff --config registrations.json

# 3. Preview the deployment (always before the real run — safety model rule 3)
ppds plugins deploy --config registrations.json --dry-run

# 4. Deploy (after the user has seen the preview)
ppds plugins deploy --config registrations.json

# 5. Verify
ppds plugins list --assembly MyPlugins

Key facts:

  • deploy takes --config registrations.json (required) — it does not take an assembly path. extract is the step that reads the DLL.
  • deploy --clean also removes registrations in the environment that are missing from the config (orphans). Run --dry-run with --clean first — it deletes.
  • --solution <unique-name> on extract/deploy adds components to a solution.
  • Step-level management: ppds plugins enable / ppds plugins disable / ppds plugins unregister, ppds plugins update (swap assembly bytes), ppds plugins download, ppds plugins clean (orphan removal), ppds plugins get.
  • Custom APIs declared via [CustomApi] deploy in the same loop; manual management exists under ppds custom-apis (references/cli-custom-apis.md) and ppds service-endpoints (references/cli-service-endpoints.md).

Trace debugging recipe

Plugin trace logs are the evidence. Filters: references/cli-plugintraces.md.

# 1. Make sure tracing is on (all = verbose; exception = errors only)
ppds plugintraces settings get
ppds plugintraces settings set all

# 2. Reproduce the failing operation (e.g. the Update that misbehaves)

# 3. Find the trace
ppds plugintraces list --errors-only --last-hour --entity account
ppds plugintraces list --type AccountUpdatePlugin --message Update -n 20

# 4. Read it — message block + exception detail
ppds plugintraces get <trace-id>

# 5. See the whole transaction as a tree (correlation ID — finds chained/
#    nested plugin executions and the slow step)
ppds plugintraces timeline <trace-id>
ppds plugintraces related <trace-id>          # flat list, same correlation

# 6. Restore trace settings when done (all is noisy and costs storage)
ppds plugintraces settings set exception

# Housekeeping (destructive — preview first; durations like 7d, 24h, 30m)
ppds plugintraces delete --older-than 7d --dry-run

Useful list filters: --mode sync|async, --min-duration <ms> (find slow steps), --since/--until (ISO 8601), --correlation-id, --step-id, --record account/<guid>, --recursive (nested depth >1 only).

Common mistakes (do not invent these)

WrongCorrect
ppds plugins deploy --assembly My.dllextract --input My.dll first, then deploy --config registrations.json
ppds plugins deploy --file registrations.jsonthe flag is --config (alias -c)
ppds plugins register --assembly ... for updatesregister is first-time direct registration; the maintained loop is extract → diff → deploy
ppds plugintraces list --query "..." / --filter-xml--filter <json-file>, or the typed flags (--entity, --message, --errors-only, ...)
ppds traces ... / ppds plugin-traces ...the group is ppds plugintraces
Leaving trace level at allppds plugintraces settings set exception after debugging

Skill boundaries

NeedUse instead
Query the data a plugin wrote (verify behavior)ppds-query
Add the plugin's solution to ALM flow, import/exportppds-solutions-alm
Entity/attribute metadata the plugin depends onppds-metadata
Auth, environment selection, error-code meaningsppds-core

What ships with it: 5 files

59.6 KB alongside SKILL.md

Gives 0 of the 12 instructions most debug triage skills give in ~1.2k tokens

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

  • Find root cause before attempting any fixin 134 of 1020, across 118 files
  • Create a failing test case before implementing a fixin 109 of 1020, across 95 files
  • Read error messages and stack traces completelyin 102 of 1020, across 88 files
  • Reproduce the issue consistently before investigatingin 90 of 1020, across 77 files
  • Make the smallest possible change to test a hypothesisin 90 of 1020, across 76 files
  • Trace data flow backward to find the sourcein 84 of 1020, across 70 files
  • Form a single hypothesis before testingin 78 of 1020, across 64 files
  • Implement only one fix at a timein 76 of 1020, across 63 files
  • Question the architecture if three fixes failin 73 of 1020, across 59 files
  • Add diagnostic instrumentation at component boundariesin 68 of 1020, across 56 files
  • Compare broken code against working examplesin 68 of 1020, across 57 files
  • Write a regression test before applying the fixin 62 of 1020, across 55 files

Said here and by no other author read

  • Decorate plugin classes with attributes
  • Extract metadata from assembly to JSON
  • Diff registrations against the environment
  • Deploy using the configuration file
  • Set trace level to all for debugging
  • Restore trace level to exception after debugging

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.