dotnet-feature
Expert .NET 10 Full-Stack Developer skill. Use this when implementing new features, vertical slices, or modifying existing logic in the MoreSpeakers application. It covers Domain, Data (EF Core), Managers, and Web (Razor Pages + HTMX).
Best use case
dotnet-feature is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Expert .NET 10 Full-Stack Developer skill. Use this when implementing new features, vertical slices, or modifying existing logic in the MoreSpeakers application. It covers Domain, Data (EF Core), Managers, and Web (Razor Pages + HTMX).
Teams using dotnet-feature should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/dotnet-feature/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How dotnet-feature Compares
| Feature / Agent | dotnet-feature | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Expert .NET 10 Full-Stack Developer skill. Use this when implementing new features, vertical slices, or modifying existing logic in the MoreSpeakers application. It covers Domain, Data (EF Core), Managers, and Web (Razor Pages + HTMX).
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# .NET Feature Implementation Skill
## Overview
This skill guides the implementation of features following the Clean Architecture pattern used in MoreSpeakers.com. It ensures consistency across the Domain, Data, Managers, and Web layers.
## Architecture Flow
1. **Domain**: Define Interfaces, Models, and Enums. (No dependencies)
2. **Data**: Implement DataStores using EF Core. (Depends on Domain)
3. **Managers**: Implement Business Logic. (Depends on Data + Domain)
4. **Web**: Implement UI with Razor Pages and HTMX. (Depends on Managers)
## Coding Standards
### General C# Guidelines
- **Namespaces**: ALWAYS use File-Scoped Namespaces (e.g., `namespace MoreSpeakers.Web;`).
- **Injection**: ALWAYS inject Interfaces (`IUserManager`), never concrete types.
- **Async**: ALWAYS use `async/await` throughout the stack.
### 1. Domain Layer (`src/MoreSpeakers.Domain`)
- Models should be POCOs with DataAnnotations for validation.
- Interfaces (`IDataStore`, `IManager`) should return `Task<T>`.
### 2. Data Layer (`src/MoreSpeakers.Data`)
- **Pattern**: Repository/DataStore pattern.
- **Context**: Use `MoreSpeakersDbContext`.
- **Mapping**: Use AutoMapper to map between Entity and Domain models if they differ.
- **NO Migrations**: Do not run EF migrations. Schema is handled by `sql-schema` skill.
```csharp
public class SpeakerDataStore : ISpeakerDataStore
{
private readonly MoreSpeakersDbContext _context;
// ... constructor ...
public async Task<Speaker?> GetAsync(Guid id)
{
// Use AsNoTracking for read-only operations
var entity = await _context.Speakers.AsNoTracking().FirstOrDefaultAsync(x => x.Id == id);
return _mapper.Map<Speaker>(entity);
}
}
```
### 3. Manager Layer (`src/MoreSpeakers.Managers`)
- Contains all business logic.
- orchestrates calls between DataStores and external services (Email, etc.).
### 4. Web Layer (`src/MoreSpeakers.Web`)
- **Framework**: Razor Pages.
- **Interactivity**: HTMX and Hyperscript (Minimize custom JS).
- **Partials**: Use Partial Views (`_SpeakerGrid.cshtml`) for HTMX targets.
#### HTMX Pattern
**The Container (Parent Page):**
```html
<div id="list-container">
<partial name="_ListPartial" model="Model.Items" />
</div>
<button hx-get="@Url.Page("Index", "LoadMore")"
hx-target="#list-container"
hx-swap="beforeend">
Load More
</button>
```
**The Handler (PageModel):**
```csharp
public async Task<IActionResult> OnGetLoadMoreAsync()
{
var items = await _manager.GetNextBatchAsync();
return Partial("_ListPartial", items);
}
```
## Checklist for New Features
1. [ ] Defined Model in `Domain`.
2. [ ] Created `IDataStore` interface in `Domain`.
3. [ ] Implemented `DataStore` in `Data`.
4. [ ] Registered `DataStore` in `Program.cs` (Scoped).
5. [ ] Created `IManager` interface in `Domain`.
6. [ ] Implemented `Manager` in `Managers`.
7. [ ] Registered `Manager` in `Program.cs` (Scoped).
8. [ ] Created Razor Page + PageModel.
9. [ ] Implemented HTMX interactions if dynamic updates are needed.Related Skills
{skill-name}
{what this skill teaches agents}
xunit-v3-discovery
Fix xUnit v3 test projects that compile but show zero discovered tests under dotnet test.
result-web-feedback
Apply Result<T>-based feedback patterns in Razor Pages and HTMX flows.
result-foundation
Add or extend MoreSpeakers Domain Result types with explicit factory methods and structured errors.
reflection-contract-tests
Use reflection-based tests to lock an API contract before the implementation lands.
windows-compatibility
Cross-platform path handling and command patterns
test-discipline
Update tests when changing APIs — no exceptions
squad-conventions
Core conventions and patterns used in the Squad codebase
session-recovery
Find and resume interrupted Copilot CLI sessions using session_store queries
secret-handling
Never read .env files or write secrets to .squad/ committed files
release-process
Step-by-step release checklist for Squad — prevents v0.8.22-style disasters
project-conventions
Core conventions and patterns for this codebase