AgentSkillsCN

orchardcore-module-creator

按照规范的结构、清单、启动程序与设计模式,创建全新的OrchardCore模块。当用户需要新建模块、添加内容部分、字段、驱动程序、处理器,或构建管理后台功能时,可使用此功能。

SKILL.md
--- frontmatter
name: orchardcore-module-creator
description: Creates new OrchardCore modules with proper structure, manifest, startup, and patterns. Use when the user needs to create a new module, add content parts, fields, drivers, handlers, or admin functionality.

OrchardCore Module Creator

This skill guides you through creating new OrchardCore modules following project conventions.

Prerequisites

  • OrchardCore repository at D:\orchardcore
  • .NET SDK 10.0+ installed

Module Creation Workflow

Step 1: Determine Module Type

What kind of module are you creating?

TypeDescriptionKey Components
Content PartAdds data/behavior to content itemsPart, Driver, Views
Content FieldCustom field typeField, Driver, Views
SettingsSite-wide configurationSiteSettings, Driver
Admin FeatureAdmin pages/toolsController, Views, Menu
APIREST endpointsApiController
Background TaskScheduled jobsIBackgroundTask

Step 2: Create Module Directory

bash
# Create module folder
mkdir src/OrchardCore.Modules/OrchardCore.YourModule
cd src/OrchardCore.Modules/OrchardCore.YourModule

Step 3: Create Required Files

Every module needs these three files:

  1. Manifest.cs - Module metadata
  2. Startup.cs - Service registration
  3. OrchardCore.YourModule.csproj - Project file

See references/module-structure.md for templates.

Step 4: Add Components Based on Type

For Content Part modules:

code
Models/YourPart.cs
ViewModels/YourPartViewModel.cs
Drivers/YourPartDisplayDriver.cs
Views/YourPart.cshtml
Views/YourPart_Edit.cshtml

For Admin modules:

code
Controllers/AdminController.cs
Views/Admin/Index.cshtml
AdminMenu.cs
PermissionProvider.cs

For Data-storing modules:

code
Migrations.cs
Indexes/YourIndex.cs

See references/patterns.md for code templates.

Step 5: Register in Startup.cs

csharp
public override void ConfigureServices(IServiceCollection services)
{
    // Content part
    services.AddContentPart<YourPart>()
        .UseDisplayDriver<YourPartDisplayDriver>();
    
    // Services
    services.AddScoped<IYourService, YourService>();
    
    // Migrations (if storing data)
    services.AddDataMigration<Migrations>();
    
    // Permissions (if securing features)
    services.AddPermissionProvider<PermissionProvider>();
    
    // Navigation (if adding admin menu)
    services.AddNavigationProvider<AdminMenu>();
}

Step 6: Build and Test

bash
# Build the module
cd D:\orchardcore
dotnet build src/OrchardCore.Modules/OrchardCore.YourModule

# Run the application
cd src/OrchardCore.Cms.Web
dotnet run -f net10.0

# Enable the feature in Admin → Features

Quick Reference

Naming Conventions

ItemConventionExample
Module folderOrchardCore.ModuleNameOrchardCore.Rating
NamespaceOrchardCore.ModuleNameOrchardCore.Rating
Feature IDOrchardCore.ModuleNameOrchardCore.Rating
Content PartNamePartRatingPart
DriverNamePartDisplayDriverRatingPartDisplayDriver
ViewPartName.cshtmlRatingPart.cshtml
Edit ViewPartName_Edit.cshtmlRatingPart_Edit.cshtml

Common Dependencies

Add to .csproj as needed:

xml
<!-- Core module support -->
<ProjectReference Include="..\..\OrchardCore\OrchardCore.Module.Targets\OrchardCore.Module.Targets.csproj" />

<!-- Content management -->
<ProjectReference Include="..\..\OrchardCore\OrchardCore.ContentManagement\OrchardCore.ContentManagement.csproj" />

<!-- Admin UI -->
<ProjectReference Include="..\..\OrchardCore\OrchardCore.Admin\OrchardCore.Admin.csproj" />

Feature Categories

Use in Manifest.cs:

  • Content Management
  • Content
  • Navigation
  • Security
  • Infrastructure
  • Theming
  • Developer

References

  • references/module-structure.md - Directory layout and file templates
  • references/patterns.md - Code patterns (parts, drivers, handlers, etc.)
  • references/examples.md - Complete module examples
  • AGENTS.md (repo root) - Coding conventions and build commands