By christian289
Scaffold WPF projects, generate custom controls, ViewModels, services, behaviors, and converters; design XAML styles and templates; implement MVVM patterns, advanced data binding, animations, and graphics; optimize rendering performance with DrawingVisual and virtualization; audit code quality and format XAML/C# using specialized agents and skills.
npx claudepluginhub christian289/dotnet-with-claudecode --plugin wpf-dev-packWPF code review specialist. Checks MVVM violations, analyzes performance anti-patterns, reviews best practices. Uses C# LSP for code intelligence. Provides analysis and feedback without modifying code.
Delegate complex tasks to specialized agents.
[🇺🇸 English](./README.md)
[🇰🇷 한국어](./README.ko.md)
Formats WPF XAML and C# code automatically after file modifications. Runs XamlStyler for XAML and dotnet format for C# files in parallel.
Serena MCP initialization agent. Checks if current project is activated and onboarded in Serena, performs activation and onboarding if not completed. Use when starting work on a new project or when Serena tools fail.
Strategic WPF architecture advisor. Analyzes solution/project structure, reviews MVVM architecture, performs dependency analysis. Provides analysis and recommendations without modifying code.
WPF code audit specialist. Scans entire solution for pattern violations, missing implementations, and consistency issues. Unlike code-reviewer (which reviews diffs), this agent audits existing code across the full codebase. Use when checking for BindingProxy missing in CLR collections, orphan resources, missing JsonIgnore on non-serializable properties, GCHandle Free leaks, or any codebase-wide pattern consistency check.
WPF CustomControl design and implementation specialist. Defines DependencyProperty, implements Parts and States Model, OnApplyTemplate patterns.
WPF data binding specialist. Implements complex bindings (MultiBinding, PriorityBinding), custom converters, validation patterns, and debugging binding issues.
WPF MVVM pattern implementation expert. Implements ViewModel with CommunityToolkit.Mvvm, data binding, ICommand, CollectionView encapsulation.
WPF rendering and performance optimization specialist. Implements DrawingContext, DrawingVisual, VirtualizingStackPanel, Freezable patterns, memory optimization.
WPF XAML Style/ControlTemplate designer. Configures ResourceDictionary, implements Trigger, VisualStateManager, animation Storyboard.
Implements advanced WPF data binding patterns including MultiBinding, PriorityBinding, and complex converters. Use when combining multiple values, fallback values, or implementing complex binding scenarios.
Guides decision-making for WPF control authoring including UserControl vs Control vs FrameworkElement selection. Use when creating new controls or evaluating Style/Template/Trigger alternatives.
Binds enum values to WPF CommandParameter using x:Static markup extension. Use when passing enum types to commands or avoiding string-based command parameter errors.
Checks and clamps mouse coordinates within transformed image bounds in WPF. Use when implementing measurement tools or annotations that should only work inside Pan/Zoom/Rotate transformed images.
Defines WPF DependencyProperty with Register, PropertyMetadata, callbacks, and validation. Use when creating custom controls, attached properties, or properties that support data binding and styling.
Designs stand-alone control styles using WPF CustomControl and ResourceDictionary. Use when creating reusable custom controls or organizing control themes in Generic.xaml.
Develops WPF CustomControls using Parts and States Model best practices. Use when creating templatable controls with TemplatePart, TemplateVisualState, OnApplyTemplate, or VisualStateManager.
Displays 0-based collection indices as 1-based numbers in WPF Slider controls. Use when showing user-friendly slice/page numbers while maintaining 0-based internal indexing.
Implements WPF input handling with RoutedCommand, ICommand, CommandBinding, and InputBinding patterns. Use when creating keyboard shortcuts, menu commands, or custom command implementations.
Implements WPF 2D graphics using Shape, Geometry, Brush, and Pen classes. Use when building vector graphic UIs, icons, charts, or diagrams in WPF applications.
Implements MVVM pattern using CommunityToolkit.Mvvm 8.4+ with ObservableProperty attributes and source generators. Use when building ViewModels, implementing commands, or setting up MVVM structure in WPF.
Enables mouse event reception for WPF FrameworkElement using DrawingContext by drawing transparent backgrounds. Use when custom-drawn elements don't receive mouse events.
Implements high-performance streaming using System.IO.Pipelines in .NET. Use when building network protocols, parsing binary data, or processing large streams efficiently.
Implements Pub-Sub patterns using System.Reactive and Channels for event-based communication in .NET. Use when building reactive applications or decoupled event-driven architectures.
Implements the Repository pattern with Service Layer for data access abstraction in .NET. Use when separating data access logic from business logic or building testable data layers.
Implements WPF Adorner decoration layers with AdornerLayer, AdornerDecorator, and custom Adorner patterns. Use when building drag handles, validation indicators, watermarks, selection visuals, or resize grips.
Implements WPF UI Automation for accessibility using AutomationPeer and AutomationProperties. Use when building accessible applications or enabling screen reader support.
Implements WPF drag and drop functionality using DragDrop.DoDragDrop, DataObject, and drag/drop events. Use when building file drop zones, list reordering, or inter-application data transfer.
Implements Right-to-Left (RTL) layout support in WPF using FlowDirection. Use when building applications for Arabic, Hebrew, Persian, or other RTL languages.
Implements WPF data validation using ValidationRule, IDataErrorInfo, and INotifyDataErrorInfo. Use when building forms, validating user input, or displaying validation errors in UI.
Integrates LiveCharts2 for data visualization in WPF with SkiaSharp rendering. Use when building charts, graphs, or dashboards with CartesianChart, PieChart, or real-time data updates.
Integrates Nodify library for building node-based editors in WPF with MVVM. Use when creating visual scripting, workflow editors, state machines, or any node graph UI with NodifyEditor, Node, Connector, and Connection controls. Covers EditorGestures configuration, multi-selection with CanSelectMultipleItems, SelectedItems null pitfall, keyboard event handling via Window PreviewKeyDown Behavior pattern, and ItemContainerGenerator-based selection state reading.
Integrates multimedia content in WPF including MediaElement video/audio playback, Image control display, and SoundPlayerAction effects. Use when building media players, galleries, or multimedia UIs.
Integrates WPF-UI (Wpf.Ui) library for Fluent Design in WPF applications. Use when building modern UI with FluentWindow, NavigationView, SnackbarService, or theme management.
Localizes WPF applications using resource files, x:Uid, and BAML localization. Use when building multi-language applications or supporting right-to-left layouts.
Localizes WPF applications using BAML localization with x:Uid attributes and LocBaml tool. Use when building enterprise multi-language applications requiring satellite assemblies.
Generates WPF Behavior<T> classes using Microsoft.Xaml.Behaviors.Wpf. Use when adding reusable interaction logic to controls, creating drag behaviors, or scaffolding a new Behavior class. Usage: /wpf-dev-pack:make-wpf-behavior <BehaviorName>
Generates WPF IValueConverter or IMultiValueConverter classes with MarkupExtension pattern. Use when creating a new value converter, scaffolding a MultiValueConverter, or adding a converter with direct XAML usage. Usage: /wpf-dev-pack:make-wpf-converter <ConverterName> [multi]
Generates WPF CustomControl C# class and XAML ControlTemplate style from a control name. Use when creating a new custom control, scaffolding a templated control, or generating CustomControl boilerplate code. Usage: /wpf-dev-pack:make-wpf-custom-control <ControlName>
Scaffolds a complete WPF project structure with MVVM, DI, and best practices. Use when starting a new WPF application, creating a WPF solution from scratch, or setting up project structure with CommunityToolkit.Mvvm or Prism. Usage: /wpf-dev-pack:make-wpf-project <ProjectName> [--minimal|--full|--prism]
Generates WPF service interface, implementation class, and DI registration. Use when adding a new service layer, creating a service with interface separation, or scaffolding a service class with DI wiring. Usage: /wpf-dev-pack:make-wpf-service <ServiceName> [--no-interface]
Generates WPF UserControl with XAML and code-behind. Use when creating a new UserControl, scaffolding a composite UI component, or generating a UserControl with optional ViewModel. Usage: /wpf-dev-pack:make-wpf-usercontrol <ControlName> [--with-viewmodel]
Generates WPF ViewModel with View, DI registration, and DataTemplate mapping in one step. Use when creating a new screen, adding a View-ViewModel pair, or scaffolding ViewModel boilerplate with DI wiring. Usage: /wpf-dev-pack:make-wpf-viewmodel <ViewModelName> [--with-view] [--no-mapping]
Syncs WPF Keyboard.Modifiers with ScottPlot's internal keyboard state before processing MouseWheel events. Use when ScottPlot WPF control requires Ctrl+MouseWheel for zoom but only works after clicking to give focus, or when ScottPlot MouseWheel zoom ignores modifier keys without keyboard focus.
Designs WPF solution and project structures based on Clean Architecture. Use when creating new WPF solutions, organizing layers, or establishing project naming conventions.
Implements xUnit unit tests for WPF ViewModels with CommunityToolkit.Mvvm. Covers PropertyChanged verification, RelayCommand testing, CanExecute logic, and service mocking with NSubstitute. Use when writing ViewModel tests or setting up a test project for WPF MVVM.
Explains WPF Dispatcher priority system and threading patterns. Use when implementing background operations, maintaining UI responsiveness, or understanding task scheduling order.
Explains WPF content model hierarchy including ContentControl, ItemsControl, and Headered variants. Use when selecting base classes for custom controls or understanding content/items properties.
Implements IValueConverter as MarkupExtension for direct XAML usage without StaticResource. Use when creating converters to eliminate resource dictionary declarations.
Implements compile-time regex using GeneratedRegexAttribute Source Generator. Use when working with Regex patterns for better performance and AOT compatibility.
Implements XAML behaviors and triggers using Microsoft.Xaml.Behaviors.Wpf. Use when adding interactivity to XAML without code-behind, implementing EventToCommand patterns, or creating reusable behaviors.
Uses WPF Clipboard for copy/paste operations with text, images, and custom data formats. Use when implementing copy/paste functionality or inter-application data transfer.
Converts long inline XAML bindings to Property Element Syntax for better readability. Use when XAML binding expressions become too long or complex.
Implements FluentValidation with WPF INotifyDataErrorInfo bridge for form validation. Use when building complex validation rules with RuleFor, AbstractValidator, or integrating FluentValidation with CommunityToolkit.Mvvm.
Implements WPF UI virtualization for large data sets using VirtualizingStackPanel. Use when displaying 1000+ items in ItemsControl, ListView, or DataGrid to prevent memory and performance issues.
Implements dependency injection using GenericHost in .NET Console Applications. Use when building console applications that require DI, hosted services, or background tasks.
Configures Dependency Injection using Microsoft.Extensions.DependencyInjection and GenericHost. Use when setting up DI container, registering services, or implementing IoC patterns in .NET projects.
Configures ThemeInfo attribute in AssemblyInfo.cs for WPF CustomControl Generic.xaml auto-loading. Use when creating WPF Custom Control Library projects or troubleshooting missing control styles.
Creates WPF graphics dynamically in C# code using Shape, PathGeometry, and PathFigure classes. Use when building charts, diagrams, or procedurally generated graphics.
Creates WPF animations using Storyboard, Timeline, and EasingFunction patterns. Use when implementing UI transitions, state change visualizations, or interactive feedback effects.
Creates WPF Brush patterns including SolidColorBrush, LinearGradientBrush, RadialGradientBrush, ImageBrush, and VisualBrush. Use when filling shapes with colors, gradients, images, or tile patterns.
Creates WPF dialog windows including modal dialogs, MessageBox, and common dialogs. Use when implementing confirmation prompts, settings windows, or file/folder pickers.
Creates WPF FlowDocument for rich text display with Paragraph, Table, List elements. Use when building document viewers, rich text editors, or printable reports.
Creates scalable vector icons in WPF using PathGeometry and GeometryGroup. Use when building resolution-independent icons, icon buttons, or symbol libraries.
Customizes WPF control appearance using ControlTemplate with TemplateBinding and ContentPresenter. Use when completely changing control visuals, implementing state-based feedback, or TemplatedParent binding.
Embeds PDB debugging symbols into EXE/DLL files. Use when configuring embedded debug symbols, single-file deployment, Source Link integration, or dotnet publish settings.
Fixes FlaUI mouse click/drag failures in WPF UI automation. Use when FlaUI drag-and-drop silently fails, Mouse.Down has no effect, SendInput click is ignored, adorner flickers during drag, Keyboard.Press breaks the next mouse gesture, ReleaseAllKeys causes unexpected panning, canvas drag selection hits the wrong position, or FlaUI xUnit tests fail intermittently due to parallel execution. Covers xUnit parallel test disabling (xunit.runner.json), stuck-key diagnosis, ReleaseAllKeys vs ReleaseModifierKeys pattern, Keyboard.Press vs Type distinction, SetCursorPos vs SendInput hit-test issues, drag interpolation tuning, and UIA BoundingRectangle-based coordinate calculation.
Discovers and interacts with Prism IDialogAware modal windows in FlaUI UI automation. Use when testing Prism dialogs that use TitlelessWindow style, CommonWindow with empty Title, modal Progress dialogs without title bar, or when ModalWindows search returns unexpected results. Covers child-control-based dialog identification, IsCancel button ESC key verification, and Status Bar message assertion patterns.
Solves FlaUI element discovery failures in WPF UI automation. Use when FindAllDescendants returns empty or missing elements, AutomationId is set but not visible in UIA tree, ByAutomationId finds nothing, connector/node elements can't be located, or Shape-based controls (Connection, Path) don't appear in automation tree. Covers AutomationId placement on ItemContainer vs content elements, FindAllDescendants depth limitations, and Shape/AutomationPeer visibility rules.
Formats dates, numbers, and currency with culture awareness in WPF. Use when displaying localized data formats or building international applications.
Formats WPF XAML and C# code using XamlStyler and dotnet format. Generates Settings.XamlStyler and .editorconfig files automatically. Use when code formatting or style cleanup is needed.
Implements asynchronous programming patterns using Task, ValueTask, and ConfigureAwait in .NET. Use when building non-blocking I/O operations or improving application responsiveness.
Implements ErrorOr result pattern for service layer error handling in WPF MVVM. Use when returning errors from services instead of throwing exceptions, or integrating ErrorOr with FluentValidation and CommunityToolkit.Mvvm.
Resolves text font inheritance issues when using Segoe Fluent Icons in WPF CustomControl. Use when TextBlocks inherit icon fonts unexpectedly within ControlTemplate.
Manages literal strings by pre-defining them as const string in C#. Use when organizing string constants, log messages, exception messages, or UI texts across the codebase.
Manages WPF Style definitions and ResourceDictionary patterns including BasedOn inheritance and resource merging. Use when building theme systems, organizing resources, or choosing between StaticResource and DynamicResource.
Manages WPF Application lifecycle including Startup, Exit, SessionEnding events and single instance detection. Use when handling app initialization, shutdown, or preventing multiple instances.
Encapsulates CollectionView in Service Layer to maintain MVVM principles in WPF. Use when implementing filtering, sorting, or grouping while keeping ViewModels free of WPF dependencies.
Manages focus behavior for WPF Popup controls using PreviewMouseDown events. Use when Popup loses focus unexpectedly or needs to stay open during user interaction.
Migrates WPF applications from .NET Framework to .NET 6+. Use when upgrading legacy WPF apps, resolving compatibility issues, or modernizing project files.
Navigates WPF Visual Tree and Logical Tree with VisualTreeHelper and LogicalTreeHelper patterns. Use when traversing elements, accessing template internals, or understanding event routing.
Implements WPF routed events including Bubbling, Tunneling, and Direct strategies. Use when creating custom routed events, handling event propagation, or understanding Preview events.
Implements fast O(1) lookup patterns using HashSet, FrozenSet, and optimized Dictionary in .NET. Use when building high-performance search or membership testing operations.
Optimizes standard I/O and file operations for high-performance data processing in .NET. Use when building high-throughput file processing or competitive programming solutions.
Implements Zero Allocation patterns using Span, ArrayPool, and ObjectPool for memory efficiency in .NET. Use when reducing GC pressure or optimizing high-performance memory operations.
Covers WPF memory optimization including Freezable patterns, common memory leak causes, and diagnostic techniques. Use when experiencing memory growth, implementing resource caching, or debugging memory issues.
Implements parallel processing using Parallel, PLINQ, and ConcurrentCollections in .NET. Use when processing CPU-bound tasks in parallel or improving multi-core utilization.
Guides WPF application publishing and installer options. Use when user mentions publish, deploy, release, packaging, or installer to help choose deployment method and installer technology.
Renders high-performance graphics using WPF DrawingContext for 10-50x improvement over Shape. Use when drawing large numbers of shapes or optimizing rendering performance.
Implements lightweight rendering using WPF DrawingVisual with ContainerVisual, VisualCollection, and DrawingContext. Use when rendering large-scale graphics, charts, game graphics, or custom visuals.
Explains WPF rendering pipeline (Measure/Arrange/Render passes) and hardware acceleration tiers. Use when debugging layout issues, optimizing render performance, or understanding why software rendering occurs.
Provides high-performance WPF rendering techniques including DrawingVisual, WriteableBitmap, CompositionTarget.Rendering, and BitmapCache. Use when implementing real-time graphics, game loops, particle systems, charts, or when Shape controls cause performance issues.
.NET Development Tutorial with Claude Code
This repository provides skills, rules, and agent configurations for .NET/WPF development using Claude Code.
Claude Code plugin for WPF development.
# Step 1: Add the marketplace (one-time)
/plugin marketplace add christian289/dotnet-with-claudecode
# Step 2: Install the plugin
/plugin install wpf-dev-pack@dotnet-claude-plugins
This repository includes shared git hooks for automated version bumping of wpf-dev-pack.
After cloning the repository, run one of the following:
# Option 1: Direct configuration
# 방법 1: 직접 설정
git config core.hooksPath .githooks
# Option 2: Use install script (Windows PowerShell)
# 방법 2: 설치 스크립트 사용 (Windows PowerShell)
.\.githooks\install.ps1
# Option 2: Use install script (Linux/Mac)
# 방법 2: 설치 스크립트 사용 (Linux/Mac)
./.githooks/install.sh
wpf-dev-pack patch version when pushing changes to wpf-dev-pack/ directory (excluding plugin.json and README.md)Contributions are welcome! Please see CONTRIBUTING.md.
This project is licensed under the MIT License.
Team-oriented workflow plugin with role agents, 27 specialist agents, ECC-inspired commands, layered rules, and hooks skeleton.
Executes bash commands
Hook triggers when Bash tool is used
Modifies files
Hook triggers on file write and edit operations
Uses power tools
Uses Bash, Write, or Edit tools
Comprehensive skill pack with 66 specialized skills for full-stack developers: 12 language experts (Python, TypeScript, Go, Rust, C++, Swift, Kotlin, C#, PHP, Java, SQL, JavaScript), 10 backend frameworks, 6 frontend/mobile, plus infrastructure, DevOps, security, and testing. Features progressive disclosure architecture for 50% faster loading.
Access thousands of AI prompts and skills directly in your AI coding assistant. Search prompts, discover skills, save your own, and improve prompts with AI.
Upstash Context7 MCP server for up-to-date documentation lookup. Pull version-specific documentation and code examples directly from source repositories into your LLM context.
Complete developer toolkit for Claude Code
Use this agent when you need expert assistance with React Native development tasks including code analysis, component creation, debugging, performance optimization, or architectural decisions. Examples: <example>Context: User is working on a React Native app and needs help with a navigation issue. user: 'My stack navigator isn't working properly when I try to navigate between screens' assistant: 'Let me use the react-native-dev agent to analyze your navigation setup and provide a solution' <commentary>Since this is a React Native specific issue, use the react-native-dev agent to provide expert guidance on navigation problems.</commentary></example> <example>Context: User wants to create a new component that follows the existing app structure. user: 'I need to create a custom button component that matches our app's design system' assistant: 'I'll use the react-native-dev agent to create a button component that aligns with your existing codebase structure and design patterns' <commentary>The user needs React Native component development that should follow existing patterns, so use the react-native-dev agent.</commentary></example>
Uses power tools
Uses Bash, Write, or Edit tools