From powerplatformcopilot
Provides guidance for high-level solution designs in Dynamics 365 and Power Platform engagements.
How this skill is triggered — by the user, by Claude, or both
Slash command
/powerplatformcopilot:solution-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Purpose:** Defines the architectural thinking process, design patterns, and decision-making frameworks applied when producing high-level solution designs for Dynamics 365 and Power Platform engagements.
Purpose: Defines the architectural thinking process, design patterns, and decision-making frameworks applied when producing high-level solution designs for Dynamics 365 and Power Platform engagements.
This skill is invoked by:
Before producing any design output, internalize:
Evaluate each requirement in this order:
OOB Feature Available?
YES → Configure it. Document configuration steps.
NO → Can low-code solve it?
YES → Design with Power Automate / Power Apps / Copilot Studio
NO → Can pro-code solve it cleanly?
YES → Design plugin / custom API / PCF — document gap
NO → Flag as architectural risk or out of scope
Also evaluate whether the requirement belongs in a first-party Dynamics 365 app or in a custom Dataverse extension. Do not recreate first-party behaviors without a documented gap and a supportability rationale.
Think beyond go-live:
Every design choice that is non-obvious must be documented as a Design Decision with:
| Field | Content |
|---|---|
| Decision | One sentence: what was chosen |
| Rationale | Why this option was selected (business or technical reason) |
| Alternatives considered | Other approaches evaluated |
| Trade-offs | Known limitations of the chosen approach |
| Pattern | When to Use |
|---|---|
| Standard first-party table | Default when Dynamics 365 already provides the process semantics, security model, and lifecycle needed |
| Native Dataverse entity | Default for all new structured data |
| Virtual Table | Read-only access to external data without data copy |
| Dataverse + Synapse Link | Analytics workloads, large dataset reporting |
| Blob / SharePoint for files | Attachments, documents (not in Dataverse notes) |
| Pattern | When to Use |
|---|---|
| Business rules (Dataverse) | Simple conditional field logic, no code needed |
| Power Automate cloud flow | Process automation, multi-step logic, notifications |
| Real-time synchronous plugin | Validation logic that must block save (use sparingly) |
| Async plugin / background flow | Post-save operations, external API calls |
| Dataverse Custom API | Expose business logic as API endpoint |
| Pattern | When to Use |
|---|---|
| Model-driven app | Data management, case/record workflows, back-office |
| Canvas app | Lightweight, task-specific, mobile, or kiosk UX |
| Custom Page (model-driven) | Rich interaction embedded in model-driven app |
| PCF control | Custom rendering of a specific field (use with justification) |
| Power Pages portal | External / customer-facing self-service |
| Pattern | When to Use |
|---|---|
| Automated cloud flow (Dataverse trigger) | React to record create/update/delete |
| Scheduled flow | Periodic batch processing |
| Approval flow | Multi-step human approval chains |
| Business process flow | Guide users through a multi-stage process |
| Desktop flow (RPA) | Legacy system automation (last resort) |
| Pattern | When to Use |
|---|---|
| Native connector via Power Automate | Simple, low-volume integration where connector support, retries, and licensing are acceptable |
| Dataverse Web API | Direct Dataverse CRUD/query operations when a service or middleware layer already exists or tighter API control is needed |
| Dataverse webhook → Service Bus | Event-driven, reliable, high-volume |
| Azure Logic App | Complex enterprise integration with orchestration |
| Middleware / iPaaS | Cross-platform transformation, canonical data contracts, centralized policy enforcement |
| Virtual Table | Read-only external data in Dataverse context |
| ADF / Synapse Link | Bulk data migration and analytics |
| Decision Point | Guidance |
|---|---|
| First-party process already exists | Prefer the standard table and extend only where needed |
| Requirement introduces a new business concept with distinct lifecycle/security | Consider a custom table |
| Reporting/search/security depends on native D365 semantics | Prefer the standard table |
| Custom table proposed only for naming convenience | Reject; reuse the supported standard model |
| Condition | Preferred Style |
|---|---|
| User action requires immediate validation or response | Synchronous |
| External system latency is variable or failures must be isolated | Asynchronous |
| High-volume events or retry/dead-letter requirements exist | Asynchronous |
| Cross-system transaction coupling would hurt resiliency | Asynchronous |
Apply these checks to every design:
| Check | Threshold / Guidance |
|---|---|
| Dataverse API rate limits | Design for 6,000 req/min/org; use batch requests for bulk ops |
| Power Automate flow runs | Premium flows: 500K actions/month per license |
| Canvas app delegation | Always delegate to Dataverse; avoid non-delegable functions on > 500 records |
| Copilot Studio sessions | Design for message pack capacity; monitor monthly usage |
| Omnichannel voice capacity | Plan Azure Communication Services numbers and routing load |
Apply to every design:
npx claudepluginhub cesardlcs/powerplatformcopilot --plugin powerplatformcopilotCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.