CrestApps Agent Skills, Orchard Harvest 2026 survey results - This week in Orchard (13/03/2026)
This week, you can see a demo of the CrestApps.AgentSkills ecosystem by Mike Alhayek, which provides a clean, layered architecture for defining, organizing, and exposing AI skills in .NET, with first-class support for the Model Context Protocol (MCP) and Orchard Core.
But before that, let us quickly mention how Georg von Kries refactored Orchard Core's code to optimize storage for display type locations, or how he obsoleted the synchronous CustomSettingsService.GetSettingsType method to improve performance by avoiding blocking calls, and to prepare the codebase for the future removal of the synchronous API.
Thank you for filling out the Orchard Harvest 2026 survey! Check out our post for the results and the future plans regarding Harvest!
Orchard Core updates
Obsolete synchronous CustomSettingsService.GetSettingsType method
Georg von Kries updated CustomSettingsDisplayDriver to use the asynchronous GetSettingsTypeAsync method instead of the synchronous GetSettingsType in both the EditAsync and UpdateAsync methods. He also updated CustomSettingsService.GetSettingsAsync(string settingsTypeName, Action isNew) to use await GetSettingsTypeAsync instead of the synchronous version, and refactored the return pattern to be fully async.
And finally, he marked CustomSettingsService.GetSettingsType as obsolete, with a message directing users to use GetSettingsTypeAsync instead. This change improves performance by avoiding blocking calls and prepares the codebase for the future removal of the synchronous API.

Refactor ShapeResult for less allocations
This is about having an optimized storage for display type locations. Instead of always allocating the _otherLocations dictionary for display type/location pairs, the code now stores up to two pairs in dedicated fields (_firstDisplayType, _firstLocation, _secondDisplayType, _secondLocation) before falling back to a dictionary for additional pairs. This reduces memory allocations for common cases with only one or two display types.
As you can see in the screen below, there is a Location(string displayType, string location) method. Inside that method, we checked the value of the _otherLocations dictionary. If _otherLocations has no value, let's update it and use the provided location. Otherwise, if this is the _firstDisplayType, then we don't need to create a dictionary. We save the display type allocation again. If there is a first display type, then maybe it's the second one. So, still no dictionary. Otherwise, let's create a new dictionary with the first, with the second, and with the custom display type. It means converting the properties for the first and the second location into the _otherLocations dictionary and resetting the _firstDisplayType, _firstLocation, _secondDisplayType, and _secondLocation fields.

Georg von Kries also refactored fluent API methods (e.g., Prefix, Location, Displaying, Processing, Name, Differentiator, OnGroup, Cache, RenderWhen) to appear before the core implementation logic, improving code organization and discoverability.
Demos
CrestApps Agent Skills
In the Model Context Protocol Server (MCP), the server provides tools, such as actions. It can also serve prompts, like the things you can reuse, and also something called resources. It means the MCP can provide resources, can provide tools, and prompts. You can ask MCP to provide you with a document, for example, and that would be a resource that it could use. For more information about the MCP integration with Orchard Core, check out our blog post from last year.
So, how can we take skills and provide them as part of the MCP server's resources? It means that if someone wants to connect to the MCP server, they will have access to all these skills and the resources to define their modules.
Mike Alhayek created a new repository called CrestApps.AgentSkills that contains shared AI agent skills and MCP tooling for .NET applications and Orchard Core-based projects. There are three parts to this project:
- CrestApps.AgentSkills.Mcp: Provides a reusable MCP skill engine for any .NET app without building custom parsers/providers.
- CrestApps.AgentSkills.OrchardCore: Used for Orchard Core local development by copying skills to .agents/skills.
- CrestApps.AgentSkills.Mcp.OrchardCore: Exposes Orchard Core skills as MCP prompts and MCP resources at runtime.
Another project inside is a non-packagable skill repository that serves as the single source of truth for all agent skills in this solution. As you can see, it contains a bunch of Orchard-related skills. This package is intended for local development. Once installed in your web project, it automatically provides a wide range of Orchard Core skills out of the box. After installation, you should see an .agents folder at your solution root. As long as you keep the NuGet package up to date, you'll always get the latest Orchard Core skills, and your agent will automatically discover them.

If you want to learn more, check out this blog post from Mike about this ecosystem for more details! And as always, don't forget to head to YouTube for a recording!
And while we are speaking about skills, if you remember, we showed our agent skills for Orchard Core that can also help you with many Orchard Core-related tasks, such as implementing appropriate shape templates with correct alternates. If you haven't heard about it yet, check out this post, where you can also see a demo of the Lombiq Orchard Core Agent Skills project!
And that's still not all of it! Last week, we mentioned that Sébastien Ros also had the idea of adding Agent Skills to Orchard Core, primarily for developers. The goal is that when you clone Orchard, you will have access to these skills. You can read about those new skills here.
News from the community
Orchard Harvest 2026 survey results
After last year, the Orchard Harvest Conference will be held again in 2026. The first step was to assess the potential interest and what would be needed. We created a survey, and now we have the results! Thank you for your feedback so far regarding Orchard Harvest! We have received many responses, which have helped us get a better idea of the right place and time. Please keep in mind that these are just preliminary results and haven't led to any specific outcomes yet.
It seems that most respondents are open to an in-person conference this year, with the USA receiving the most votes for location, followed by Europe and Canada, though the differences in votes were small. But a significant portion of respondents expressed reluctance to attend in the US; half of the 32 respondents did not want to go to the US, and some provided comments to that effect.
During our weekly meeting, some attendees suggested that future surveys should list specific cities rather than countries to avoid ambiguity, as the size of the US and Canada makes country-level choices insufficient for planning. So, we discussed potentially creating a new questionnaire listing a limited set of candidate cities in Canada, North America, and Europe, allowing participants to rank their preferences to achieve a more democratic and actionable outcome. Whatever the next step will be, as we move forward, we will keep community members informed of the details, and you will also find every detail in this newsletter.

Orchard Dojo Newsletter
Lombiq's Orchard Dojo Newsletter has 423 subscribers! We have started this newsletter to keep the Orchard community informed about the latest news on the platform. By subscribing to this newsletter, you will receive an email whenever a new post is published to Orchard Dojo, including 'This Week in Orchard', of course.
Do you know of other Orchard enthusiasts who would like to read our weekly articles? Tell them to subscribe here!