smithery/christian289

structuring-avalonia-projects

Guides the design of AvaloniaUI solution and project structures. Use when creating new AvaloniaUI solutions or organizing projects following naming conventions and layer separation.

Installation

$ npx skills add smithery/christian289 --skill structuring-avalonia-projects

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/christian289.

npx skills add smithery/christian289

Browse all from smithery/christian289

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 2,491 B
  • docs SUMMARY.md 218 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

6.2 AvaloniaUI Solution and Project Structure

6.2.1 Project Naming Conventions

SolutionName/
├── SolutionName.Abstractions      // .NET Class Library (Interface, abstract class, and other abstract types)
├── SolutionName.Core              // .NET Class Library (Business logic, pure C#)
├── SolutionName.Core.Tests        // xUnit Test Project
├── SolutionName.ViewModels        // .NET Class Library (MVVM ViewModel)
├── SolutionName.AvaloniaServices  // Avalonia Class Library (Avalonia-related services)
├── SolutionName.AvaloniaLib       // Avalonia Class Library (Reusable components)
├── SolutionName.AvaloniaApp       // Avalonia Application Project (Entry point)
├── SolutionName.UI                // Avalonia Custom Control Library (Custom controls)
└── [Solution Folders]
    ├── SolutionName/              // Main project group
    └── Common/                    // Common project group

Naming by Project Type:

  • .Abstractions: .NET Class Library - Defines abstract types like Interface, abstract class (Inversion of Control)
  • .Core: .NET Class Library - Business logic, data models, services (UI framework independent)
  • .Core.Tests: xUnit/NUnit/MSTest Test Project
  • .ViewModels: .NET Class Library - MVVM ViewModel (UI framework independent)
  • .AvaloniaServices: Avalonia Class Library - Avalonia-related services (DialogService, NavigationService, etc.)
  • .AvaloniaLib: Avalonia Class Library - Reusable UserControl, Window, Converter, Behavior, AttachedProperty
  • .AvaloniaApp: Avalonia Application Project - Entry point, App.axaml
  • .UI: Avalonia Custom Control Library - ControlTheme-based custom controls

Project Dependency Hierarchy:

SolutionName.AvaloniaApp
    ↓ references
SolutionName.Abstractions (Top layer - does not depend on other projects)
    ↓ references
SolutionName.Core

Role of the Abstractions Layer:

  • Houses all Interfaces and abstract classes
  • Dependency inversion through abstract types instead of direct references to concrete types (Dependency Inversion Principle)
  • Actual implementations injected via DI container at runtime
  • Can be replaced with Mock objects during testing