claude-power-platform-community
CLAUDE.md46 starsChanged 8 months agoMITView on GitHub
These rules are always active. They apply to every skill, every interaction. You have access to 6 agent skills and 33 domain skills for Power Platform development. For agent selection, workflows, and skill loading guidance, use the /power-platform-team skill.
- Sends data out
In this repository40 other files it gives its agents.
- accessibility-uxSkill
- ai-builderSkill
- almSkill
- architectureSkill
- azure-openaiSkill
- business-process-flowsSkill
- canvas-appsSkill
- code-appsSkill
- code-reviewerSkill
- copilot-studioSkill
- custom-connectorsSkill
- dashboardsSkill
- data-migrationSkill
- dataverse-mcpSkill
- dataverseSkill
- dataverse-web-apiSkill
- devops-engineerSkill
- env-strategySkill
- governanceSkill
- integration-patternsSkill
- licensingSkill
- m365-integrationSkill
- model-driven-appsSkill
- observabilitySkill
- pcfSkill
- perf-optimiseSkill
- platform-builderSkill
- pluginsSkill
- power-automateSkill
- power-biSkill
- power-pagesSkill
- power-platform-teamSkill
- project-managerSkill
- securitySkill
- solutions-architectSkill
- spec-driven-devSkill
- test-engineSkill
- testingSkill
- uat-coordinatorSkill
- web-resourcesSkill
The file
Show its rules and text
We split this CLAUDE.md into the rules it gives an agent
15 rules. About 0 are common, 8 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 15
Always use PAC CLI-generated services — never raw fetch/axios
- Very specific: line 16
Always use $select on every Dataverse query — never fetch all columns
- Distinctive: line 17
Always handle loading, error, and empty states in every component
- Very specific: line 18
Always use TypeScript strict mode — no any types
- Distinctive: line 19
Never hardcode environment URLs, GUIDs, or secrets
- Distinctive: line 20
Never embed secrets in source code (published Code Apps are publicly accessible)
- Very specific: line 27
Every form input has a label, every icon button has aria-label
- Distinctive: line 105
When building Power Platform solutions from Claude Code, the primary workflow is:
- Very specific: line 144
ALWAYS include MSCRM.SolutionUniqueName header on component creation
- Very specific: line 145
ALWAYS include @odata.type on attribute/column creation payloads
- Distinctive: line 146
ALWAYS create publisher + solution FIRST
- Very specific: line 147
ALWAYS publish after form/view/sitemap changes
- Distinctive: line 155
Every significant design decision must be documented as an ADR:
- Distinctive: line 161
Use Mermaid erDiagram syntax
- Distinctive: line 167
Every Power Platform project should include:
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Power Platform — Non-Negotiable Standards
These rules are always active. They apply to every skill, every interaction.
Three-Layer Architecture (Code Apps)
src/components/ → Presentation only. Props in, callbacks out. Zero service calls.
src/hooks/ → Business logic. The ONLY layer that calls generated services.
src/generated/ → Auto-generated by PAC CLI. NEVER manually edit.Hard Rules
- Always use PAC CLI-generated services — never raw
fetch/axios - Always use
$selecton every Dataverse query — never fetch all columns - Always handle loading, error, and empty states in every component
- Always use TypeScript strict mode — no
anytypes - Never hardcode environment URLs, GUIDs, or secrets
- Never embed secrets in source code (published Code Apps are publicly accessible)
- Router basename must be normalized for Power Apps hosting
- Provider stack order: ThemeProvider → SonnerProvider → QueryProvider → RouterProvider
Accessibility (WCAG 2.2 AA — Mandatory)
- Semantic HTML first (
<button>,<nav>,<main>) — ARIA is a last resort - Every form input has a label, every icon button has
aria-label - Visible
:focus-visibleon all interactive elements - Skip-to-main-content link,
aria-liveregions for dynamic content - 4.5:1 text contrast, 3:1 for UI elements, never color alone for information
- Content reflows at 320px and 200% zoom without horizontal scroll
- Accessibility is part of EVERY code review, not a separate pass
ALM (Always — From Day One)
- Solution-aware from the start
- Environment variables for all environment-specific values
- Managed solutions for test/prod — never import unmanaged to production
- Connection references for all flow connections
- Version increment on every deployment
Agent Team
You have access to 6 agent skills and 33 domain skills for Power Platform development.
For agent selection, workflows, and skill loading guidance, use the /power-platform-team skill.
Naming Conventions
Publisher & Solution
| Object | Convention | Example |
| Publisher prefix | 3-5 chars, lowercase, no underscores | contoso, prj |
| Solution unique name | PascalCase, descriptive | ContosoProjectManagement |
| Solution display name | Space-separated, proper case | Contoso Project Management |
Dataverse Schema
| Object | Convention | Example |
| Table logical name | {prefix}_{noun} (singular) | contoso_project |
| Table display name | Singular noun, proper case | Project |
| Table plural name | Plural noun | Projects |
| Column logical name | {prefix}_{noun/adjective} | contoso_startdate |
| Column display name | Space-separated, proper case | Start Date |
| Relationship name | {prefix}_{parent}_{child} | contoso_project_task |
| Global option set | {prefix}_{name} | contoso_projectstatus |
| Alternate key | {prefix}_{keyname} | contoso_ordernumber |
Components
| Object | Convention | Example |
| Cloud flow | [Solution] - [Trigger] - [Action] | CRM - OnCreate Contact - Send Welcome Email |
| Environment variable schema | {prefix}_{PascalCaseName} | contoso_ApiBaseUrl |
| Connection reference | {prefix}_{ConnectorName} | contoso_SharedOutlook |
| Security role | [App] [Level] | CRM Admin, CRM User |
| Web resource | {prefix}_/scripts/{entity}{Purpose}.js | contoso_/scripts/contactForm.js |
| Plugin class | {Namespace}.{Entity}.{Event}{Action} | Contoso.Project.PreCreate.SetDefaults |
| Custom API | {prefix}_{VerbNoun} | contoso_CalculateProjectHealth |
Code Apps (React/TypeScript)
| Object | Convention | Example |
| Component files | PascalCase | ContactList.tsx, ProjectForm.tsx |
| Hook files | camelCase, use prefix | useContacts.ts, useProjectForm.ts |
| Store files | camelCase, Store suffix | appStore.ts, filterStore.ts |
| Type files | camelCase | contact.types.ts |
| Test files | .test. or .spec. | ContactList.test.tsx |
Canvas Apps
| Object | Convention | Example |
| Screens | [Feature]Screen | ContactBrowseScreen |
| Galleries | gal[Name] | galContacts |
| Buttons | btn[Action] | btnSave |
| Text inputs | txt[Field] | txtFirstName |
| Global variables | gbl[Name] | gblCurrentUser |
| Collections | col[Name] | colPendingChanges |
Web API-First Development Workflow
When building Power Platform solutions from Claude Code, the primary workflow is:
- Authenticate via Azure CLI
- Create publisher + solution (if not exists)
- Build schema via Web API HTTP calls (tables → columns → relationships → views → forms → app)
- Components land in the solution in real-time (via
MSCRM.SolutionUniqueNameheader) - Publish customizations
- Verify in the maker portal
When to Use Each Approach
| Approach | When |
| Direct Web API | New development, schema creation, programmatic builds |
| pac code push | Code Apps deployment |
| pac pcf push | PCF control deployment |
| pac solution sync/export | Working on existing solutions, syncing to source control |
| MCP | Data queries, schema discovery, Copilot Studio integration |
Authentication
# Azure CLI (interactive — for development)
az account get-access-token \
--resource "https://[org].crm6.dynamics.com/" \
--tenant "[tenant-id]" \
--query accessToken -o tsv
# Service Principal (CI/CD — for automation)
TOKEN=$(curl -s -X POST "https://login.microsoftonline.com/${TENANT_ID}/oauth2/v2.0/token" \
-d "grant_type=client_credentials" \
-d "client_id=${CLIENT_ID}" \
-d "client_secret=${CLIENT_SECRET}" \
-d "scope=https://${ORG}.crm.dynamics.com/.default" \
| jq -r '.access_token')Critical Web API Rules
- ALWAYS include
MSCRM.SolutionUniqueNameheader on component creation - ALWAYS include
@odata.typeon attribute/column creation payloads - ALWAYS create publisher + solution FIRST
- ALWAYS publish after form/view/sitemap changes
- On Windows, use PowerShell
.ps1scripts (bash mangles OData params) - Some decisions are PERMANENT: table logical name, column data type, ownership type
Documentation Standards
Architecture Decision Records (ADR)
Every significant design decision must be documented as an ADR:
- File naming:
docs/adr/ADR-NNN-description.md - ADRs are never deleted — superseded ADRs are marked as such
Entity Relationship Diagrams
- Use Mermaid erDiagram syntax
- Include: PK/FK markers, data types, relationship cardinality
- Separate diagrams for: core domain, security model, integration points
Project README
Every Power Platform project should include:
- Solution overview and business context
- Environment URLs (dev/test/prod)
- Service principal details (client IDs, not secrets)
- Deployment instructions
- Required environment variables and connection references
- Known limitations and technical debt
Deployment Runbook
For production deployments:
- Pre-deployment checklist (backups, approvals, change window)
- Step-by-step deployment process
- Post-deployment verification steps
- Rollback procedure
- Emergency contacts
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

