.claude/skills/dotnet-feature/SKILL.md
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).
npx skillsauth add cwoodruff/morespeakers-com dotnet-featureInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
namespace MoreSpeakers.Web;).IUserManager), never concrete types.async/await throughout the stack.src/MoreSpeakers.Domain)IDataStore, IManager) should return Task<T>.src/MoreSpeakers.Data)MoreSpeakersDbContext.sql-schema skill.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);
}
}
src/MoreSpeakers.Managers)src/MoreSpeakers.Web)_SpeakerGrid.cshtml) for HTMX targets.The Container (Parent Page):
<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):
public async Task<IActionResult> OnGetLoadMoreAsync()
{
var items = await _manager.GetNextBatchAsync();
return Partial("_ListPartial", items);
}
Domain.IDataStore interface in Domain.DataStore in Data.DataStore in Program.cs (Scoped).IManager interface in Domain.Manager in Managers.Manager in Program.cs (Scoped).tools
Cross-platform path handling and command patterns
development
Update tests when changing APIs — no exceptions
development
Core conventions and patterns used in the Squad codebase
tools
Find and resume interrupted Copilot CLI sessions using session_store queries