Browse Source

improve: enhance Claude Code skills descriptions and add key rules sections

pull/25041/head
maliming 7 months ago
parent
commit
2773012640
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 2
      .claude/skills/abp-angular/SKILL.md
  2. 2
      .claude/skills/abp-app-nolayers/SKILL.md
  3. 10
      .claude/skills/abp-application-layer/SKILL.md
  4. 2
      .claude/skills/abp-authorization/SKILL.md
  5. 2
      .claude/skills/abp-blazor/SKILL.md
  6. 2
      .claude/skills/abp-cli/SKILL.md
  7. 10
      .claude/skills/abp-core/SKILL.md
  8. 10
      .claude/skills/abp-ddd/SKILL.md
  9. 2
      .claude/skills/abp-dependency-rules/SKILL.md
  10. 31
      .claude/skills/abp-development-flow/SKILL.md
  11. 11
      .claude/skills/abp-ef-core/SKILL.md
  12. 2
      .claude/skills/abp-infrastructure/SKILL.md
  13. 2
      .claude/skills/abp-microservice/SKILL.md
  14. 2
      .claude/skills/abp-module/SKILL.md
  15. 2
      .claude/skills/abp-mongodb/SKILL.md
  16. 2
      .claude/skills/abp-multi-tenancy/SKILL.md
  17. 2
      .claude/skills/abp-mvc/SKILL.md
  18. 2
      .claude/skills/abp-testing/SKILL.md

2
.claude/skills/abp-angular/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-angular
description: ABP Angular UI patterns - project structure, service proxies, list components, localization, authorization, forms, modals, toast notifications. Use when working on Angular UI in ABP projects.
description: ABP Angular UI patterns - generate-proxy, ListService, PermissionGuard, abpLocalization pipe, ConfirmationService, ToasterService, ConfigStateService. Use when building or reviewing Angular UI components, routing, or service integration in ABP Angular projects.
---
# ABP Angular UI

2
.claude/skills/abp-app-nolayers/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-app-nolayers
description: ABP Single-Layer (No-Layers) application template patterns - simplified structure, file organization, simplified entities. Use when working with the single-layer web application template.
description: ABP Single-Layer (No-Layers / nolayers) application template - single project structure, feature-based file organization, no separate Domain/Application.Contracts projects. Use when working with the single-layer web application template or when the project has no layered separation.
---
# ABP Single-Layer Application Template

10
.claude/skills/abp-application-layer/SKILL.md

@ -1,12 +1,20 @@
---
name: abp-application-layer
description: ABP Application Services, DTOs, validation, error handling, object mapping patterns. Use when creating or reviewing application services, DTOs, or working in the Application or Application.Contracts projects.
description: ABP Application Services, DTOs, CRUD service, object mapping (Mapperly/AutoMapper), validation, error handling. Use when creating or reviewing application services, DTOs, or working in the Application or Application.Contracts projects.
---
# ABP Application Layer Patterns
> **Docs**: https://abp.io/docs/latest/framework/architecture/domain-driven-design/application-services
## Anti-Patterns to Avoid
- **Entity name in method**: use `GetAsync` not `GetBookAsync`
- **ID inside UpdateDto**: pass `id` as a separate parameter, not inside the DTO
- **Calling other app services in the same module**: use domain services or repositories directly
- **Using `IFormFile`/`Stream` in app service**: accept `byte[]` from controllers instead
- **Business logic in app service**: put it in domain entities or domain services
## Application Service Structure
### Interface (Application.Contracts)

2
.claude/skills/abp-authorization/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-authorization
description: ABP permission system and authorization patterns - defining permissions, using Authorize attribute, programmatic checks, current user access, multi-tenancy permissions. Use when working with permissions, authorization, or security in ABP projects.
description: ABP permission system - PermissionDefinitionProvider, [Authorize] attribute, CheckPolicyAsync, IsGrantedAsync, ICurrentUser, IPermissionManager, multi-tenancy side. Use when working with permissions, authorization, role-based access, or security in ABP projects.
---
# ABP Authorization

2
.claude/skills/abp-blazor/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-blazor
description: ABP Blazor UI patterns - component base classes, CRUD pages, localization, authorization, navigation/menu, notifications, forms, JavaScript interop. Use when working on Blazor UI in ABP projects.
description: ABP Blazor UI patterns - AbpComponentBase, AbpCrudPageBase, DataGrid, IMenuContributor, Message/Notify, Validations, JavaScript interop. Use when building or reviewing Blazor Server or WebAssembly UI components in ABP projects.
---
# ABP Blazor UI

2
.claude/skills/abp-cli/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-cli
description: ABP CLI commands reference - generate-proxy, install-libs, add-package-ref, new-module, install-module, update, clean, suite generate. Use when the user needs to run ABP CLI commands or asks about ABP tooling.
description: ABP CLI commands - generate-proxy, install-libs, add-package-ref, new-module, install-module, abp update, abp clean, abp suite generate. Use when the user asks how to run ABP CLI commands, generate proxies, install libraries, or use ABP Suite.
---
# ABP CLI Commands

10
.claude/skills/abp-core/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-core
description: Core ABP Framework conventions - module system, dependency injection, base classes, async patterns, time handling, business exceptions, localization. Use when working on any ABP project or when the user asks about ABP fundamentals.
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
@ -8,6 +8,14 @@ description: Core ABP Framework conventions - module system, dependency injectio
> **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:

10
.claude/skills/abp-ddd/SKILL.md

@ -1,12 +1,20 @@
---
name: abp-ddd
description: ABP DDD patterns - Entities, Aggregate Roots, Repositories, Domain Services, Domain Events, Specifications. Use when designing domain layer, creating entities, repositories, or domain services in ABP projects.
description: ABP DDD patterns - Entities, Aggregate Roots, value objects, Repositories, Domain Services, Domain Events, Specifications. Use when designing domain layer, creating entities, repositories, or domain services in ABP projects.
---
# ABP DDD Patterns
> **Docs**: https://abp.io/docs/latest/framework/architecture/domain-driven-design
## Anti-Patterns to Avoid
- **Anemic entities**: public setters with no behavior — use private setters + methods that enforce invariants
- **Repository for child entities**: only aggregate roots get repositories — access child entities through their root
- **Generating GUID in entity constructor**: use `IGuidGenerator` from outside and pass `id` parameter
- **Navigation properties to other aggregates**: reference by `Id` only, never add full navigation properties across aggregates
- **Domain service depending on current user**: accept values from the application layer instead
## Rich Domain Model vs Anemic Domain Model
ABP promotes **Rich Domain Model** pattern where entities contain both data AND behavior:

2
.claude/skills/abp-dependency-rules/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-dependency-rules
description: ABP layer dependency rules and project structure guardrails - correct dependency directions, repository pattern enforcement, multi-application scenarios. Use when reviewing project structure, adding new projects, or checking if dependencies are correct.
description: ABP project layer dependency rules - which projects can reference which, domain/application/infrastructure separation, cross-layer violations to avoid. Use when reviewing project structure, adding new project references, or checking if a dependency direction is correct.
---
# ABP Dependency Rules

31
.claude/skills/abp-development-flow/SKILL.md

@ -100,17 +100,7 @@ public class BookRepository : EfCoreRepository<MyDbContext, Book, Guid>, IBookRe
```
### 5. Run Migration
```bash
cd src/MyProject.EntityFrameworkCore
# Add migration
dotnet ef migrations add Added_Book
# Apply migration (choose one):
dotnet run --project ../MyProject.DbMigrator # Recommended - also seeds data
# OR
dotnet ef database update # EF Core command only
```
See `abp-ef-core` skill for migration commands. Recommended: use `DbMigrator` project to apply migrations and seed data.
### 6. Application.Contracts
Create DTOs and service interface:
@ -254,25 +244,6 @@ public class BookAppService_Tests : MyProjectApplicationTestBase
}
```
## Quick Reference Commands
### Build Solution
```bash
dotnet build
```
### Run Migrations
```bash
cd src/MyProject.EntityFrameworkCore
dotnet ef migrations add MigrationName
dotnet run --project ../MyProject.DbMigrator # Apply migration + seed data
```
### Generate Angular Proxies
```bash
abp generate-proxy -t ng
```
## Checklist for New Features
- [ ] Entity created with proper constructors

11
.claude/skills/abp-ef-core/SKILL.md

@ -1,12 +1,21 @@
---
name: abp-ef-core
description: ABP Entity Framework Core patterns - DbContext configuration, entity configuration, repository implementation, migrations, data seeding. Use when working in EntityFrameworkCore projects or with EF Core repositories.
description: ABP Entity Framework Core - DbContext, entity configuration, EfCoreRepository implementation, migrations (dotnet ef migrations add), data seeding. Use when working in EntityFrameworkCore projects, adding migrations, or implementing EF Core repositories.
---
# ABP Entity Framework Core
> **Docs**: https://abp.io/docs/latest/framework/data/entity-framework-core
## Never Do
| Don't | Do Instead |
|-------|-----------|
| Skip `b.ConfigureByConvention()` | Always call it first in entity config |
| `AddDefaultRepositories(includeAllEntities: true)` | Use `AddDefaultRepositories()` only for aggregate roots |
| Inject `DbContext` in application/domain services | Use `IRepository<T>` or custom repository interface |
| Use `DbContext` directly outside the EF Core project | Access via `GetDbContextAsync()` inside repository only |
## DbContext Configuration
```csharp

2
.claude/skills/abp-infrastructure/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-infrastructure
description: ABP infrastructure services - Settings, Features, Distributed Caching, Event Bus (local and distributed), Background Jobs, Localization. Use when working with settings, feature flags, caching, events, or background jobs in ABP.
description: ABP infrastructure services - ISettingProvider, IFeatureChecker, IDistributedCache, ILocalEventBus, IDistributedEventBus, IBackgroundJobManager, localization resource. Use when working with settings, feature flags, caching, event bus, or background jobs in ABP.
---
# ABP Infrastructure Services

2
.claude/skills/abp-microservice/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-microservice
description: ABP Microservice solution template patterns - solution structure, inter-service communication via Integration Services, distributed events, entity cache, pre-configured infrastructure. Use when working with the microservice solution template.
description: ABP Microservice solution template - service structure, Integration Services ([IntegrationService]), inter-service HTTP proxies, distributed events with Outbox/Inbox, Entity Cache, RabbitMQ/Redis/YARP setup. Use when working with the ABP microservice solution template or inter-service communication patterns.
---
# ABP Microservice Solution Template

2
.claude/skills/abp-module/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-module
description: ABP Module solution template patterns - reusable module structure, database independence (EF Core + MongoDB), virtual methods for extensibility, module options, entity extension, localization. Use when building reusable ABP modules.
description: ABP reusable Module solution template - EF Core + MongoDB dual support, virtual methods for extensibility, DbTablePrefix, module options pattern, entity extension, separate connection string. Use when building or reviewing reusable ABP modules that will be distributed or consumed by other solutions.
---
# ABP Module Solution Template

2
.claude/skills/abp-mongodb/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-mongodb
description: ABP MongoDB patterns - MongoDbContext configuration, entity configuration, repository implementation, indexing. Use when working in MongoDB projects or with MongoDB repositories in ABP.
description: ABP MongoDB patterns - AbpMongoDbContext, IMongoCollection, MongoDbRepository, no migrations, embedded documents vs references, manual UpdateAsync required. Use when working in MongoDB projects or implementing MongoDB repositories in ABP.
---
# ABP MongoDB

2
.claude/skills/abp-multi-tenancy/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-multi-tenancy
description: ABP Multi-Tenancy patterns - tenant-aware entities, data isolation, switching tenant context, disabling multi-tenant filters, tenant resolution. Use when working with multi-tenant features, tenant-specific data, or tenant isolation.
description: ABP Multi-Tenancy - IMultiTenant interface, CurrentTenant, CurrentTenant.Change(), DataFilter.Disable<IMultiTenant>(), tenant resolution order, database-per-tenant. Use when working with multi-tenant features, tenant-specific data isolation, or switching tenant context.
---
# ABP Multi-Tenancy

2
.claude/skills/abp-mvc/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-mvc
description: ABP MVC and Razor Pages UI patterns - page models, tag helpers, JavaScript API, DataTables integration, modal pages, bundle/minification. Use when working on MVC or Razor Pages UI in ABP projects.
description: ABP MVC and Razor Pages UI - AbpPageModel, abp tag helpers (abp-card, abp-dynamic-form, abp-modal), JavaScript abp.ajax/abp.auth/abp.notify, DataTables integration, bundle/minification. Use when working on MVC or Razor Pages UI in ABP projects.
---
# ABP MVC / Razor Pages UI

2
.claude/skills/abp-testing/SKILL.md

@ -1,6 +1,6 @@
---
name: abp-testing
description: ABP testing patterns - integration tests, application service tests, domain service tests, test data seeding, Shouldly assertions, mocking, multi-tenancy testing. Use when writing or reviewing tests in ABP projects.
description: ABP testing patterns - integration tests over unit tests, GetRequiredService, IDataSeedContributor, Shouldly assertions, AddAlwaysAllowAuthorization, NSubstitute mocking, WithUnitOfWorkAsync. Use when writing or reviewing tests for application services, domain services, or repositories in ABP projects.
---
# ABP Testing Patterns

Loading…
Cancel
Save