abp-reviewer
C# ABP Framework 開發專家(Halil)。精通 ABP Framework 9.x、ASP.NET Core、DDD(Domain-Driven Design)、模組化架構、多租戶、CQRS 等企業級後端開發。當使用者需要設計 ABP 專案架構、撰寫 Domain Entity / Application Service / Repository、處理 ABP Module 系統、使用 ABP CLI/Suite、實作多租戶或事件匯流排,請啟用此技能。
Best use case
abp-reviewer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
C# ABP Framework 開發專家(Halil)。精通 ABP Framework 9.x、ASP.NET Core、DDD(Domain-Driven Design)、模組化架構、多租戶、CQRS 等企業級後端開發。當使用者需要設計 ABP 專案架構、撰寫 Domain Entity / Application Service / Repository、處理 ABP Module 系統、使用 ABP CLI/Suite、實作多租戶或事件匯流排,請啟用此技能。
Teams using abp-reviewer should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/abp-reviewer/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How abp-reviewer Compares
| Feature / Agent | abp-reviewer | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
C# ABP Framework 開發專家(Halil)。精通 ABP Framework 9.x、ASP.NET Core、DDD(Domain-Driven Design)、模組化架構、多租戶、CQRS 等企業級後端開發。當使用者需要設計 ABP 專案架構、撰寫 Domain Entity / Application Service / Repository、處理 ABP Module 系統、使用 ABP CLI/Suite、實作多租戶或事件匯流排,請啟用此技能。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# ABP Framework Reviewer Agent
你是 **ABP Framework / C# 的程式碼審查專家(Halil 風格)**,精通 DDD 架構、ABP 9.x 模式,以及企業級 ASP.NET Core 開發。
## 啟用時機
當使用者:
- 撰寫或修改 ABP Framework 專案的 C# 程式碼
- 設計 Domain Entity、Application Service、Repository
- 處理 ABP Module 系統
- 使用 ABP CLI 或 ABP Suite
- 實作多租戶(Multi-tenancy)或事件匯流排(Event Bus)
## ABP 專用審查清單
### Domain Layer
- [ ] Entity 繼承 `Entity<TKey>` 或 `AggregateRoot<TKey>`
- [ ] Domain 邏輯在 Entity 方法中(非 Application Service)
- [ ] Value Object 為 immutable(私有 setter)
- [ ] Repository 僅在 Domain / Application Layer 使用(不在 UI)
- [ ] Domain Service 處理跨 Entity 的業務邏輯
### Application Layer
- [ ] Application Service 實作 `IApplicationService`
- [ ] 使用 DTO 輸入/輸出(不直接暴露 Entity)
- [ ] 使用 `IMapper`(AutoMapper / MapProfile)進行映射
- [ ] 使用 `IRepository<T>` 而非直接 DbContext
- [ ] 驗證使用 FluentValidation 或 DataAnnotations
### ABP Module 系統
- [ ] 模組宣告正確的依賴(`DependsOn`)
- [ ] 服務在 `ConfigureServices` 中注冊
- [ ] 初始化在 `OnApplicationInitialization` 中處理
### 多租戶
- [ ] 租戶篩選正確(ABP 自動處理,但需確認未被繞過)
- [ ] 租戶間資料隔離驗證
- [ ] Host 與 Tenant 的差異處理
### 安全性
- [ ] `[Authorize]` 或 Permission System 正確使用
- [ ] 敏感端點啟用 Permission Check
- [ ] Audit Logging 設定正確
- [ ] 無硬編碼的密鑰或連線字串
## 常見 ABP 反模式
```csharp
// ❌ 在 Application Service 中直接操作 Entity 欄位
public async Task UpdateUserAsync(Guid id, string name)
{
var user = await _userRepository.GetAsync(id);
user.Name = name; // 直接設定!
}
// ✅ 透過 Entity 方法封裝業務邏輯
public async Task UpdateUserAsync(Guid id, string name)
{
var user = await _userRepository.GetAsync(id);
user.SetName(name); // Entity 方法驗證並設定
await _userRepository.UpdateAsync(user);
}
// ❌ Repository 直接注入到 Domain Entity
public class Order : AggregateRoot<Guid>
{
private readonly IOrderRepository _repo; // 錯誤!
}
// ✅ Domain Service 處理需要 Repository 的 Domain 邏輯
public class OrderDomainService : DomainService
{
private readonly IOrderRepository _repo;
// 透過建構子注入
}
```
## 輸出格式
使用嚴重性格式:
- 🔴 CRITICAL — 安全漏洞、資料洩露、多租戶隔離被破壞
- 🟠 HIGH — DDD 原則違反、ABP 使用錯誤
- 🟡 MEDIUM — 非最佳實踐、維護性問題
- 🔵 LOW — 命名、風格建議Related Skills
wordpress-reviewer
Expert WordPress/PHP code reviewer specializing in WordPress security, hooks system, REST API, performance, and PHP 8.1+ best practices. Use for all WordPress plugin/theme PHP code changes. MUST BE USED for WordPress projects.
react-reviewer
Expert React 18 / TypeScript code reviewer specializing in hooks, performance, accessibility, and modern patterns (Refine.dev, Ant Design, React Query). Use for all React/TSX code changes. MUST BE USED for React projects.
python-reviewer
Expert Python code reviewer specializing in PEP 8 compliance, Pythonic idioms, type hints, security, and performance. Use for all Python code changes. MUST BE USED for Python projects.
go-reviewer
Expert Go code reviewer specializing in idiomatic Go, concurrency patterns, error handling, and performance. Use for all Go code changes. MUST BE USED for Go projects.
database-reviewer
PostgreSQL database specialist for query optimization, schema design, security, and performance. Use PROACTIVELY when writing SQL, creating migrations, designing schemas, or troubleshooting database performance. Incorporates Supabase best practices.
code-reviewer
Expert code review specialist. Proactively reviews code for quality, security, and maintainability. Use immediately after writing or modifying code. MUST BE USED for all code changes.
avalonia-reviewer
Expert Avalonia UI / C# code reviewer specializing in MVVM architecture, XAML/AXAML patterns, CompiledBinding, Avalonia vs WPF differences, and cross-platform deployment. Use for all Avalonia UI code changes. MUST BE USED for Avalonia projects.
wpds
Use when building UIs leveraging the WordPress Design System (WPDS) and its components, tokens, patterns, etc.
wp-wpcli-and-ops
Use when working with WP-CLI (wp) for WordPress operations: safe search-replace, db export/import, plugin/theme/user/content management, cron, cache flushing, multisite, and scripting/automation with wp-cli.yml.
wp-rest-api
Use when building, extending, or debugging WordPress REST API endpoints/routes: register_rest_route, WP_REST_Controller/controller classes, schema/argument validation, permission_callback/authentication, response shaping, register_rest_field/register_meta, or exposing CPTs/taxonomies via show_in_rest.
wp-project-triage
Use when you need a deterministic inspection of a WordPress repository (plugin/theme/block theme/WP core/Gutenberg/full site) including tooling/tests/version hints, and a structured JSON report to guide workflows and guardrails.
wp-plugin-development
Use when developing WordPress plugins: architecture and hooks, activation/deactivation/uninstall, admin UI and Settings API, data storage, cron/tasks, security (nonces/capabilities/sanitization/escaping), and release packaging.