Agent skill

Abp Core

by abpframework in abpframework/abp

Core ABP Framework conventions - module system, DI registration, base classes (ApplicationService, DomainService), IClock, BusinessException, localization, async patterns.

LGPL-3.0Auto-check passedFrontend & Design

Install Abp Core

skills CLI
$ npx skills add abpframework/abp --skill abp-core -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install abpframework/abp abp-core --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/abpframework/abp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/abp-core .claude/skills/abp-core && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
abp-core
GitHub stars
14k
Token cost
~1.7k tokens
SKILL.md length
450 words
Files
1
Skills in repo
18
Repo updated
First seen
Licence
LGPL-3.0

At a glance

Core ABP Framework conventions - module system, DI registration, base classes (ApplicationService, DomainService), IClock, BusinessException, localization, async patterns.

  • Working on any ABP project
  • SKILL.md covers Key Rules, Module System, Dependency Injection Conventions and Important Base Classes, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Asking about ABP fundamentals

What it does

Abp Core is an agent skill from abpframework/abp. Core ABP Framework conventions - module system, DI registration, base classes (ApplicationService, DomainService), IClock, BusinessException, localization, async patterns. Use when working on any ABP project, asking about ABP fundamentals, or unsure which skill applies.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design, covering Internationalization. The repository describes itself as: Open-source web application framework for ASP.NET Core! Offers an opinionated architecture to build enterprise software solutions with best practices on top of the .NET. Provides… The licence is LGPL-3.0.

When your agent uses it

  • Working on any ABP project
  • Asking about ABP fundamentals
  • Unsure which skill applies

Example prompts

  • “/abp-core”

What it can do on your machine

Read from SKILL.md and the folder at commit a54b599. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are csharp and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • abp.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Abp Core loads about 1.7k tokens when it runs. Until then it costs about 70 tokens; SKILL.md has 450 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~70
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from abpframework/abp at commit a54b599, republished under its LGPL-3.0 licence (© abpframework). 450 words, ~1,709 tokens.

Download SKILL.mdSave it as .claude/skills/abp-core/SKILL.md (or your agent's skills folder).
name
abp-core
description
Core ABP Framework conventions - module system, DI registration, base classes (ApplicationService, DomainService), IClock, BusinessException, localization, async patterns. Use when working on any ABP project, asking about ABP fundamentals, or unsure which skill applies.

ABP Core Conventions

Documentation: https://abp.io/docs/latest API Reference: https://abp.io/docs/api/

Key Rules

  • Use IClock / Clock.Now instead of DateTime.Now / DateTime.UtcNow
  • Use ITransientDependency / ISingletonDependency instead of AddScoped/AddTransient/AddSingleton
  • Use IRepository<T> instead of injecting DbContext directly
  • Check base class properties (Clock, CurrentUser, GuidGenerator, L) before injecting services
  • Use BusinessException with namespaced error codes for domain rule violations

Module System

Every ABP application/module has a module class that configures services:

csharp
[DependsOn(
    typeof(AbpDddDomainModule),
    typeof(AbpEntityFrameworkCoreModule)
)]
public class MyAppModule : AbpModule
{
    public override void ConfigureServices(ServiceConfigurationContext context)
    {
        // Service registration and configuration
    }
}

Note: Middleware configuration (OnApplicationInitialization) should only be done in the final host application, not in reusable modules.

Dependency Injection Conventions

Automatic Registration

ABP automatically registers services implementing marker interfaces:

  • ITransientDependency → Transient lifetime
  • ISingletonDependency → Singleton lifetime
  • IScopedDependency → Scoped lifetime

Classes inheriting from ApplicationService, DomainService, AbpController are also auto-registered.

Repository Usage

You can use the generic IRepository<TEntity, TKey> for simple CRUD operations. Define custom repository interfaces only when you need custom query methods:

csharp
// Simple CRUD - Generic repository is fine
public class BookAppService : ApplicationService
{
    private readonly IRepository<Book, Guid> _bookRepository; // ✅ OK for simple operations
}

// Custom queries needed - Define custom interface
public interface IBookRepository : IRepository<Book, Guid>
{
    Task<Book> FindByNameAsync(string name); // Custom query
}

public class BookAppService : ApplicationService
{
    private readonly IBookRepository _bookRepository; // ✅ Use custom when needed
}
Exposing Services
csharp
[ExposeServices(typeof(IMyService))]
public class MyService : IMyService, ITransientDependency { }

Important Base Classes

Base ClassPurpose
Entity<TKey>Basic entity with ID
AggregateRoot<TKey>DDD aggregate root
DomainServiceDomain business logic
ApplicationServiceUse case orchestration
AbpControllerREST API controller

ABP base classes already inject commonly used services as properties. Before injecting a service, check if it's already available:

PropertyAvailable InDescription
GuidGeneratorAll base classesGenerate GUIDs
ClockAll base classesCurrent time (use instead of DateTime)
CurrentUserAll base classesAuthenticated user info
CurrentTenantAll base classesMulti-tenancy context
L (StringLocalizer)ApplicationService, AbpControllerLocalization
AuthorizationServiceApplicationService, AbpControllerPermission checks
FeatureCheckerApplicationService, AbpControllerFeature availability
DataFilterAll base classesData filtering (soft-delete, tenant)
UnitOfWorkManagerApplicationService, DomainServiceUnit of work management
LoggerFactoryAll base classesCreate loggers
LoggerAll base classesLogging (auto-created)
LazyServiceProviderAll base classesLazy service resolution

Useful methods from base classes:

  • CheckPolicyAsync() - Check permission and throw if not granted
  • IsGrantedAsync() - Check permission without throwing
Show full SKILL.md (168 more words)Show less

Async Best Practices

  • Use async all the way - never use .Result or .Wait()
  • All async methods should end with Async suffix
  • ABP automatically handles CancellationToken in most cases (e.g., from HttpContext.RequestAborted)
  • Only pass CancellationToken explicitly when implementing custom cancellation logic

Time Handling

Never use DateTime.Now or DateTime.UtcNow directly. Use ABP's IClock service:

csharp
// In classes inheriting from base classes (ApplicationService, DomainService, etc.)
public class BookAppService : ApplicationService
{
    public void DoSomething()
    {
        var now = Clock.Now; // ✅ Already available as property
    }
}

// In other services - inject IClock
public class MyService : ITransientDependency
{
    private readonly IClock _clock;

    public MyService(IClock clock) => _clock = clock;

    public void DoSomething()
    {
        var now = _clock.Now; // ✅ Correct
        // var now = DateTime.Now; // ❌ Wrong - not testable, ignores timezone settings
    }
}

Tip: Before injecting a service, check if it's already available as a property in your base classes.

Business Exceptions

Use BusinessException for domain rule violations with namespaced error codes:

csharp
throw new BusinessException("MyModule:BookNameAlreadyExists")
    .WithData("Name", bookName);

Configure localization mapping:

csharp
Configure<AbpExceptionLocalizationOptions>(options =>
{
    options.MapCodeNamespace("MyModule", typeof(MyModuleResource));
});

Localization

  • In base classes (ApplicationService, AbpController, etc.): Use L["Key"] - this is the IStringLocalizer property
  • In other services: Inject IStringLocalizer<TResource>
  • Always localize user-facing messages and exceptions

Localization file location: *.Domain.Shared/Localization/{ResourceName}/{lang}.json

json
// Example: MyProject.Domain.Shared/Localization/MyProject/en.json
{
  "culture": "en",
  "texts": {
    "Menu:Home": "Home",
    "Welcome": "Welcome",
    "BookName": "Book Name"
  }
}

❌ Never Use (ABP Anti-Patterns)

Don't UseUse Instead
Minimal APIsABP Controllers or Auto API Controllers
MediatRApplication Services
DbContext directly in App ServicesIRepository<T>
AddScoped/AddTransient/AddSingletonITransientDependency, ISingletonDependency
DateTime.NowIClock / Clock.Now
Custom UnitOfWorkABP's IUnitOfWorkManager
Manual HTTP calls from UIABP client proxies (generate-proxy)
Hardcoded role checksPermission-based authorization
Business logic in ControllersApplication Services

© abpframework, LGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/abp-core of abpframework/abp.

Open the folder on GitHubat commit a54b599

Compare with similar skills

Abp Core next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Abp Core compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Abp Core this skillabpframework/abp14k—~1.7kAutomated safety check: PassLGPL-3.0
Readme I18nY80/bmm3442 repos~1.9kAutomated safety check: PassMIT
Rtdfany-tdf/any-tdf779—~1.1kAutomated safety check: PassMIT
Stdfany-tdf/any-tdf779—~1.1kAutomated safety check: PassMIT
Declarative Agent Developermicrosoft/work-iq1k—~3.2kAutomated safety check: PassCustom licence
Module Architecture Boundarieslakernote/easy-postman721—~3.9kAutomated safety check: PassApache-2.0

Similar skills

  • A skill your agent uses when the user wants to translate a repository README, make a repo multilingual, localize docs, add a language switcher, internationalize the README, or update localized…

    344 GitHub starsUsed in 2 repos~1.9k tokens
    Frontend & DesignAuto-check passed
  • Rtdf

    any-tdf/any-tdf

    Build, review, and troubleshoot RTDF React applications using exact component APIs, themes, icons, localization, and scaffolding.

    779 GitHub stars~1.1k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Stdf

    any-tdf/any-tdf

    Build, review, and troubleshoot STDF Svelte 5 applications using exact component APIs, themes, icons, localization, and scaffolding.

    779 GitHub stars~1.1k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Official

    Create, build, deploy, and localize declarative agents for M365 Copilot and Teams.

    1k GitHub stars~3.2k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Module Architecture Boundaries

    lakernote/easy-postman

    A skill your agent uses when adding or refactoring EasyPostman modules, shared code, plugin contracts, UI utilities, i18n, settings, theme/font handling, or deciding where a class belongs.

    721 GitHub stars~3.9k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Vtdf

    any-tdf/any-tdf

    Build, review, and troubleshoot VTDF Vue 3 applications using exact component APIs, themes, icons, localization, and scaffolding.

    779 GitHub stars~1.1k tokensUpdated today
    Frontend & DesignAuto-check passed

More from abpframework/abp

All 18 skills in this repo
  • Abp Angular

    abpframework/abp

    ABP Angular UI patterns - generate-proxy, ListService, PermissionGuard, abpLocalization pipe, ConfirmationService, ToasterService, ConfigStateService.

    14k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Abp App Nolayers

    abpframework/abp

    ABP Single-Layer (No-Layers / nolayers) application template - single project structure, feature-based file organization, no separate Domain/Application.Contracts projects.

    14k GitHub stars~575 tokensUpdated today
    Auto-check passed
  • Abp Application Layer

    abpframework/abp

    ABP Application Services, DTOs, CRUD service, object mapping (Mapperly/AutoMapper), validation, error handling.

    14k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Abp Authorization

    abpframework/abp

    ABP permission system - PermissionDefinitionProvider, [Authorize] attribute, CheckPolicyAsync, IsGrantedAsync, ICurrentUser, IPermissionManager, multi-tenancy side.

    14k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Abp Blazor

    abpframework/abp

    ABP Blazor UI patterns - AbpComponentBase, AbpCrudPageBase, DataGrid, IMenuContributor, Message/Notify, Validations, JavaScript interop.

    14k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Abp CLI

    abpframework/abp

    ABP CLI commands - generate-proxy, install-libs, add-package-ref, new-module, install-module, abp update, abp clean, abp suite generate.

    14k GitHub stars~633 tokensUpdated today
    Auto-check passed

Questions about Abp Core

What does Abp Core do?

Core ABP Framework conventions - module system, DI registration, base classes (ApplicationService, DomainService), IClock, BusinessException, localization, async patterns. Abp Core is an agent skill from abpframework/abp. Core ABP Framework conventions - module system, DI registration, base classes (ApplicationService, DomainService), IClock, BusinessException, localization, async patterns.

When should I use Abp Core?

Abp Core fits situations like: working on any ABP project; asking about ABP fundamentals; unsure which skill applies.

How do I install Abp Core in Claude Code?

Run `npx skills add abpframework/abp --skill abp-core -a claude-code`. Or copy the skill folder (.agents/skills/abp-core in abpframework/abp) into .claude/skills/abp-core in your project. Claude Code loads it when a task matches its description.

How do I install Abp Core in Codex?

Run `npx skills add abpframework/abp --skill abp-core -a codex`. Or copy the skill folder (.agents/skills/abp-core in abpframework/abp) into .agents/skills/abp-core in your project. Codex loads it when a task matches its description.

Can I use Abp Core in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add abpframework/abp --skill abp-core -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/abp-core, .gemini/skills/abp-core, .github/skills/abp-core and .opencode/skills/abp-core in your project.

What does Abp Core need to run?

SKILL.md names no scripts, command-line tools or credentials: Abp Core is instructions for the agent only.

Does Abp Core access the network?

SKILL.md names 1 domain. As links in the text: abp.io. This is read from the text; nothing was executed.

Is Abp Core safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Abp Core use?

Abp Core is published under the LGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Abp Core use?

About 1.7k tokens (SKILL.md is roughly 6.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Abp Core?

Skills that share tags, products or a category with Abp Core: Readme I18n (Y80/bmm, 344 stars), Rtdf (any-tdf/any-tdf, 779 stars), Stdf (any-tdf/any-tdf, 779 stars) and Declarative Agent Developer (microsoft/work-iq, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Abp Core?

abpframework (a GitHub organization) maintains it in abpframework/abp, which has 14,443 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 8, 2026.

Source: abpframework/abp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.