Claude Code is Anthropic’s agentic CLI. Because
this repo is wired with AGENTS.md and .agents/, Claude works on-convention out of the box — it
scaffolds slices, wires modules, and writes migrations the way the kit expects.
1. Install & open
npm install -g @anthropic-ai/claude-code # see the official docs for native installerscd dotnet-starter-kitclaudeOn startup, Claude Code reads CLAUDE.md, which imports AGENTS.md — so the repo map, golden rules, and
the rules index are in context immediately. The detailed rule files load on demand as Claude works.
2. Build features by describing them
You don’t invoke skills by name — describe the task and the matching skill activates:
| You say… | Skill that runs |
|---|---|
”Add a CreateInvoice feature to Billing” | add-feature |
”Scaffold a Reviews module” | add-module (incl. the four-place registration) |
| “Add a brands list+create page to the dashboard” | add-react-page |
| ”Build assignee filtering end-to-end for Tickets” | add-full-slice |
| ”Create a migration for the new column” | create-migration |
”Publish an InvoicePaid event that Notifications reacts to” | add-integration-event |
Each skill ends by building/testing, so you get working, on-convention code rather than a sketch.
3. Review before you commit
Two read-only workflows act as guardrails — ask for them by intent:
"Review my changes" → code-reviewer (diff vs. conventions, structured report)"Check architecture" → architecture-guard (boundaries, BuildingBlocks, arch tests)If the Roslyn navigator MCP is configured (the dotnet-claude-kit plugin), the reviewer also runs
detect_antipatterns and get_diagnostics for machine-found issues.
4. The build/test loop
dotnet build src/FSH.Starter.slnx # 0 warnings — the repo runs TreatWarningsAsErrorsdotnet test src/FSH.Starter.slnx # unit + architecture + integrationTo see it all running, the Aspire AppHost brings up the whole stack — Postgres, Valkey, MinIO, the migrator, the API, and both React apps — with one command:
dotnet run --project src/Host/FSH.Starter.AppHost5. Golden rules worth remembering
Claude follows these from AGENTS.md; knowing them helps you review its work:
- Module boundaries — modules talk only through
*.Contracts. Enforced byArchitecture.Tests. - Registering a module touches four places — Mediator assemblies + module array, in both the API and DbMigrator hosts. A missing Mediator marker means handlers silently don’t run.
- Tenant isolation is default-on via
BaseDbContext; opt out only viaIGlobalEntity. - Every command + paginated query needs a validator; handlers are
public sealed, returnValueTask<T>. - Structured logging only — no string interpolation in log messages.
- Don’t modify
src/BuildingBlockswithout intent — it’s shared by every module.
6. Keep the guidance sharp
The .agents/ set is living documentation. When you establish a new convention or hit a new footgun, add
or update a rule (or a skill), commit it, and the whole team’s agents improve. The
AGENTS.md & .agents/ page explains the structure;
Skills & Workflows shows how to extend the set.