SuperAPI AI Directory

solid-csharp

Coding & development

View repository

Updated 10-15 21:49

About this skill

Before writing any new code it requires a DRY check -- grep the codebase and Core/Services/Core/Contracts for existing logic to reuse before creating something new. See principles.md for the 5 SOLID principles and patterns.md for directory layout, testing, and record usage.

SOLID C# - Modular Architecture

Agent Workflow (MANDATORY)

Before ANY implementation, spawn 3 agents in parallel, one Agent call each with a name:

  1. fuse-ai-pilot:explore-codebase - Analyze existing architecture
  2. fuse-ai-pilot:research-expert - Verify .NET docs via Context7
  3. fuse-ai-pilot:sniper - Post-implementation validation

DRY - Reuse Before Creating (MANDATORY)

Before writing ANY new code:

  1. Grep the codebase for similar interfaces, services, or logic
  2. Check shared locations: Core/Services/, Core/Contracts/
  3. If similar code exists -> extend/reuse instead of duplicate
  4. If code will be used by 2+ features -> create it in Core/

Architecture (Modules MANDATORY)

Layer Location
Controllers Modules/[Feature]/Controllers/
Services Modules/[Feature]/Services/
Repositories Modules/[Feature]/Repositories/
Contracts Modules/[Feature]/Contracts/
Models Modules/[Feature]/Models/
Shared Core/{Services,Contracts,Models}/

NEVER use flat structure - always Modules/[Feature]/


Critical Rules (MANDATORY)

Rule Value
File limit FUSE_SOLID_MAX_LINES
Controllers Thin, delegate to services
Interfaces Contracts/ directory ONLY
XML docs Every public member documented
DI Use Microsoft.Extensions.DependencyInjection
Small interfaces 1-3 members max
Records Prefer record for DTOs and value objects

Reference Guide

Topic Reference When to consult
SOLID Principles principles.md Quick reference for all 5 principles
Patterns & Structure patterns.md Directory layout, testing, records

Forbidden

Anti-Pattern Fix
Files over FUSE_SOLID_MAX_LINES Split by responsibility
Interfaces in impl files Move to Contracts/ directory
Fat interfaces (4+ members) Split into focused interfaces
Flat project structure Use Modules/[Feature]/
new for dependencies Use constructor injection + DI
Service Locator pattern Use constructor injection