Purpose
Guide small, safe changes to this public multi-package .NET library while preserving build, tests, packaging, and public compatibility.
When To Use
- Changes under
src/**.
- Behavior changes requiring tests under
test/**.
- Changes to
.csproj, targets, dependencies, public types/members, XML docs, or package metadata.
- Any task that may affect package identity, assembly identity, namespace, dependency ranges, trimming/AOT annotations, analyzers, generators, or consumer compatibility.
When Not To Use
- Behavior-preserving refactoring is the main task: use
dotnet-refactoring-engineer.
- Workflows, release, NuGet publishing, or recovery are the main task: use
ci-release-governance.
- Reviewing an existing PR/diff is the task: use
dotnet-pr-review.
- The task changes only agent guidance or documentation with no library behavior impact.
Process
- Read root
AGENTS.md and the files directly related to the requested change.
- Identify the affected package(s):
Dapper.FluentMap, Dapper.FluentMap.Dommel, FluentMap.DependencyInjection, FluentMap.Analyzers, or FluentMap.Generators.
- Determine whether the change affects public API, source/binary/behavior compatibility, target frameworks, dependency ranges, Dapper/Dommel integration, global state/cache, package output, or documentation.
- Preserve independent identities: project name, path, assembly name, namespace, and NuGet
PackageId are not interchangeable.
- Implement the smallest coherent change using existing project patterns.
- Add or update tests for observable behavior changes; use regression tests for bug fixes.
- Update consumer documentation and changelog only when the public contract or documented behavior changes.
- For dependency, target, PackageId, metadata, or pack output changes, combine with
ci-release-governance.
- Run targeted validation first, then broader solution or package validation when risk requires it.
- Review the full diff for unrelated modernization, formatting churn, project metadata drift, or weakened validation.
Repository Baseline
- Public packages currently target
netstandard2.0.
- The shared package version base is
FluentMapPackageVersionPrefix in Directory.Build.props, with an explicit Version override in release workflows.
- Package IDs currently include:
Dapper.FluentMap
Dapper.FluentMap.Dommel
FluentMap.DependencyInjection
FluentMap.Analyzers
FluentMap.Generators
- Dependency versions are declared where the current project files declare them; this repository does not currently use Central Package Management.
Dapper.FluentMap.slnx is preferred for current SDK validation; Dapper.FluentMap.sln remains a compatibility fallback.
Validation
Use the commands from AGENTS.md that match the risk. As a starting point:
dotnet restore ./Dapper.FluentMap.slnx
dotnet build ./Dapper.FluentMap.slnx --configuration Release --no-restore
dotnet test ./Dapper.FluentMap.slnx --configuration Release --no-build
When package output, metadata, dependency ranges, targets, or release compatibility are affected, also run pack validation using the actual eng scripts documented in AGENTS.md.
Restrictions
- Do not change
PackageId, targets, dependency ranges, authors, license, URLs, Source Link/provenance, or package readme/icon behavior without explicit scope.
- Do not add package-management systems, lock-file policy, source generators, analyzers, nullable, NativeAOT/trimming claims, or SDK upgrades as incidental work.
- Do not make internals public just for tests.
- Do not reduce warnings, tests, analyzers, audit, or package validation to get a green run.
- Do not publish packages, create tags, or trigger releases unless explicitly requested.
Quality Bar
A good library change resolves the requested behavior with a focused diff, preserves unrelated contracts, tests the relevant observable behavior, and keeps build/test/pack expectations consistent with the repository baseline.
1---2name: dotnet-library-change3description: Use this skill when changing Dapper-FluentMap production code, public contracts, project files, PackageIds, package metadata, dependencies, or related tests. Do not use for pure CI/release work or behavior-preserving refactoring as the primary task.4license: MIT5---67# Purpose89Guide small, safe changes to this public multi-package .NET library while preserving build, tests, packaging, and public compatibility.1011# When To Use1213- Changes under `src/**`.14- Behavior changes requiring tests under `test/**`.15- Changes to `.csproj`, targets, dependencies, public types/members, XML docs, or package metadata.16- Any task that may affect package identity, assembly identity, namespace, dependency ranges, trimming/AOT annotations, analyzers, generators, or consumer compatibility.1718# When Not To Use1920- Behavior-preserving refactoring is the main task: use `dotnet-refactoring-engineer`.21- Workflows, release, NuGet publishing, or recovery are the main task: use `ci-release-governance`.22- Reviewing an existing PR/diff is the task: use `dotnet-pr-review`.23- The task changes only agent guidance or documentation with no library behavior impact.2425# Process26271. Read root `AGENTS.md` and the files directly related to the requested change.282. Identify the affected package(s): `Dapper.FluentMap`, `Dapper.FluentMap.Dommel`, `FluentMap.DependencyInjection`, `FluentMap.Analyzers`, or `FluentMap.Generators`.293. Determine whether the change affects public API, source/binary/behavior compatibility, target frameworks, dependency ranges, Dapper/Dommel integration, global state/cache, package output, or documentation.304. Preserve independent identities: project name, path, assembly name, namespace, and NuGet `PackageId` are not interchangeable.315. Implement the smallest coherent change using existing project patterns.326. Add or update tests for observable behavior changes; use regression tests for bug fixes.337. Update consumer documentation and changelog only when the public contract or documented behavior changes.348. For dependency, target, PackageId, metadata, or pack output changes, combine with `ci-release-governance`.359. Run targeted validation first, then broader solution or package validation when risk requires it.3610. Review the full diff for unrelated modernization, formatting churn, project metadata drift, or weakened validation.3738# Repository Baseline3940- Public packages currently target `netstandard2.0`.41- The shared package version base is `FluentMapPackageVersionPrefix` in `Directory.Build.props`, with an explicit `Version` override in release workflows.42- Package IDs currently include:43 - `Dapper.FluentMap`44 - `Dapper.FluentMap.Dommel`45 - `FluentMap.DependencyInjection`46 - `FluentMap.Analyzers`47 - `FluentMap.Generators`48- Dependency versions are declared where the current project files declare them; this repository does not currently use Central Package Management.49- `Dapper.FluentMap.slnx` is preferred for current SDK validation; `Dapper.FluentMap.sln` remains a compatibility fallback.5051# Validation5253Use the commands from `AGENTS.md` that match the risk. As a starting point:5455```bash56dotnet restore ./Dapper.FluentMap.slnx57dotnet build ./Dapper.FluentMap.slnx --configuration Release --no-restore58dotnet test ./Dapper.FluentMap.slnx --configuration Release --no-build59```6061When package output, metadata, dependency ranges, targets, or release compatibility are affected, also run pack validation using the actual `eng` scripts documented in `AGENTS.md`.6263# Restrictions6465- Do not change `PackageId`, targets, dependency ranges, authors, license, URLs, Source Link/provenance, or package readme/icon behavior without explicit scope.66- Do not add package-management systems, lock-file policy, source generators, analyzers, nullable, NativeAOT/trimming claims, or SDK upgrades as incidental work.67- Do not make internals public just for tests.68- Do not reduce warnings, tests, analyzers, audit, or package validation to get a green run.69- Do not publish packages, create tags, or trigger releases unless explicitly requested.7071# Quality Bar7273A good library change resolves the requested behavior with a focused diff, preserves unrelated contracts, tests the relevant observable behavior, and keeps build/test/pack expectations consistent with the repository baseline.