abp-automapper-to-mapperly
Use this skill when migrating an ABP Framework application or module from AutoMapper profiles to ABP's Mapperly integration, including registration, mappings…
Skill by Martin Koudelka
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/linksofteu-abp-automapper-to-mapperly
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/abp-automapper-to-mapperly
What's inside
- Skill name
abp-automapper-to-mapperly- Description
- Use this skill when migrating an ABP Framework application or module from AutoMapper profiles to ABP's Mapperly integration, including registration, mappings, call sites, and tests.
- License
- MIT
- Metadata
- author: Martin Koudelka · version: 1.0.6
- Instructions
- 37 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (7)
- README.md
- SKILL.md
- openai.yaml · agents/
- evals.json · evals/
- mapping-patterns.md · references/
- migration-playbook.md · references/
- inventory-automapper.sh · scripts/
SKILL.md (first lines)
# Migrate ABP AutoMapper to Mapperly Convert an ABP module from runtime AutoMapper profiles to explicit, source-generated Mapperly mappings while preserving mapping behavior and ABP's `IObjectMapper` abstraction. This skill covers the mapping-library migration, whether performed alone or as part of an ABP upgrade. Do not copy unrelated framework-upgrade changes, database migrations, package versions, or application-specific conventions from an example project. ## Workflow 1. Read the repository instructions and determine the requested scope: one mapping pair, one module, or the solution. Do not add packages, build, or make unrelated upgrade changes when local instructions require separate approval. 2. Inventory AutoMapper packages, module registration, profiles, direct `IMapper` usage, projections, custom resolvers/converters, hooks, inheritance, and tests. Run `scripts/inventory-automapper.sh --root <repository>` for an initial read-only scan, then inspect every reported mapping semantically. 3. Establish behavior before editing. Record renamed, flattened, ignored, defaulted, computed, enriched, reverse, collection, nullable, extra-property, and update-existing-target behavior. Ask the user whether they want behavior tests created for the migrated mappings. If yes, add focused behavior tests. If no, do not create replacement tests and remove only tests whose sole purpose is AutoMapper profile/configuration validation. Preserve all existing behavior tests in either case. 4. Read [references/migration-playbook.md](references/migration-playbook.md) for package, module, call-site, and validation changes. Consult the current ABP and Mapperly documentation for the versions actually used by the target repository before relying on version-sensitive attributes or generator behavior. 5. Convert profiles in small coherent groups. Read [references/mapping-patterns.md](references/mapping-patterns.md) and choose the narrowest fitting pattern. Prefer composable `[UserMapping(Default = false)]` methods selected with `Use = nameof(...)`, and reuse authoritative nested mappers with constructor injection and `[UseMapper]`. Reserve `AfterMap` for behavior that belongs only to a directly invoked, top-level ABP mapper. 6. Treat Mapperly compiler diagnostics as migration feedback. Default to `RequiredMappingStrategy.Target`; fix or explicitly ignore each target member. Do not broadly disable diagnostics to make the migration compile. 7. Validate each converted group in proportion to risk, following repository approval rules. Check generated-code diagnostics, mapping behavior, update mappings, null cases, and remaining AutoMapper references before removing the old package or profile. ## Required outcomes - The owning ABP module uses `Volo.Abp.Mapperly`, depends on `AbpMapperlyModule` directly or through a verified dependency, and calls `AddMapperlyObjectMapper<TModule>()`. - Each ordinary pair is implemented with `MapperBase<TSource, TTarget>` and declares both `Map(source)` and `Map(source, destination)` unless the target ABP version's base class supplies a verified equivalent. - Symmetric reverse mappings use `TwoWayMapperBase<TLeft, TRight>` only when both directions truly share semantics; otherwise create separate directional mappers. - `IObjectMapper` call sites remain library-agnostic where possible. Direct AutoMapper APIs such as `IMapper`, `ProjectTo`, profiles, resolvers, and mapping context items are replaced deliberately. - Fields populated later by orchestration are explicitly ignored, while fields owned by mapping are mapped or computed. An ignore must not silently erase behavior formerly implemented by `ForMember`, `AfterMap`, a resolver, or a converter. - Mapper attributes use `nameof` for member and method references whenever the installed API permits it. Nested paths preserve every segment with a `nameof` segment array or Mapperly's version-supported full-`nameof` syntax; never use plain `nameof(Type.Parent.Child)` as though it produced a full path. - Narrow helper methods selected with `MapProperty(..., Use = ...)` are not allowed to become implicit converters for every matching type pair. With Mapperly's default automatic discovery, mark them `[UserMapping(Default = false)]`; alternatively disable `AutoUserMappings` for the mapper and opt methods in explicitly. - Existing Mapperly mappers for nested source/target pairs are composed with `[UseMapper]` where supported. The containing mapper initializes the referenced instance, and ambiguity between multiple compatible external mappings is resolved deliberately. - Required reusable mapping behavior is implemented in Mapperly mapping methods or explicit user mappings, not only in ABP `BeforeMap`/`AfterMap` hooks. When another mapper consumes a mapper through `[UseMapper]`, Mapperly calls the exposed mapping method and does not run that mapper's ABP lifecycle hooks; behavior placed only in `AfterMap` would therefore be lost. - An included mapping configuration does not make referenced helper/user-mapping implementations magically available in the consuming mapper. Every method named by `Use` in the included configuration must also be discoverable from that mapper, and the included source and target types must be assignable from the consuming mapping's types. For related inputs that derive from a shared base DTO, prefer co-locating the mappings in one `[Mapper]` class—deriving from `MapperBase<TPrimarySource, TTarget>` for the primary pair and implementing `IAbpMapperlyMapper<TSecondarySource, TTarget>` for the additional pair—so configuration and helpers share one scope. Otherwise, repeat the mapping attributes while sharing the helper implementation. - Existing-target mappings preserve identity and collection semantics. Verify them separately from create-new mappings. - The user explicitly chooses whether new behavior tests are created. Declining them authorizes removal only of AutoMapper-specific configuration tests, never unrelated or existing behavior tests. - AutoMapper is removed only after a solution-wide scan confirms that no in-scope module or transitive integration still requires it. ## Escalate instead of guessing Stop and report the unresolved behavior when a mapping depends on runtime context, asynchronous I/O, authorization, ambient services, expression-tree projection, reference preservation, polymorphism, or collection merge semantics that cannot be represented faithfully by the selected Mapperly/ABP version. Prefer a hand-written `IObjectMapper<TSource,TTarget>` for orchestration-heavy behavior rather than hiding it in generated mapping attributes.
From Linksofteu/LinkSoft_Skills, MIT.
More from Linksofteu/LinkSoft_Skills
- 0.570score
openspec-workitem-enrichment
David Orolin
Use this skill when creating a new OpenSpec spec whose name follows `wi-<azure-devops-work-item-id>-<change-name>` so the spec can be enriched from Azure…
SkillAFreshness: AClaude Code +9 - 0.570score
sonar-findings
David Orolin
Use this skill when retrieving SonarQube issues and security hotspots for a project, branch, or pull request without changing findings or code.
SkillAFreshness: AClaude Code +9 - 0.414score
creating-linksoft-skills
David Orolin
Create or improve Agent Skills that follow the Agent Skills specification and LinkSoft repository conventions.
SkillDFreshness: DClaude Code +9 - 0.414score
ddd-application-slice
David Orolin
Use this skill when adding or extending functionality in a DDD project so the implementation fits the intended layers: controllers, application services…
SkillDFreshness: DClaude Code +9 - 0.414score
opening-in-ide
David Orolin
Opens a file or folder in a supported IDE using the nearest workspace or project context when available.
SkillDFreshness: DClaude Code +9 - 0.225score
test-skill
David Orolin
Use this skill when the user asks whether LinkSoft Skills are working, including minor wording variations or typos.
SkillDFreshness: DClaude Code +9
Signals
- Stars
- 0
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Sep 14, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.0.6
- License
- MIT
- Repository
- github.com/Linksofteu/LinkSoft_Skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Cite this page
abp-automapper-to-mapperly skill. Agent Mart. https://agentmart.dev/skills/linksofteu-abp-automapper-to-mapperly (last updated 2026-10-24)