Skip to main content
AI/MLCrestApps

orchardcore-deployments

Skill for configuring Orchard Core deployment plans and steps. Covers deployment plan creation, content export/import, and deployment step configuration. Use this skill when requests mention Orchard Core Deployments, Create a Deployment Plan, Deployment Step Types, Configuring Remote Deployment, Deployment Plan Recipe Export, Creating Deployment Steps in Code, or closely related Orchard Core implementation, setup, extension, or troubleshooting work. Strong matches include work with OrchardCore.Deployment.Remote, OrchardCore.Deployment, AllContentDeploymentStep, ContentTypeDeploymentStep, ContentDeploymentStep, SiteSettingsDeploymentStep, AllFeaturesDeploymentStep, RecipeFileDeploymentStep, CustomFileDeploymentStep, ContentDefinition, MyCustomDeploymentStep, DeploymentStep. It also helps with Deployment Plan Recipe Export, Creating Deployment Steps in Code, Registering Deployment Steps, plus the code patterns, admin flows, recipe steps, and referenced examples captured in this skill.

Stars
13
Source
CrestApps/CrestApps.AgentSkills
Updated
2026-05-29
Slug
CrestApps--CrestApps.AgentSkills--orchardcore-deployments
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/CrestApps/CrestApps.AgentSkills/HEAD/plugins/orchardcore/skills/orchardcore-deployments/SKILL.md -o .claude/skills/orchardcore-deployments.md

Drops the SKILL.md into .claude/skills/orchardcore-deployments.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Orchard Core Deployments - Prompt Templates

Create a Deployment Plan

You are an Orchard Core expert. Generate deployment plan configurations for Orchard Core sites.

Guidelines

  • Deployment plans export site configuration as a portable package.
  • Each deployment plan contains one or more deployment steps.
  • Steps are executed in order during deployment.
  • Use deployment plans to move configuration between environments (dev, staging, production).
  • Content definitions, content items, settings, and features can all be exported.
  • Deployment plans generate recipe JSON files that can be imported into target sites.
  • Remote deployment targets can be configured for automated deployment.

Deployment Step Types

Common deployment step types include:

  • AllContentDeploymentStep - Export all content items.
  • ContentTypeDeploymentStep - Export specific content type definitions.
  • ContentDeploymentStep - Export specific content items by content type.
  • SiteSettingsDeploymentStep - Export site settings.
  • AllFeaturesDeploymentStep - Export all enabled features.
  • RecipeFileDeploymentStep - Include a recipe file in the deployment.
  • CustomFileDeploymentStep - Include custom files in the deployment.

Configuring Remote Deployment

To enable remote deployment, enable the OrchardCore.Deployment.Remote feature.

{
  "steps": [
    {
      "name": "Feature",
      "enable": [
        "OrchardCore.Deployment",
        "OrchardCore.Deployment.Remote"
      ],
      "disable": []
    }
  ]
}

Deployment Plan Recipe Export

A deployment plan produces a recipe JSON like:

{
  "name": "{{DeploymentPlanName}}",
  "displayName": "{{DisplayName}}",
  "description": "Exported deployment plan",
  "author": "{{Author}}",
  "website": "",
  "version": "1.0.0",
  "issetuprecipe": false,
  "categories": [],
  "tags": [],
  "steps": [
    {
      "name": "ContentDefinition",
      "ContentTypes": [],
      "ContentParts": []
    },
    {
      "name": "Content",
      "data": []
    }
  ]
}

Creating Deployment Steps in Code

using OrchardCore.Deployment;

public sealed class MyCustomDeploymentStep : DeploymentStep
{
    public MyCustomDeploymentStep()
    {
        Name = "MyCustom";
    }
}

public sealed class MyCustomDeploymentStepDriver : DisplayDriver<DeploymentStep, MyCustomDeploymentStep>
{
    public override IDisplayResult Display(MyCustomDeploymentStep step)
    {
        return Combine(
            View("MyCustomDeploymentStep_Summary", step).Location("Summary", "Content"),
            View("MyCustomDeploymentStep_Thumbnail", step).Location("Thumbnail", "Content")
        );
    }
}

public sealed class MyCustomDeploymentSource : IDeploymentSource
{
    public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result)
    {
        if (step is not MyCustomDeploymentStep customStep)
        {
            return;
        }

        // Add data to the result
        var data = new JObject(
            new JProperty("name", "MyCustom")
        );

        result.Steps.Add(data);
    }
}

Registering Deployment Steps

public sealed class Startup : StartupBase
{
    public override void ConfigureServices(IServiceCollection services)
    {
        services.AddDeployment<MyCustomDeploymentStep, MyCustomDeploymentStepDriver, MyCustomDeploymentSource>();
    }
}