This file provides guidance to AI agents when working with code in this repository.
Dynamo is a visual programming tool accessible to non-programmers and programmers alike. Users can visually script behavior, define custom logic, and script using textual programming languages. Built with C# and WPF, targeting .NET 10. The core engine (DynamoCore.sln) is cross-platform; the full UI (Dynamo.All.sln) is Windows-only.
- Language: C# (.NET 10)
- UI: WPF (Windows only)
- Tests: NUnit
- Build (Windows full):
msbuild src/Dynamo.All.sln /p:Configuration=Release - Build (core only):
dotnet build src/DynamoCore.sln -c Release - Test:
dotnet testor Visual Studio Test Explorer
# Windows full build
dotnet restore src/Dynamo.All.sln --runtime=win-x64 -p:Configuration=Release -p:DotNet=net10.0
msbuild src/Dynamo.All.sln /p:Configuration=Release
# Core only (cross-platform, Windows)
dotnet restore src/DynamoCore.sln --runtime=win-x64 -p:Configuration=Release -p:DotNet=net10.0
msbuild src/DynamoCore.sln /p:Configuration=Release
# Core only (Linux)
dotnet restore src/DynamoCore.sln --runtime=linux-x64 -p:Configuration=Release -p:Platform=NET_Linux -p:DotNet=net10.0
dotnet build src/DynamoCore.sln -c Release /p:Platform=NET_Linuxsrc/
├── DynamoCore/ # Cross-platform graph engine, scheduler, AST evaluation
├── DynamoCoreWpf/ # WPF UI, node views, workspace canvas
├── DynamoApplications/ # Application host entry points
├── DynamoSandbox/ # Standalone sandbox app
├── Engine/ # DesignScript language runtime (ProtoCore, ProtoAssociative, etc.)
├── Libraries/ # Built-in node libraries (CoreNodes, Analysis, PythonNodeModels, etc.)
├── Extensions/ # View extensions (Documentation Browser, Library, Linting, etc.)
└── DynamoCLI/ # Headless command-line runner
test/
├── DynamoCoreTests/ # Core engine tests
├── DynamoCoreWpfTests/ # UI tests (split across Wpf, Wpf2, Wpf3 projects)
└── Libraries/ # Per-library test projects (CoreNodesTests, etc.)
Key relationships: DynamoCore is the graph model and execution engine. DynamoCoreWpf depends on it for UI. The Engine/ DesignScript runtime (ProtoCore) is the low-level evaluator that DynamoCore drives. Node libraries in Libraries/ expose zero-touch or explicit node models consumed by both.
- Follow Dynamo Coding Standards and Naming Standards.
- XML documentation required on all public methods and properties.
- New public APIs must be added to
PublicAPI.Unshipped.txt(format:namespace.ClassName.MemberName -> ReturnType). - Security analyzers CA2327/CA2329/CA2330/CA2328 are errors.
- NUnit for all tests. Do not introduce xUnit or MSTest.
- Test naming:
WhenConditionThenExpectedBehavior. One behavior per test, Arrange-Act-Assert. - User-facing strings in
.resxfiles. - No files > 50 MB.
- No
[Ignore]or[Explicit]on tests without an explaining comment. - No empty
catch { }blocks — log and rethrow or handle explicitly. - No
#pragma warning disablewithout a justification comment. - No weakened assertions (e.g., replacing
Assert.AreEqualwithAssert.IsNotNull).
- PR title must include Jira ticket:
DYN-1234 concise summary. - Fill all sections of
.github/PULL_REQUEST_TEMPLATE.md. Release Notes is mandatory — useN/Aif not user-facing (minimum 6 words otherwise). - Do not introduce breaking API changes without filing an issue and following Semantic Versioning.
For each new node, add to doc/distrib/NodeHelpFiles/:
- A
.dynsample graph - A
.mddocumentation file - A
.jpgvisual preview
Read .agents/ for comprehensive skills, rules, and templates:
- Skills (task workflows):
.agents/skills/<skill-name>/SKILL.mddynamo-codebase-patterns-- Discover and enforce Dynamo-specific architectural patternsdynamo-content-designer-- Technical content for docs, guides, and release notesdynamo-dotnet-expert-- C#/.NET patterns, testing, PublicAPIdynamo-dotnet-janitor-- Janitorial cleanup and modernization for C#/.NET codedynamo-ecosystem-reviewer-- Cross-repo compatibility and platform constraints reviewdynamo-jira-ticket-- creating/refining Jira tickets (includes template.md)dynamo-onboarding-- Dynamo architecture, ecosystem, debuggingdynamo-pr-description-- PR descriptions matching Dynamo template (uses.github/PULL_REQUEST_TEMPLATE.md)dynamo-skill-writer-- Author and maintain Dynamo agent skillsdynamo-unit-testing-- NUnit test writing following Dynamo patternsdynamo-ux-designer-- UX planning and Weave-aligned interface design guidancedynamo-webview-component-scaffold-- Scaffold Dynamo WebView2 view-extension repos
- Rules (constraints):
.agents/rules/dynamo-core-rules.md-- .NET/Dynamo constraints