CommunityCodierung & Entwicklunggithub.com

peterruiter/claude-build-framework

Erstellt eine Synchronisation von einem SaaS-Produkt in Dynamics 365 / Dataverse-Umgebungen und Customer Insights – Journeys (Multi-Tenant-App mit Admin-Zustimmung und Anwendungsbenutzer, Web-API-Upserts, Kontaktabgleich, Leads, Timeline-Notizen, benutzerdefinierte Trigger, Marketing-Listen, Deep-Links), getestet gegen einen Simulator und eine markierte Sandbox. Verwenden, wenn der Auftraggeber eine Integration mit Dynamics 365, Dataverse, Power Platform oder Customer Insights – Journeys wünscht.

Was ist claude-build-framework?

Dieses Skill-Paket beschreibt, wie eine Synchronisation von einem SaaS-Produkt in Dynamics 365 / Dataverse-Umgebungen und Customer Insights – Journeys aufgebaut wird. Es handelt sich um eine Multi-Tenant-App mit Admin-Zustimmung und einem Anwendungsbenutzer, der eine benutzerdefinierte Berechtigungsrolle mit geringsten Rechten hat. Die Synchronisation unterstützt Web-API-Upserts, Kontaktabgleich (basierend auf E-Mail), Leads, Timeline-Notizen, benutzerdefinierte Trigger, Marketing-Listen und Deep-Links. Der Skill ist für die Verwendung mit Claude Code konzipiert und wird durch eine umfangreiche Dokumentation (SKILL.md) gesteuert. Der Entwicklungsprozess ist in Wellen organisiert und umfasst die Erstellung von Verträgen, die Implementierung der Engine, des Connectors und der Admin-UI. Zum Testen wird ein Simulator (Stand-in) und eine reale Sandbox-Umgebung verwendet. Der Skill enthält zudem eine Checkliste für den Auftraggeber und spezifische Regeln zum Schutz von Umgebungen und Geheimnissen. Er eignet sich für Entwickler, die eine sichere, skalierbare und getestete Integration für Dynamics 365 und verwandte Plattformen benötigen.

Funktioniert mit✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/peterruiter/claude-build-framework/tree/HEAD/skills/dataverse-integration

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Eine Dataverse / Dynamics 365-Integration erstellen

Die Anleitung befindet sich in docs/integrations-dynamics.md: zuerst lesen; dieser Skill ist die Arbeitsreihenfolge. Planen Sie es als Welle (waves-and-agents.md); der Kern, der Connector, der Simulator und die Admin-Oberfläche können parallele Agents sein, sobald die Verträge (Tabellen, Connector-Schnittstelle, Einstellungsnamen) geschrieben sind.

1. Fragen Sie den Auftraggeber (eine Nachricht, nummeriert, jeweils mit einer Empfehlung)

  1. Welche Datenflüsse, in welche Richtung: welche Produktdatensätze werden zu welchen Dataverse-Zeilen (Kontakte, Leads, Notizen auf der Timeline, Customer Insights – Journeys-Ereignistabellen, benutzerdefinierte Trigger), und ob etwas zurückgelesen wird (statische Marketing-Listen, Opt-Outs). Standard: eine Richtung, Produkt zu Dynamics, plus Lesen statischer Listen, falls gewünscht.
  2. Anmeldemodell: empfehlen Sie die eigene Multi-Tenant-App des Produkts mit Admin-Zustimmung und einem Anwendungsbenutzer mit einer benutzerdefinierten Rolle mit geringsten Rechten; behalten Sie die kundenindividuelle App-Registrierung (Zertifikat bevorzugt) als Fallback bei. Fragen Sie, ob der Dienst eine verwaltete Identität als verbundene Anmeldeinformation (geheimnislos) verwenden kann oder ein Zertifikat benötigt.
  3. Welcher Entra-Mandant hostet die Multi-Tenant-App, wer registriert sie, wer führt die Herausgeberüberprüfung durch. (Der Auftraggeber macht dies; Sie bereiten die Schritte vor.)
  4. Abgleichsregeln: Kontakte werden per E-Mail abgeglichen (alle drei Spalten, zuerst aktiv); CRM-Felder, die nicht leer sind, werden nur überschrieben, wenn "Ersetzen" zugeordnet ist; Konten nur bei einem eindeutigen exakten Namen verknüpfen; niemals Konten erstellen. Bestätigen oder anpassen.
  5. Zustimmung: Der Kunde bestätigt seinen Datenschutzhinweis, bevor etwas synchronisiert wird; die Synchronisation an eine Zustimmungsfrage knüpfen oder nicht; niemals Marketing-Zustimmung schreiben, es sei denn, das Produkt ist der Ort, an dem die Zustimmung erteilt wird und der Auftraggeber entscheidet, Kontaktpunkt-Zustimmungsdatensätze zu schreiben.
  6. Journeys: Sind benutzerdefinierte Trigger gewünscht, für welche Signale (registriert, storniert, eingecheckt, Lead erfasst, ...), oder reichen die integrierten Geschäftstrigger für die synchronisierten Datensätze aus?
  7. Eine echte Umgebung zum Testen: welche (bevorzugen Sie eine dedizierte Sandbox/Testversion), den Umfang (Datensatzbegrenzung, ein Test-Trigger), und die Bestätigung, dass ohne separate Genehmigung keine Schema-, Lösungs-, Sicherheitsrollen- oder App-Registrierungsänderungen erlaubt sind.

Dokumentieren Sie die Entscheidungen in STATE.md und die Welle in ROADMAP.md.

2. Verträge und Datenmodell

  • Tabellen: Verbindung (pro Workspace/Mandant und Umgebung: URL, Mandanten-ID, Anmeldeart, Vault- Geheimnisname, Hinweis und Ablauf, Status, pausiert-bis, Sondierungsergebnis-JSON, Einstellungen/Zuordnungs-JSON, Datenschutz bestätigt von/um), Sync-Element (eine Zeile pro Datensatz: Art, Quell-ID, CRM-Tabelle und ID, Version, beanspruchte Version, Versuche, nächster Versuch, letzter Fehler, letztes Signal), pro Ereignis/Bereichs-Link (eingeschlossen, verknüpftes CRM-Ereignis, Kampagne, Zustimmungsfrage, gewählte Sponsoren oder Quellen), Nachhol-Cursor, Sync-Protokoll (30 Tage).
  • Connector-Schnittstelle (CRM-neutral): Probe, Write(rows) -> results (Synced | Retry | Throttled(RetryAfter) | Refused), Lookup (Ereignisse, Kampagnen, Listen), RecordLink, Standardzuordnung, eigene Spalten. Niemals eine Ausnahme für eine Antwort werfen, die das CRM gegeben hat.
  • Einstellungen: Login-Basis-URL (Simulator auf einem Laptop), Plattform-Client-ID, Vault-Geheimnisnamen. Fügen Sie sie dem Einstellungsvertrag hinzu (contracts.md).

3. Erstellen, in dieser Reihenfolge

  1. Domänenregeln ohne Netzwerk: Umgebungs-URL-Validierung (Dataverse-Hosts einschließlich souveräner Clouds, https, kein Pfad), Web-API-Stammverzeichnis (/api/data/v9.2/), Token-Bereich (https://<ENV>/.default), OData-Literal-Escaping, Fehleranalyse (Code, Nachricht), $batch-Schreiber und -Leser (mit Änderungssätzen durchgelesen), deterministische IDs (UUID v5 von Workspace, Host, Art, Quell-ID), Datensatz- Deep-Link (main.aspx?appid=...&pagetype=entityrecord&etn=...&id=...). Komponententests.
  2. Token: Client-Anmeldeinformationen (Geheimnis, Zertifikatsbestätigung mit x5t#S256, Plattform-App, Entwickler-az-Token nur in der Entwicklung), Cache nach Hash bis 5 Minuten vor Ablauf, bei 401 vergessen und einmal wiederholen, erste Fehlerzeile von Entra an die Benutzeroberfläche.
  3. Sondierung: WhoAmI, RetrieveVersion(), Entitätssätze, Attribute mit Beschreibbarkeit und maximaler Länge, Many-to-One-Navigationseigenschaftsnamen, fertige benutzerdefinierte Trigger und deren Parameter; Modi werden nur angeboten, wenn ihre Tabellen existieren.
  4. Schreibvorgänge: Kontakt-Match-dann-Upsert mit aktivierter Dublettenprüfung, Kontoverknüpfung bei Eindeutigkeit, Notizen und im Besitz befindliche Datensätze durch PATCH auf deterministische IDs, Leads nur-Erstellen (If-None-Match: *), Aktualisierungen mit If-Match: * (oder dem ETag, wo Personen dieselben Felder bearbeiten), statecode mit statuscode, benutzerdefinierte Trigger als ungebundene Aktionen mit jedem gefüllten Attribut.
  5. Engine: Hooks plus Sweep, Anspruch über Repliken hinweg (die Zeilen einer Person seriell, Abhängigkeiten zuerst), Wiederholungsplan mit Dead Letter, 429 pausiert die Verbindung für Retry-After, Parallelitätsbegrenzung pro Verbindung, Nachholen in $batch (unabhängige Anforderungen, Prefer: odata.continue-on-error, kleine Batches), Trennen.
  6. Admin-Oberfläche in jeder konfigurierten Sprache: Verbindungsassistent (Umgebung, Anmeldung mit dem Admin-Zustimmungs-Link für die Plattform-App, Test, der die gefundenen Modi anzeigt, was synchronisiert wird, Zuordnung gegen echte Spalten validiert, welche Ereignisse/Bereiche, Datenschutzbestätigung), Verbindungsseite (Status, Protokoll, Fehlgeschlagene wiederholen, Anmeldeinformationen ersetzen, Zertifikatsablauf), pro-Datensatz-Zeile mit "In Dynamics öffnen" und "Erneut synchronisieren" sowie einem "Wie verbinden"-Hilfebereich, der die genauen Rollenberechtigungen und Power Platform Admin Center-Schritte auflistet.
  7. Warnungen: Einmalige E-Mail an die Workspace-Administratoren, wenn das CRM die Anmeldung nach der Erneuerung verweigert.

4. Testen

  • Simulator zuerst: Kopieren Sie templates/project/tests/standins/dataverse.mjs und dessen Test nach tests/standins/, erweitern Sie es um Ihre Tabellen (Muster in testing.md): Token-Endpunkt, Metadaten, CRUD mit Upsert und bedingten Headern, ungebundene Aktionen, $batch, Dataverse-ähnliche Validierung, Steuerungen für Drosselung, Fehler, Token-Ablauf und Status. Ein gefälschter HTTP-Handler-Zwilling für Komponententests.
  • Komponenten- und Datenbanktests von der Liste der Anleitung. Browserprüfungen des Assistenten und der Verbindungsseite in Desktop- und Telefonbreite, hell und dunkel, in zwei Sprachen.
  • Melden Sie als "nur gegen den Simulator verifiziert", bis eine echte Umgebung ausgeführt wurde.
  • Echte Sandbox nur mit ausdrücklicher Genehmigung des Auftraggebers für diese Umgebung und diesen Umfang: Token über az account get-access-token --resource https://<ENV>.crm4.dynamics.com --subscription <SUBSCRIPTION_ID> (niemals das Standardkonto oder pac-Profil wechseln), markierte Datensätze mit einer Lauf-ID und einer harten Obergrenze, jede erstellte ID aufgezeichnet, die Prüfreihenfolge aus der Anleitung, Bereinigung nach aufgezeichneten IDs, eine Anzahl von null danach und ein kurzer Bericht darüber, was erstellt und entfernt wurde.

5. Checkliste für den Auftraggeber (geben, nicht selbst erledigen)

  • Registrieren Sie die Multi-Tenant-App (oder entscheiden Sie sich dagegen), fügen Sie ihre Anmeldeinformationen (verbundene verwaltete Identität oder Zertifikat) hinzu und legen Sie alle Geheimnisse unter dem vereinbarten Namen im Tresor ab; setzen Sie die Client-ID-Einstellung.
  • Herausgeberüberprüfung.
  • Packen Sie die Rolle mit den geringsten Rechten als verwaltete Lösung für Kunden (optional, aber empfohlen).
  • Für jeden Kunden: Admin-Zustimmungs-Link, Anwendungsbenutzer mit der Rolle, Umgebungs-URL und Mandanten-ID in das Produkt, Testen.

6. Aufzeichnen

STATE.md: Was erstellt wurde, Modi, was wo lief, und eine Tabelle "Unbewiesen" (echte Umgebung, Navigationseigenschaftsnamen, erforderliche Spalten in optionalen Modulen, die tatsächliche Antwort der Dublettenprüfung, $batch mit Änderungssätzen, ein echter benutzerdefinierter Trigger, Drosselung, Admin-Zustimmung und ein Zertifikat in einem Kundenmandanten). Aktualisieren Sie die (bestätigen)-Markierungen der Anleitung, sobald sie bestätigt sind. Eintrag "Was ist neu" pro Release in jeder Sprache.

Regeln

  • Keine Aufrufe echter Umgebungen, Schema-/Lösungs-/Rollen-/App-Registrierungs-/Zustimmungsänderungen oder Löschungen von Datensätzen, die Sie nicht erstellt haben, ohne die ausdrückliche Freigabe des Auftraggebers für genau diese Aktion.
  • Keine Geheimnisse in Code, Protokollen, Chat, Commits oder Berichten; Nur Tresor. Protokollieren Sie Host, Status und Fehlercode.
  • Platzhalter in allem, was geteilt wird: <ENV>.crm4.dynamics.com, <TENANT_ID>, <CLIENT_ID>.
  • Keine KI-Zuschreibung an irgendeiner Stelle.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

peterruiter/claude-build-framework

Full accessibility pass to WCAG 2.2 AA - axe-core through Playwright over every main page in light and dark at 1440/390 (and 320 for reflow), probes for skip link, one h1, lang, visible and unobscured focus, 24px targets and sideways scrolling, a keyboard script for dialogs/drawers/tabs, manual checks (text spacing, zoom, dragging alternatives, accessible authentication), contract tests for shared components and theme contrast, fixes, known limitations with reasons and an accessibility statement page. Use when the user asks for an "accessibility pass", "WCAG", "a11y audit", "screen reader", or before the first public release.

peterruiter/claude-build-framework

Write one complete agent brief from the framework's template for a single piece of work (feature, fix, polish, translation, accessibility or security item), with context, scope, reserved migration slot, scratch database, ports, file ownership, the standing rules (all configured languages, WCAG 2.2 AA, light and dark, privacy, data residency, What's new, no AI attribution), the gate and the report format. Use when the user or the plan-wave skill needs a brief, or says "write a brief", "brief an agent", "delegate this".

peterruiter/claude-build-framework

Check that every tool a profile needs is installed and recent enough (git, GitHub CLI, Node.js, npm, plus the profile's own - e.g. .NET SDK, PowerShell 7, Azure CLI, Power Platform CLI, LocalDB, k6) and give the exact install command per OS for anything missing. Runs automatically at the start of new-project and quality-gate. Use when the user says "check my tools", "what do I need to install", "is my machine ready", or when a command fails with "not recognized" / "command not found".

peterruiter/claude-build-framework

Apply, switch or regenerate a project's design system (the one source of colours, fonts, logos, chart, email, document and video styles for every output), check its contrast in light and dark, and add a new design system to the framework from a Claude Design System artifact. Uses scripts/design-system.mjs to generate tokens.css, tokens.ts, a Fluent UI theme, a model-driven app theme, email and chart palettes, the video-tour brand block and an Office theme mapping. Use when the user says "design system", "apply the brand", "use our house style", "switch theme", "rebrand", "regenerate the tokens", "check contrast", or "add a design system".

Verwandte Skills