From wpf-dev-pack
Generates WPF service interface, implementation class, and DI registration in .NET solutions. Detects project structure for file placement (.Abstractions, .Core, .WpfServices). Supports CommunityToolkit.Mvvm/Prism. Usage: /wpf-dev-pack:make-wpf-service <ServiceName> [--no-interface].
npx claudepluginhub christian289/dotnet-with-claudecode --plugin wpf-dev-packThis skill uses the workspace's default tool permissions.
**If `$0` is empty, use the AskUserQuestion tool to ask: "Enter the Service name (e.g., DataExport, FileManager)". Do NOT proceed until a valid name is provided. Use the response as the ServiceName for all subsequent steps.**
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
If $0 is empty, use the AskUserQuestion tool to ask: "Enter the Service name (e.g., DataExport, FileManager)". Do NOT proceed until a valid name is provided. Use the response as the ServiceName for all subsequent steps.
Generate a $0Service with interface + implementation class + DI registration.
Automatically places files in the correct project based on solution structure.
If --no-interface is appended, skip interface generation.
{Namespace} with the project's root namespace detected from csproj or existing code.# Interface + Implementation + DI registration
/wpf-dev-pack:make-wpf-service DataExport
# Implementation only (no interface) — for simple services
/wpf-dev-pack:make-wpf-service FileManager --no-interface
$0 is the service name (without Service suffix — auto-appended)
DataExport → IDataExportService.cs + DataExportService.cs--no-interface flag: Skip interface generation (class-only)Search for solution file and identify projects by naming convention:
| Project Suffix | Purpose | Files Placed |
|---|---|---|
.Abstractions | Interfaces | I$0Service.cs |
.Core | Business logic | $0Service.cs (UI-independent) |
.WpfServices | WPF-dependent services | $0Service.cs (if needs WPF types) |
.WpfApp | Application | DI registration in App.xaml.cs |
Fallback rules:
.Abstractions project → place interface in Services/ folder of main project.Core or .WpfServices → place implementation in Services/ folder of main projectServices/ folderCreate I$0Service.cs:
namespace {Namespace}.Services;
public interface I$0Service
{
// TODO: Define service contract
// TODO: 서비스 계약 정의
}
Create $0Service.cs:
namespace {Namespace}.Services;
public sealed class $0Service : I$0Service
{
// TODO: Implement service
// TODO: 서비스 구현
}
If --no-interface:
namespace {Namespace}.Services;
public sealed class $0Service
{
// TODO: Implement service
// TODO: 서비스 구현
}
Locate App.xaml.cs and add in ConfigureServices:
// With interface
services.AddSingleton<I$0Service, $0Service>();
// Without interface (--no-interface)
services.AddSingleton<$0Service>();
Locate App.xaml.cs and add in RegisterTypes:
// With interface
containerRegistry.RegisterSingleton<I$0Service, $0Service>();
// Without interface (--no-interface)
containerRegistry.RegisterSingleton<$0Service>();
Output list of generated/modified files and next steps guidance.
{AbstractionsProject}/
└── Services/
└── I$0Service.cs
{CoreProject}/
└── Services/
└── $0Service.cs
{WpfAppProject}/
└── App.xaml.cs (DI registration added)
{CoreProject}/
└── Services/
└── $0Service.cs
{WpfAppProject}/
└── App.xaml.cs (DI registration added)
/wpf-dev-pack:make-wpf-project first