About tooling
A development skill for Entity Framework Core tooling, covering the CLI, PowerShell, and MSBuild entry points for migrations, scaffolding, and compiled models. It documents option flow, testing locations, and validation practices.
Key features
- 01Manage migrations and scaffolding with dotnet ef
- 02Run database commands through PMC
- 03Generate compiled models with MSBuild
- 04Trace where command options are handled
- 05Follow testing and validation guidance
Use cases
- 01Change dotnet ef command behavior
- 02Modify PMC commands or modules
- 03Verify compiled model generation tasks
- 04Check migration script output
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ dotnet/ efcore --skill toolingAfter installing, type/toolingin Claude Code to confirm it loaded.
Details
From the project READMETooling
The dotnet ef CLI and Visual Studio Package Manager Console commands for migrations, scaffolding, and compiled models.
dotnet-ef CLI (src/dotnet-ef/)
RootCommand parses global options. Subcommands implemented in src/ef/Commands/. Each invokes MSBuild to build, then shells out via dotnet exec ef.dll, which hosts OperationExecutor.
PMC (src/EFCore.Tools/)
PowerShell module: Add-Migration, Update-Database, Scaffold-DbContext, Optimize-DbContext, etc.
MSBuild Tasks (src/EFCore.Tasks/)
NuGet package Microsoft.EntityFrameworkCore.Tasks provides build/publish-time compiled model and precompiled query generation. Targets in buildTransitive/Microsoft.EntityFrameworkCore.Tasks.targets.
Command Option Ownership
Trace an option to the code that consumes it before changing command or operation contracts. The outer dotnet-ef launcher builds the project and forwards remaining command-line arguments to ef.dll; the inner command under src/ef/Commands/ parses command-specific options.
- Keep presentation-only behavior in the inner command. For example, suppressing the completion message from
MigrationsAddCommand.Execute()should guard itsReporter.WriteInformation()call and must not changeIOperationExecutor.AddMigration(). - Forward a value through
OperationExecutorBaseonly when the design-time operation inMicrosoft.EntityFrameworkCore.Designneeds it. - Treat PMC and
EFCore.Tasksas separate entry points. Change them only when the requested behavior applies to those surfaces too.
Testing
- CLI tests:
test/dotnet-ef.Tests/,test/ef.Tests/ - EFCore.Tasks has no dedicated test project — for task/target changes, create a test project and manually run
dotnet build/dotnet publishwithEFOptimizeContext=trueto verify
Validation
- For tool changes, create a test project and manually run affected commands to verify behavior
dotnet ef migrations scriptoutput matches expected DDL