How this skill is triggered — by the user, by Claude, or both
Slash command
/dynamics365-powerplatform:custom-api-builderThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
---
| Property | Values |
|---|---|
| Unique Name | [prefix]_[VerbNoun] (e.g., contoso_CalculateDiscount) |
| Binding Type | Global / Entity / EntityCollection |
| Is Function | true (read-only, no side effects) / false (action, has side effects) |
| Is Private | true (internal only) / false (externally callable) |
Parameter types: String, Integer, Boolean, DateTime, Entity, EntityReference, EntityCollection, Float, Decimal, Money, Guid, StringArray, PicklistValue
using Microsoft.Xrm.Sdk;
using System;
namespace [Namespace].Plugins.CustomApis
{
/// <summary>
/// Custom API handler for [ApiName]. Implements the business logic
/// exposed through the Dataverse Custom API contract.
/// </summary>
public class [ApiName]Plugin : IPlugin
{
/// <summary>
/// Executes the Custom API logic: validates input parameters,
/// runs business logic, and sets output parameters.
/// </summary>
public void Execute(IServiceProvider serviceProvider)
{
var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
var tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
var factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
var service = factory.CreateOrganizationService(context.UserId);
try
{
tracingService.Trace("[ApiName]: Started.");
// 1. Validate input parameters
// 2. Execute business logic
// 3. Set output parameters: context.OutputParameters["ResultName"] = value;
}
catch (InvalidPluginExecutionException) { throw; }
catch (Exception ex)
{
tracingService.Trace($"[ApiName]: Error - {ex.Message}");
throw new InvalidPluginExecutionException(
"An error occurred executing [ApiName]. Contact your administrator.", ex);
}
}
}
}
customapi, customapirequestparameter, customapiresponseproperty tablesmsbuild /p:Configuration=Release [SolutionName].sln
pac plugin push --assembly [path-to-dll]
pac solution export --name [SolutionName] --path [output-path] --managed
IsPrivate for internal-only operationsSee ./reference/custom-api-patterns.md for: CRUD orchestration, validation, integration gateway, batch operations, status transitions.
npx claudepluginhub franfdezcoloma/marketplace --plugin dynamics365-powerplatformProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.