convention-learnerlisted
Install: claude install-skill zdanovichnick/dotnet-pilot
# Convention Learner
**Purpose**: prevent naming drift. Generated code that doesn't match the project's conventions
creates review friction and merge noise long after it ships.
Run this the first time you create a file in a codebase you haven't touched this session, and
whenever the request leaves naming or structure open. Skip it when the request specifies the
conventions, or when you already established them earlier in this conversation.
## Detection
Six questions. Answer the ones your change actually depends on — a new validator needs the
naming and folder answers, not the EF configuration one.
### Step 1 — Naming Suffix Convention
What suffix does this project use for its handlers/services?
```
Grep pattern: "class \w+(Handler|Service|Manager|Controller|UseCase|Interactor)"
Files: src/**/*.cs
```
Determine: `Handler`, `Service`, `Manager`, `Controller`, or a mix?
If mixed: use the suffix most common in the feature area you're working in (e.g., if `Orders/` uses `Handler`, use `Handler` for new order code even if `Customers/` uses `Service`).
### Step 2 — Folder / Architecture Style
What is the top-level organization under `src/`?
```
Glob: src/**/*.cs → inspect top-level directory names under src/<AppName>/
```
| Pattern found | Architecture style |
|--------------|-------------------|
| `Features/<Feature>/<Action>/` | Vertical Slice (VSA) |
| `Controllers/` + `Services/` + `Models/` | Layered / MVC |
| `Domain/` + `Application/` + `Infrastructure/` | Clean