.agents/skills/create-abp-io-template/SKILL.md
Create a new ABP.IO project using CLI commands with proper template selection, configuration, and setup. Supports all ABP templates including layered, single-layer, microservice, and modular architectures.
npx skillsauth add afonsoft/VideoChat create-abp-io-templateInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create a new ABP.IO project using the ABP CLI with proper template selection, configuration, and initial setup.
Your goal is to create a new ABP.IO project using the CLI with the appropriate template, configuration, and setup based on the specified requirements.
# Install ABP CLI globally
dotnet tool install -g Volo.Abp.Cli
# Verify installation
abp --version
# Update to latest version
abp update
# Install specific version
dotnet tool install -g Volo.Abp.Cli --version 8.0.0
# Install from local source
dotnet tool install -g Volo.Abp.Cli --add-source ./local-packages
Standard layered application for most scenarios.
Use Cases:
Command:
abp new <solution-name> -t app [options]
Simplified template for small applications.
Use Cases:
Command:
abp new <solution-name> -t app-nolayers [options]
For distributed microservice architectures.
Use Cases:
Command:
abp new <solution-name> -t microservice [options]
Minimal template for custom solutions.
Use Cases:
Command:
abp new <solution-name> -t empty [options]
mvc: ASP.NET Core MVC (default)angular: Angular SPAblazor-webapp: Blazor Web Appblazor: Blazor Serverblazor-server: Blazor Serverno-ui: No UI layeref: Entity Framework Core (default)mongodb: MongoDBnone: No mobile app (default)react-native: React Nativemaui: .NET MAUI--tiered: Creates tiered architecture (separate API and UI layers)--separate-tenant-schema: Different DbContext for tenant schemaleptonx: LeptonX Theme (premium)leptonx-lite: LeptonX-Lite Theme (default)basic: Basic Theme--connection-string: Custom database connection string--skip-migrations: Skip initial database migration--skip-migrator: Skip database migrator--public-website: Add public website (PRO)--without-cms-kit: Exclude CmsKit module--sample-crud-page: Add sample CRUD page--use-open-source-template: Use open-source template# Basic MVC application
abp new Acme.BookStore
# With specific options
abp new Acme.BookStore -t app -u mvc -d ef -th leptonx-lite
# With custom connection string
abp new Acme.BookStore -t app -u mvc -d ef --connection-string "Server=localhost;Database=BookStore;Trusted_Connection=true"
# Angular application
abp new Acme.BookStore -t app -u angular -d ef
# Angular with tiered architecture
abp new Acme.BookStore -t app -u angular -d ef --tiered
# Angular with PWA
abp new Acme.BookStore -t app -u angular -d ef --progressive-web-app
# Blazor Web App
abp new Acme.BookStore -t app -u blazor-webapp -d ef
# Blazor Server
abp new Acme.BookStore -t app -u blazor-server -d ef
# Blazor with tiered architecture
abp new Acme.BookStore -t app -u blazor-webapp -d ef --tiered
# Basic microservice
abp new Acme.Microservice -t microservice -u mvc -d ef
# Microservice with Angular
abp new Acme.Microservice -t microservice -u angular -d ef
# Microservice with multiple services
abp new Acme.Microservice -t microservice -u mvc -d ef --tiered
# Single-layer API
abp new Acme.Api -t app-nolayers -u no-ui -d ef
# API with sample CRUD
abp new Acme.Api -t app-nolayers -u no-ui -d ef --sample-crud-page
# Ensure ABP CLI is installed
abp --version
# Update to latest version
abp update
# Verify available templates
abp list-templates
# Create project with selected template
abp new <solution-name> [options]
# Example: Create layered MVC application
abp new Acme.BookStore -t app -u mvc -d ef -th leptonx-lite
# Navigate to project directory
cd <solution-name>
# Restore packages
dotnet restore
# Create and apply database migrations
dotnet ef database update
# Run the application
dotnet run --project src/<solution-name>.Web
# Verify solution builds
dotnet build
# Run tests
dotnet test
# Check application startup
# Navigate to https://localhost:44300
Acme.BookStore.sln
├── src/
│ ├── Acme.BookStore.Application/
│ │ ├── BookStoreApplicationModule.cs
│ │ ├── Books/
│ │ │ ├── BookAppService.cs
│ │ │ └── IBookAppService.cs
│ │ └── Acme.BookStore.Application.csproj
│ ├── Acme.BookStore.Application.Contracts/
│ │ ├── Books/
│ │ │ ├── BookDto.cs
│ │ │ └── IBookAppService.cs
│ │ └── Acme.BookStore.Application.Contracts.csproj
│ ├── Acme.BookStore.Domain/
│ │ ├── BookStoreDomainModule.cs
│ │ ├── Books/
│ │ │ ├── Book.cs
│ │ │ └── IBookRepository.cs
│ │ └── Acme.BookStore.Domain.csproj
│ ├── Acme.BookStore.Domain.Shared/
│ │ ├── BookStoreDomainSharedModule.cs
│ │ └── Acme.BookStore.Domain.Shared.csproj
│ ├── Acme.BookStore.EntityFrameworkCore/
│ │ ├── BookStoreEntityFrameworkCoreModule.cs
│ │ ├── BookStoreDbContext.cs
│ │ ├── Configurations/
│ │ │ └── BookConfiguration.cs
│ │ └── Acme.BookStore.EntityFrameworkCore.csproj
│ ├── Acme.BookStore.HttpApi/
│ │ ├── BookStoreHttpApiModule.cs
│ │ ├── Controllers/
│ │ │ └── BooksController.cs
│ │ └── Acme.BookStore.HttpApi.csproj
│ ├── Acme.BookStore.HttpApi.Client/
│ │ └── Acme.BookStore.HttpApi.Client.csproj
│ ├── Acme.BookStore.Web/
│ │ ├── BookStoreWebModule.cs
│ │ ├── Pages/
│ │ ├── wwwroot/
│ │ └── Acme.BookStore.Web.csproj
│ └── Acme.BookStore.Web.Unified/
├── test/
│ ├── Acme.BookStore.Application.Tests/
│ ├── Acme.BookStore.Domain.Tests/
│ ├── Acme.BookStore.EntityFrameworkCore.Tests/
│ ├── Acme.BookStore.Web.Tests/
│ └── Acme.BookStore.HttpApi.Host.Tests/
└── etc/
└── docker-compose.yml
Acme.SimpleApp.sln
├── src/
│ ├── Acme.SimpleApp.Application/
│ │ ├── SimpleAppApplicationModule.cs
│ │ ├── Books/
│ │ │ ├── BookAppService.cs
│ │ │ └── Book.cs
│ │ └── Acme.SimpleApp.Application.csproj
│ ├── Acme.SimpleApp.Application.Contracts/
│ │ └── Acme.SimpleApp.Application.Contracts.csproj
│ ├── Acme.SimpleApp.Domain.Shared/
│ │ └── Acme.SimpleApp.Domain.Shared.csproj
│ ├── Acme.SimpleApp.EntityFrameworkCore/
│ │ ├── SimpleAppDbContext.cs
│ │ └── Acme.SimpleApp.EntityFrameworkCore.csproj
│ ├── Acme.SimpleApp.HttpApi/
│ │ └── Acme.SimpleApp.HttpApi.csproj
│ └── Acme.SimpleApp.Web/
│ ├── Program.cs
│ ├── Pages/
│ └── Acme.SimpleApp.Web.csproj
└── test/
├── Acme.SimpleApp.Application.Tests/
├── Acme.SimpleApp.EntityFrameworkCore.Tests/
└── Acme.SimpleApp.Web.Tests/
abp new Acme.BookStore -t app -u mvc -d ef
abp new Acme.BookStore -t app -u mvc -d ef
# Then manually update to PostgreSQL in appsettings.json
abp new Acme.BookStore -t app -u mvc -d ef
# Then manually update to SQLite in DbContext
abp new Acme.BookStore -t app -u mvc -d mongodb
abp new Acme.BookStore -t app -u mvc -d ef
# Default includes OpenIddict authentication
abp new Acme.BookStore -t app -u mvc -d ef
# Configure custom authentication in WebModule
abp new Acme.BookStore -t app -u mvc -d ef
# Default multi-tenancy with shared database
abp new Acme.BookStore -t app -u mvc -d ef --separate-tenant-schema
# Different schema for each tenant
# Add additional packages
abp add-package Volo.Abp.Emailing
abp add-package Volo.Abp.Sms
abp add-package Volo.Abp.Caching
# Add module
abp add-module Volo.CmsKit
// appsettings.json
{
"ConnectionStrings": {
"Default": "Server=localhost;Database=AcmeBookStore;Trusted_Connection=true"
},
"App": {
"SelfUrl": "https://localhost:44300",
"CorsOrigins": "https://localhost:44300"
},
"AuthServer": {
"Authority": "https://localhost:44300",
"RequireHttpsMetadata": "false"
},
"StringLocalizations": {
"Languages": [
{
"CultureName": "en",
"DisplayName": "English"
},
{
"CultureName": "pt-BR",
"DisplayName": "Português"
}
]
}
}
# Create initial migration
dotnet ef migrations add InitialCreate
# Update database
dotnet ef database update
# Add new migration
dotnet ef migrations add AddedBookEntity
// src/Acme.BookStore.Domain/Books/Book.cs
public class Book : FullAuditedAggregateRoot<Guid>
{
public string Name { get; set; }
public BookType Type { get; set; }
public DateTime PublishDate { get; set; }
public float Price { get; set; }
protected Book() { }
public Book(
Guid id,
string name,
BookType type,
DateTime publishDate,
float price) : base(id)
{
Name = Check.NotNullOrWhiteSpace(name, nameof(name));
Type = type;
PublishDate = publishDate;
Price = price;
}
}
// src/Acme.BookStore.Application/Books/BookAppService.cs
public class BookAppService : ApplicationService, IBookAppService
{
private readonly IRepository<Book, Guid> _bookRepository;
public BookAppService(IRepository<Book, Guid> bookRepository)
{
_bookRepository = bookRepository;
}
public async Task<PagedResultDto<BookDto>> GetListAsync(GetBooksInput input)
{
var queryable = await _bookRepository.GetQueryableAsync();
var books = await AsyncExecuter.ToListAsync(
queryable
.WhereIf(!input.Filter.IsNullOrWhiteSpace(),
book => book.Name.Contains(input.Filter))
.OrderBy(book => book.Name)
.PageBy(input.SkipCount, input.MaxResultCount)
);
var totalCount = await AsyncExecuter.CountAsync(
queryable.WhereIf(!input.Filter.IsNullOrWhiteSpace(),
book => book.Name.Contains(input.Filter))
);
return new PagedResultDto<BookDto>(
totalCount,
ObjectMapper.Map<List<Book>, List<BookDto>>(books)
);
}
}
# Install ABP Suite (separate tool)
# Generate CRUD pages automatically
# Create entities with visual designer
# Manage application settings
# Open project in ABP Studio
# Visual module management
# Advanced debugging tools
# Performance monitoring
# Build Docker image
docker build -t acme/bookstore .
# Run with Docker Compose
docker-compose up -d
# Database migrations in Docker
docker-compose exec web dotnet ef database update
# Install ABP CLI
dotnet tool install -g Volo.Abp.Cli
# Check PATH
echo $PATH
# Reinstall if corrupted
dotnet tool uninstall -g Volo.Abp.Cli
dotnet tool install -g Volo.Abp.Cli
# Check .NET SDK version
dotnet --version
# Clear NuGet cache
dotnet nuget locals all --clear
# Use specific template version
abp new Acme.BookStore -t app --use-open-source-template
# Check connection string
dotnet ef database update --verbose
# Recreate database
dotnet ef database drop
dotnet ef database update
# Check migrations
dotnet ef migrations list
# Clean and rebuild
dotnet clean
dotnet restore
dotnet build
# Check for package conflicts
dotnet list package --outdated
This skill provides comprehensive guidance for creating ABP.IO projects using the CLI with the right template and configuration for your specific needs.
development
This skill enables visual inspection of websites running locally or remotely to identify and fix design issues. Triggers on requests like "review website design", "check the UI", "fix the layout", "find design problems". Detects issues with responsive design, accessibility, visual consistency, and layout breakage, then performs fixes at the source code level.
testing
Comprehensive unit testing with xUnit, mocking, test patterns, and best practices for .NET applications
data-ai
Universal SQL performance optimization assistant for comprehensive query tuning, indexing strategies, and database performance analysis across all SQL databases (MySQL, PostgreSQL, SQL Server, Oracle). Provides execution plan analysis, pagination optimization, batch operations, and performance monitoring guidance.
development
Universal SQL code review assistant that performs comprehensive security, maintainability, and code quality analysis across all SQL databases (MySQL, PostgreSQL, SQL Server, Oracle). Focuses on SQL injection prevention, access control, code standards, and anti-pattern detection. Complements SQL optimization prompt for complete development coverage.