From dotnet-10
Classify a legacy .NET Framework 4.8 codebase one feature slice at a time, producing a reviewable artifact that names candidate modules, *deep modules* (Ousterhout sense — narrow public surface, deep implementation) and *hierarchical / nested modules* (parent-of-children), dependency relationships, and touched areas. The classifier is a *deep-thinking interactive skill*: it studies legacy code carefully, asks one question at a time, builds shared understanding with whoever knows the slice, and embraces progressive disclosure — a 2.5-million-line codebase cannot be held in any one head, so the classifier works slice by slice and accumulates a map. Pragmatic, not dogmatic; uses Ousterhout depth or nesting hierarchy or both, whichever lens fits the slice. Pairs with `dotnet-48:mvc-ui-behaviors` (behavioral classification) during modernization. Use when the user asks "what natural module seams already exist", "find deep modules in our .NET 4.8 source", "carve a new module out of MVC 5", "what bounded contexts are hiding in this legacy app", "study this legacy slice with me", "let's classify the X area", or is planning incremental modernization of legacy ASP.NET MVC 5 / Web Forms code into a .NET 10 modular monolith. Status: placeholder; the artifact schema and worked examples are to be written. Applies to the dotnet-10 plugin (input is .NET 4.8 source; output is consumed by .NET 10 modular design).
How this skill is triggered — by the user, by Claude, or both
Slash command
/dotnet-10:modular-ddd-classifierThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Status — placeholder.** Scaffolded; deep content (artifact schema, worked examples, the interactive question protocol) is to be written. For the working methodology today, use [`modular-monolith`](../modular-monolith/SKILL.md). For legacy *behavior* extraction (the sibling concern that captures *what* a slice does), see `dotnet-48:mvc-ui-behaviors`.
Status — placeholder. Scaffolded; deep content (artifact schema, worked examples, the interactive question protocol) is to be written. For the working methodology today, use
modular-monolith. For legacy behavior extraction (the sibling concern that captures what a slice does), seedotnet-48:mvc-ui-behaviors.
A 2.5-million-line legacy codebase cannot be classified in a sweep. Static analyzers produce graphs nobody can read; SME interviews without grounding produce wishlists; whole-codebase rewrites die in the first iteration. The only thing that works at this scale is progressive disclosure: pick a feature slice, study it deeply with someone who knows it, write down what you found, and move to the next slice. The artifact accumulates over months; the design that emerges is grounded in what actually exists.
The classifier is the structural half of that work. Its sibling, dotnet-48:mvc-ui-behaviors, is the behavioral half. Together they capture both axes for one slice: what the slice does (behavior) and where its module seams live (structure). Using only one half ships a modern module that either misses required behaviors or re-derives the wrong boundaries.
The classifier looks for two kinds of structure simultaneously:
A slice may surface deep modules, hierarchical modules, both, or neither. The classifier names what it finds; it does not force a lens that does not fit.
Engineers planning incremental modernization of a large .NET Framework 4.8 codebase into a .NET 10 modular monolith. Comfortable reading C# 8 code with System.Web / EF6 / MVC 5 idioms. Working with a domain SME or long-time maintainer who knows the slice's history.
This is an interactive skill, not a batch tool. The shape of a session:
IPmsService actually responsible for?", "When this method calls into BillingHelper, is that an accident of history or a real coupling?", "Has anyone ever extended this safely without touching three other places?" Record both answers and the questions that the SME could not answer (those are signals too).modular-design. The artifact is one input among several to the topology design.The interactive shape matters because the classifier's value is in the conversation, not in the metrics. A static graph of 2.5M LoC tells you nothing useful; a focused conversation with the person who built the slice tells you what the metrics meant.
mvc-ui-behaviors artifact for the same slice, for cross-checking that the structural classification agrees with the captured behaviors.A markdown classification artifact per slice, including:
modular-design (the topology consumer) reads from this artifact; what modular-shared-language readsmvc-ui-behaviors — how the structural and behavioral artifacts cross-check each othermodular-monolith — orchestrator; this skill is one tool in its toolboxmodular-design — direct consumer of this skill's outputmodular-ddd — provides the DDD vocabulary this skill uses as labelsmodular-shared-language — pairs with this skill when the legacy already encodes term conflictsmodular-coupling-cohesion — uses this skill's dependency findings to validate the proposed new-world topologydotnet-48:mvc-ui-behaviors — sibling extraction skill in the legacy plugin; pair the two during modernization (behaviors are the what, this artifact is the where and the seams)npx claudepluginhub marafiq/dotnet-skills --plugin dotnetCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.