Shared AI agent skills and MCP tooling for .NET applications and Orchard Core based projects. The repository contains three projects that solve distinct problems:
| Project | README | Problem it solves |
|---|---|---|
CrestApps.AgentSkills.Mcp |
src/CrestApps.AgentSkills.Mcp/README.md |
Provides a reusable MCP skill engine for any .NET app without building custom parsers/providers. |
CrestApps.OrchardCore.AgentSkills |
src/CrestApps.OrchardCore.AgentSkills/README.md |
Used for Orchard Core local development by copying skills to .agents/skills. |
CrestApps.OrchardCore.AgentSkills.Mcp |
src/CrestApps.OrchardCore.AgentSkills.Mcp/README.md |
Exposes Orchard Core skills as MCP prompts and MCP resources at runtime. |
dotnet add package CrestApps.AgentSkills.Mcpbuilder.Services.AddMcpServer(mcp =>
{
mcp.AddAgentSkills();
});- Works with any
.agents/skillsdirectory (or a custom path). - Use this when you need a framework-agnostic MCP skill engine.
dotnet add package CrestApps.OrchardCore.AgentSkills
dotnet buildAfter the first build after install, the solution root will contain:
.agents/
skills/
orchardcore/
orchardcore.content-types/
SKILL.md
references/
orchardcore.modules/
SKILL.md
references/
orchardcore.recipes/
SKILL.md
...
- Files are copied on the first build after install/update, before compilation starts (
BeforeTargets="PrepareForBuild;CompileDesignTime"). - In Visual Studio, a design-time build fires automatically after package install, so the folder appears immediately.
dotnet restorealone does not trigger the copy — this is a fundamental NuGet/MSBuild limitation.- No runtime dependency — purely for development and AI tooling guidance.
- Files are refreshed when the package is updated.
dotnet add package CrestApps.OrchardCore.AgentSkills.Mcpbuilder.Services.AddMcpServer(mcp =>
{
mcp.AddOrchardCoreSkills();
});- Loads skills at runtime via OrchardCore
FileSystemStore. IMcpResourceFileStore,IMcpPromptProvider, andIMcpResourceProviderregistered as singletons — no repeated file reads.- No file copying to solution.
Install both Orchard Core packages to get local AI authoring and MCP server support.
Each skill is defined in a single SKILL.md file inside a skill directory under src/CrestApps.AgentSkills.Skills/orchardcore/. The file must contain YAML front-matter with at least name and description fields:
---
name: orchardcore.example
description: A description of what this skill does and when to use it.
---
# Skill Title
Skill content goes here (guidelines, code templates, examples, etc.)- The
SKILL.mdfile must start with---and contain a closing---delimiter - The
namefield must match the directory name exactly - The
descriptionfield is required and should clearly explain the skill's purpose - Additional reference material can be placed in a
references/subdirectory as.mdfiles
src/
├─ CrestApps.AgentSkills.Skills/ ← Central skill content (single source of truth)
│ └─ orchardcore/ ← Orchard Core specific skills
│ ├─ orchardcore.content-types/
│ │ ├─ SKILL.md ← Skill definition (front-matter + body)
│ │ └─ references/ ← Optional reference/example files
│ ├─ orchardcore.modules/
│ ├─ orchardcore.recipes/
│ └─ ...
│
├─ CrestApps.AgentSkills.Mcp/ ← Generic MCP engine
│ ├─ Extensions/ ← MCP extension methods
│ ├─ Providers/ ← Prompt & resource providers
│ ├─ Services/ ← Skill file store + parsing
│ ├─ README.md
│ └─ CrestApps.AgentSkills.Mcp.csproj
│
├─ CrestApps.OrchardCore.AgentSkills/ ← Orchard Core dev package
│ ├─ buildTransitive/ ← MSBuild .targets for solution-root copy
│ ├─ README.md
│ └─ CrestApps.OrchardCore.AgentSkills.csproj
│
└─ CrestApps.OrchardCore.AgentSkills.Mcp/ ← Orchard Core MCP runtime package
├─ Extensions/ ← MCP extension methods
├─ Providers/ ← Prompt & resource providers
├─ Services/ ← IMcpResourceFileStore, McpSkillFileStore, SkillFrontMatterParser
├─ README.md
└─ CrestApps.OrchardCore.AgentSkills.Mcp.csproj
The Orchard Core packages pack skill files from the central src/CrestApps.AgentSkills.Skills/orchardcore/ directory — the dev package packs them under skills/orchardcore/ (MSBuild copy only), while the MCP package packs them under contentFiles/any/any/.agents/skills/orchardcore/. The generic CrestApps.AgentSkills.Mcp package is skill-source agnostic and expects skills to be provided by your application.
- .NET 10 SDK or later
dotnet build -c Release -warnaserror /p:TreatWarningsAsErrors=true /p:RunAnalyzers=true /p:NuGetAudit=falsedotnet test -c Release --verbosity normalYou can verify all skill files are valid before submitting a PR:
Bash (Linux/macOS):
for dir in src/CrestApps.AgentSkills.Skills/orchardcore/*/; do
name=$(basename "$dir")
if [ ! -f "$dir/SKILL.md" ]; then echo "FAIL: $name missing SKILL.md"; continue; fi
if ! head -1 "$dir/SKILL.md" | grep -q "^---$"; then echo "FAIL: $name bad front-matter"; continue; fi
echo "OK: $name"
donePowerShell (Windows):
Get-ChildItem -Path "src\CrestApps.AgentSkills.Skills\orchardcore" -Directory | ForEach-Object {
$name = $_.Name
$skillFile = Join-Path $_.FullName "SKILL.md"
if (-not (Test-Path $skillFile)) {
Write-Host "FAIL: $name missing SKILL.md" -ForegroundColor Red
} else {
$firstLine = Get-Content $skillFile -First 1
if ($firstLine -ne "---") {
Write-Host "FAIL: $name bad front-matter" -ForegroundColor Red
} else {
Write-Host "OK: $name" -ForegroundColor Green
}
}
}Contributions are welcome! Please review CONTRIBUTING.md for setup details and coding standards.
- Open a New Skill Request issue (or confirm an existing one) to align on scope: https://github.com/CrestApps/CrestApps.AgentSkills/issues/new?template=skill_request.md.
- Add a new directory under
src/CrestApps.AgentSkills.Skills/orchardcore/<skill-name>/with aSKILL.mdthat matches the agentskills.io specification. - Run the build and tests listed above, plus the local skill validation script.
- Open a PR that links the issue (e.g.,
Fix #123), summarizes the skill, and includes any references or screenshots if applicable.
Warning: This package will always overwrite files in the
.agents/folder in your solution root. Any changes you make to files inside.agents/that were generated by this package will be lost when you build after installing or updating this NuGet package. Do not modify files added by this package inside.agents/. Treat them as read-only.
This project is licensed under the MIT License.